ng-fusion-ui 0.6.30 → 0.6.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { booleanAttribute, Directive, Input, input, inject, ElementRef, Renderer2, NgModule, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, HostBinding, signal, computed, effect, Pipe, model, contentChild, TemplateRef, DestroyRef, output, EventEmitter, untracked, Output, HostListener } from '@angular/core';
2
+ import { booleanAttribute, Directive, Input, input, inject, ElementRef, Renderer2, NgModule, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, HostBinding, signal, computed, effect, Pipe, model, contentChild, TemplateRef, DestroyRef, Injector, output, EventEmitter, untracked, Output, HostListener } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { CommonModule, NgTemplateOutlet } from '@angular/common';
5
5
  import * as i1 from '@angular/platform-browser';
@@ -900,8 +900,10 @@ class TableComponent {
900
900
  this.popupOffset = input(0);
901
901
  this.tableTitle = input();
902
902
  this.variant = input('raised');
903
+ this.sideBar = input(false);
903
904
  this.setsFirstPage$ = input();
904
905
  this.expandIndex = model(null);
906
+ this.sidebarTemplate = contentChild('sidebarTemplate');
905
907
  this.noRecordsTemplate = contentChild('noRecordsTemplate');
906
908
  this.footerTemplate = contentChild('footerTemplate');
907
909
  this.popupTemplate = contentChild(PopupTemplateDirective, {
@@ -923,6 +925,7 @@ class TableComponent {
923
925
  this.tableIntl = inject(TableIntlService);
924
926
  this.tableUtilityService = inject(TableUtilityService);
925
927
  this.tableStorageService = inject(TableStorageService);
928
+ this.injector = inject(Injector);
926
929
  this.noRecordsText = this.tableIntl.noRecordsText;
927
930
  this.columnCount = this.tableUtilityService.headerCount;
928
931
  this.pageSize = this.tableStorageService.pageSize;
@@ -1104,12 +1107,12 @@ class TableComponent {
1104
1107
  this.hoveredRow.set(null);
1105
1108
  }
1106
1109
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1107
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: TableComponent, isStandalone: true, selector: "fu-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, localStorageKey: { classPropertyName: "localStorageKey", publicName: "localStorageKey", isSignal: true, isRequired: false, transformFunction: null }, tableLayout: { classPropertyName: "tableLayout", publicName: "tableLayout", isSignal: true, isRequired: false, transformFunction: null }, firstPageOnInit: { classPropertyName: "firstPageOnInit", publicName: "firstPageOnInit", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, serverPagination: { classPropertyName: "serverPagination", publicName: "serverPagination", isSignal: true, isRequired: false, transformFunction: null }, stripedRows: { classPropertyName: "stripedRows", publicName: "stripedRows", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, showFilter: { classPropertyName: "showFilter", publicName: "showFilter", isSignal: true, isRequired: false, transformFunction: null }, showPaginator: { classPropertyName: "showPaginator", publicName: "showPaginator", isSignal: true, isRequired: false, transformFunction: null }, quickPageJump: { classPropertyName: "quickPageJump", publicName: "quickPageJump", isSignal: true, isRequired: false, transformFunction: null }, popupOffset: { classPropertyName: "popupOffset", publicName: "popupOffset", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, setsFirstPage$: { classPropertyName: "setsFirstPage$", publicName: "setsFirstPage$", isSignal: true, isRequired: false, transformFunction: null }, expandIndex: { classPropertyName: "expandIndex", publicName: "expandIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandIndex: "expandIndexChange", tableActions: "tableActions", selectRowAction: "selectRowAction" }, host: { listeners: { "window:resize": "onResize()" } }, providers: [
1110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: TableComponent, isStandalone: true, selector: "fu-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, localStorageKey: { classPropertyName: "localStorageKey", publicName: "localStorageKey", isSignal: true, isRequired: false, transformFunction: null }, tableLayout: { classPropertyName: "tableLayout", publicName: "tableLayout", isSignal: true, isRequired: false, transformFunction: null }, firstPageOnInit: { classPropertyName: "firstPageOnInit", publicName: "firstPageOnInit", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, serverPagination: { classPropertyName: "serverPagination", publicName: "serverPagination", isSignal: true, isRequired: false, transformFunction: null }, stripedRows: { classPropertyName: "stripedRows", publicName: "stripedRows", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, showFilter: { classPropertyName: "showFilter", publicName: "showFilter", isSignal: true, isRequired: false, transformFunction: null }, showPaginator: { classPropertyName: "showPaginator", publicName: "showPaginator", isSignal: true, isRequired: false, transformFunction: null }, quickPageJump: { classPropertyName: "quickPageJump", publicName: "quickPageJump", isSignal: true, isRequired: false, transformFunction: null }, popupOffset: { classPropertyName: "popupOffset", publicName: "popupOffset", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, sideBar: { classPropertyName: "sideBar", publicName: "sideBar", isSignal: true, isRequired: false, transformFunction: null }, setsFirstPage$: { classPropertyName: "setsFirstPage$", publicName: "setsFirstPage$", isSignal: true, isRequired: false, transformFunction: null }, expandIndex: { classPropertyName: "expandIndex", publicName: "expandIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandIndex: "expandIndexChange", tableActions: "tableActions", selectRowAction: "selectRowAction" }, host: { listeners: { "window:resize": "onResize()" } }, providers: [
1108
1111
  TableUtilityService,
1109
1112
  TableStorageService,
1110
1113
  TableSortService,
1111
1114
  TableEditService,
1112
- ], queries: [{ propertyName: "noRecordsTemplate", first: true, predicate: ["noRecordsTemplate"], descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: ["footerTemplate"], descendants: true, isSignal: true }, { propertyName: "popupTemplate", first: true, predicate: PopupTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "expandTemplate", first: true, predicate: ExpandTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "bodyTemplate", first: true, predicate: BodyTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fu-table-wrapper\" [attr.outlined]=\"variant() === 'outlined'\">\r\n <!-- Search Filter -->\r\n @if (showFilter()) {\r\n <fu-table-filter [title]=\"tableTitle()\" />\r\n } @else if (tableTitle()) {\r\n <div style=\"margin-bottom: 12px\">\r\n <h3>{{ tableTitle() }}</h3>\r\n </div>\r\n }\r\n\r\n <!-- Table -->\r\n <table [attr.role]=\"'table'\" [style.table-layout]=\"tableLayout()\">\r\n <thead [attr.role]=\"'rowgroup'\">\r\n <tr [attr.role]=\"'row'\">\r\n @if (expandable()) {\r\n <th class=\"fu-expand-head\"></th>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: dataSource()[0] | keyMapping }\r\n \"\r\n />\r\n </tr>\r\n </thead>\r\n\r\n <tbody [attr.role]=\"'rowgroup'\">\r\n @if (isInitLoad()) {\r\n <ng-container *ngTemplateOutlet=\"initLoadTemplate\" />\r\n } @else {\r\n @for (row of sortedData(); track $index; let odd = $odd) {\r\n <tr\r\n [attr.outlined]=\"variant() === 'outlined'\"\r\n [attr.role]=\"'row'\"\r\n class=\"fu-body-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd,\r\n hoverable: expandable() || selectRowAction.observed,\r\n }\"\r\n (mouseenter)=\"onRowHover($event, row)\"\r\n (mouseleave)=\"onRowLeave()\"\r\n (click)=\"toggleRow(row, $index)\"\r\n >\r\n @if (expandable()) {\r\n <td\r\n class=\"fu-expand-cell\"\r\n [attr.data-expand]=\"expandedRowIndex === $index\"\r\n >\r\n <fu-icon size=\"16px\" iconName=\"chevronRight\" />\r\n </td>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate();\r\n context: {\r\n $implicit: row,\r\n index: $index,\r\n keys: row | keyMapping,\r\n }\r\n \"\r\n />\r\n </tr>\r\n\r\n @if (\r\n (expandable() && expandedRowIndex === $index) ||\r\n expandIndex() === $index ||\r\n expanded()\r\n ) {\r\n <tr\r\n class=\"fu-expand-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd && expanded(),\r\n }\"\r\n [attr.expanded]=\"expanded()\"\r\n (mouseenter)=\"onExpandHover()\"\r\n >\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n @if (isLoading() && expanded()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandTemplate() || null;\r\n context: { $implicit: row, index: $index }\r\n \"\r\n />\r\n }\r\n </td>\r\n </tr>\r\n }\r\n } @empty {\r\n <tr class=\"fu-empty-row\">\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n noRecordsTemplate() || defaultNoRecordsTemplate\r\n \"\r\n />\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (footerTemplate()) {\r\n <div class=\"fu-table-footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n footerTemplate() || null;\r\n context: { $implicit: sortedData() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n @if (showPaginator()) {\r\n <fu-table-paginator\r\n [dataLenght]=\"totalItems()\"\r\n [quickPageJump]=\"quickPageJump()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n />\r\n }\r\n</div>\r\n\r\n@if (hoveredRow()) {\r\n <div\r\n class=\"fu-action-popup\"\r\n [style.top.px]=\"popupPosition().top\"\r\n [style.right.px]=\"popupPosition().right\"\r\n (mouseenter)=\"onPopupHover()\"\r\n (mouseleave)=\"onPopupLeave()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n popupTemplate() || null;\r\n context: { $implicit: hoveredRow() }\r\n \"\r\n />\r\n </div>\r\n}\r\n\r\n<ng-template #defaultNoRecordsTemplate>\r\n <div class=\"fu-no-records\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M12 8v4m0 4.01l.01-.011M9 3H4v3m0 5v2m16-2v2M15 3h5v3M9 21H4v-3m11 3h5v-3\"\r\n />\r\n </svg>\r\n <p>{{ noRecordsText() }}</p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #initLoadTemplate>\r\n @for (item of arrayFromSize(); track $index) {\r\n <tr class=\"fu-empty-row\">\r\n @for (item of arrayFromCols(); track $index) {\r\n <fu-tbody-cell />\r\n }\r\n </tr>\r\n }\r\n</ng-template>\r\n", styles: [".fu-table-wrapper{overflow-x:auto;padding:12px;font-family:Roboto,sans-serif;font-size:14px;background-color:var(--fu-table-bg-color);color:var(--fu-table-text-color);border-radius:4px}.fu-table-wrapper[outlined=true]{border:1px solid var(--fu-table-border-color)}.fu-table-wrapper[outlined=false]{box-shadow:0 1px 4px #0000005e}table{border-collapse:collapse;width:100%;margin-bottom:12px}thead tr{background-color:var(--fu-table-header-bg-color)}thead tr .fu-expand-head{width:40px;border-bottom:1px solid var(--fu-table-border-color)}@media (max-width: 900px){thead tr .fu-expand-head{display:none}}tbody tr .fu-expand-cell{border-bottom:1px solid var(--fu-table-border-color);text-align:center;vertical-align:middle}tbody tr .fu-expand-cell fu-icon{margin-top:3px}@media (max-width: 900px){tbody tr .fu-expand-cell{display:none}}tbody tr .fu-expand-cell[data-expand=true] fu-icon{transition:.1s ease-in-out;transform:rotate(90deg)}.fu-body-row{transition:.2s ease-in-out}.fu-body-row.striped{background-color:var(--fu-table-striped-row-bg-color)}.fu-body-row.hoverable:hover{background-color:var(--fu-table-bg-hover-color);cursor:pointer}.fu-expand-row[expanded=false]{border-top:1px solid var(--fu-table-border-color)}.fu-expand-row.striped{background-color:var(--fu-table-striped-row-bg-color)}tr.fu-expand-row>td{border-bottom:1px solid var(--fu-table-border-color);padding:8px}tr.fu-empty-row>td{border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color);padding:8px;text-align:center}tr.fu-empty-row>td svg{width:100px;height:100px;color:var(--fu-table-border-color)}@media (max-width: 900px){table{border:none;box-shadow:none;min-width:100%}thead{border-bottom:1px solid var(--fu-table-border-color)}tbody tr[outlined=true]{border-right:1px solid var(--fu-table-border-color);border-left:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}tbody tr:first-child{border-top:none}tbody tr:last-child{margin-bottom:0}tr{display:block;margin-bottom:12px}tr[outlined=false]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}tr.fu-expand-row{margin-top:-8px;display:block;width:100%}tr.fu-expand-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}tr.fu-empty-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}}.fu-table-footer{position:relative;min-height:40px;margin-bottom:8px;background-color:var(--fu-table-header-bg-color);border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}.fu-action-popup{position:absolute;display:flex;align-items:center;gap:8px;background:var(--fu-table-bg-color);box-shadow:0 4px 6px #0000001a;border:1px solid var(--fu-table-border-color);border-radius:4px;min-height:40px;z-index:10;padding:0 8px}.fu-no-records{display:flex;flex-direction:column;justify-content:center;align-items:center;height:180px}.fu-no-records>p{color:#aeadad}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "fu-icon", inputs: ["iconName", "size", "strokeWidth", "color"] }, { kind: "component", type: TablePaginatorComponent, selector: "fu-table-paginator", inputs: ["pageSizeOptions", "quickPageJump", "dataLenght"] }, { kind: "component", type: TableFilterComponent, selector: "fu-table-filter", inputs: ["title"] }, { kind: "component", type: TbodyCellComponent, selector: "fu-tbody-cell", inputs: ["cellValue", "editKey"] }, { kind: "pipe", type: KeyMappingPipe, name: "keyMapping" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1115
+ ], queries: [{ propertyName: "sidebarTemplate", first: true, predicate: ["sidebarTemplate"], descendants: true, isSignal: true }, { propertyName: "noRecordsTemplate", first: true, predicate: ["noRecordsTemplate"], descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: ["footerTemplate"], descendants: true, isSignal: true }, { propertyName: "popupTemplate", first: true, predicate: PopupTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "expandTemplate", first: true, predicate: ExpandTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "bodyTemplate", first: true, predicate: BodyTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fu-table-wrapper\" [attr.outlined]=\"variant() === 'outlined'\">\r\n <!-- Search Filter -->\r\n @if (showFilter()) {\r\n <fu-table-filter [title]=\"tableTitle()\" />\r\n } @else if (tableTitle()) {\r\n <div style=\"margin-bottom: 12px\">\r\n <h3>{{ tableTitle() }}</h3>\r\n </div>\r\n }\r\n\r\n <!-- Table -->\r\n <table [attr.role]=\"'table'\" [style.table-layout]=\"tableLayout()\">\r\n <thead [attr.role]=\"'rowgroup'\">\r\n <tr [attr.role]=\"'row'\">\r\n @if (expandable()) {\r\n <th class=\"fu-expand-head\"></th>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: dataSource()[0] | keyMapping }\r\n \"\r\n />\r\n </tr>\r\n </thead>\r\n\r\n <tbody [attr.role]=\"'rowgroup'\">\r\n @if (sideBar()) {\r\n <div class=\"fu-sidebar\">\r\n <ng-container *ngTemplateOutlet=\"sidebarTemplate() || null\" />\r\n </div>\r\n }\r\n\r\n @if (isInitLoad()) {\r\n <ng-container *ngTemplateOutlet=\"initLoadTemplate\" />\r\n } @else {\r\n @for (row of sortedData(); track $index; let odd = $odd) {\r\n <tr\r\n [attr.outlined]=\"variant() === 'outlined'\"\r\n [attr.role]=\"'row'\"\r\n class=\"fu-body-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd,\r\n hoverable: expandable() || selectRowAction.observed,\r\n }\"\r\n (mouseenter)=\"onRowHover($event, row)\"\r\n (mouseleave)=\"onRowLeave()\"\r\n (click)=\"toggleRow(row, $index)\"\r\n >\r\n @if (expandable()) {\r\n <td\r\n class=\"fu-expand-cell\"\r\n [attr.data-expand]=\"expandedRowIndex === $index\"\r\n >\r\n <fu-icon size=\"16px\" iconName=\"chevronRight\" />\r\n </td>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate();\r\n context: {\r\n $implicit: row,\r\n index: $index,\r\n keys: row | keyMapping,\r\n }\r\n \"\r\n />\r\n </tr>\r\n\r\n @if (\r\n (expandable() && expandedRowIndex === $index) ||\r\n expandIndex() === $index ||\r\n expanded()\r\n ) {\r\n <tr\r\n class=\"fu-expand-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd && expanded(),\r\n }\"\r\n [attr.expanded]=\"expanded()\"\r\n (mouseenter)=\"onExpandHover()\"\r\n >\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n @if (isLoading() && expanded()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandTemplate() || null;\r\n context: { $implicit: row, index: $index }\r\n \"\r\n />\r\n }\r\n </td>\r\n </tr>\r\n }\r\n } @empty {\r\n <tr class=\"fu-empty-row\">\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n noRecordsTemplate() || defaultNoRecordsTemplate\r\n \"\r\n />\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (footerTemplate()) {\r\n <div class=\"fu-table-footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n footerTemplate() || null;\r\n context: { $implicit: sortedData() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n @if (showPaginator()) {\r\n <fu-table-paginator\r\n [dataLenght]=\"totalItems()\"\r\n [quickPageJump]=\"quickPageJump()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n />\r\n }\r\n</div>\r\n\r\n@if (hoveredRow()) {\r\n <div\r\n class=\"fu-action-popup\"\r\n [style.top.px]=\"popupPosition().top\"\r\n [style.right.px]=\"popupPosition().right\"\r\n (mouseenter)=\"onPopupHover()\"\r\n (mouseleave)=\"onPopupLeave()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n popupTemplate() || null;\r\n context: { $implicit: hoveredRow() }\r\n \"\r\n />\r\n </div>\r\n}\r\n\r\n<ng-template #defaultNoRecordsTemplate>\r\n <div class=\"fu-no-records\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M12 8v4m0 4.01l.01-.011M9 3H4v3m0 5v2m16-2v2M15 3h5v3M9 21H4v-3m11 3h5v-3\"\r\n />\r\n </svg>\r\n <p>{{ noRecordsText() }}</p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #initLoadTemplate>\r\n @for (item of arrayFromSize(); track $index) {\r\n <tr class=\"fu-empty-row\">\r\n @for (item of arrayFromCols(); track $index) {\r\n <fu-tbody-cell />\r\n }\r\n </tr>\r\n }\r\n</ng-template>\r\n", styles: [".fu-table-wrapper{position:relative;overflow-x:auto;padding:12px;font-family:Roboto,sans-serif;font-size:14px;background-color:var(--fu-table-bg-color);color:var(--fu-table-text-color);border-radius:4px}.fu-table-wrapper[outlined=true]{border:1px solid var(--fu-table-border-color)}.fu-table-wrapper[outlined=false]{box-shadow:0 1px 4px #0000005e}table{border-collapse:collapse;width:100%;margin-bottom:12px}thead tr{background-color:var(--fu-table-header-bg-color)}thead tr .fu-expand-head{width:40px;border-bottom:1px solid var(--fu-table-border-color)}@media (max-width: 900px){thead tr .fu-expand-head{display:none}}tbody tr .fu-expand-cell{border-bottom:1px solid var(--fu-table-border-color);text-align:center;vertical-align:middle}tbody tr .fu-expand-cell fu-icon{margin-top:3px}@media (max-width: 900px){tbody tr .fu-expand-cell{display:none}}tbody tr .fu-expand-cell[data-expand=true] fu-icon{transition:.1s ease-in-out;transform:rotate(90deg)}.fu-body-row{transition:.2s ease-in-out}.fu-body-row.striped{background-color:var(--fu-table-striped-row-bg-color)}.fu-body-row.hoverable:hover{background-color:var(--fu-table-bg-hover-color);cursor:pointer}.fu-expand-row[expanded=false]{border-top:1px solid var(--fu-table-border-color)}.fu-expand-row.striped{background-color:var(--fu-table-striped-row-bg-color)}tr.fu-expand-row>td{border-bottom:1px solid var(--fu-table-border-color);padding:8px}tr.fu-empty-row>td{border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color);padding:8px;text-align:center}tr.fu-empty-row>td svg{width:100px;height:100px;color:var(--fu-table-border-color)}@media (max-width: 900px){table{border:none;box-shadow:none;min-width:100%}thead{border-bottom:1px solid var(--fu-table-border-color)}tbody tr[outlined=true]{border-right:1px solid var(--fu-table-border-color);border-left:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}tbody tr:first-child{border-top:none}tbody tr:last-child{margin-bottom:0}tr{display:block;margin-bottom:12px}tr[outlined=false]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}tr.fu-expand-row{margin-top:-8px;display:block;width:100%}tr.fu-expand-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}tr.fu-empty-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}}.fu-table-footer{position:relative;min-height:40px;margin-bottom:8px;background-color:var(--fu-table-header-bg-color);border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}.fu-action-popup{position:absolute;display:flex;align-items:center;gap:8px;background:var(--fu-table-bg-color);box-shadow:0 4px 6px #0000001a;border:1px solid var(--fu-table-border-color);border-radius:4px;min-height:40px;z-index:10;padding:0 8px}.fu-no-records{display:flex;flex-direction:column;justify-content:center;align-items:center;height:180px}.fu-no-records>p{color:#aeadad}tbody{position:relative}tbody .fu-sidebar{position:absolute;right:0;top:0;min-width:200px;height:100%;background-color:var(--fu-table-bg-color);border-left:2px solid var(--fu-table-border-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "fu-icon", inputs: ["iconName", "size", "strokeWidth", "color"] }, { kind: "component", type: TablePaginatorComponent, selector: "fu-table-paginator", inputs: ["pageSizeOptions", "quickPageJump", "dataLenght"] }, { kind: "component", type: TableFilterComponent, selector: "fu-table-filter", inputs: ["title"] }, { kind: "component", type: TbodyCellComponent, selector: "fu-tbody-cell", inputs: ["cellValue", "editKey"] }, { kind: "pipe", type: KeyMappingPipe, name: "keyMapping" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1113
1116
  }
1114
1117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: TableComponent, decorators: [{
1115
1118
  type: Component,
@@ -1126,7 +1129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
1126
1129
  TableStorageService,
1127
1130
  TableSortService,
1128
1131
  TableEditService,
1129
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-table-wrapper\" [attr.outlined]=\"variant() === 'outlined'\">\r\n <!-- Search Filter -->\r\n @if (showFilter()) {\r\n <fu-table-filter [title]=\"tableTitle()\" />\r\n } @else if (tableTitle()) {\r\n <div style=\"margin-bottom: 12px\">\r\n <h3>{{ tableTitle() }}</h3>\r\n </div>\r\n }\r\n\r\n <!-- Table -->\r\n <table [attr.role]=\"'table'\" [style.table-layout]=\"tableLayout()\">\r\n <thead [attr.role]=\"'rowgroup'\">\r\n <tr [attr.role]=\"'row'\">\r\n @if (expandable()) {\r\n <th class=\"fu-expand-head\"></th>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: dataSource()[0] | keyMapping }\r\n \"\r\n />\r\n </tr>\r\n </thead>\r\n\r\n <tbody [attr.role]=\"'rowgroup'\">\r\n @if (isInitLoad()) {\r\n <ng-container *ngTemplateOutlet=\"initLoadTemplate\" />\r\n } @else {\r\n @for (row of sortedData(); track $index; let odd = $odd) {\r\n <tr\r\n [attr.outlined]=\"variant() === 'outlined'\"\r\n [attr.role]=\"'row'\"\r\n class=\"fu-body-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd,\r\n hoverable: expandable() || selectRowAction.observed,\r\n }\"\r\n (mouseenter)=\"onRowHover($event, row)\"\r\n (mouseleave)=\"onRowLeave()\"\r\n (click)=\"toggleRow(row, $index)\"\r\n >\r\n @if (expandable()) {\r\n <td\r\n class=\"fu-expand-cell\"\r\n [attr.data-expand]=\"expandedRowIndex === $index\"\r\n >\r\n <fu-icon size=\"16px\" iconName=\"chevronRight\" />\r\n </td>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate();\r\n context: {\r\n $implicit: row,\r\n index: $index,\r\n keys: row | keyMapping,\r\n }\r\n \"\r\n />\r\n </tr>\r\n\r\n @if (\r\n (expandable() && expandedRowIndex === $index) ||\r\n expandIndex() === $index ||\r\n expanded()\r\n ) {\r\n <tr\r\n class=\"fu-expand-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd && expanded(),\r\n }\"\r\n [attr.expanded]=\"expanded()\"\r\n (mouseenter)=\"onExpandHover()\"\r\n >\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n @if (isLoading() && expanded()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandTemplate() || null;\r\n context: { $implicit: row, index: $index }\r\n \"\r\n />\r\n }\r\n </td>\r\n </tr>\r\n }\r\n } @empty {\r\n <tr class=\"fu-empty-row\">\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n noRecordsTemplate() || defaultNoRecordsTemplate\r\n \"\r\n />\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (footerTemplate()) {\r\n <div class=\"fu-table-footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n footerTemplate() || null;\r\n context: { $implicit: sortedData() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n @if (showPaginator()) {\r\n <fu-table-paginator\r\n [dataLenght]=\"totalItems()\"\r\n [quickPageJump]=\"quickPageJump()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n />\r\n }\r\n</div>\r\n\r\n@if (hoveredRow()) {\r\n <div\r\n class=\"fu-action-popup\"\r\n [style.top.px]=\"popupPosition().top\"\r\n [style.right.px]=\"popupPosition().right\"\r\n (mouseenter)=\"onPopupHover()\"\r\n (mouseleave)=\"onPopupLeave()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n popupTemplate() || null;\r\n context: { $implicit: hoveredRow() }\r\n \"\r\n />\r\n </div>\r\n}\r\n\r\n<ng-template #defaultNoRecordsTemplate>\r\n <div class=\"fu-no-records\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M12 8v4m0 4.01l.01-.011M9 3H4v3m0 5v2m16-2v2M15 3h5v3M9 21H4v-3m11 3h5v-3\"\r\n />\r\n </svg>\r\n <p>{{ noRecordsText() }}</p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #initLoadTemplate>\r\n @for (item of arrayFromSize(); track $index) {\r\n <tr class=\"fu-empty-row\">\r\n @for (item of arrayFromCols(); track $index) {\r\n <fu-tbody-cell />\r\n }\r\n </tr>\r\n }\r\n</ng-template>\r\n", styles: [".fu-table-wrapper{overflow-x:auto;padding:12px;font-family:Roboto,sans-serif;font-size:14px;background-color:var(--fu-table-bg-color);color:var(--fu-table-text-color);border-radius:4px}.fu-table-wrapper[outlined=true]{border:1px solid var(--fu-table-border-color)}.fu-table-wrapper[outlined=false]{box-shadow:0 1px 4px #0000005e}table{border-collapse:collapse;width:100%;margin-bottom:12px}thead tr{background-color:var(--fu-table-header-bg-color)}thead tr .fu-expand-head{width:40px;border-bottom:1px solid var(--fu-table-border-color)}@media (max-width: 900px){thead tr .fu-expand-head{display:none}}tbody tr .fu-expand-cell{border-bottom:1px solid var(--fu-table-border-color);text-align:center;vertical-align:middle}tbody tr .fu-expand-cell fu-icon{margin-top:3px}@media (max-width: 900px){tbody tr .fu-expand-cell{display:none}}tbody tr .fu-expand-cell[data-expand=true] fu-icon{transition:.1s ease-in-out;transform:rotate(90deg)}.fu-body-row{transition:.2s ease-in-out}.fu-body-row.striped{background-color:var(--fu-table-striped-row-bg-color)}.fu-body-row.hoverable:hover{background-color:var(--fu-table-bg-hover-color);cursor:pointer}.fu-expand-row[expanded=false]{border-top:1px solid var(--fu-table-border-color)}.fu-expand-row.striped{background-color:var(--fu-table-striped-row-bg-color)}tr.fu-expand-row>td{border-bottom:1px solid var(--fu-table-border-color);padding:8px}tr.fu-empty-row>td{border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color);padding:8px;text-align:center}tr.fu-empty-row>td svg{width:100px;height:100px;color:var(--fu-table-border-color)}@media (max-width: 900px){table{border:none;box-shadow:none;min-width:100%}thead{border-bottom:1px solid var(--fu-table-border-color)}tbody tr[outlined=true]{border-right:1px solid var(--fu-table-border-color);border-left:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}tbody tr:first-child{border-top:none}tbody tr:last-child{margin-bottom:0}tr{display:block;margin-bottom:12px}tr[outlined=false]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}tr.fu-expand-row{margin-top:-8px;display:block;width:100%}tr.fu-expand-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}tr.fu-empty-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}}.fu-table-footer{position:relative;min-height:40px;margin-bottom:8px;background-color:var(--fu-table-header-bg-color);border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}.fu-action-popup{position:absolute;display:flex;align-items:center;gap:8px;background:var(--fu-table-bg-color);box-shadow:0 4px 6px #0000001a;border:1px solid var(--fu-table-border-color);border-radius:4px;min-height:40px;z-index:10;padding:0 8px}.fu-no-records{display:flex;flex-direction:column;justify-content:center;align-items:center;height:180px}.fu-no-records>p{color:#aeadad}\n"] }]
1132
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-table-wrapper\" [attr.outlined]=\"variant() === 'outlined'\">\r\n <!-- Search Filter -->\r\n @if (showFilter()) {\r\n <fu-table-filter [title]=\"tableTitle()\" />\r\n } @else if (tableTitle()) {\r\n <div style=\"margin-bottom: 12px\">\r\n <h3>{{ tableTitle() }}</h3>\r\n </div>\r\n }\r\n\r\n <!-- Table -->\r\n <table [attr.role]=\"'table'\" [style.table-layout]=\"tableLayout()\">\r\n <thead [attr.role]=\"'rowgroup'\">\r\n <tr [attr.role]=\"'row'\">\r\n @if (expandable()) {\r\n <th class=\"fu-expand-head\"></th>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: dataSource()[0] | keyMapping }\r\n \"\r\n />\r\n </tr>\r\n </thead>\r\n\r\n <tbody [attr.role]=\"'rowgroup'\">\r\n @if (sideBar()) {\r\n <div class=\"fu-sidebar\">\r\n <ng-container *ngTemplateOutlet=\"sidebarTemplate() || null\" />\r\n </div>\r\n }\r\n\r\n @if (isInitLoad()) {\r\n <ng-container *ngTemplateOutlet=\"initLoadTemplate\" />\r\n } @else {\r\n @for (row of sortedData(); track $index; let odd = $odd) {\r\n <tr\r\n [attr.outlined]=\"variant() === 'outlined'\"\r\n [attr.role]=\"'row'\"\r\n class=\"fu-body-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd,\r\n hoverable: expandable() || selectRowAction.observed,\r\n }\"\r\n (mouseenter)=\"onRowHover($event, row)\"\r\n (mouseleave)=\"onRowLeave()\"\r\n (click)=\"toggleRow(row, $index)\"\r\n >\r\n @if (expandable()) {\r\n <td\r\n class=\"fu-expand-cell\"\r\n [attr.data-expand]=\"expandedRowIndex === $index\"\r\n >\r\n <fu-icon size=\"16px\" iconName=\"chevronRight\" />\r\n </td>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate();\r\n context: {\r\n $implicit: row,\r\n index: $index,\r\n keys: row | keyMapping,\r\n }\r\n \"\r\n />\r\n </tr>\r\n\r\n @if (\r\n (expandable() && expandedRowIndex === $index) ||\r\n expandIndex() === $index ||\r\n expanded()\r\n ) {\r\n <tr\r\n class=\"fu-expand-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd && expanded(),\r\n }\"\r\n [attr.expanded]=\"expanded()\"\r\n (mouseenter)=\"onExpandHover()\"\r\n >\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n @if (isLoading() && expanded()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandTemplate() || null;\r\n context: { $implicit: row, index: $index }\r\n \"\r\n />\r\n }\r\n </td>\r\n </tr>\r\n }\r\n } @empty {\r\n <tr class=\"fu-empty-row\">\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n noRecordsTemplate() || defaultNoRecordsTemplate\r\n \"\r\n />\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (footerTemplate()) {\r\n <div class=\"fu-table-footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n footerTemplate() || null;\r\n context: { $implicit: sortedData() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n @if (showPaginator()) {\r\n <fu-table-paginator\r\n [dataLenght]=\"totalItems()\"\r\n [quickPageJump]=\"quickPageJump()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n />\r\n }\r\n</div>\r\n\r\n@if (hoveredRow()) {\r\n <div\r\n class=\"fu-action-popup\"\r\n [style.top.px]=\"popupPosition().top\"\r\n [style.right.px]=\"popupPosition().right\"\r\n (mouseenter)=\"onPopupHover()\"\r\n (mouseleave)=\"onPopupLeave()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n popupTemplate() || null;\r\n context: { $implicit: hoveredRow() }\r\n \"\r\n />\r\n </div>\r\n}\r\n\r\n<ng-template #defaultNoRecordsTemplate>\r\n <div class=\"fu-no-records\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M12 8v4m0 4.01l.01-.011M9 3H4v3m0 5v2m16-2v2M15 3h5v3M9 21H4v-3m11 3h5v-3\"\r\n />\r\n </svg>\r\n <p>{{ noRecordsText() }}</p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #initLoadTemplate>\r\n @for (item of arrayFromSize(); track $index) {\r\n <tr class=\"fu-empty-row\">\r\n @for (item of arrayFromCols(); track $index) {\r\n <fu-tbody-cell />\r\n }\r\n </tr>\r\n }\r\n</ng-template>\r\n", styles: [".fu-table-wrapper{position:relative;overflow-x:auto;padding:12px;font-family:Roboto,sans-serif;font-size:14px;background-color:var(--fu-table-bg-color);color:var(--fu-table-text-color);border-radius:4px}.fu-table-wrapper[outlined=true]{border:1px solid var(--fu-table-border-color)}.fu-table-wrapper[outlined=false]{box-shadow:0 1px 4px #0000005e}table{border-collapse:collapse;width:100%;margin-bottom:12px}thead tr{background-color:var(--fu-table-header-bg-color)}thead tr .fu-expand-head{width:40px;border-bottom:1px solid var(--fu-table-border-color)}@media (max-width: 900px){thead tr .fu-expand-head{display:none}}tbody tr .fu-expand-cell{border-bottom:1px solid var(--fu-table-border-color);text-align:center;vertical-align:middle}tbody tr .fu-expand-cell fu-icon{margin-top:3px}@media (max-width: 900px){tbody tr .fu-expand-cell{display:none}}tbody tr .fu-expand-cell[data-expand=true] fu-icon{transition:.1s ease-in-out;transform:rotate(90deg)}.fu-body-row{transition:.2s ease-in-out}.fu-body-row.striped{background-color:var(--fu-table-striped-row-bg-color)}.fu-body-row.hoverable:hover{background-color:var(--fu-table-bg-hover-color);cursor:pointer}.fu-expand-row[expanded=false]{border-top:1px solid var(--fu-table-border-color)}.fu-expand-row.striped{background-color:var(--fu-table-striped-row-bg-color)}tr.fu-expand-row>td{border-bottom:1px solid var(--fu-table-border-color);padding:8px}tr.fu-empty-row>td{border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color);padding:8px;text-align:center}tr.fu-empty-row>td svg{width:100px;height:100px;color:var(--fu-table-border-color)}@media (max-width: 900px){table{border:none;box-shadow:none;min-width:100%}thead{border-bottom:1px solid var(--fu-table-border-color)}tbody tr[outlined=true]{border-right:1px solid var(--fu-table-border-color);border-left:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}tbody tr:first-child{border-top:none}tbody tr:last-child{margin-bottom:0}tr{display:block;margin-bottom:12px}tr[outlined=false]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}tr.fu-expand-row{margin-top:-8px;display:block;width:100%}tr.fu-expand-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}tr.fu-empty-row>td{display:block;width:100%;padding:8px;box-sizing:border-box}}.fu-table-footer{position:relative;min-height:40px;margin-bottom:8px;background-color:var(--fu-table-header-bg-color);border-bottom:1px solid var(--fu-table-border-color);border-top:1px solid var(--fu-table-border-color)}.fu-action-popup{position:absolute;display:flex;align-items:center;gap:8px;background:var(--fu-table-bg-color);box-shadow:0 4px 6px #0000001a;border:1px solid var(--fu-table-border-color);border-radius:4px;min-height:40px;z-index:10;padding:0 8px}.fu-no-records{display:flex;flex-direction:column;justify-content:center;align-items:center;height:180px}.fu-no-records>p{color:#aeadad}tbody{position:relative}tbody .fu-sidebar{position:absolute;right:0;top:0;min-width:200px;height:100%;background-color:var(--fu-table-bg-color);border-left:2px solid var(--fu-table-border-color)}\n"] }]
1130
1133
  }], propDecorators: { selectRowAction: [{
1131
1134
  type: Output
1132
1135
  }], onResize: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-fusion-ui.mjs","sources":["../../../projects/ng-fusion-ui/src/lib/button/directives/btn-outline.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/btn-text.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/btn-filled.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/button.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/button.module.ts","../../../projects/ng-fusion-ui/src/lib/icons/icons.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon-registry.service.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon.component.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon.component.html","../../../projects/ng-fusion-ui/src/lib/icons/icon.module.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-utility.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-storage.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-intl.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-edit.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-paginator/table-paginator.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-paginator/table-paginator.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/directives/body-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/directives/expand-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/directives/header-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/pipes/key-mapping.pipe.ts","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-cell/tbody-cell.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-cell/tbody-cell.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/directives/popup-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-filter/table-filter.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-filter/table-filter.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-sort.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table/table.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table/table.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/thead-cell/thead-cell.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/thead-cell/thead-cell.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-actions/tbody-actions.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-actions/tbody-actions.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/directives/highlight.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/data-table.module.ts","../../../projects/ng-fusion-ui/src/lib/tree/tree/tree.component.ts","../../../projects/ng-fusion-ui/src/lib/tree/tree/tree.component.html","../../../projects/ng-fusion-ui/src/lib/tree/tree.module.ts","../../../projects/ng-fusion-ui/src/public-api.ts","../../../projects/ng-fusion-ui/src/ng-fusion-ui.ts"],"sourcesContent":["import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n Input,\r\n OnInit,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n/**\r\n * @deprecated fu-btn-outline will be removed in next versions. Use `fuButton` instead.\r\n */\r\n\r\n@Directive({\r\n selector: '[fu-btn-outline]',\r\n})\r\nexport class OutlinedButtonDirective implements OnInit {\r\n @Input() variant: 'regular' | 'danger' | 'success' | 'warning' = 'regular';\r\n\r\n @Input({ transform: booleanAttribute }) iconButton: boolean = false;\r\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\r\n @Input({ transform: booleanAttribute }) compact: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn-outline');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant}`);\r\n\r\n if (this.iconButton) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.compact) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n Input,\r\n OnInit,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n/**\r\n * @deprecated fu-btn-text will be removed in next versions. Use `fuButton` instead.\r\n */\r\n\r\n@Directive({\r\n selector: '[fu-btn-text]',\r\n})\r\nexport class TextButtonDirective implements OnInit {\r\n @Input() variant: 'regular' | 'danger' | 'success' | 'warning' = 'regular';\r\n\r\n @Input({ transform: booleanAttribute }) iconButton: boolean = false;\r\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\r\n @Input({ transform: booleanAttribute }) raised: boolean = false;\r\n @Input({ transform: booleanAttribute }) compact: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn-text');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant}`);\r\n\r\n if (this.iconButton) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.raised) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'raised', 'true');\r\n }\r\n\r\n if (this.compact) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n Input,\r\n OnInit,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n/**\r\n * @deprecated fu-btn-filled will be removed in next versions. Use `fuButton` instead.\r\n */\r\n\r\n@Directive({\r\n selector: '[fu-btn-filled]',\r\n})\r\nexport class FilledButtonDirective implements OnInit {\r\n @Input() variant: 'regular' | 'danger' | 'success' | 'warning' = 'regular';\r\n\r\n @Input({ transform: booleanAttribute }) iconButton: boolean = false;\r\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\r\n @Input({ transform: booleanAttribute }) compact: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn-filled');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant}`);\r\n\r\n if (this.iconButton) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.compact) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n OnInit,\r\n booleanAttribute,\r\n input,\r\n inject,\r\n} from '@angular/core';\r\n\r\ntype TInput = boolean | string;\r\n\r\n@Directive({\r\n selector: '[fuButton]',\r\n})\r\nexport class ButtonDirective implements OnInit {\r\n public variant = input<'filled' | 'outline' | 'text'>('filled');\r\n public severity = input<'primary' | 'success' | 'warning' | 'danger'>(\r\n 'primary'\r\n );\r\n\r\n public iconButton = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n public rounded = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n public compact = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n public raised = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant()}`);\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.severity()}`);\r\n\r\n if (this.iconButton()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.compact()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n\r\n if (this.raised()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'raised', 'true');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OutlinedButtonDirective } from './directives/btn-outline.directive';\r\nimport { TextButtonDirective } from './directives/btn-text.directive';\r\nimport { FilledButtonDirective } from './directives/btn-filled.directive';\r\nimport { ButtonDirective } from './directives/button.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n OutlinedButtonDirective,\r\n FilledButtonDirective,\r\n TextButtonDirective,\r\n ButtonDirective,\r\n CommonModule,\r\n ],\r\n exports: [\r\n OutlinedButtonDirective,\r\n FilledButtonDirective,\r\n TextButtonDirective,\r\n ButtonDirective,\r\n ],\r\n})\r\nexport class ButtonModule {}\r\n","export const edit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 20h4L18.5 9.5a2.828 2.828 0 1 0-4-4L4 16zm9.5-13.5l4 4\"/></svg>`;\r\nexport const editOff = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m10 10l-6 6v4h4l6-6m1.99-1.99l2.504-2.504a2.828 2.828 0 1 0-4-4l-2.5 2.5M13.5 6.5l4 4M3 3l18 18\"/></svg>`;\r\nexport const editSave = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 20h4L18.5 9.5a2.828 2.828 0 1 0-4-4L4 16zm9.5-13.5l4 4M15 19l2 2l4-4\"/></svg>`;\r\nexport const trash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 7h16m-10 4v6m4-6v6M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-12M9 7V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\"/></svg>`;\r\nexport const doubleArrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m7 7l5 5l-5 5m6-10l5 5l-5 5\"/></svg>`;\r\nexport const doubleArrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m11 7l-5 5l5 5m6-10l-5 5l5 5\"/></svg>`;\r\nexport const arrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m15 6l-6 6l6 6\"/></svg>`;\r\nexport const arrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m9 6l6 6l-6 6\"/></svg>`;\r\nexport const sort = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m3 9l4-4l4 4M7 5v14m14-4l-4 4l-4-4m4 4V5\"/></svg>`;\r\nexport const sortAsc = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 6h7m-7 6h7m-7 6h9m2-9l3-3l3 3m-3-3v12\"/></svg>`;\r\nexport const sortDesc = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 6h9m-9 6h7m-7 6h7m4-3l3 3l3-3m-3-9v12\"/></svg>`;\r\nexport const filterRemove = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M13.758 19.414L9 21v-8.5L4.52 7.572A2 2 0 0 1 4 6.227V4h16v2.172a2 2 0 0 1-.586 1.414L15 12v1.5m7 8.5l-5-5m0 5l5-5\"/></svg>`;\r\nexport const filterPlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m12 20l-3 1v-8.5L4.52 7.572A2 2 0 0 1 4 6.227V4h16v2.172a2 2 0 0 1-.586 1.414L15 12v3m1 4h6m-3-3v6\"/></svg>`;\r\nexport const filterEdit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M10.97 20.344L9 21v-8.5L4.52 7.572A2 2 0 0 1 4 6.227V4h16v2.172a2 2 0 0 1-.586 1.414L15 12v1.5m3.42 2.11a2.1 2.1 0 0 1 2.97 2.97L18 22h-3v-3z\"/></svg>`;\r\nexport const check = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m5 12l5 5L20 7\"/></svg>`;\r\nexport const save = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M21 7v12q0 .825-.587 1.413T19 21H5q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h12zm-2 .85L16.15 5H5v14h14zM12 18q1.25 0 2.125-.875T15 15t-.875-2.125T12 12t-2.125.875T9 15t.875 2.125T12 18m-6-8h9V6H6zM5 7.85V19V5z\"/></svg>`;\r\nexport const search = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5A6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5S14 7.01 14 9.5S11.99 14 9.5 14\" /></svg>`;\r\n\r\nexport const building = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g fill=\"currentColor\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z\"/><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm11 0H3v14h3v-2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V15h3z\"/></g></svg>`;\r\nexport const buildingHand = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g fill=\"currentColor\"><path d=\"m2 1c0-0.55228 0.44772-1 1-1h10c0.55228 0 1 0.44772 1 1v6.5c0 0.66667-1 0.66667-1 0v-6.5h-10v14h3s2.2783-0.07879 2 1h-5c-0.55228 0-1-0.44772-1-1z\"/><path d=\"M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z\"/><path d=\"m4.0496 13.493v0.43773l4.5597 1.0943 3.9897-0.83169v0.61283h3.4198v-4.8151h-4.5597l-3.5338 1.0068c-0.56996 0.17509-1.0259 0.6566-1.0259 1.1819h-1.1399c-0.96894 0-1.7099 0.56905-1.7099 1.3132m9.6894 0.43773v-3.0641h1.1399v3.0641zm-8.4925-0.61282q0.17099-0.26264 0.51297-0.26264h3.0778c0.28498 0 0.62696-0.04377 0.91194-0.08756l1.3109-0.35018-0.34198-0.83169-1.3679 0.35018c-0.17099 0-1.3109 0.04377-1.3109 0.04377 0-0.17509 0.11399-0.30641 0.34198-0.35018l3.3058-0.963h0.91194v2.4075l-3.9897 0.83169z\" fill=\"currentColor\" stroke-width=\".49949\"/></g></svg>`;\r\nexport const buildingUser = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-12.888 20.361a4.25 4.25 0 0 0-2.1938 0.56919 4.25 4.25 0 0 0-2.1226 3.5432l-0.0024 0.13755 0.0024 0.13755a4.25 4.25 0 1 0 4.3164-4.3875zm0.60951 2.7036h0.62611v2.6657l-2.3076 0.5929-2.6396-0.88936c0-0.1482 0.06709-0.29647 0.16601-0.41503 0.13191-0.11856 0.29543-0.17787 0.4933-0.17787h2.31l0.69252-0.23716-0.09961-0.26562-0.59291 0.20633h-0.92493c-0.09894 0-0.23051-0.05931-0.29646-0.11859-0.06595-0.05928-0.09724-0.14824-0.09724-0.23716 0-0.1482 0.09835-0.26563 0.26325-0.32491zm1.2854 0h1.3186v3.2586h-1.3186z\" stroke-width=\".425\"/><g fill=\"currentColor\"></g><path d=\"m2.0619 18.318a4.9999 4.9999 0 0 0-2.5808 0.66962 4.9999 4.9999 0 0 0-2.4971 4.1684l-0.0028 0.16182 0.0028 0.16183a4.9999 4.9999 0 1 0 5.078-5.1617zm0.71705 3.1807h0.73658v3.1361l-2.7148 0.69752-3.1054-1.0463c0-0.17435 0.07893-0.34878 0.19531-0.48826 0.15518-0.13948 0.34756-0.20926 0.58034-0.20926h2.7175l0.81471-0.27901-0.11719-0.31249-0.69753 0.24274h-1.0881c-0.1164 0-0.27118-0.06977-0.34876-0.13951-0.07759-0.06974-0.1144-0.1744-0.1144-0.27901 0-0.17435 0.1157-0.3125 0.3097-0.38224zm1.5122 0h1.5513v3.8336h-1.5513z\" stroke-width=\".49999\"/><g transform=\"matrix(.86364 0 0 .86364 26.355 .79387)\"><path d=\"m16 10.5c0-3.025-2.475-5.5-5.5-5.5-3.025 0-5.5 2.475-5.5 5.5 0 3.025 2.475 5.5 5.5 5.5 3.025 0 5.5-2.475 5.5-5.5m-3.85-3.025 1.925 1.925-1.925 1.925v-1.375h-2.2v-1.1h2.2zm-3.3 6.05-1.925-1.925 1.925-1.925v1.375h2.2v1.1h-2.2z\" fill=\"currentColor\" stroke-width=\".55\"/></g><path d=\"m38.863 0.91746c0 1.4444-0.6447 2.7386-1.6625 3.61a4.7327 4.7327 0 0 1-3.0875 1.14c-1.1789 0-2.2571-0.42923-3.0875-1.14a4.7414 4.7414 0 0 1-1.6625-3.61c0-2.6233 2.1267-4.75 4.75-4.75s4.75 2.1267 4.75 4.75m-3.0227-1.5114a1.7273 1.7273 0 1 0-3.4545 0 1.7273 1.7273 0 0 0 3.4545 0m1.0795 4.1994v-0.09716a1.7273 1.7273 0 0 0-1.7273-1.7273h-2.1591a1.7273 1.7273 0 0 0-1.7273 1.7273v0.09716q0.13386 0.13948 0.28068 0.26557a3.8691 3.8691 0 0 0 2.5261 0.93273 3.8691 3.8691 0 0 0 2.8068-1.1983\" fill=\"currentColor\" stroke-width=\".43182\"/><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g><path d=\"m11.25 7.3636a3.8864 3.8864 0 0 0-3.8864 3.8864 3.8691 3.8691 0 0 0 0.76561 2.3167 2.1591 2.1591 0 0 1 2.0412-1.4531h2.1591a2.1591 2.1591 0 0 1 2.0412 1.4531 3.8691 3.8691 0 0 0 0.76561-2.3167 3.8864 3.8864 0 0 0-3.8864-3.8864m2.375 6.9631v-0.05398a1.2955 1.2955 0 0 0-1.2955-1.2955h-2.1591a1.2955 1.2955 0 0 0-1.2955 1.2955v0.05398a3.8691 3.8691 0 0 0 2.375 0.80966c0.89473 0 1.7182-0.30227 2.375-0.80966m-7.125-3.0767c0-2.6233 2.1267-4.75 4.75-4.75 2.6233 0 4.75 2.1267 4.75 4.75a4.7414 4.7414 0 0 1-1.6625 3.61 4.7327 4.7327 0 0 1-3.0875 1.14 4.7327 4.7327 0 0 1-3.0875-1.14 4.7414 4.7414 0 0 1-1.6625-3.61m4.75-2.5909a1.0795 1.0795 0 1 0 0 2.1591 1.0795 1.0795 0 0 0 0-2.1591m-1.9432 1.0795a1.9432 1.9432 0 1 1 3.8864 0 1.9432 1.9432 0 0 1-3.8864 0\" stroke-width=\".43182\"/></g></svg>`;\r\nexport const buildingSwap = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-12.888 20.361a4.25 4.25 0 0 0-2.1938 0.56919 4.25 4.25 0 0 0-2.1226 3.5432l-0.0024 0.13755 0.0024 0.13755a4.25 4.25 0 1 0 4.3164-4.3875zm0.60951 2.7036h0.62611v2.6657l-2.3076 0.5929-2.6396-0.88936c0-0.1482 0.06709-0.29647 0.16601-0.41503 0.13191-0.11856 0.29543-0.17787 0.4933-0.17787h2.31l0.69252-0.23716-0.09961-0.26562-0.59291 0.20633h-0.92493c-0.09894 0-0.23051-0.05931-0.29646-0.11859-0.06595-0.05928-0.09724-0.14824-0.09724-0.23716 0-0.1482 0.09835-0.26563 0.26325-0.32491zm1.2854 0h1.3186v3.2586h-1.3186z\" stroke-width=\".425\"/><g fill=\"currentColor\"></g><path d=\"m2.0619 18.318a4.9999 4.9999 0 0 0-2.5808 0.66962 4.9999 4.9999 0 0 0-2.4971 4.1684l-0.0028 0.16182 0.0028 0.16183a4.9999 4.9999 0 1 0 5.078-5.1617zm0.71705 3.1807h0.73658v3.1361l-2.7148 0.69752-3.1054-1.0463c0-0.17435 0.07893-0.34878 0.19531-0.48826 0.15518-0.13948 0.34756-0.20926 0.58034-0.20926h2.7175l0.81471-0.27901-0.11719-0.31249-0.69753 0.24274h-1.0881c-0.1164 0-0.27118-0.06977-0.34876-0.13951-0.07759-0.06974-0.1144-0.1744-0.1144-0.27901 0-0.17435 0.1157-0.3125 0.3097-0.38224zm1.5122 0h1.5513v3.8336h-1.5513z\" stroke-width=\".49999\"/><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g><path d=\"m11.25 6.5c-2.6125 0-4.75 2.1375-4.75 4.75 0 2.6125 2.1375 4.75 4.75 4.75s4.75-2.1375 4.75-4.75c0-2.6125-2.1375-4.75-4.75-4.75m0 8.55c-2.0948 0-3.8-1.7052-3.8-3.8 0-2.0948 1.7052-3.8 3.8-3.8 2.0948 0 3.8 1.7053 3.8 3.8 0 2.0948-1.7052 3.8-3.8 3.8m1.425-6.4125v1.1875h-1.9v0.95h1.9v1.1875l1.6625-1.6625zm-2.85 1.9-1.6625 1.6625 1.6625 1.6625v-1.1875h1.9v-0.95h-1.9z\" fill=\"currentColor\" stroke-width=\".475\"/></svg>`;\r\nexport const buildingBuild = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-12.888 20.361a4.25 4.25 0 0 0-2.1938 0.56919 4.25 4.25 0 0 0-2.1226 3.5432l-0.0024 0.13755 0.0024 0.13755a4.25 4.25 0 1 0 4.3164-4.3875zm0.60951 2.7036h0.62611v2.6657l-2.3076 0.5929-2.6396-0.88936c0-0.1482 0.06709-0.29647 0.16601-0.41503 0.13191-0.11856 0.29543-0.17787 0.4933-0.17787h2.31l0.69252-0.23716-0.09961-0.26562-0.59291 0.20633h-0.92493c-0.09894 0-0.23051-0.05931-0.29646-0.11859-0.06595-0.05928-0.09724-0.14824-0.09724-0.23716 0-0.1482 0.09835-0.26563 0.26325-0.32491zm1.2854 0h1.3186v3.2586h-1.3186z\" stroke-width=\".425\"/><g fill=\"currentColor\"></g><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g><path d=\"m11.25 6.5c2.619 0 4.75 2.131 4.75 4.75 0 2.619-2.131 4.75-4.75 4.75-2.619 0-4.75-2.131-4.75-4.75 0-2.619 2.131-4.75 4.75-4.75m0 0.95001c-2.1028 0-3.8 1.6972-3.8 3.8 0 2.1028 1.6972 3.8 3.8 3.8 2.1028 0 3.8-1.6972 3.8-3.8 0-2.1028-1.6972-3.8-3.8-3.8m0.0204 1.6205c0.3593 0.4672 0.48051 1.0419 0.36538 1.4615q-0.0215 0.10358 1.5192 1.6153 0.5038 0.5038 0 1.0076-0.47417 0.47414-0.94836 0.0558l-1.667-1.5825c-0.41962 0.11514-0.99434-6e-3 -1.4615-0.36537-0.34267-0.45055-0.46084-1.0395-0.36538-1.4615l0.73075 0.73076 0.73076-0.36538 0.36538-0.73076-0.73076-0.73078c0.42209-0.0954 1.011 0.0227 1.4615 0.36538\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke-width=\".022266\"/></svg>`;\r\nexport const buildingGear = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m14.281 9.329 1.1442 0.18703a0.19356 0.19356 0 0 1 0.16209 0.19119v1.0646a0.19356 0.19356 0 0 1-0.16031 0.19059l-1.1459 0.20128q-0.09915 0.34556-0.27253 0.65966l0.67747 0.9405a0.19356 0.19356 0 0 1-0.02018 0.25056l-0.75288 0.75288a0.19356 0.19356 0 0 1-0.24819 0.02198l-0.95-0.66678a3.2656 3.2656 0 0 1-0.66381 0.27788l-0.20188 1.1406a0.19356 0.19356 0 0 1-0.19119 0.15972h-1.064a0.19297 0.19297 0 0 1-0.19059-0.1615l-0.18941-1.1347a3.2656 3.2656 0 0 1-0.66678-0.27609l-0.94287 0.66084a0.19356 0.19356 0 0 1-0.24819-0.021975l-0.75347-0.75288a0.19594 0.19594 0 0 1-0.020776-0.24938l0.66678-0.93219a3.2656 3.2656 0 0 1-0.27907-0.67034l-1.1287-0.20009a0.19356 0.19356 0 0 1-0.15972-0.19059v-1.0646c0-0.09499 0.06828-0.17575 0.16209-0.19119l1.1287-0.18822q0.10272-0.35031 0.27906-0.66975l-0.65906-0.94169a0.19356 0.19356 0 0 1 0.021975-0.24759l0.75347-0.75228a0.19356 0.19356 0 0 1 0.24938-0.020776l0.93516 0.66797q0.31647-0.17338 0.66559-0.27313l0.18525-1.1341a0.19356 0.19356 0 0 1 0.19119-0.16209h1.0646c0.0944 0 0.17456 0.067688 0.19119 0.16031l0.1995 1.14q0.34734 0.10034 0.665 0.27609l0.93694-0.67391a0.19356 0.19356 0 0 1 0.25056 0.019591l0.75287 0.75288a0.19356 0.19356 0 0 1 0.02137 0.24819l-0.66797 0.95178q0.17219 0.31469 0.27312 0.65906zm-4.503 0.91853a1.3555 1.3555 0 1 0 2.7111 0 1.3555 1.3555 0 0 0-2.7111 0z\" clip-rule=\"evenodd\" fill=\"none\" stroke=\"currentColor\" stroke-width=\".59375\"/></g></svg>`;\r\nexport const buildingGearBuild = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m14.281 9.329 1.1442 0.18703c0.09357 0.015417 0.16219 0.096356 0.16209 0.19119v1.0646c-4.5e-5 0.09404-0.06767 0.17444-0.16031 0.19059l-1.1459 0.20128c-0.0661 0.23038-0.15694 0.45026-0.27253 0.65966l0.67747 0.9405c0.0558 0.07712 0.04724 0.18337-0.02018 0.25056l-0.75288 0.75288c-0.06639 0.06668-0.17111 0.07595-0.24819 0.02198l-0.95-0.66678c-0.21036 0.1168-0.43298 0.20999-0.66381 0.27788l-0.20188 1.1406c-0.01645 0.09263-0.09711 0.16001-0.19119 0.15972h-1.064c-0.09451 1.02e-4 -0.17518-0.06826-0.19059-0.1615l-0.18941-1.1347c-0.23178-0.067114-0.4554-0.15971-0.66678-0.27609l-0.94287 0.66084c-0.077074 0.05397-0.1818 0.0447-0.24819-0.02197l-0.75347-0.75288c-0.066017-0.0673-0.074746-0.17208-0.020776-0.24938l0.66678-0.93219c-0.11765-0.21238-0.21125-0.43722-0.27907-0.67034l-1.1287-0.20009c-0.092404-0.01641-0.15972-0.096743-0.15972-0.19059v-1.0646c0-0.09499 0.06828-0.17575 0.16209-0.19119l1.1287-0.18822c0.068482-0.23354 0.1615-0.45679 0.27906-0.66975l-0.65906-0.94169c-0.053635-0.076954-0.044375-0.18129 0.021975-0.24759l0.75347-0.75228c0.066872-0.06695 0.17235-0.075737 0.24938-0.020776l0.93516 0.66797c0.21098-0.11558 0.43284-0.20663 0.66559-0.27313l0.18525-1.1341c0.01542-0.093571 0.09635-0.16219 0.19119-0.16209h1.0646c0.0944 0 0.17456 0.067688 0.19119 0.16031l0.1995 1.14c0.23156 0.066893 0.45323 0.15892 0.665 0.27609l0.93694-0.67391c0.07698-0.055954 0.18322-0.047648 0.25056 0.019591l0.75287 0.75288c0.06648 0.066546 0.0755 0.17125 0.02137 0.24819l-0.66797 0.95178c0.11479 0.20979 0.20583 0.42948 0.27312 0.65906z\" clip-rule=\"evenodd\" fill=\"none\" stroke=\"currentColor\" stroke-width=\".59375\"/><path d=\"m10.231 8.372c0.62223 0 1.1267 0.50443 1.1267 1.1267 0 0.11382-0.01688 0.22369-0.04827 0.32727l1.1749 1.1749c0.20741 0.20741 0.20741 0.54369 0 0.7511-0.20741 0.20741-0.5437 0.20741-0.7511 0l-1.1749-1.1749c-0.10357 0.03139-0.21345 0.04827-0.32727 0.04827-0.62223 0-1.1267-0.50442-1.1267-1.1267 0-0.12008 0.01878-0.23577 0.05358-0.34429l0.53294 0.53206 0.52824-0.17593 0.02359-0.023589 0.17608-0.52775-0.53356-0.53309c0.10895-0.035102 0.22516-0.054062 0.34579-0.054062\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke-width=\".008802\"/></g></svg>`;\r\nexport const buildingRemove = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m11.134 14.048c-2.0947 0-3.8-1.7052-3.8-3.8 0-2.0947 1.7052-3.8 3.8-3.8 2.0948 0 3.8 1.7052 3.8 3.8 0 2.0948-1.7052 3.8-3.8 3.8m0-8.55c-2.6267 0-4.75 2.1232-4.75 4.75 0 2.6268 2.1232 4.75 4.75 4.75 2.6268 0 4.75-2.1232 4.75-4.75 0-2.6267-2.1232-4.75-4.75-4.75m1.2302 2.85-1.2302 1.2302-1.2302-1.2302-0.66975 0.66975 1.2302 1.2302-1.2302 1.2302 0.66975 0.66975 1.2302-1.2302 1.2302 1.2302 0.66975-0.66975-1.2302-1.2302 1.2302-1.2302z\" fill=\"currentColor\" stroke-width=\".475\"/></g></svg>`;\r\nexport const buildingAdd = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m11.134 6.4476c2.0952 0 3.8 1.7048 3.8 3.8 0 2.0952-1.7048 3.8-3.8 3.8-2.0952 0-3.8-1.7048-3.8-3.8 0-2.0952 1.7048-3.8 3.8-3.8m0-0.95c-2.6234 0-4.75 2.1266-4.75 4.75 0 2.6234 2.1266 4.75 4.75 4.75 2.6234 0 4.75-2.1266 4.75-4.75 0-2.6234-2.1266-4.75-4.75-4.75m2.375 4.275h-1.9v-1.9h-0.95v1.9h-1.9v0.95h1.9v1.9h0.95v-1.9h1.9z\" fill=\"currentColor\" stroke-width=\".475\"/></g></svg>`;\r\n\r\nexport const exchange = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m21 9l-4-4v3h-7v2h7v3M7 11l-4 4l4 4v-3h7v-2H7z\"/></svg>`;\r\nexport const exchangeCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M12.005 22.003c-5.523 0-10-4.477-10-10s4.477-10 10-10s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-5-7h9v2h-4v3zm5-4v-3l5 5h-9v-2z\"/></svg>`;\r\nexport const cancel = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M6.758 17.243L12.001 12m5.243-5.243L12 12m0 0L6.758 6.757M12.001 12l5.243 5.243\"/></svg>`;\r\nexport const cancelCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m8.4 17l3.6-3.6l3.6 3.6l1.4-1.4l-3.6-3.6L17 8.4L15.6 7L12 10.6L8.4 7L7 8.4l3.6 3.6L7 15.6zm3.6 5q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22m0-2q3.35 0 5.675-2.325T20 12t-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20m0-8\"/></svg>`;\r\nexport const plus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 5v14m-7-7h14\"/></svg>`;\r\nexport const plusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m6 0h6m-3-3v6\"/></svg>`;\r\nexport const eye = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\"><path d=\"M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0\" /><path d=\"M21 12q-3.6 6-9 6t-9-6q3.6-6 9-6t9 6\" /></g></svg>`;\r\nexport const chevronRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M12 8L5.68 1.68L4 3.35L8.65 8L4 12.65l1.68 1.67z\"/></svg>`;\r\nexport const link = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M17 7h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c1.65 0 3 1.35 3 3s-1.35 3-3 3h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c2.76 0 5-2.24 5-5s-2.24-5-5-5m-9 5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9c-.55 0-1 .45-1 1m2 3H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h3c.55 0 1-.45 1-1s-.45-1-1-1H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h3c.55 0 1-.45 1-1s-.45-1-1-1\" /></svg>`;\r\nexport const certificate = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M128 136a8 8 0 0 1-8 8H72a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8m-8-40H72a8 8 0 0 0 0 16h48a8 8 0 0 0 0-16m112 65.47V224a8 8 0 0 1-12 7l-24-13.74L172 231a8 8 0 0 1-12-7v-24H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16v30.53a51.88 51.88 0 0 1 0 74.94M160 184v-22.53A52 52 0 0 1 216 76V56H40v128Zm56-12a51.88 51.88 0 0 1-40 0v38.22l16-9.16a8 8 0 0 1 7.94 0l16 9.16Zm16-48a36 36 0 1 0-36 36a36 36 0 0 0 36-36\" /></svg>`;\r\nexport const elevator = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m7 2l4 4H8v4H6V6H3zm10 8l-4-4h3V2h2v4h3zM7 12h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2m0 2v6h10v-6z\" /></svg>`;\r\nexport const report = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10 9H6m9.5 2a2.5 2.5 0 1 1 0-5a2.5 2.5 0 0 1 0 5M6 6h3m9 12l-4.5-3l-2.5 2l-5-4\" /><path d=\"M3 20.4V3.6a.6.6 0 0 1 .6-.6h16.8a.6.6 0 0 1 .6.6v16.8a.6.6 0 0 1-.6.6H3.6a.6.6 0 0 1-.6-.6Z\" /></g></svg>`;\r\nexport const templateEdit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" fill-rule=\"evenodd\" d=\"M10.944 1.25h2.112c1.838 0 3.294 0 4.433.153c1.172.158 2.121.49 2.87 1.238a.75.75 0 0 1-1.06 1.06c-.424-.422-1.004-.676-2.01-.811c-1.027-.138-2.382-.14-4.289-.14h-2c-1.907 0-3.261.002-4.29.14c-1.005.135-1.585.389-2.008.812S4.025 4.705 3.89 5.71c-.138 1.029-.14 2.383-.14 4.29v4c0 1.907.002 3.262.14 4.29c.135 1.005.389 1.585.812 2.008s1.003.677 2.009.812c1.028.138 2.382.14 4.289.14h2c1.907 0 3.262-.002 4.29-.14c1.005-.135 1.585-.389 2.008-.812c.696-.696.907-1.777.943-4.309a.75.75 0 0 1 1.5.022c-.035 2.427-.192 4.158-1.382 5.348c-.749.748-1.698 1.08-2.87 1.238c-1.14.153-2.595.153-4.433.153h-2.112c-1.838 0-3.294 0-4.433-.153c-1.172-.158-2.121-.49-2.87-1.238c-.748-.749-1.08-1.698-1.238-2.87c-.153-1.14-.153-2.595-.153-4.433V9.944c0-1.838 0-3.294.153-4.433c.158-1.172.49-2.121 1.238-2.87c.749-.748 1.698-1.08 2.87-1.238c1.14-.153 2.595-.153 4.433-.153m7.17 5.796a2.716 2.716 0 1 1 3.84 3.84L17.2 15.643a7 7 0 0 1-.63.587q-.346.27-.744.46c-.224.107-.46.185-.806.3l-2.084.695a1.28 1.28 0 0 1-1.62-1.62l.681-2.04l.014-.043c.116-.347.194-.582.301-.806a4 4 0 0 1 .46-.744c.153-.196.328-.371.587-.63l.031-.031zm2.78 1.06a1.216 1.216 0 0 0-1.72 0l-.182.182l.034.107c.094.27.273.63.611.968a2.55 2.55 0 0 0 1.075.645l.182-.182a1.216 1.216 0 0 0 0-1.72m-1.328 3.048a4 4 0 0 1-.99-.73a4 4 0 0 1-.73-.99L14.45 12.83c-.301.301-.407.409-.496.523q-.17.218-.289.467c-.062.131-.111.274-.246.678l-.4 1.2l.283.283l1.2-.4c.404-.135.547-.184.678-.246q.248-.12.467-.289c.114-.089.222-.195.523-.496zM7.25 9A.75.75 0 0 1 8 8.25h6.5a.75.75 0 0 1 0 1.5H8A.75.75 0 0 1 7.25 9m0 4a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5H8a.75.75 0 0 1-.75-.75m0 4a.75.75 0 0 1 .75-.75h1.5a.75.75 0 0 1 0 1.5H8a.75.75 0 0 1-.75-.75\" clip-rule=\"evenodd\" /></svg>`;\r\nexport const draftEdit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" ><path d=\"m18.18 8.04l.463-.464a1.966 1.966 0 1 1 2.781 2.78l-.463.464M18.18 8.04s.058.984.927 1.853s1.854.927 1.854.927M18.18 8.04l-4.26 4.26c-.29.288-.434.433-.558.592q-.22.282-.374.606c-.087.182-.151.375-.28.762l-.413 1.24l-.134.401m8.8-5.081l-4.26 4.26c-.29.29-.434.434-.593.558q-.282.22-.606.374c-.182.087-.375.151-.762.28l-1.24.413l-.401.134m0 0l-.401.134a.53.53 0 0 1-.67-.67l.133-.402m.938.938l-.938-.938\" /><path stroke-linecap=\"round\" d=\"M8 13h2.5M8 9h6.5M8 17h1.5M3 14v-4c0-3.771 0-5.657 1.172-6.828S7.229 2 11 2h2c3.771 0 5.657 0 6.828 1.172M21 14c0 3.771 0 5.657-1.172 6.828m-15.656 0C5.343 22 7.229 22 11 22h2c3.771 0 5.657 0 6.828-1.172m0 0c.944-.943 1.127-2.348 1.163-4.828\" /></g></svg>`;\r\nexport const widgets = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" d=\"M16.65 13L11 7.35l5.65-5.65l5.65 5.65zM3 11V3h8v8zm10 10v-8h8v8zM3 21v-8h8v8z\" /></svg>`;\r\nexport const starOutline = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" d=\"m8.85 16.825l3.15-1.9l3.15 1.925l-.825-3.6l2.775-2.4l-3.65-.325l-1.45-3.4l-1.45 3.375l-3.65.325l2.775 2.425zM5.825 21l1.625-7.025L2 9.25l7.2-.625L12 2l2.8 6.625l7.2.625l-5.45 4.725L18.175 21L12 17.275zM12 12.25\" /></svg>`;\r\nexport const starSolid = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" d=\"m5.825 21l1.625-7.025L2 9.25l7.2-.625L12 2l2.8 6.625l7.2.625l-5.45 4.725L18.175 21L12 17.275z\" /></svg>`;\r\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport {\r\n edit,\r\n editOff,\r\n editSave,\r\n trash,\r\n doubleArrowLeft,\r\n doubleArrowRight,\r\n arrowLeft,\r\n arrowRight,\r\n sort,\r\n sortAsc,\r\n sortDesc,\r\n filterRemove,\r\n filterPlus,\r\n filterEdit,\r\n check,\r\n save,\r\n exchange,\r\n exchangeCircle,\r\n cancel,\r\n cancelCircle,\r\n buildingAdd,\r\n plus,\r\n plusCircle,\r\n buildingHand,\r\n buildingRemove,\r\n building,\r\n buildingBuild,\r\n buildingSwap,\r\n buildingUser,\r\n buildingGear,\r\n buildingGearBuild,\r\n search,\r\n eye,\r\n chevronRight,\r\n link,\r\n certificate,\r\n report,\r\n elevator,\r\n templateEdit,\r\n draftEdit,\r\n widgets,\r\n starOutline,\r\n starSolid,\r\n} from './icons';\r\nimport { IconNames } from './icon-names';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IconRegistryService {\r\n private icons = new Map<string, SafeHtml>();\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n this.registerIcon('edit', edit);\r\n this.registerIcon('editOff', editOff);\r\n this.registerIcon('editSave', editSave);\r\n this.registerIcon('trash', trash);\r\n this.registerIcon('arrowLeft', arrowLeft);\r\n this.registerIcon('arrowRight', arrowRight);\r\n this.registerIcon('doubleArrowLeft', doubleArrowLeft);\r\n this.registerIcon('doubleArrowRight', doubleArrowRight);\r\n this.registerIcon('sort', sort);\r\n this.registerIcon('sortAsc', sortAsc);\r\n this.registerIcon('sortDesc', sortDesc);\r\n this.registerIcon('filterRemove', filterRemove);\r\n this.registerIcon('filterPlus', filterPlus);\r\n this.registerIcon('filterEdit', filterEdit);\r\n this.registerIcon('check', check);\r\n this.registerIcon('save', save);\r\n this.registerIcon('building', building);\r\n this.registerIcon('buildingHand', buildingHand);\r\n this.registerIcon('buildingBuild', buildingBuild);\r\n this.registerIcon('buildingSwap', buildingSwap);\r\n this.registerIcon('buildingUser', buildingUser);\r\n this.registerIcon('buildingGear', buildingGear);\r\n this.registerIcon('buildingGearBuild', buildingGearBuild);\r\n this.registerIcon('buildingRemove', buildingRemove);\r\n this.registerIcon('buildingAdd', buildingAdd);\r\n this.registerIcon('exchange', exchange);\r\n this.registerIcon('exchangeCircle', exchangeCircle);\r\n this.registerIcon('cancel', cancel);\r\n this.registerIcon('cancelCircle', cancelCircle);\r\n this.registerIcon('plus', plus);\r\n this.registerIcon('plusCircle', plusCircle);\r\n this.registerIcon('search', search);\r\n this.registerIcon('eye', eye);\r\n this.registerIcon('chevronRight', chevronRight);\r\n this.registerIcon('link', link);\r\n this.registerIcon('certificate', certificate);\r\n this.registerIcon('report', report);\r\n this.registerIcon('elevator', elevator);\r\n this.registerIcon('templateEdit', templateEdit);\r\n this.registerIcon('draftEdit', draftEdit);\r\n this.registerIcon('widgets', widgets);\r\n this.registerIcon('starOutline', starOutline);\r\n this.registerIcon('starSolid', starSolid);\r\n }\r\n\r\n public registerIcon(name: IconNames, svg: string): void {\r\n const safeSvg = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n this.icons.set(name, safeSvg);\r\n }\r\n\r\n public getIcon(name: string): SafeHtml | undefined {\r\n return this.icons.get(name);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\nimport { IconRegistryService } from './icon-registry.service';\r\nimport { IconNames } from './icon-names';\r\n\r\n@Component({\n selector: 'fu-icon',\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\r\nexport class IconComponent implements OnChanges, OnInit {\r\n public iconName = input.required<IconNames>();\r\n\r\n public size = input<string>('');\r\n public strokeWidth = input<string>('');\r\n public color = input<string>('');\r\n\r\n @HostBinding('class') get classList() {\r\n return `fu-icon`;\r\n }\r\n\r\n public iconSvg: SafeHtml | undefined;\r\n\r\n constructor(\r\n private iconRegistry: IconRegistryService,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['size']) {\r\n this.setIconSize();\r\n }\r\n if (changes['color']) {\r\n this.setIconColor();\r\n }\r\n if (changes['strokeWidth']) {\r\n this.setIconStrokeWidth();\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.iconSvg = this.iconRegistry.getIcon(this.iconName());\r\n }\r\n\r\n private setIconColor(): void {\r\n this.elementRef.nativeElement.style.removeProperty('color');\r\n\r\n if (this.color() !== undefined) {\r\n this.elementRef.nativeElement.style.setProperty('color', this.color());\r\n }\r\n }\r\n\r\n private setIconSize(): void {\r\n this.elementRef.nativeElement.style.removeProperty('--fu-icon-size');\r\n\r\n if (this.size() !== undefined) {\r\n this.elementRef.nativeElement.style.setProperty(\r\n '--fu-icon-size',\r\n this.size().toString()\r\n );\r\n }\r\n }\r\n\r\n private setIconStrokeWidth(): void {\r\n this.elementRef.nativeElement.style.removeProperty(\r\n '--fu-icon-stroke-width'\r\n );\r\n if (this.strokeWidth() !== undefined) {\r\n this.elementRef.nativeElement.style.setProperty(\r\n '--fu-icon-stroke-width',\r\n this.strokeWidth().toString()\r\n );\r\n }\r\n }\r\n}\r\n","<span [innerHTML]=\"iconSvg\" class=\"fu-icon-container\"></span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconRegistryService } from './icon-registry.service';\r\nimport { IconComponent } from './icon.component';\r\n\r\n@NgModule({\r\n declarations: [IconComponent],\r\n imports: [CommonModule],\r\n providers: [IconRegistryService],\r\n exports: [IconComponent],\r\n})\r\nexport class IconModule {}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TableUtilityService {\r\n private headerTexts: string[] = [];\r\n\r\n public headerCount = signal<number>(0);\r\n public isLoading = signal<boolean>(false);\r\n public sortCellIndex = signal<number>(-1);\r\n public expanded = signal<boolean>(false);\r\n\r\n public setSortCellIndex(index: number): void {\r\n this.sortCellIndex.set(index);\r\n }\r\n\r\n public resetSortCellIndex(): void {\r\n this.sortCellIndex.set(-1);\r\n }\r\n\r\n public setHeaderText(index: number, text: string): void {\r\n this.headerTexts[index] = text;\r\n }\r\n\r\n public getHeaderText(index: number): string | undefined {\r\n return this.headerTexts[index];\r\n }\r\n\r\n public clearHeaderText(): void {\r\n this.headerTexts = [];\r\n }\r\n\r\n public setColumnCount(): void {\r\n this.headerCount.update(count => count + 1);\r\n }\r\n\r\n public resetColumnCount(): void {\r\n this.headerCount.set(0);\r\n }\r\n\r\n public setIsLoading(loading: boolean): void {\r\n this.isLoading.set(loading);\r\n }\r\n\r\n public getExpanded(expanded: boolean): void {\r\n this.expanded.set(expanded);\r\n }\r\n}\r\n","import { computed, effect, Injectable, signal } from '@angular/core';\r\nimport { SortDirection } from '../models';\r\n\r\ninterface StorageState {\r\n currentPage: number;\r\n pageSize: number;\r\n sortKey: string | number;\r\n sortDirection: SortDirection;\r\n searchText: string;\r\n}\r\n\r\nconst initialState: StorageState = {\r\n currentPage: 0,\r\n pageSize: 10,\r\n sortKey: '',\r\n sortDirection: '',\r\n searchText: '',\r\n};\r\n\r\n@Injectable()\r\nexport class TableStorageService {\r\n private storageState = signal<StorageState>(initialState);\r\n\r\n public localStorageKey = signal('');\r\n\r\n public currentPage = computed(() => this.storageState().currentPage);\r\n public pageSize = computed(() => this.storageState().pageSize);\r\n public sortKey = computed(() => this.storageState().sortKey);\r\n public sortDirection = computed(() => this.storageState().sortDirection);\r\n public searchText = computed(() => this.storageState().searchText);\r\n\r\n storageStateEffect = effect(() => {\r\n if (this.localStorageKey()) {\r\n const state = this.storageState();\r\n this.updateLocalStorage(state);\r\n }\r\n });\r\n\r\n public setCurrentPage(currentPage: number): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n currentPage,\r\n }));\r\n }\r\n\r\n public setPageSize(pageSize: number): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n pageSize,\r\n }));\r\n }\r\n\r\n public setSortKey(sortKey: string | number): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n sortKey,\r\n }));\r\n }\r\n\r\n public setSortDirection(sortDirection: SortDirection): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n sortDirection,\r\n }));\r\n }\r\n\r\n public setSearchText(searchText: string): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n searchText,\r\n }));\r\n }\r\n\r\n public setLocalStorageKey(key: string): void {\r\n const storedValues = window.localStorage.getItem(key);\r\n\r\n if (storedValues && key) {\r\n this.storageState.set(JSON.parse(storedValues));\r\n }\r\n this.localStorageKey.set(key);\r\n }\r\n\r\n public resetStorageKey(): void {\r\n this.localStorageKey.set('');\r\n }\r\n\r\n public resetState(): void {\r\n this.storageState.set(initialState);\r\n }\r\n\r\n private updateLocalStorage(state: StorageState): void {\r\n window.localStorage.setItem(this.localStorageKey(), JSON.stringify(state));\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TableIntlService {\r\n public searchPlaceholder = signal<string>('Search...');\r\n public pageSizeLabel = signal<string>('Page size');\r\n public noRecordsText = signal<string>('No records found');\r\n public noEntriesLabel = signal<string>('No entries');\r\n\r\n public entriesLabel = (first: number, last: number, total: number) =>\r\n `${first} to ${last} of ${total} entries`;\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TableEditService {\r\n public editIndex = signal<number | null>(null);\r\n public editValues = signal<{ [key: string]: any }>({});\r\n public savingIndex = signal<number>(-1);\r\n\r\n public startEditing(rowIndex: number): void {\r\n this.editValues.set({});\r\n this.editIndex.set(rowIndex);\r\n }\r\n\r\n public stopEditing(): void {\r\n this.editIndex.set(null);\r\n }\r\n\r\n public updateEditValues(key: string, value: any): void {\r\n this.editValues.update(values => ({\r\n ...values,\r\n [key]: value,\r\n }));\r\n }\r\n\r\n public resetEditValues(): void {\r\n this.editValues.set({});\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { ButtonModule } from '../../button';\r\nimport { IconModule } from '../../icons';\r\nimport { TableIntlService } from '../services/table-intl.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\n\r\n@Component({\r\n selector: 'fu-table-paginator',\r\n imports: [ButtonModule, IconModule],\r\n templateUrl: './table-paginator.component.html',\r\n styleUrl: './table-paginator.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TablePaginatorComponent {\r\n public pageSizeOptions = input<number[]>([]);\r\n public quickPageJump = input<boolean>(false);\r\n public dataLenght = input<number>(0);\r\n\r\n private tableEditService = inject(TableEditService);\r\n private tableStorageService = inject(TableStorageService);\r\n private tableIntl = inject(TableIntlService);\r\n\r\n public pageSizeLabel = this.tableIntl.pageSizeLabel;\r\n public pageSize = this.tableStorageService.pageSize;\r\n public currentPage = this.tableStorageService.currentPage;\r\n public searchText = this.tableStorageService.searchText;\r\n\r\n private first = computed(() => this.currentPage() * this.pageSize() + 1);\r\n private last = computed(() =>\r\n Math.min((this.currentPage() + 1) * this.pageSize(), this.dataLenght())\r\n );\r\n public totalPages = computed(() =>\r\n Math.ceil(this.dataLenght() / this.pageSize())\r\n );\r\n public totalItems = computed(() => this.dataLenght());\r\n public noEntriesLabel = this.tableIntl.noEntriesLabel;\r\n public entriesLabel = computed(() =>\r\n this.tableIntl.entriesLabel(this.first(), this.last(), this.totalItems())\r\n );\r\n\r\n public goToPage(page: number): void {\r\n if (page < 0 || page > this.totalPages()) {\r\n return;\r\n }\r\n\r\n this.stopEditing();\r\n this.tableStorageService.setCurrentPage(page);\r\n }\r\n\r\n public changePageSize(event: any): void {\r\n const pageSize = Number(event.target.value);\r\n this.tableStorageService.setCurrentPage(0);\r\n this.tableStorageService.setPageSize(pageSize);\r\n this.stopEditing();\r\n }\r\n\r\n public jumpToPage(input: HTMLInputElement): void {\r\n const previousValue = this.tableStorageService.currentPage() + 1;\r\n const inputValue = input.value.trim();\r\n const value = Number(inputValue);\r\n const min = Number(input.min);\r\n const max = Number(input.max);\r\n\r\n if (isNaN(value) || inputValue !== value.toString()) {\r\n input.value = previousValue.toString();\r\n return;\r\n }\r\n\r\n if (value < min) {\r\n input.value = min.toString();\r\n this.tableStorageService.setCurrentPage(min - 1);\r\n } else if (value > max) {\r\n input.value = max.toString();\r\n this.tableStorageService.setCurrentPage(max - 1);\r\n } else {\r\n this.tableStorageService.setCurrentPage(value - 1);\r\n }\r\n\r\n this.stopEditing();\r\n }\r\n\r\n public adjustWidth(input: HTMLInputElement) {\r\n input.style.width = this.calculateWidth(input.value) + 'px';\r\n }\r\n\r\n public calculateWidth(value: string | number | null | undefined): number {\r\n if (!value || value.toString().trim() === '') {\r\n return 24;\r\n }\r\n\r\n const length = value.toString().length;\r\n return length === 1 ? 24 : length === 2 ? 24 : 36;\r\n }\r\n\r\n private stopEditing(): void {\r\n if (this.tableEditService.editIndex() !== null) {\r\n this.tableEditService.stopEditing();\r\n }\r\n }\r\n}\r\n","<div class=\"fu-table-paginator\">\r\n <div class=\"fu-paginator-page-select\">\r\n <div class=\"fu-item-count\">\r\n @if (totalItems() !== 0) {\r\n {{ entriesLabel() }}\r\n } @else {\r\n {{ noEntriesLabel() }}\r\n }\r\n </div>\r\n\r\n <div>\r\n <span>{{ pageSizeLabel() }}:</span>\r\n <select class=\"fu-page-size-select\" (change)=\"changePageSize($event)\">\r\n @for (size of pageSizeOptions(); track $index) {\r\n <option [value]=\"size\" [selected]=\"size === pageSize()\">\r\n {{ size }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fu-paginator-controls\">\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(0)\"\r\n [disabled]=\"currentPage() === 0\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"doubleArrowLeft\" />\r\n </button>\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(currentPage() - 1)\"\r\n [disabled]=\"currentPage() === 0\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"arrowLeft\" />\r\n </button>\r\n\r\n @if (quickPageJump()) {\r\n @if (totalPages() === 0) {\r\n <div class=\"fu-no-pages\">\r\n <span>-</span><span>/</span><span>-</span>\r\n </div>\r\n } @else {\r\n <div class=\"fu-jump-to-page\">\r\n <input\r\n #pageInput\r\n [min]=\"1\"\r\n [max]=\"totalPages()\"\r\n [value]=\"currentPage() + 1\"\r\n (input)=\"adjustWidth(pageInput)\"\r\n (change)=\"jumpToPage(pageInput)\"\r\n [disabled]=\"totalPages() === 0\"\r\n [style.width.px]=\"calculateWidth(pageInput.value)\"\r\n />\r\n <span>/</span>\r\n <span>{{ totalPages() }}</span>\r\n </div>\r\n }\r\n <!-- <div class=\"fu-jump-to-page\">\r\n <input\r\n #pageInput\r\n [min]=\"1\"\r\n [max]=\"totalPages()\"\r\n [value]=\"currentPage() + 1\"\r\n (input)=\"adjustWidth(pageInput)\"\r\n (change)=\"jumpToPage(pageInput)\"\r\n [disabled]=\"totalPages() === 0\"\r\n [style.width.px]=\"calculateWidth(pageInput.value)\"\r\n />\r\n <span>/</span>\r\n <span>{{ totalPages() }}</span>\r\n </div> -->\r\n }\r\n\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(currentPage() + 1)\"\r\n [disabled]=\"currentPage() + 1 >= totalPages()\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"arrowRight\" />\r\n </button>\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(totalPages() - 1)\"\r\n [disabled]=\"currentPage() + 1 >= totalPages()\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"doubleArrowRight\" />\r\n </button>\r\n </div>\r\n</div>\r\n","import { Directive, input } from '@angular/core';\r\n\r\ntype DataSourceKeys<T> = Record<keyof T, keyof T>;\r\n\r\ninterface BodyTemplateContext<T extends object> {\r\n $implicit: T;\r\n index: number;\r\n keys: DataSourceKeys<T>;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuBodyTemplate]',\r\n})\r\nexport class BodyTemplateDirective<T extends object> {\r\n public dataSource = input<T[]>([], { alias: 'fuBodyTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: BodyTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is BodyTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\n\r\ninterface ExpandTemplateContext<T extends object> {\r\n $implicit: T;\r\n index: number;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuExpandTemplate]',\r\n})\r\nexport class ExpandTemplateDirective<T extends object> {\r\n public dataSource = input<T[] | ''>([], { alias: 'fuExpandTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: ExpandTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is ExpandTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\n\r\ntype DataSourceKeys<T> = Record<keyof T, keyof T>;\r\n\r\ninterface HeaderTemplateContext<T extends object> {\r\n $implicit: DataSourceKeys<T>;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuHeaderTemplate]',\r\n})\r\nexport class HeaderTemplateDirective<T extends object> {\r\n public dataSource = input<T[] | ''>([], { alias: 'fuHeaderTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: HeaderTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is HeaderTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'keyMapping',\r\n})\r\nexport class KeyMappingPipe implements PipeTransform {\r\n transform(value: object): object {\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n const mappedObject: Record<string, string> = {};\r\n Object.keys(value).forEach(key => {\r\n mappedObject[key] = key;\r\n });\r\n\r\n return mappedObject;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n OnInit,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\nimport { BodyCellValue } from '../models';\r\n\r\n@Component({\r\n selector: 'fu-tbody-cell',\r\n templateUrl: './tbody-cell.component.html',\r\n styleUrl: './tbody-cell.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[attr.role]': '\"cell\"',\r\n '[class.sorting]': 'sortCell()',\r\n '[class.loading]': 'isLoading()',\r\n '[class.expanded]': '!expanded()',\r\n },\r\n})\r\nexport class TbodyCellComponent implements OnInit {\r\n public cellValue = input<BodyCellValue>(undefined);\r\n public editKey = input<string>('');\r\n\r\n public headerText = signal<string>('');\r\n public rowIndex = signal<number>(-1);\r\n\r\n public cellValueType = computed(() => typeof this.cellValue());\r\n public isEditing = computed<boolean>(\r\n () =>\r\n this.rowIndex() === this.tableEditService.editIndex() && !!this.editKey()\r\n );\r\n\r\n private tableStorageService = inject(TableStorageService);\r\n private tableUtilityService = inject(TableUtilityService);\r\n private tableEditService = inject(TableEditService);\r\n private elementRef = inject(ElementRef);\r\n\r\n public expanded = this.tableUtilityService.expanded;\r\n public isLoading = this.tableUtilityService.isLoading;\r\n public searchText = this.tableStorageService.searchText;\r\n public editIndex = this.tableEditService.editIndex;\r\n public savingIndex = this.tableEditService.savingIndex;\r\n\r\n public highLightedText = computed(() => this.highlightText());\r\n public sortCell = computed(\r\n () => this.tableUtilityService.sortCellIndex() === this.cellIndex()\r\n );\r\n public cellIndex = signal<number>(-2);\r\n\r\n editSavingEffect = effect(() => {\r\n if (this.savingIndex() > -1 && !this.isLoading() && this.isEditing()) {\r\n this.tableEditService.savingIndex.set(-1);\r\n this.tableEditService.stopEditing();\r\n }\r\n });\r\n\r\n public ngOnInit(): void {\r\n const rowIndex = this.getRowIndex();\r\n this.rowIndex.set(rowIndex);\r\n\r\n const cellIndex = this.getCellIndex();\r\n this.cellIndex.set(cellIndex);\r\n this.headerText.set(\r\n this.tableUtilityService.getHeaderText(cellIndex) || ''\r\n );\r\n }\r\n\r\n public highlightText(): string {\r\n const cellValue = this.cellValue();\r\n const searchText = this.searchText();\r\n\r\n if (!searchText || (!cellValue && cellValue !== 0)) {\r\n return cellValue as any;\r\n }\r\n\r\n const cellValueStr = cellValue.toString();\r\n const searchTerm = searchText.toString().toLowerCase();\r\n const regex = new RegExp(`(${searchTerm})`, 'gi');\r\n\r\n return cellValueStr.replace(regex, '<span class=\"fu-highlight\">$1</span>');\r\n }\r\n\r\n public onInputChange(value: any): void {\r\n this.tableEditService.updateEditValues(this.editKey(), value);\r\n }\r\n\r\n private getCellIndex(): number {\r\n const parent = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n return Array.from(parent.children).indexOf(this.elementRef.nativeElement);\r\n }\r\n\r\n private getRowIndex(): number {\r\n const element = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n const parent = element.parentElement;\r\n if (!parent) return -1;\r\n\r\n const children = Array.from(parent.children);\r\n return children.indexOf(element);\r\n }\r\n}\r\n","<div>\r\n <span class=\"fu-header-text\">{{ headerText() }}</span>\r\n\r\n @if ((isLoading() && savingIndex() < 0) || savingIndex() === rowIndex()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n @if (cellValue() !== undefined) {\r\n @if (isEditing()) {\r\n @switch (cellValueType()) {\r\n @case ('string') {\r\n <input\r\n class=\"fu-edit\"\r\n #editInput\r\n [value]=\"cellValue()\"\r\n (input)=\"onInputChange(editInput.value)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }\r\n @case ('number') {\r\n <input\r\n class=\"fu-edit\"\r\n #editInput\r\n type=\"number\"\r\n [value]=\"cellValue()\"\r\n (input)=\"onInputChange(editInput.value)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }\r\n @case ('boolean') {\r\n <div class=\"fu-checkbox-wrapper\" [class.editing]=\"isEditing()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"fu-input-checkbox\"\r\n #editInput\r\n [id]=\"cellIndex()\"\r\n [checked]=\"cellValue()\"\r\n (change)=\"onInputChange(editInput.checked)\"\r\n />\r\n <svg><use xlink:href=\"#fu-checkmark\" /></svg>\r\n <label [for]=\"cellIndex()\"></label>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none\">\r\n <symbol id=\"fu-checkmark\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-miterlimit=\"10\"\r\n fill=\"none\"\r\n d=\"M22.9 3.7l-15.2 16.6-6.6-7.1\"\r\n ></path>\r\n </symbol>\r\n </svg>\r\n </div>\r\n }\r\n }\r\n } @else {\r\n @switch (cellValueType()) {\r\n @case ('boolean') {\r\n <div class=\"fu-checkbox-wrapper fu-checkbox-disabled\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"fu-input-checkbox\"\r\n disabled\r\n [checked]=\"cellValue()\"\r\n />\r\n <svg><use xlink:href=\"#fu-checkmark\" /></svg>\r\n <label></label>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none\">\r\n <symbol id=\"fu-checkmark\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-miterlimit=\"10\"\r\n fill=\"none\"\r\n d=\"M22.9 3.7l-15.2 16.6-6.6-7.1\"\r\n ></path>\r\n </symbol>\r\n </svg>\r\n </div>\r\n }\r\n @default {\r\n <span class=\"fu-cell-text\" [innerHTML]=\"highLightedText()\"></span>\r\n }\r\n }\r\n }\r\n } @else {\r\n <span class=\"fu-cell-text\" [style.display]=\"'flex'\"> <ng-content /></span>\r\n }\r\n }\r\n</div>\r\n","import { Directive, input } from '@angular/core';\r\n\r\ninterface PopupTemplateContext<T extends object> {\r\n $implicit: T;\r\n index: number;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuPopupTemplate]',\r\n})\r\nexport class PopupTemplateDirective<T extends object> {\r\n public dataSource = input<T[] | ''>([], { alias: 'fuPopupTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: PopupTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is PopupTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n inject,\r\n input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { IconModule } from '../../icons';\r\nimport { ButtonModule } from '../../button';\r\nimport { TableIntlService } from '../services/table-intl.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\n\r\n@Component({\r\n selector: 'fu-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrl: './table-filter.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [IconModule, ButtonModule],\r\n})\r\nexport class TableFilterComponent {\r\n public title = input<string>();\r\n\r\n private tableStorageService = inject(TableStorageService);\r\n private tableEditService = inject(TableEditService);\r\n private tableIntl = inject(TableIntlService);\r\n\r\n public placeholder = this.tableIntl.searchPlaceholder;\r\n public searchText = this.tableStorageService.searchText;\r\n\r\n public resetSearch(): void {\r\n this.resetEdit();\r\n this.tableStorageService.setSearchText('');\r\n this.tableStorageService.setCurrentPage(0);\r\n }\r\n\r\n public searchFilter(text: string) {\r\n this.resetEdit();\r\n this.tableStorageService.setSearchText(text);\r\n this.tableStorageService.setCurrentPage(0);\r\n }\r\n\r\n private resetEdit(): void {\r\n if (this.tableEditService.editIndex() !== null) {\r\n this.tableEditService.stopEditing();\r\n }\r\n }\r\n}\r\n","<div class=\"fu-table-search\" [class.title]=\"title()\">\r\n @if (title()) {\r\n <div class=\"fu-table-title\">\r\n <h3>{{ title() }}</h3>\r\n </div>\r\n }\r\n\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [value]=\"searchText()\"\r\n (input)=\"searchFilter(searchInput.value)\"\r\n />\r\n\r\n @if (searchText()) {\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n class=\"fu-table-clear-button\"\r\n (click)=\"resetSearch()\"\r\n >\r\n <fu-icon color=\"gray\" iconName=\"cancel\" />\r\n </button>\r\n }\r\n</div>\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { TableStorageService } from './table-storage.service';\r\n\r\n@Injectable()\r\nexport class TableSortService {\r\n private tableStorageService = inject(TableStorageService);\r\n\r\n private sortKey = this.tableStorageService.sortKey;\r\n private sortDirection = this.tableStorageService.sortDirection;\r\n\r\n public updateSort(column: string | number) {\r\n const newDirection =\r\n this.sortKey() === column && this.sortDirection() === 'asc'\r\n ? 'desc'\r\n : 'asc';\r\n\r\n this.tableStorageService.setCurrentPage(0);\r\n this.tableStorageService.setSortKey(column);\r\n this.tableStorageService.setSortDirection(newDirection);\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n EventEmitter,\r\n inject,\r\n input,\r\n model,\r\n OnChanges,\r\n Output,\r\n output,\r\n signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n untracked,\r\n ViewEncapsulation,\r\n DestroyRef,\r\n ChangeDetectionStrategy,\r\n HostListener,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject } from 'rxjs';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { TablePaginatorComponent } from '../table-paginator/table-paginator.component';\r\nimport { BodyTemplateDirective } from '../directives/body-template.directive';\r\nimport { ExpandTemplateDirective } from '../directives/expand-template.directive';\r\nimport { HeaderTemplateDirective } from '../directives/header-template.directive';\r\nimport { KeyMappingPipe } from '../pipes/key-mapping.pipe';\r\nimport { ButtonModule } from '../../button';\r\nimport { IconModule } from '../../icons';\r\nimport { TbodyCellComponent } from '../tbody-cell/tbody-cell.component';\r\nimport { PopupTemplateDirective } from '../directives/popup-template.directive';\r\nimport { TableFilterComponent } from '../table-filter/table-filter.component';\r\nimport { TableIntlService } from '../services/table-intl.service';\r\nimport { TableActions, TableLayout } from '../models';\r\nimport { TableSortService } from '../services/table-sort.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\n\r\n@Component({\r\n selector: 'fu-table',\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n IconModule,\r\n TablePaginatorComponent,\r\n TableFilterComponent,\r\n TbodyCellComponent,\r\n KeyMappingPipe,\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n providers: [\r\n TableUtilityService,\r\n TableStorageService,\r\n TableSortService,\r\n TableEditService,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent<T extends object> implements OnChanges, OnInit {\r\n public dataSource = input.required<T[]>();\r\n public localStorageKey = input<string, string>('', {\r\n transform: val => `fu-table-${val}`,\r\n });\r\n\r\n public tableLayout = input<TableLayout>('auto');\r\n public firstPageOnInit = input<boolean>(false);\r\n public pageSizeOptions = input<number[]>([10, 15, 20]);\r\n public isLoading = input<boolean>(false);\r\n public totalCount = input<number>();\r\n public serverPagination = input<boolean>(false);\r\n public stripedRows = input<boolean>(true);\r\n public expandable = input<boolean>(false);\r\n public expanded = input<boolean>(false);\r\n public showFilter = input<boolean>(false);\r\n public showPaginator = input<boolean>(true);\r\n public quickPageJump = input<boolean>(true);\r\n public popupOffset = input<number>(0);\r\n public tableTitle = input<string>();\r\n public variant = input<'outlined' | 'raised'>('raised');\r\n\r\n public setsFirstPage$ = input<Subject<void>>();\r\n public expandIndex = model<number | null>(null);\r\n\r\n public noRecordsTemplate =\r\n contentChild<TemplateRef<any>>('noRecordsTemplate');\r\n public footerTemplate = contentChild<TemplateRef<any>>('footerTemplate');\r\n public popupTemplate = contentChild(PopupTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n public expandTemplate = contentChild(ExpandTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n public bodyTemplate = contentChild.required(BodyTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n public headerTemplate = contentChild.required(HeaderTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n\r\n public isInitLoad = signal<boolean>(true);\r\n public filteredData = signal<T[]>([]);\r\n public sortedData = signal<T[]>([]);\r\n\r\n private destroyRef = inject(DestroyRef);\r\n private tableIntl = inject(TableIntlService);\r\n private tableUtilityService = inject(TableUtilityService);\r\n private tableStorageService = inject(TableStorageService);\r\n\r\n public noRecordsText = this.tableIntl.noRecordsText;\r\n public columnCount = this.tableUtilityService.headerCount;\r\n public pageSize = this.tableStorageService.pageSize;\r\n public currentPage = this.tableStorageService.currentPage;\r\n public searchText = this.tableStorageService.searchText;\r\n\r\n private sortColumn = this.tableStorageService.sortKey;\r\n private sortDirection = this.tableStorageService.sortDirection;\r\n\r\n public totalItems = computed(\r\n () => this.totalCount() || this.filteredData().length\r\n );\r\n\r\n public expandedRowIndex: number | null = null;\r\n public arrayFromSize = computed(() =>\r\n Array.from({ length: this.pageSize() })\r\n );\r\n public arrayFromCols = computed(() =>\r\n Array.from({ length: this.expandColumnSpan() })\r\n );\r\n public expandColumnSpan = computed(() => {\r\n if (this.expandable()) {\r\n return this.columnCount() + 1;\r\n } else {\r\n return this.columnCount();\r\n }\r\n });\r\n\r\n public hoveredRow = signal<T | null>(null);\r\n public popupPosition = signal({ top: 0, left: 0, right: 0 });\r\n private isMobile = signal<boolean>(false);\r\n private hidePopupTimeout: ReturnType<typeof setTimeout> | undefined =\r\n undefined;\r\n private isPopupReady = computed(\r\n () => this.popupTemplate() && !this.isMobile() && !this.isLoading()\r\n );\r\n\r\n public tableActions = output<TableActions>();\r\n @Output() public selectRowAction = new EventEmitter<T>();\r\n\r\n tableActionsEffect = effect(() => {\r\n if (this.serverPagination()) {\r\n this.emitTableActions();\r\n } else {\r\n this.toggleSort();\r\n }\r\n });\r\n\r\n loadingEffect = effect(() => {\r\n this.tableUtilityService.setIsLoading(this.isLoading());\r\n this.watchInitLoad();\r\n\r\n untracked(() => {\r\n this.expandedRowIndex = null;\r\n this.expandIndex.set(null);\r\n });\r\n });\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localStorageKey']) {\r\n this.tableStorageService.setLocalStorageKey(this.localStorageKey());\r\n }\r\n\r\n if (changes['expanded']) {\r\n this.tableUtilityService.getExpanded(this.expanded());\r\n }\r\n\r\n if (changes['dataSource']) {\r\n if (this.serverPagination()) {\r\n this.loadServerData();\r\n } else {\r\n this.filteredData.set([...this.dataSource()]);\r\n }\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.isMobile.set(window.innerWidth < 900);\r\n\r\n this.setsFirstPage$()\r\n ?.pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.tableStorageService.setCurrentPage(0);\r\n });\r\n\r\n if (this.firstPageOnInit()) {\r\n this.tableStorageService.setCurrentPage(0);\r\n }\r\n }\r\n\r\n @HostListener('window:resize') public onResize() {\r\n const mobile = window.innerWidth < 900;\r\n this.isMobile.set(mobile);\r\n }\r\n\r\n public toggleRow(row: T, index: number = 0): void {\r\n if (this.isLoading()) return;\r\n if (this.expandable()) {\r\n if (this.expandedRowIndex === index) {\r\n this.expandedRowIndex = null;\r\n } else {\r\n this.expandedRowIndex = index;\r\n }\r\n return;\r\n }\r\n\r\n this.selectRowAction.emit(row);\r\n }\r\n\r\n private filterData() {\r\n const filteredData = this.dataSource().filter(item =>\r\n Object.values(item).some((value: unknown) => {\r\n if (typeof value !== 'string' && typeof value !== 'number') {\r\n return;\r\n }\r\n\r\n return value\r\n .toString()\r\n .toLowerCase()\r\n .includes(this.searchText().toLowerCase());\r\n })\r\n );\r\n\r\n this.filteredData.set(filteredData);\r\n }\r\n\r\n private sortData() {\r\n if (!this.sortDirection()) {\r\n this.filterData();\r\n return;\r\n }\r\n\r\n this.filterData();\r\n\r\n this.filteredData().sort((a, b) => {\r\n const valA = a[this.sortColumn() as keyof typeof a];\r\n const valB = b[this.sortColumn() as keyof typeof b];\r\n\r\n if (typeof valA === 'number' && typeof valB === 'number') {\r\n return this.sortDirection() === 'asc' ? valA - valB : valB - valA;\r\n }\r\n\r\n return this.sortDirection() === 'asc'\r\n ? String(valA).localeCompare(String(valB))\r\n : String(valB).localeCompare(String(valA));\r\n });\r\n }\r\n\r\n private paginateData() {\r\n this.expandedRowIndex = null;\r\n this.expandIndex.set(null);\r\n\r\n const startIndex = this.currentPage() * this.pageSize();\r\n const endIndex = startIndex + this.pageSize();\r\n const sortedData = this.filteredData().slice(startIndex, endIndex);\r\n this.sortedData.set(sortedData);\r\n }\r\n\r\n private loadServerData(): void {\r\n this.sortedData.set([...this.dataSource()]);\r\n }\r\n\r\n private watchInitLoad(): void {\r\n if (this.isInitLoad()) {\r\n this.isInitLoad.set(this.isLoading());\r\n }\r\n }\r\n\r\n private emitTableActions(): void {\r\n this.tableActions.emit({\r\n sortDirection: this.sortDirection(),\r\n sortKey: this.sortColumn(),\r\n pageSize: this.pageSize(),\r\n page: this.currentPage(),\r\n });\r\n }\r\n\r\n private toggleSort(): void {\r\n this.sortData();\r\n this.paginateData();\r\n }\r\n\r\n public onRowHover(event: MouseEvent, row: T): void {\r\n if (!this.isPopupReady()) return;\r\n clearTimeout(this.hidePopupTimeout);\r\n this.hoveredRow.set(row);\r\n\r\n const rowElement = (event.target as HTMLElement).closest('tr');\r\n if (rowElement) {\r\n const rect = rowElement.getBoundingClientRect();\r\n\r\n this.popupPosition.set({\r\n top: rect.top + window.scrollY,\r\n left: rect.right + window.scrollX,\r\n right: window.innerWidth - rect.right + this.popupOffset(),\r\n });\r\n }\r\n }\r\n\r\n public onRowLeave(): void {\r\n if (!this.isPopupReady()) return;\r\n this.hidePopupTimeout = setTimeout(() => {\r\n this.hoveredRow.set(null);\r\n }, 100);\r\n }\r\n\r\n public onPopupHover(): void {\r\n clearTimeout(this.hidePopupTimeout);\r\n }\r\n\r\n public onPopupLeave(): void {\r\n this.hidePopupTimeout = setTimeout(() => {\r\n this.hoveredRow.set(null);\r\n }, 100);\r\n }\r\n\r\n public onExpandHover(): void {\r\n if (!this.isPopupReady()) return;\r\n this.hoveredRow.set(null);\r\n }\r\n}\r\n","<div class=\"fu-table-wrapper\" [attr.outlined]=\"variant() === 'outlined'\">\r\n <!-- Search Filter -->\r\n @if (showFilter()) {\r\n <fu-table-filter [title]=\"tableTitle()\" />\r\n } @else if (tableTitle()) {\r\n <div style=\"margin-bottom: 12px\">\r\n <h3>{{ tableTitle() }}</h3>\r\n </div>\r\n }\r\n\r\n <!-- Table -->\r\n <table [attr.role]=\"'table'\" [style.table-layout]=\"tableLayout()\">\r\n <thead [attr.role]=\"'rowgroup'\">\r\n <tr [attr.role]=\"'row'\">\r\n @if (expandable()) {\r\n <th class=\"fu-expand-head\"></th>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: dataSource()[0] | keyMapping }\r\n \"\r\n />\r\n </tr>\r\n </thead>\r\n\r\n <tbody [attr.role]=\"'rowgroup'\">\r\n @if (isInitLoad()) {\r\n <ng-container *ngTemplateOutlet=\"initLoadTemplate\" />\r\n } @else {\r\n @for (row of sortedData(); track $index; let odd = $odd) {\r\n <tr\r\n [attr.outlined]=\"variant() === 'outlined'\"\r\n [attr.role]=\"'row'\"\r\n class=\"fu-body-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd,\r\n hoverable: expandable() || selectRowAction.observed,\r\n }\"\r\n (mouseenter)=\"onRowHover($event, row)\"\r\n (mouseleave)=\"onRowLeave()\"\r\n (click)=\"toggleRow(row, $index)\"\r\n >\r\n @if (expandable()) {\r\n <td\r\n class=\"fu-expand-cell\"\r\n [attr.data-expand]=\"expandedRowIndex === $index\"\r\n >\r\n <fu-icon size=\"16px\" iconName=\"chevronRight\" />\r\n </td>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate();\r\n context: {\r\n $implicit: row,\r\n index: $index,\r\n keys: row | keyMapping,\r\n }\r\n \"\r\n />\r\n </tr>\r\n\r\n @if (\r\n (expandable() && expandedRowIndex === $index) ||\r\n expandIndex() === $index ||\r\n expanded()\r\n ) {\r\n <tr\r\n class=\"fu-expand-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd && expanded(),\r\n }\"\r\n [attr.expanded]=\"expanded()\"\r\n (mouseenter)=\"onExpandHover()\"\r\n >\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n @if (isLoading() && expanded()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandTemplate() || null;\r\n context: { $implicit: row, index: $index }\r\n \"\r\n />\r\n }\r\n </td>\r\n </tr>\r\n }\r\n } @empty {\r\n <tr class=\"fu-empty-row\">\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n noRecordsTemplate() || defaultNoRecordsTemplate\r\n \"\r\n />\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (footerTemplate()) {\r\n <div class=\"fu-table-footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n footerTemplate() || null;\r\n context: { $implicit: sortedData() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n @if (showPaginator()) {\r\n <fu-table-paginator\r\n [dataLenght]=\"totalItems()\"\r\n [quickPageJump]=\"quickPageJump()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n />\r\n }\r\n</div>\r\n\r\n@if (hoveredRow()) {\r\n <div\r\n class=\"fu-action-popup\"\r\n [style.top.px]=\"popupPosition().top\"\r\n [style.right.px]=\"popupPosition().right\"\r\n (mouseenter)=\"onPopupHover()\"\r\n (mouseleave)=\"onPopupLeave()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n popupTemplate() || null;\r\n context: { $implicit: hoveredRow() }\r\n \"\r\n />\r\n </div>\r\n}\r\n\r\n<ng-template #defaultNoRecordsTemplate>\r\n <div class=\"fu-no-records\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M12 8v4m0 4.01l.01-.011M9 3H4v3m0 5v2m16-2v2M15 3h5v3M9 21H4v-3m11 3h5v-3\"\r\n />\r\n </svg>\r\n <p>{{ noRecordsText() }}</p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #initLoadTemplate>\r\n @for (item of arrayFromSize(); track $index) {\r\n <tr class=\"fu-empty-row\">\r\n @for (item of arrayFromCols(); track $index) {\r\n <fu-tbody-cell />\r\n }\r\n </tr>\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n OnInit,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { TableSortService } from '../services/table-sort.service';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { IconModule } from '../../icons';\r\nimport { CssUnit } from '../models';\r\n\r\n@Component({\r\n selector: 'fu-thead-cell',\r\n imports: [CommonModule, IconModule],\r\n templateUrl: './thead-cell.component.html',\r\n styleUrl: './thead-cell.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[attr.role]': '\"columnheader\"',\r\n '[style.width]': 'width()',\r\n '[class.sorting]': 'sortKey() !== undefined',\r\n },\r\n})\r\nexport class TheadCellComponent implements OnInit {\r\n public headerText = input<string>('');\r\n public sortKey = input<string | number | undefined>(undefined);\r\n public width = input<CssUnit>('auto');\r\n\r\n private tableStorageService = inject(TableStorageService);\r\n private tableSortService = inject(TableSortService);\r\n private tableUtilityService = inject(TableUtilityService);\r\n private elementRef = inject(ElementRef);\r\n\r\n public sortColumn = this.tableStorageService.sortKey;\r\n public sortDirection = this.tableStorageService.sortDirection;\r\n\r\n public cellIndex = signal<number>(-1);\r\n\r\n initSortEffect = effect(() => {\r\n this.initSortCell();\r\n });\r\n\r\n public ngOnInit(): void {\r\n const index = this.getIndex();\r\n this.cellIndex.set(index);\r\n\r\n this.tableUtilityService.setHeaderText(index, this.headerText());\r\n this.tableUtilityService.setColumnCount();\r\n }\r\n\r\n public toogleSort() {\r\n this.tableUtilityService.setSortCellIndex(this.cellIndex());\r\n this.tableSortService.updateSort(this.sortKey()!);\r\n }\r\n\r\n private initSortCell(): void {\r\n if (this.sortColumn() === this.sortKey()) {\r\n this.tableUtilityService.setSortCellIndex(this.cellIndex());\r\n }\r\n }\r\n\r\n private getIndex(): number {\r\n const parent = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n return Array.from(parent.children).indexOf(this.elementRef.nativeElement);\r\n }\r\n}\r\n","<div\r\n class=\"fu-header-cell\"\r\n (click)=\"toogleSort()\"\r\n [ngClass]=\"{ disabled: !sortKey() }\"\r\n>\r\n <span class=\"fu-header-text\">{{ headerText() }} </span>\r\n\r\n @if (sortKey()) {\r\n @if (sortColumn() === sortKey()) {\r\n @switch (sortDirection()) {\r\n @case ('asc') {\r\n <fu-icon size=\"1rem\" strokeWidth=\"2.5\" iconName=\"sortAsc\" />\r\n }\r\n @case ('desc') {\r\n <fu-icon size=\"1rem\" strokeWidth=\"2.5\" iconName=\"sortDesc\" />\r\n }\r\n @default {\r\n <fu-icon size=\"1rem\" color=\"gray\" iconName=\"sort\" />\r\n }\r\n }\r\n } @else {\r\n <fu-icon size=\"1rem\" color=\"gray\" iconName=\"sort\" />\r\n }\r\n }\r\n\r\n <span class=\"fu-header-cell-content\">\r\n <ng-content />\r\n </span>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n input,\r\n OnDestroy,\r\n Output,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\nimport { IconModule } from '../../icons';\r\nimport { ButtonModule } from '../../button';\r\n\r\n@Component({\r\n selector: 'fu-tbody-actions',\r\n imports: [IconModule, ButtonModule],\r\n templateUrl: './tbody-actions.component.html',\r\n styleUrl: './tbody-actions.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[attr.role]': '\"cell\"',\r\n },\r\n})\r\nexport class TbodyActionsComponent<T extends object> implements OnDestroy {\r\n public editRowData = input<T>();\r\n public disabled = input<boolean>(false);\r\n\r\n private tableUtilityService = inject(TableUtilityService);\r\n private tableEditService = inject(TableEditService);\r\n private elementRef = inject(ElementRef);\r\n\r\n public isLoading = this.tableUtilityService.isLoading;\r\n public editIndex = this.tableEditService.editIndex;\r\n public rowIndex = signal<number>(-1);\r\n\r\n @Output() public editSaveAction = new EventEmitter<T>();\r\n @Output() public deleteAction = new EventEmitter<void>();\r\n\r\n cancelEditEffect = effect(() => {\r\n if (\r\n this.isLoading() &&\r\n this.editIndex() !== null &&\r\n this.tableEditService.savingIndex() < 0\r\n ) {\r\n this.tableEditService.stopEditing();\r\n }\r\n });\r\n\r\n public startEditing(event: Event): void {\r\n const rowIndex = this.getRowIndex();\r\n this.rowIndex.set(rowIndex);\r\n this.tableEditService.startEditing(rowIndex);\r\n event.stopPropagation();\r\n }\r\n\r\n public cancelEditing(event: Event): void {\r\n this.tableEditService.stopEditing();\r\n event.stopPropagation();\r\n }\r\n\r\n public saveEditing(event: Event): void {\r\n this.tableEditService.savingIndex.set(this.rowIndex());\r\n\r\n const editedValues = this.tableEditService.editValues();\r\n const updatedRow = { ...this.editRowData(), ...editedValues } as T;\r\n\r\n this.editSaveAction.emit(updatedRow);\r\n\r\n this.tableEditService.resetEditValues();\r\n event.stopPropagation();\r\n }\r\n\r\n public deleteRow(event: Event): void {\r\n this.deleteAction.emit();\r\n event.stopPropagation();\r\n }\r\n\r\n private getRowIndex(): number {\r\n const element = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n const parent = element.parentElement;\r\n if (!parent) return -1;\r\n\r\n const children = Array.from(parent.children);\r\n return children.indexOf(element);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.tableEditService.stopEditing();\r\n }\r\n}\r\n","<div class=\"fu-row-actions\" (click)=\"$event.stopPropagation()\">\r\n @if (editIndex() === rowIndex()) {\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n severity=\"warning\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"cancelEditing($event)\"\r\n >\r\n <fu-icon iconName=\"cancel\" />\r\n </button>\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n severity=\"success\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"saveEditing($event)\"\r\n >\r\n <fu-icon iconName=\"save\" />\r\n </button>\r\n } @else if (editSaveAction.observed) {\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"startEditing($event)\"\r\n >\r\n <fu-icon iconName=\"edit\" />\r\n </button>\r\n }\r\n @if (editIndex() !== rowIndex() && deleteAction.observed) {\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n severity=\"danger\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"deleteRow($event)\"\r\n >\r\n <fu-icon iconName=\"trash\" />\r\n </button>\r\n }\r\n\r\n <ng-content />\r\n</div>\r\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { BodyCellValue } from '../models';\r\n\r\n@Directive({\r\n selector: '[fuHighlight]',\r\n})\r\nexport class HighlightDirective {\r\n public fuHighlight = input<BodyCellValue>('');\r\n\r\n private storageService = inject(TableStorageService);\r\n private el = inject(ElementRef);\r\n\r\n private searchText = this.storageService.searchText;\r\n\r\n highlightEffect = effect(() => {\r\n this.highlightText();\r\n });\r\n\r\n private highlightText() {\r\n const value = this.fuHighlight();\r\n if (!this.searchText() || !value) {\r\n this.el.nativeElement.innerHTML = value;\r\n return;\r\n }\r\n\r\n const regex = new RegExp(`(${this.searchText()})`, 'gi');\r\n this.el.nativeElement.innerHTML = `${value}`.replace(\r\n regex,\r\n '<span class=\"fu-highlight\">$1</span>'\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TableComponent } from './table/table.component';\r\nimport { TbodyCellComponent } from './tbody-cell/tbody-cell.component';\r\nimport { TheadCellComponent } from './thead-cell/thead-cell.component';\r\nimport { TbodyActionsComponent } from './tbody-actions/tbody-actions.component';\r\nimport { BodyTemplateDirective } from './directives/body-template.directive';\r\nimport { HeaderTemplateDirective } from './directives/header-template.directive';\r\nimport { ExpandTemplateDirective } from './directives/expand-template.directive';\r\nimport { PopupTemplateDirective } from './directives/popup-template.directive';\r\nimport { HighlightDirective } from './directives/highlight.directive';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n TableComponent,\r\n TbodyCellComponent,\r\n TheadCellComponent,\r\n TbodyActionsComponent,\r\n BodyTemplateDirective,\r\n HeaderTemplateDirective,\r\n ExpandTemplateDirective,\r\n PopupTemplateDirective,\r\n HighlightDirective,\r\n ],\r\n exports: [\r\n TableComponent,\r\n TbodyCellComponent,\r\n TheadCellComponent,\r\n TbodyActionsComponent,\r\n BodyTemplateDirective,\r\n HeaderTemplateDirective,\r\n ExpandTemplateDirective,\r\n PopupTemplateDirective,\r\n HighlightDirective,\r\n ],\r\n})\r\nexport class DataTableModule {}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n contentChild,\r\n input,\r\n output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { IconModule } from '../../icons';\r\nimport { ButtonModule } from '../../button';\r\nimport { TreeNode } from '../models';\r\n\r\n@Component({\r\n selector: 'fu-tree',\r\n imports: [NgTemplateOutlet, ButtonModule, IconModule],\r\n templateUrl: './tree.component.html',\r\n styleUrl: './tree.component.scss',\r\n})\r\nexport class TreeComponent {\r\n public dataSource = input.required<TreeNode[]>();\r\n\r\n public onExpand = output<TreeNode>();\r\n public onCollapse = output<TreeNode>();\r\n public onSelect = output<TreeNode>();\r\n\r\n public actionTemplate = contentChild<TemplateRef<any>>('actionTemplate');\r\n\r\n public toggleExpand(event: Event, item: TreeNode) {\r\n event.stopPropagation();\r\n item.isExpanded = !item.isExpanded;\r\n\r\n this.emitEvents(item);\r\n\r\n if (item.hasChildren && item.children) {\r\n item.children.forEach(sub => {\r\n sub.isExpanded = false;\r\n });\r\n }\r\n }\r\n\r\n public toggleSelect(item: TreeNode) {\r\n this.onSelect.emit(item);\r\n }\r\n\r\n private emitEvents(item: TreeNode) {\r\n if (item.isExpanded) {\r\n this.onExpand.emit(item);\r\n } else {\r\n this.onCollapse.emit(item);\r\n }\r\n }\r\n}\r\n","<div class=\"fu-tree-container\">\r\n <ul>\r\n <ng-container\r\n *ngTemplateOutlet=\"recursiveList; context: { $implicit: dataSource() }\"\r\n />\r\n </ul>\r\n</div>\r\n\r\n<ng-template #recursiveList let-items>\r\n @for (item of items; track $index) {\r\n <li>\r\n <div class=\"fu-tree-item\" (click)=\"toggleSelect(item)\">\r\n @if (item.hasChildren) {\r\n <button\r\n fuButton\r\n variant=\"text\"\r\n iconButton\r\n (click)=\"toggleExpand($event, item)\"\r\n >\r\n <fu-icon\r\n size=\"16px\"\r\n strokeWidth=\"3px\"\r\n [class.fu-rotate]=\"item.isExpanded\"\r\n iconName=\"arrowRight\"\r\n />\r\n </button>\r\n }\r\n\r\n <span\r\n [style.margin-left]=\"!item.hasChildren ? '40px' : '0'\"\r\n class=\"fu-tree-item-text\"\r\n >{{ item.label }}</span\r\n >\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n actionTemplate() || null;\r\n context: { $implicit: item }\r\n \"\r\n />\r\n </div>\r\n\r\n @if (item.hasChildren && item.isExpanded) {\r\n <ul style=\"padding-left: 16px\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n recursiveList;\r\n context: { $implicit: item.children }\r\n \"\r\n />\r\n </ul>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { TreeComponent } from './tree/tree.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [TreeComponent],\r\n exports: [TreeComponent],\r\n})\r\nexport class TreeModule {}\r\n","/*\r\n * Public API Surface of ng-fusion-ui\r\n */\r\n\r\nexport * from './lib/button/index';\r\nexport * from './lib/icons/index';\r\nexport * from './lib/data-table/index';\r\nexport * from './lib/tree/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IconRegistryService","i2.IconComponent","i2.ButtonDirective","i1"],"mappings":"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"}
1
+ {"version":3,"file":"ng-fusion-ui.mjs","sources":["../../../projects/ng-fusion-ui/src/lib/button/directives/btn-outline.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/btn-text.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/btn-filled.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/button.directive.ts","../../../projects/ng-fusion-ui/src/lib/button/button.module.ts","../../../projects/ng-fusion-ui/src/lib/icons/icons.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon-registry.service.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon.component.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon.component.html","../../../projects/ng-fusion-ui/src/lib/icons/icon.module.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-utility.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-storage.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-intl.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-edit.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-paginator/table-paginator.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-paginator/table-paginator.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/directives/body-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/directives/expand-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/directives/header-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/pipes/key-mapping.pipe.ts","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-cell/tbody-cell.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-cell/tbody-cell.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/directives/popup-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-filter/table-filter.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table-filter/table-filter.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/services/table-sort.service.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table/table.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/table/table.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/thead-cell/thead-cell.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/thead-cell/thead-cell.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-actions/tbody-actions.component.ts","../../../projects/ng-fusion-ui/src/lib/data-table/tbody-actions/tbody-actions.component.html","../../../projects/ng-fusion-ui/src/lib/data-table/directives/highlight.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-table/data-table.module.ts","../../../projects/ng-fusion-ui/src/lib/tree/tree/tree.component.ts","../../../projects/ng-fusion-ui/src/lib/tree/tree/tree.component.html","../../../projects/ng-fusion-ui/src/lib/tree/tree.module.ts","../../../projects/ng-fusion-ui/src/public-api.ts","../../../projects/ng-fusion-ui/src/ng-fusion-ui.ts"],"sourcesContent":["import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n Input,\r\n OnInit,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n/**\r\n * @deprecated fu-btn-outline will be removed in next versions. Use `fuButton` instead.\r\n */\r\n\r\n@Directive({\r\n selector: '[fu-btn-outline]',\r\n})\r\nexport class OutlinedButtonDirective implements OnInit {\r\n @Input() variant: 'regular' | 'danger' | 'success' | 'warning' = 'regular';\r\n\r\n @Input({ transform: booleanAttribute }) iconButton: boolean = false;\r\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\r\n @Input({ transform: booleanAttribute }) compact: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn-outline');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant}`);\r\n\r\n if (this.iconButton) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.compact) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n Input,\r\n OnInit,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n/**\r\n * @deprecated fu-btn-text will be removed in next versions. Use `fuButton` instead.\r\n */\r\n\r\n@Directive({\r\n selector: '[fu-btn-text]',\r\n})\r\nexport class TextButtonDirective implements OnInit {\r\n @Input() variant: 'regular' | 'danger' | 'success' | 'warning' = 'regular';\r\n\r\n @Input({ transform: booleanAttribute }) iconButton: boolean = false;\r\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\r\n @Input({ transform: booleanAttribute }) raised: boolean = false;\r\n @Input({ transform: booleanAttribute }) compact: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn-text');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant}`);\r\n\r\n if (this.iconButton) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.raised) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'raised', 'true');\r\n }\r\n\r\n if (this.compact) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n Input,\r\n OnInit,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n/**\r\n * @deprecated fu-btn-filled will be removed in next versions. Use `fuButton` instead.\r\n */\r\n\r\n@Directive({\r\n selector: '[fu-btn-filled]',\r\n})\r\nexport class FilledButtonDirective implements OnInit {\r\n @Input() variant: 'regular' | 'danger' | 'success' | 'warning' = 'regular';\r\n\r\n @Input({ transform: booleanAttribute }) iconButton: boolean = false;\r\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\r\n @Input({ transform: booleanAttribute }) compact: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn-filled');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant}`);\r\n\r\n if (this.iconButton) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.compact) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n OnInit,\r\n booleanAttribute,\r\n input,\r\n inject,\r\n} from '@angular/core';\r\n\r\ntype TInput = boolean | string;\r\n\r\n@Directive({\r\n selector: '[fuButton]',\r\n})\r\nexport class ButtonDirective implements OnInit {\r\n public variant = input<'filled' | 'outline' | 'text'>('filled');\r\n public severity = input<'primary' | 'success' | 'warning' | 'danger'>(\r\n 'primary'\r\n );\r\n\r\n public iconButton = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n public rounded = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n public compact = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n public raised = input<boolean, TInput>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n public ngOnInit() {\r\n this.setInitialStyles();\r\n }\r\n\r\n private setInitialStyles() {\r\n this.renderer.addClass(this.el.nativeElement, 'fu-btn');\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.variant()}`);\r\n this.renderer.addClass(this.el.nativeElement, `fu-btn-${this.severity()}`);\r\n\r\n if (this.iconButton()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'icon', 'true');\r\n }\r\n\r\n if (this.rounded()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'rounded', 'true');\r\n }\r\n\r\n if (this.compact()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'compact', 'true');\r\n }\r\n\r\n if (this.raised()) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'raised', 'true');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OutlinedButtonDirective } from './directives/btn-outline.directive';\r\nimport { TextButtonDirective } from './directives/btn-text.directive';\r\nimport { FilledButtonDirective } from './directives/btn-filled.directive';\r\nimport { ButtonDirective } from './directives/button.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n OutlinedButtonDirective,\r\n FilledButtonDirective,\r\n TextButtonDirective,\r\n ButtonDirective,\r\n CommonModule,\r\n ],\r\n exports: [\r\n OutlinedButtonDirective,\r\n FilledButtonDirective,\r\n TextButtonDirective,\r\n ButtonDirective,\r\n ],\r\n})\r\nexport class ButtonModule {}\r\n","export const edit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 20h4L18.5 9.5a2.828 2.828 0 1 0-4-4L4 16zm9.5-13.5l4 4\"/></svg>`;\r\nexport const editOff = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m10 10l-6 6v4h4l6-6m1.99-1.99l2.504-2.504a2.828 2.828 0 1 0-4-4l-2.5 2.5M13.5 6.5l4 4M3 3l18 18\"/></svg>`;\r\nexport const editSave = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 20h4L18.5 9.5a2.828 2.828 0 1 0-4-4L4 16zm9.5-13.5l4 4M15 19l2 2l4-4\"/></svg>`;\r\nexport const trash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 7h16m-10 4v6m4-6v6M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-12M9 7V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\"/></svg>`;\r\nexport const doubleArrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m7 7l5 5l-5 5m6-10l5 5l-5 5\"/></svg>`;\r\nexport const doubleArrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m11 7l-5 5l5 5m6-10l-5 5l5 5\"/></svg>`;\r\nexport const arrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m15 6l-6 6l6 6\"/></svg>`;\r\nexport const arrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m9 6l6 6l-6 6\"/></svg>`;\r\nexport const sort = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m3 9l4-4l4 4M7 5v14m14-4l-4 4l-4-4m4 4V5\"/></svg>`;\r\nexport const sortAsc = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 6h7m-7 6h7m-7 6h9m2-9l3-3l3 3m-3-3v12\"/></svg>`;\r\nexport const sortDesc = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 6h9m-9 6h7m-7 6h7m4-3l3 3l3-3m-3-9v12\"/></svg>`;\r\nexport const filterRemove = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M13.758 19.414L9 21v-8.5L4.52 7.572A2 2 0 0 1 4 6.227V4h16v2.172a2 2 0 0 1-.586 1.414L15 12v1.5m7 8.5l-5-5m0 5l5-5\"/></svg>`;\r\nexport const filterPlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m12 20l-3 1v-8.5L4.52 7.572A2 2 0 0 1 4 6.227V4h16v2.172a2 2 0 0 1-.586 1.414L15 12v3m1 4h6m-3-3v6\"/></svg>`;\r\nexport const filterEdit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M10.97 20.344L9 21v-8.5L4.52 7.572A2 2 0 0 1 4 6.227V4h16v2.172a2 2 0 0 1-.586 1.414L15 12v1.5m3.42 2.11a2.1 2.1 0 0 1 2.97 2.97L18 22h-3v-3z\"/></svg>`;\r\nexport const check = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m5 12l5 5L20 7\"/></svg>`;\r\nexport const save = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M21 7v12q0 .825-.587 1.413T19 21H5q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h12zm-2 .85L16.15 5H5v14h14zM12 18q1.25 0 2.125-.875T15 15t-.875-2.125T12 12t-2.125.875T9 15t.875 2.125T12 18m-6-8h9V6H6zM5 7.85V19V5z\"/></svg>`;\r\nexport const search = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5A6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5S14 7.01 14 9.5S11.99 14 9.5 14\" /></svg>`;\r\n\r\nexport const building = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g fill=\"currentColor\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M4 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z\"/><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm11 0H3v14h3v-2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V15h3z\"/></g></svg>`;\r\nexport const buildingHand = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g fill=\"currentColor\"><path d=\"m2 1c0-0.55228 0.44772-1 1-1h10c0.55228 0 1 0.44772 1 1v6.5c0 0.66667-1 0.66667-1 0v-6.5h-10v14h3s2.2783-0.07879 2 1h-5c-0.55228 0-1-0.44772-1-1z\"/><path d=\"M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z\"/><path d=\"m4.0496 13.493v0.43773l4.5597 1.0943 3.9897-0.83169v0.61283h3.4198v-4.8151h-4.5597l-3.5338 1.0068c-0.56996 0.17509-1.0259 0.6566-1.0259 1.1819h-1.1399c-0.96894 0-1.7099 0.56905-1.7099 1.3132m9.6894 0.43773v-3.0641h1.1399v3.0641zm-8.4925-0.61282q0.17099-0.26264 0.51297-0.26264h3.0778c0.28498 0 0.62696-0.04377 0.91194-0.08756l1.3109-0.35018-0.34198-0.83169-1.3679 0.35018c-0.17099 0-1.3109 0.04377-1.3109 0.04377 0-0.17509 0.11399-0.30641 0.34198-0.35018l3.3058-0.963h0.91194v2.4075l-3.9897 0.83169z\" fill=\"currentColor\" stroke-width=\".49949\"/></g></svg>`;\r\nexport const buildingUser = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-12.888 20.361a4.25 4.25 0 0 0-2.1938 0.56919 4.25 4.25 0 0 0-2.1226 3.5432l-0.0024 0.13755 0.0024 0.13755a4.25 4.25 0 1 0 4.3164-4.3875zm0.60951 2.7036h0.62611v2.6657l-2.3076 0.5929-2.6396-0.88936c0-0.1482 0.06709-0.29647 0.16601-0.41503 0.13191-0.11856 0.29543-0.17787 0.4933-0.17787h2.31l0.69252-0.23716-0.09961-0.26562-0.59291 0.20633h-0.92493c-0.09894 0-0.23051-0.05931-0.29646-0.11859-0.06595-0.05928-0.09724-0.14824-0.09724-0.23716 0-0.1482 0.09835-0.26563 0.26325-0.32491zm1.2854 0h1.3186v3.2586h-1.3186z\" stroke-width=\".425\"/><g fill=\"currentColor\"></g><path d=\"m2.0619 18.318a4.9999 4.9999 0 0 0-2.5808 0.66962 4.9999 4.9999 0 0 0-2.4971 4.1684l-0.0028 0.16182 0.0028 0.16183a4.9999 4.9999 0 1 0 5.078-5.1617zm0.71705 3.1807h0.73658v3.1361l-2.7148 0.69752-3.1054-1.0463c0-0.17435 0.07893-0.34878 0.19531-0.48826 0.15518-0.13948 0.34756-0.20926 0.58034-0.20926h2.7175l0.81471-0.27901-0.11719-0.31249-0.69753 0.24274h-1.0881c-0.1164 0-0.27118-0.06977-0.34876-0.13951-0.07759-0.06974-0.1144-0.1744-0.1144-0.27901 0-0.17435 0.1157-0.3125 0.3097-0.38224zm1.5122 0h1.5513v3.8336h-1.5513z\" stroke-width=\".49999\"/><g transform=\"matrix(.86364 0 0 .86364 26.355 .79387)\"><path d=\"m16 10.5c0-3.025-2.475-5.5-5.5-5.5-3.025 0-5.5 2.475-5.5 5.5 0 3.025 2.475 5.5 5.5 5.5 3.025 0 5.5-2.475 5.5-5.5m-3.85-3.025 1.925 1.925-1.925 1.925v-1.375h-2.2v-1.1h2.2zm-3.3 6.05-1.925-1.925 1.925-1.925v1.375h2.2v1.1h-2.2z\" fill=\"currentColor\" stroke-width=\".55\"/></g><path d=\"m38.863 0.91746c0 1.4444-0.6447 2.7386-1.6625 3.61a4.7327 4.7327 0 0 1-3.0875 1.14c-1.1789 0-2.2571-0.42923-3.0875-1.14a4.7414 4.7414 0 0 1-1.6625-3.61c0-2.6233 2.1267-4.75 4.75-4.75s4.75 2.1267 4.75 4.75m-3.0227-1.5114a1.7273 1.7273 0 1 0-3.4545 0 1.7273 1.7273 0 0 0 3.4545 0m1.0795 4.1994v-0.09716a1.7273 1.7273 0 0 0-1.7273-1.7273h-2.1591a1.7273 1.7273 0 0 0-1.7273 1.7273v0.09716q0.13386 0.13948 0.28068 0.26557a3.8691 3.8691 0 0 0 2.5261 0.93273 3.8691 3.8691 0 0 0 2.8068-1.1983\" fill=\"currentColor\" stroke-width=\".43182\"/><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g><path d=\"m11.25 7.3636a3.8864 3.8864 0 0 0-3.8864 3.8864 3.8691 3.8691 0 0 0 0.76561 2.3167 2.1591 2.1591 0 0 1 2.0412-1.4531h2.1591a2.1591 2.1591 0 0 1 2.0412 1.4531 3.8691 3.8691 0 0 0 0.76561-2.3167 3.8864 3.8864 0 0 0-3.8864-3.8864m2.375 6.9631v-0.05398a1.2955 1.2955 0 0 0-1.2955-1.2955h-2.1591a1.2955 1.2955 0 0 0-1.2955 1.2955v0.05398a3.8691 3.8691 0 0 0 2.375 0.80966c0.89473 0 1.7182-0.30227 2.375-0.80966m-7.125-3.0767c0-2.6233 2.1267-4.75 4.75-4.75 2.6233 0 4.75 2.1267 4.75 4.75a4.7414 4.7414 0 0 1-1.6625 3.61 4.7327 4.7327 0 0 1-3.0875 1.14 4.7327 4.7327 0 0 1-3.0875-1.14 4.7414 4.7414 0 0 1-1.6625-3.61m4.75-2.5909a1.0795 1.0795 0 1 0 0 2.1591 1.0795 1.0795 0 0 0 0-2.1591m-1.9432 1.0795a1.9432 1.9432 0 1 1 3.8864 0 1.9432 1.9432 0 0 1-3.8864 0\" stroke-width=\".43182\"/></g></svg>`;\r\nexport const buildingSwap = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-12.888 20.361a4.25 4.25 0 0 0-2.1938 0.56919 4.25 4.25 0 0 0-2.1226 3.5432l-0.0024 0.13755 0.0024 0.13755a4.25 4.25 0 1 0 4.3164-4.3875zm0.60951 2.7036h0.62611v2.6657l-2.3076 0.5929-2.6396-0.88936c0-0.1482 0.06709-0.29647 0.16601-0.41503 0.13191-0.11856 0.29543-0.17787 0.4933-0.17787h2.31l0.69252-0.23716-0.09961-0.26562-0.59291 0.20633h-0.92493c-0.09894 0-0.23051-0.05931-0.29646-0.11859-0.06595-0.05928-0.09724-0.14824-0.09724-0.23716 0-0.1482 0.09835-0.26563 0.26325-0.32491zm1.2854 0h1.3186v3.2586h-1.3186z\" stroke-width=\".425\"/><g fill=\"currentColor\"></g><path d=\"m2.0619 18.318a4.9999 4.9999 0 0 0-2.5808 0.66962 4.9999 4.9999 0 0 0-2.4971 4.1684l-0.0028 0.16182 0.0028 0.16183a4.9999 4.9999 0 1 0 5.078-5.1617zm0.71705 3.1807h0.73658v3.1361l-2.7148 0.69752-3.1054-1.0463c0-0.17435 0.07893-0.34878 0.19531-0.48826 0.15518-0.13948 0.34756-0.20926 0.58034-0.20926h2.7175l0.81471-0.27901-0.11719-0.31249-0.69753 0.24274h-1.0881c-0.1164 0-0.27118-0.06977-0.34876-0.13951-0.07759-0.06974-0.1144-0.1744-0.1144-0.27901 0-0.17435 0.1157-0.3125 0.3097-0.38224zm1.5122 0h1.5513v3.8336h-1.5513z\" stroke-width=\".49999\"/><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g><path d=\"m11.25 6.5c-2.6125 0-4.75 2.1375-4.75 4.75 0 2.6125 2.1375 4.75 4.75 4.75s4.75-2.1375 4.75-4.75c0-2.6125-2.1375-4.75-4.75-4.75m0 8.55c-2.0948 0-3.8-1.7052-3.8-3.8 0-2.0948 1.7052-3.8 3.8-3.8 2.0948 0 3.8 1.7053 3.8 3.8 0 2.0948-1.7052 3.8-3.8 3.8m1.425-6.4125v1.1875h-1.9v0.95h1.9v1.1875l1.6625-1.6625zm-2.85 1.9-1.6625 1.6625 1.6625 1.6625v-1.1875h1.9v-0.95h-1.9z\" fill=\"currentColor\" stroke-width=\".475\"/></svg>`;\r\nexport const buildingBuild = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-12.888 20.361a4.25 4.25 0 0 0-2.1938 0.56919 4.25 4.25 0 0 0-2.1226 3.5432l-0.0024 0.13755 0.0024 0.13755a4.25 4.25 0 1 0 4.3164-4.3875zm0.60951 2.7036h0.62611v2.6657l-2.3076 0.5929-2.6396-0.88936c0-0.1482 0.06709-0.29647 0.16601-0.41503 0.13191-0.11856 0.29543-0.17787 0.4933-0.17787h2.31l0.69252-0.23716-0.09961-0.26562-0.59291 0.20633h-0.92493c-0.09894 0-0.23051-0.05931-0.29646-0.11859-0.06595-0.05928-0.09724-0.14824-0.09724-0.23716 0-0.1482 0.09835-0.26563 0.26325-0.32491zm1.2854 0h1.3186v3.2586h-1.3186z\" stroke-width=\".425\"/><g fill=\"currentColor\"></g><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g><path d=\"m11.25 6.5c2.619 0 4.75 2.131 4.75 4.75 0 2.619-2.131 4.75-4.75 4.75-2.619 0-4.75-2.131-4.75-4.75 0-2.619 2.131-4.75 4.75-4.75m0 0.95001c-2.1028 0-3.8 1.6972-3.8 3.8 0 2.1028 1.6972 3.8 3.8 3.8 2.1028 0 3.8-1.6972 3.8-3.8 0-2.1028-1.6972-3.8-3.8-3.8m0.0204 1.6205c0.3593 0.4672 0.48051 1.0419 0.36538 1.4615q-0.0215 0.10358 1.5192 1.6153 0.5038 0.5038 0 1.0076-0.47417 0.47414-0.94836 0.0558l-1.667-1.5825c-0.41962 0.11514-0.99434-6e-3 -1.4615-0.36537-0.34267-0.45055-0.46084-1.0395-0.36538-1.4615l0.73075 0.73076 0.73076-0.36538 0.36538-0.73076-0.73076-0.73078c0.42209-0.0954 1.011 0.0227 1.4615 0.36538\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke-width=\".022266\"/></svg>`;\r\nexport const buildingGear = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m14.281 9.329 1.1442 0.18703a0.19356 0.19356 0 0 1 0.16209 0.19119v1.0646a0.19356 0.19356 0 0 1-0.16031 0.19059l-1.1459 0.20128q-0.09915 0.34556-0.27253 0.65966l0.67747 0.9405a0.19356 0.19356 0 0 1-0.02018 0.25056l-0.75288 0.75288a0.19356 0.19356 0 0 1-0.24819 0.02198l-0.95-0.66678a3.2656 3.2656 0 0 1-0.66381 0.27788l-0.20188 1.1406a0.19356 0.19356 0 0 1-0.19119 0.15972h-1.064a0.19297 0.19297 0 0 1-0.19059-0.1615l-0.18941-1.1347a3.2656 3.2656 0 0 1-0.66678-0.27609l-0.94287 0.66084a0.19356 0.19356 0 0 1-0.24819-0.021975l-0.75347-0.75288a0.19594 0.19594 0 0 1-0.020776-0.24938l0.66678-0.93219a3.2656 3.2656 0 0 1-0.27907-0.67034l-1.1287-0.20009a0.19356 0.19356 0 0 1-0.15972-0.19059v-1.0646c0-0.09499 0.06828-0.17575 0.16209-0.19119l1.1287-0.18822q0.10272-0.35031 0.27906-0.66975l-0.65906-0.94169a0.19356 0.19356 0 0 1 0.021975-0.24759l0.75347-0.75228a0.19356 0.19356 0 0 1 0.24938-0.020776l0.93516 0.66797q0.31647-0.17338 0.66559-0.27313l0.18525-1.1341a0.19356 0.19356 0 0 1 0.19119-0.16209h1.0646c0.0944 0 0.17456 0.067688 0.19119 0.16031l0.1995 1.14q0.34734 0.10034 0.665 0.27609l0.93694-0.67391a0.19356 0.19356 0 0 1 0.25056 0.019591l0.75287 0.75288a0.19356 0.19356 0 0 1 0.02137 0.24819l-0.66797 0.95178q0.17219 0.31469 0.27312 0.65906zm-4.503 0.91853a1.3555 1.3555 0 1 0 2.7111 0 1.3555 1.3555 0 0 0-2.7111 0z\" clip-rule=\"evenodd\" fill=\"none\" stroke=\"currentColor\" stroke-width=\".59375\"/></g></svg>`;\r\nexport const buildingGearBuild = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m14.281 9.329 1.1442 0.18703c0.09357 0.015417 0.16219 0.096356 0.16209 0.19119v1.0646c-4.5e-5 0.09404-0.06767 0.17444-0.16031 0.19059l-1.1459 0.20128c-0.0661 0.23038-0.15694 0.45026-0.27253 0.65966l0.67747 0.9405c0.0558 0.07712 0.04724 0.18337-0.02018 0.25056l-0.75288 0.75288c-0.06639 0.06668-0.17111 0.07595-0.24819 0.02198l-0.95-0.66678c-0.21036 0.1168-0.43298 0.20999-0.66381 0.27788l-0.20188 1.1406c-0.01645 0.09263-0.09711 0.16001-0.19119 0.15972h-1.064c-0.09451 1.02e-4 -0.17518-0.06826-0.19059-0.1615l-0.18941-1.1347c-0.23178-0.067114-0.4554-0.15971-0.66678-0.27609l-0.94287 0.66084c-0.077074 0.05397-0.1818 0.0447-0.24819-0.02197l-0.75347-0.75288c-0.066017-0.0673-0.074746-0.17208-0.020776-0.24938l0.66678-0.93219c-0.11765-0.21238-0.21125-0.43722-0.27907-0.67034l-1.1287-0.20009c-0.092404-0.01641-0.15972-0.096743-0.15972-0.19059v-1.0646c0-0.09499 0.06828-0.17575 0.16209-0.19119l1.1287-0.18822c0.068482-0.23354 0.1615-0.45679 0.27906-0.66975l-0.65906-0.94169c-0.053635-0.076954-0.044375-0.18129 0.021975-0.24759l0.75347-0.75228c0.066872-0.06695 0.17235-0.075737 0.24938-0.020776l0.93516 0.66797c0.21098-0.11558 0.43284-0.20663 0.66559-0.27313l0.18525-1.1341c0.01542-0.093571 0.09635-0.16219 0.19119-0.16209h1.0646c0.0944 0 0.17456 0.067688 0.19119 0.16031l0.1995 1.14c0.23156 0.066893 0.45323 0.15892 0.665 0.27609l0.93694-0.67391c0.07698-0.055954 0.18322-0.047648 0.25056 0.019591l0.75287 0.75288c0.06648 0.066546 0.0755 0.17125 0.02137 0.24819l-0.66797 0.95178c0.11479 0.20979 0.20583 0.42948 0.27312 0.65906z\" clip-rule=\"evenodd\" fill=\"none\" stroke=\"currentColor\" stroke-width=\".59375\"/><path d=\"m10.231 8.372c0.62223 0 1.1267 0.50443 1.1267 1.1267 0 0.11382-0.01688 0.22369-0.04827 0.32727l1.1749 1.1749c0.20741 0.20741 0.20741 0.54369 0 0.7511-0.20741 0.20741-0.5437 0.20741-0.7511 0l-1.1749-1.1749c-0.10357 0.03139-0.21345 0.04827-0.32727 0.04827-0.62223 0-1.1267-0.50442-1.1267-1.1267 0-0.12008 0.01878-0.23577 0.05358-0.34429l0.53294 0.53206 0.52824-0.17593 0.02359-0.023589 0.17608-0.52775-0.53356-0.53309c0.10895-0.035102 0.22516-0.054062 0.34579-0.054062\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke-width=\".008802\"/></g></svg>`;\r\nexport const buildingRemove = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m11.134 14.048c-2.0947 0-3.8-1.7052-3.8-3.8 0-2.0947 1.7052-3.8 3.8-3.8 2.0948 0 3.8 1.7052 3.8 3.8 0 2.0948-1.7052 3.8-3.8 3.8m0-8.55c-2.6267 0-4.75 2.1232-4.75 4.75 0 2.6268 2.1232 4.75 4.75 4.75 2.6268 0 4.75-2.1232 4.75-4.75 0-2.6267-2.1232-4.75-4.75-4.75m1.2302 2.85-1.2302 1.2302-1.2302-1.2302-0.66975 0.66975 1.2302 1.2302-1.2302 1.2302 0.66975 0.66975 1.2302-1.2302 1.2302 1.2302 0.66975-0.66975-1.2302-1.2302 1.2302-1.2302z\" fill=\"currentColor\" stroke-width=\".475\"/></g></svg>`;\r\nexport const buildingAdd = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m-14.269 23.484a4.75 4.75 0 0 0-2.4518 0.63615 4.75 4.75 0 0 0-2.3723 3.96l-0.0027 0.15374 0.0027 0.15374a4.75 4.75 0 1 0 4.8242-4.9037zm0.68121 3.0217h0.69976v2.9793l-2.5791 0.66266-2.9502-0.99399c0-0.16564 0.07498-0.33135 0.18554-0.46386 0.14743-0.13251 0.33018-0.1988 0.55133-0.1988h2.5817l0.77399-0.26506-0.11133-0.29687-0.66266 0.23061h-1.0337c-0.11058 0-0.25762-0.06629-0.33133-0.13254-0.07371-0.06625-0.10868-0.16568-0.10868-0.26506 0-0.16564 0.10992-0.29688 0.29422-0.36314zm1.4366 0h1.4738v3.642h-1.4738z\" stroke-width=\".475\"/><g fill=\"currentColor\"></g><g transform=\"translate(.11566 1.0024)\"><g transform=\"translate(-.11566 -1.0024)\"><g fill=\"currentColor\"><g fill=\"currentColor\"><path d=\"m3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-0.62695a5.25 5.25 0 0 1-1.9102-3.1582 0.5 0.5 0 0 0-0.089844 0.28516v2.5h-3v-14h10v5.3008a5.25 5.25 0 0 1 1 0.47852v-5.7793a1 1 0 0 0-1-1z\"/><path d=\"m4.5 2a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h0.66797a5.25 5.25 0 0 1 0.83203-0.49219 0.5 0.5 0 0 0 0-0.0078125v-1a0.5 0.5 0 0 0-0.5-0.5zm3 0a0.5 0.5 0 0 0-0.5 0.5v0.65234a5.25 5.25 0 0 1 1.248-0.15234 5.25 5.25 0 0 1 0.75195 0.054688v-0.55469a0.5 0.5 0 0 0-0.5-0.5zm-6 3a0.5 0.5 0 0 0-0.5 0.5v1a0.5 0.5 0 0 0 0.5 0.5h1a0.5 0.5 0 0 0 0.5-0.5v-1a0.5 0.5 0 0 0-0.5-0.5z\"/></g></g></g><path d=\"m11.134 6.4476c2.0952 0 3.8 1.7048 3.8 3.8 0 2.0952-1.7048 3.8-3.8 3.8-2.0952 0-3.8-1.7048-3.8-3.8 0-2.0952 1.7048-3.8 3.8-3.8m0-0.95c-2.6234 0-4.75 2.1266-4.75 4.75 0 2.6234 2.1266 4.75 4.75 4.75 2.6234 0 4.75-2.1266 4.75-4.75 0-2.6234-2.1266-4.75-4.75-4.75m2.375 4.275h-1.9v-1.9h-0.95v1.9h-1.9v0.95h1.9v1.9h0.95v-1.9h1.9z\" fill=\"currentColor\" stroke-width=\".475\"/></g></svg>`;\r\n\r\nexport const exchange = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m21 9l-4-4v3h-7v2h7v3M7 11l-4 4l4 4v-3h7v-2H7z\"/></svg>`;\r\nexport const exchangeCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M12.005 22.003c-5.523 0-10-4.477-10-10s4.477-10 10-10s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-5-7h9v2h-4v3zm5-4v-3l5 5h-9v-2z\"/></svg>`;\r\nexport const cancel = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M6.758 17.243L12.001 12m5.243-5.243L12 12m0 0L6.758 6.757M12.001 12l5.243 5.243\"/></svg>`;\r\nexport const cancelCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m8.4 17l3.6-3.6l3.6 3.6l1.4-1.4l-3.6-3.6L17 8.4L15.6 7L12 10.6L8.4 7L7 8.4l3.6 3.6L7 15.6zm3.6 5q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22m0-2q3.35 0 5.675-2.325T20 12t-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20m0-8\"/></svg>`;\r\nexport const plus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 5v14m-7-7h14\"/></svg>`;\r\nexport const plusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m6 0h6m-3-3v6\"/></svg>`;\r\nexport const eye = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\"><path d=\"M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0\" /><path d=\"M21 12q-3.6 6-9 6t-9-6q3.6-6 9-6t9 6\" /></g></svg>`;\r\nexport const chevronRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M12 8L5.68 1.68L4 3.35L8.65 8L4 12.65l1.68 1.67z\"/></svg>`;\r\nexport const link = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M17 7h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c1.65 0 3 1.35 3 3s-1.35 3-3 3h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c2.76 0 5-2.24 5-5s-2.24-5-5-5m-9 5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9c-.55 0-1 .45-1 1m2 3H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h3c.55 0 1-.45 1-1s-.45-1-1-1H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h3c.55 0 1-.45 1-1s-.45-1-1-1\" /></svg>`;\r\nexport const certificate = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"M128 136a8 8 0 0 1-8 8H72a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8m-8-40H72a8 8 0 0 0 0 16h48a8 8 0 0 0 0-16m112 65.47V224a8 8 0 0 1-12 7l-24-13.74L172 231a8 8 0 0 1-12-7v-24H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16v30.53a51.88 51.88 0 0 1 0 74.94M160 184v-22.53A52 52 0 0 1 216 76V56H40v128Zm56-12a51.88 51.88 0 0 1-40 0v38.22l16-9.16a8 8 0 0 1 7.94 0l16 9.16Zm16-48a36 36 0 1 0-36 36a36 36 0 0 0 36-36\" /></svg>`;\r\nexport const elevator = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" d=\"m7 2l4 4H8v4H6V6H3zm10 8l-4-4h3V2h2v4h3zM7 12h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2m0 2v6h10v-6z\" /></svg>`;\r\nexport const report = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10 9H6m9.5 2a2.5 2.5 0 1 1 0-5a2.5 2.5 0 0 1 0 5M6 6h3m9 12l-4.5-3l-2.5 2l-5-4\" /><path d=\"M3 20.4V3.6a.6.6 0 0 1 .6-.6h16.8a.6.6 0 0 1 .6.6v16.8a.6.6 0 0 1-.6.6H3.6a.6.6 0 0 1-.6-.6Z\" /></g></svg>`;\r\nexport const templateEdit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 2)\" fill-rule=\"evenodd\" d=\"M10.944 1.25h2.112c1.838 0 3.294 0 4.433.153c1.172.158 2.121.49 2.87 1.238a.75.75 0 0 1-1.06 1.06c-.424-.422-1.004-.676-2.01-.811c-1.027-.138-2.382-.14-4.289-.14h-2c-1.907 0-3.261.002-4.29.14c-1.005.135-1.585.389-2.008.812S4.025 4.705 3.89 5.71c-.138 1.029-.14 2.383-.14 4.29v4c0 1.907.002 3.262.14 4.29c.135 1.005.389 1.585.812 2.008s1.003.677 2.009.812c1.028.138 2.382.14 4.289.14h2c1.907 0 3.262-.002 4.29-.14c1.005-.135 1.585-.389 2.008-.812c.696-.696.907-1.777.943-4.309a.75.75 0 0 1 1.5.022c-.035 2.427-.192 4.158-1.382 5.348c-.749.748-1.698 1.08-2.87 1.238c-1.14.153-2.595.153-4.433.153h-2.112c-1.838 0-3.294 0-4.433-.153c-1.172-.158-2.121-.49-2.87-1.238c-.748-.749-1.08-1.698-1.238-2.87c-.153-1.14-.153-2.595-.153-4.433V9.944c0-1.838 0-3.294.153-4.433c.158-1.172.49-2.121 1.238-2.87c.749-.748 1.698-1.08 2.87-1.238c1.14-.153 2.595-.153 4.433-.153m7.17 5.796a2.716 2.716 0 1 1 3.84 3.84L17.2 15.643a7 7 0 0 1-.63.587q-.346.27-.744.46c-.224.107-.46.185-.806.3l-2.084.695a1.28 1.28 0 0 1-1.62-1.62l.681-2.04l.014-.043c.116-.347.194-.582.301-.806a4 4 0 0 1 .46-.744c.153-.196.328-.371.587-.63l.031-.031zm2.78 1.06a1.216 1.216 0 0 0-1.72 0l-.182.182l.034.107c.094.27.273.63.611.968a2.55 2.55 0 0 0 1.075.645l.182-.182a1.216 1.216 0 0 0 0-1.72m-1.328 3.048a4 4 0 0 1-.99-.73a4 4 0 0 1-.73-.99L14.45 12.83c-.301.301-.407.409-.496.523q-.17.218-.289.467c-.062.131-.111.274-.246.678l-.4 1.2l.283.283l1.2-.4c.404-.135.547-.184.678-.246q.248-.12.467-.289c.114-.089.222-.195.523-.496zM7.25 9A.75.75 0 0 1 8 8.25h6.5a.75.75 0 0 1 0 1.5H8A.75.75 0 0 1 7.25 9m0 4a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5H8a.75.75 0 0 1-.75-.75m0 4a.75.75 0 0 1 .75-.75h1.5a.75.75 0 0 1 0 1.5H8a.75.75 0 0 1-.75-.75\" clip-rule=\"evenodd\" /></svg>`;\r\nexport const draftEdit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" ><path d=\"m18.18 8.04l.463-.464a1.966 1.966 0 1 1 2.781 2.78l-.463.464M18.18 8.04s.058.984.927 1.853s1.854.927 1.854.927M18.18 8.04l-4.26 4.26c-.29.288-.434.433-.558.592q-.22.282-.374.606c-.087.182-.151.375-.28.762l-.413 1.24l-.134.401m8.8-5.081l-4.26 4.26c-.29.29-.434.434-.593.558q-.282.22-.606.374c-.182.087-.375.151-.762.28l-1.24.413l-.401.134m0 0l-.401.134a.53.53 0 0 1-.67-.67l.133-.402m.938.938l-.938-.938\" /><path stroke-linecap=\"round\" d=\"M8 13h2.5M8 9h6.5M8 17h1.5M3 14v-4c0-3.771 0-5.657 1.172-6.828S7.229 2 11 2h2c3.771 0 5.657 0 6.828 1.172M21 14c0 3.771 0 5.657-1.172 6.828m-15.656 0C5.343 22 7.229 22 11 22h2c3.771 0 5.657 0 6.828-1.172m0 0c.944-.943 1.127-2.348 1.163-4.828\" /></g></svg>`;\r\nexport const widgets = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" d=\"M16.65 13L11 7.35l5.65-5.65l5.65 5.65zM3 11V3h8v8zm10 10v-8h8v8zM3 21v-8h8v8z\" /></svg>`;\r\nexport const starOutline = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" d=\"m8.85 16.825l3.15-1.9l3.15 1.925l-.825-3.6l2.775-2.4l-3.65-.325l-1.45-3.4l-1.45 3.375l-3.65.325l2.775 2.425zM5.825 21l1.625-7.025L2 9.25l7.2-.625L12 2l2.8 6.625l7.2.625l-5.45 4.725L18.175 21L12 17.275zM12 12.25\" /></svg>`;\r\nexport const starSolid = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" style=\"stroke-width:var(--fu-icon-stroke-width, 1.5)\" d=\"m5.825 21l1.625-7.025L2 9.25l7.2-.625L12 2l2.8 6.625l7.2.625l-5.45 4.725L18.175 21L12 17.275z\" /></svg>`;\r\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport {\r\n edit,\r\n editOff,\r\n editSave,\r\n trash,\r\n doubleArrowLeft,\r\n doubleArrowRight,\r\n arrowLeft,\r\n arrowRight,\r\n sort,\r\n sortAsc,\r\n sortDesc,\r\n filterRemove,\r\n filterPlus,\r\n filterEdit,\r\n check,\r\n save,\r\n exchange,\r\n exchangeCircle,\r\n cancel,\r\n cancelCircle,\r\n buildingAdd,\r\n plus,\r\n plusCircle,\r\n buildingHand,\r\n buildingRemove,\r\n building,\r\n buildingBuild,\r\n buildingSwap,\r\n buildingUser,\r\n buildingGear,\r\n buildingGearBuild,\r\n search,\r\n eye,\r\n chevronRight,\r\n link,\r\n certificate,\r\n report,\r\n elevator,\r\n templateEdit,\r\n draftEdit,\r\n widgets,\r\n starOutline,\r\n starSolid,\r\n} from './icons';\r\nimport { IconNames } from './icon-names';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IconRegistryService {\r\n private icons = new Map<string, SafeHtml>();\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n this.registerIcon('edit', edit);\r\n this.registerIcon('editOff', editOff);\r\n this.registerIcon('editSave', editSave);\r\n this.registerIcon('trash', trash);\r\n this.registerIcon('arrowLeft', arrowLeft);\r\n this.registerIcon('arrowRight', arrowRight);\r\n this.registerIcon('doubleArrowLeft', doubleArrowLeft);\r\n this.registerIcon('doubleArrowRight', doubleArrowRight);\r\n this.registerIcon('sort', sort);\r\n this.registerIcon('sortAsc', sortAsc);\r\n this.registerIcon('sortDesc', sortDesc);\r\n this.registerIcon('filterRemove', filterRemove);\r\n this.registerIcon('filterPlus', filterPlus);\r\n this.registerIcon('filterEdit', filterEdit);\r\n this.registerIcon('check', check);\r\n this.registerIcon('save', save);\r\n this.registerIcon('building', building);\r\n this.registerIcon('buildingHand', buildingHand);\r\n this.registerIcon('buildingBuild', buildingBuild);\r\n this.registerIcon('buildingSwap', buildingSwap);\r\n this.registerIcon('buildingUser', buildingUser);\r\n this.registerIcon('buildingGear', buildingGear);\r\n this.registerIcon('buildingGearBuild', buildingGearBuild);\r\n this.registerIcon('buildingRemove', buildingRemove);\r\n this.registerIcon('buildingAdd', buildingAdd);\r\n this.registerIcon('exchange', exchange);\r\n this.registerIcon('exchangeCircle', exchangeCircle);\r\n this.registerIcon('cancel', cancel);\r\n this.registerIcon('cancelCircle', cancelCircle);\r\n this.registerIcon('plus', plus);\r\n this.registerIcon('plusCircle', plusCircle);\r\n this.registerIcon('search', search);\r\n this.registerIcon('eye', eye);\r\n this.registerIcon('chevronRight', chevronRight);\r\n this.registerIcon('link', link);\r\n this.registerIcon('certificate', certificate);\r\n this.registerIcon('report', report);\r\n this.registerIcon('elevator', elevator);\r\n this.registerIcon('templateEdit', templateEdit);\r\n this.registerIcon('draftEdit', draftEdit);\r\n this.registerIcon('widgets', widgets);\r\n this.registerIcon('starOutline', starOutline);\r\n this.registerIcon('starSolid', starSolid);\r\n }\r\n\r\n public registerIcon(name: IconNames, svg: string): void {\r\n const safeSvg = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n this.icons.set(name, safeSvg);\r\n }\r\n\r\n public getIcon(name: string): SafeHtml | undefined {\r\n return this.icons.get(name);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\nimport { IconRegistryService } from './icon-registry.service';\r\nimport { IconNames } from './icon-names';\r\n\r\n@Component({\n selector: 'fu-icon',\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\r\nexport class IconComponent implements OnChanges, OnInit {\r\n public iconName = input.required<IconNames>();\r\n\r\n public size = input<string>('');\r\n public strokeWidth = input<string>('');\r\n public color = input<string>('');\r\n\r\n @HostBinding('class') get classList() {\r\n return `fu-icon`;\r\n }\r\n\r\n public iconSvg: SafeHtml | undefined;\r\n\r\n constructor(\r\n private iconRegistry: IconRegistryService,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['size']) {\r\n this.setIconSize();\r\n }\r\n if (changes['color']) {\r\n this.setIconColor();\r\n }\r\n if (changes['strokeWidth']) {\r\n this.setIconStrokeWidth();\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.iconSvg = this.iconRegistry.getIcon(this.iconName());\r\n }\r\n\r\n private setIconColor(): void {\r\n this.elementRef.nativeElement.style.removeProperty('color');\r\n\r\n if (this.color() !== undefined) {\r\n this.elementRef.nativeElement.style.setProperty('color', this.color());\r\n }\r\n }\r\n\r\n private setIconSize(): void {\r\n this.elementRef.nativeElement.style.removeProperty('--fu-icon-size');\r\n\r\n if (this.size() !== undefined) {\r\n this.elementRef.nativeElement.style.setProperty(\r\n '--fu-icon-size',\r\n this.size().toString()\r\n );\r\n }\r\n }\r\n\r\n private setIconStrokeWidth(): void {\r\n this.elementRef.nativeElement.style.removeProperty(\r\n '--fu-icon-stroke-width'\r\n );\r\n if (this.strokeWidth() !== undefined) {\r\n this.elementRef.nativeElement.style.setProperty(\r\n '--fu-icon-stroke-width',\r\n this.strokeWidth().toString()\r\n );\r\n }\r\n }\r\n}\r\n","<span [innerHTML]=\"iconSvg\" class=\"fu-icon-container\"></span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconRegistryService } from './icon-registry.service';\r\nimport { IconComponent } from './icon.component';\r\n\r\n@NgModule({\r\n declarations: [IconComponent],\r\n imports: [CommonModule],\r\n providers: [IconRegistryService],\r\n exports: [IconComponent],\r\n})\r\nexport class IconModule {}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TableUtilityService {\r\n private headerTexts: string[] = [];\r\n\r\n public headerCount = signal<number>(0);\r\n public isLoading = signal<boolean>(false);\r\n public sortCellIndex = signal<number>(-1);\r\n public expanded = signal<boolean>(false);\r\n\r\n public setSortCellIndex(index: number): void {\r\n this.sortCellIndex.set(index);\r\n }\r\n\r\n public resetSortCellIndex(): void {\r\n this.sortCellIndex.set(-1);\r\n }\r\n\r\n public setHeaderText(index: number, text: string): void {\r\n this.headerTexts[index] = text;\r\n }\r\n\r\n public getHeaderText(index: number): string | undefined {\r\n return this.headerTexts[index];\r\n }\r\n\r\n public clearHeaderText(): void {\r\n this.headerTexts = [];\r\n }\r\n\r\n public setColumnCount(): void {\r\n this.headerCount.update(count => count + 1);\r\n }\r\n\r\n public resetColumnCount(): void {\r\n this.headerCount.set(0);\r\n }\r\n\r\n public setIsLoading(loading: boolean): void {\r\n this.isLoading.set(loading);\r\n }\r\n\r\n public getExpanded(expanded: boolean): void {\r\n this.expanded.set(expanded);\r\n }\r\n}\r\n","import { computed, effect, Injectable, signal } from '@angular/core';\r\nimport { SortDirection } from '../models';\r\n\r\ninterface StorageState {\r\n currentPage: number;\r\n pageSize: number;\r\n sortKey: string | number;\r\n sortDirection: SortDirection;\r\n searchText: string;\r\n}\r\n\r\nconst initialState: StorageState = {\r\n currentPage: 0,\r\n pageSize: 10,\r\n sortKey: '',\r\n sortDirection: '',\r\n searchText: '',\r\n};\r\n\r\n@Injectable()\r\nexport class TableStorageService {\r\n private storageState = signal<StorageState>(initialState);\r\n\r\n public localStorageKey = signal('');\r\n\r\n public currentPage = computed(() => this.storageState().currentPage);\r\n public pageSize = computed(() => this.storageState().pageSize);\r\n public sortKey = computed(() => this.storageState().sortKey);\r\n public sortDirection = computed(() => this.storageState().sortDirection);\r\n public searchText = computed(() => this.storageState().searchText);\r\n\r\n storageStateEffect = effect(() => {\r\n if (this.localStorageKey()) {\r\n const state = this.storageState();\r\n this.updateLocalStorage(state);\r\n }\r\n });\r\n\r\n public setCurrentPage(currentPage: number): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n currentPage,\r\n }));\r\n }\r\n\r\n public setPageSize(pageSize: number): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n pageSize,\r\n }));\r\n }\r\n\r\n public setSortKey(sortKey: string | number): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n sortKey,\r\n }));\r\n }\r\n\r\n public setSortDirection(sortDirection: SortDirection): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n sortDirection,\r\n }));\r\n }\r\n\r\n public setSearchText(searchText: string): void {\r\n this.storageState.update(state => ({\r\n ...state,\r\n searchText,\r\n }));\r\n }\r\n\r\n public setLocalStorageKey(key: string): void {\r\n const storedValues = window.localStorage.getItem(key);\r\n\r\n if (storedValues && key) {\r\n this.storageState.set(JSON.parse(storedValues));\r\n }\r\n this.localStorageKey.set(key);\r\n }\r\n\r\n public resetStorageKey(): void {\r\n this.localStorageKey.set('');\r\n }\r\n\r\n public resetState(): void {\r\n this.storageState.set(initialState);\r\n }\r\n\r\n private updateLocalStorage(state: StorageState): void {\r\n window.localStorage.setItem(this.localStorageKey(), JSON.stringify(state));\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TableIntlService {\r\n public searchPlaceholder = signal<string>('Search...');\r\n public pageSizeLabel = signal<string>('Page size');\r\n public noRecordsText = signal<string>('No records found');\r\n public noEntriesLabel = signal<string>('No entries');\r\n\r\n public entriesLabel = (first: number, last: number, total: number) =>\r\n `${first} to ${last} of ${total} entries`;\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TableEditService {\r\n public editIndex = signal<number | null>(null);\r\n public editValues = signal<{ [key: string]: any }>({});\r\n public savingIndex = signal<number>(-1);\r\n\r\n public startEditing(rowIndex: number): void {\r\n this.editValues.set({});\r\n this.editIndex.set(rowIndex);\r\n }\r\n\r\n public stopEditing(): void {\r\n this.editIndex.set(null);\r\n }\r\n\r\n public updateEditValues(key: string, value: any): void {\r\n this.editValues.update(values => ({\r\n ...values,\r\n [key]: value,\r\n }));\r\n }\r\n\r\n public resetEditValues(): void {\r\n this.editValues.set({});\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { ButtonModule } from '../../button';\r\nimport { IconModule } from '../../icons';\r\nimport { TableIntlService } from '../services/table-intl.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\n\r\n@Component({\r\n selector: 'fu-table-paginator',\r\n imports: [ButtonModule, IconModule],\r\n templateUrl: './table-paginator.component.html',\r\n styleUrl: './table-paginator.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TablePaginatorComponent {\r\n public pageSizeOptions = input<number[]>([]);\r\n public quickPageJump = input<boolean>(false);\r\n public dataLenght = input<number>(0);\r\n\r\n private tableEditService = inject(TableEditService);\r\n private tableStorageService = inject(TableStorageService);\r\n private tableIntl = inject(TableIntlService);\r\n\r\n public pageSizeLabel = this.tableIntl.pageSizeLabel;\r\n public pageSize = this.tableStorageService.pageSize;\r\n public currentPage = this.tableStorageService.currentPage;\r\n public searchText = this.tableStorageService.searchText;\r\n\r\n private first = computed(() => this.currentPage() * this.pageSize() + 1);\r\n private last = computed(() =>\r\n Math.min((this.currentPage() + 1) * this.pageSize(), this.dataLenght())\r\n );\r\n public totalPages = computed(() =>\r\n Math.ceil(this.dataLenght() / this.pageSize())\r\n );\r\n public totalItems = computed(() => this.dataLenght());\r\n public noEntriesLabel = this.tableIntl.noEntriesLabel;\r\n public entriesLabel = computed(() =>\r\n this.tableIntl.entriesLabel(this.first(), this.last(), this.totalItems())\r\n );\r\n\r\n public goToPage(page: number): void {\r\n if (page < 0 || page > this.totalPages()) {\r\n return;\r\n }\r\n\r\n this.stopEditing();\r\n this.tableStorageService.setCurrentPage(page);\r\n }\r\n\r\n public changePageSize(event: any): void {\r\n const pageSize = Number(event.target.value);\r\n this.tableStorageService.setCurrentPage(0);\r\n this.tableStorageService.setPageSize(pageSize);\r\n this.stopEditing();\r\n }\r\n\r\n public jumpToPage(input: HTMLInputElement): void {\r\n const previousValue = this.tableStorageService.currentPage() + 1;\r\n const inputValue = input.value.trim();\r\n const value = Number(inputValue);\r\n const min = Number(input.min);\r\n const max = Number(input.max);\r\n\r\n if (isNaN(value) || inputValue !== value.toString()) {\r\n input.value = previousValue.toString();\r\n return;\r\n }\r\n\r\n if (value < min) {\r\n input.value = min.toString();\r\n this.tableStorageService.setCurrentPage(min - 1);\r\n } else if (value > max) {\r\n input.value = max.toString();\r\n this.tableStorageService.setCurrentPage(max - 1);\r\n } else {\r\n this.tableStorageService.setCurrentPage(value - 1);\r\n }\r\n\r\n this.stopEditing();\r\n }\r\n\r\n public adjustWidth(input: HTMLInputElement) {\r\n input.style.width = this.calculateWidth(input.value) + 'px';\r\n }\r\n\r\n public calculateWidth(value: string | number | null | undefined): number {\r\n if (!value || value.toString().trim() === '') {\r\n return 24;\r\n }\r\n\r\n const length = value.toString().length;\r\n return length === 1 ? 24 : length === 2 ? 24 : 36;\r\n }\r\n\r\n private stopEditing(): void {\r\n if (this.tableEditService.editIndex() !== null) {\r\n this.tableEditService.stopEditing();\r\n }\r\n }\r\n}\r\n","<div class=\"fu-table-paginator\">\r\n <div class=\"fu-paginator-page-select\">\r\n <div class=\"fu-item-count\">\r\n @if (totalItems() !== 0) {\r\n {{ entriesLabel() }}\r\n } @else {\r\n {{ noEntriesLabel() }}\r\n }\r\n </div>\r\n\r\n <div>\r\n <span>{{ pageSizeLabel() }}:</span>\r\n <select class=\"fu-page-size-select\" (change)=\"changePageSize($event)\">\r\n @for (size of pageSizeOptions(); track $index) {\r\n <option [value]=\"size\" [selected]=\"size === pageSize()\">\r\n {{ size }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fu-paginator-controls\">\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(0)\"\r\n [disabled]=\"currentPage() === 0\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"doubleArrowLeft\" />\r\n </button>\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(currentPage() - 1)\"\r\n [disabled]=\"currentPage() === 0\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"arrowLeft\" />\r\n </button>\r\n\r\n @if (quickPageJump()) {\r\n @if (totalPages() === 0) {\r\n <div class=\"fu-no-pages\">\r\n <span>-</span><span>/</span><span>-</span>\r\n </div>\r\n } @else {\r\n <div class=\"fu-jump-to-page\">\r\n <input\r\n #pageInput\r\n [min]=\"1\"\r\n [max]=\"totalPages()\"\r\n [value]=\"currentPage() + 1\"\r\n (input)=\"adjustWidth(pageInput)\"\r\n (change)=\"jumpToPage(pageInput)\"\r\n [disabled]=\"totalPages() === 0\"\r\n [style.width.px]=\"calculateWidth(pageInput.value)\"\r\n />\r\n <span>/</span>\r\n <span>{{ totalPages() }}</span>\r\n </div>\r\n }\r\n <!-- <div class=\"fu-jump-to-page\">\r\n <input\r\n #pageInput\r\n [min]=\"1\"\r\n [max]=\"totalPages()\"\r\n [value]=\"currentPage() + 1\"\r\n (input)=\"adjustWidth(pageInput)\"\r\n (change)=\"jumpToPage(pageInput)\"\r\n [disabled]=\"totalPages() === 0\"\r\n [style.width.px]=\"calculateWidth(pageInput.value)\"\r\n />\r\n <span>/</span>\r\n <span>{{ totalPages() }}</span>\r\n </div> -->\r\n }\r\n\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(currentPage() + 1)\"\r\n [disabled]=\"currentPage() + 1 >= totalPages()\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"arrowRight\" />\r\n </button>\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n (click)=\"goToPage(totalPages() - 1)\"\r\n [disabled]=\"currentPage() + 1 >= totalPages()\"\r\n >\r\n <fu-icon size=\"20px\" iconName=\"doubleArrowRight\" />\r\n </button>\r\n </div>\r\n</div>\r\n","import { Directive, input } from '@angular/core';\r\n\r\ntype DataSourceKeys<T> = Record<keyof T, keyof T>;\r\n\r\ninterface BodyTemplateContext<T extends object> {\r\n $implicit: T;\r\n index: number;\r\n keys: DataSourceKeys<T>;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuBodyTemplate]',\r\n})\r\nexport class BodyTemplateDirective<T extends object> {\r\n public dataSource = input<T[]>([], { alias: 'fuBodyTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: BodyTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is BodyTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\n\r\ninterface ExpandTemplateContext<T extends object> {\r\n $implicit: T;\r\n index: number;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuExpandTemplate]',\r\n})\r\nexport class ExpandTemplateDirective<T extends object> {\r\n public dataSource = input<T[] | ''>([], { alias: 'fuExpandTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: ExpandTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is ExpandTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\n\r\ntype DataSourceKeys<T> = Record<keyof T, keyof T>;\r\n\r\ninterface HeaderTemplateContext<T extends object> {\r\n $implicit: DataSourceKeys<T>;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuHeaderTemplate]',\r\n})\r\nexport class HeaderTemplateDirective<T extends object> {\r\n public dataSource = input<T[] | ''>([], { alias: 'fuHeaderTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: HeaderTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is HeaderTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'keyMapping',\r\n})\r\nexport class KeyMappingPipe implements PipeTransform {\r\n transform(value: object): object {\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n const mappedObject: Record<string, string> = {};\r\n Object.keys(value).forEach(key => {\r\n mappedObject[key] = key;\r\n });\r\n\r\n return mappedObject;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n OnInit,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\nimport { BodyCellValue } from '../models';\r\n\r\n@Component({\r\n selector: 'fu-tbody-cell',\r\n templateUrl: './tbody-cell.component.html',\r\n styleUrl: './tbody-cell.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[attr.role]': '\"cell\"',\r\n '[class.sorting]': 'sortCell()',\r\n '[class.loading]': 'isLoading()',\r\n '[class.expanded]': '!expanded()',\r\n },\r\n})\r\nexport class TbodyCellComponent implements OnInit {\r\n public cellValue = input<BodyCellValue>(undefined);\r\n public editKey = input<string>('');\r\n\r\n public headerText = signal<string>('');\r\n public rowIndex = signal<number>(-1);\r\n\r\n public cellValueType = computed(() => typeof this.cellValue());\r\n public isEditing = computed<boolean>(\r\n () =>\r\n this.rowIndex() === this.tableEditService.editIndex() && !!this.editKey()\r\n );\r\n\r\n private tableStorageService = inject(TableStorageService);\r\n private tableUtilityService = inject(TableUtilityService);\r\n private tableEditService = inject(TableEditService);\r\n private elementRef = inject(ElementRef);\r\n\r\n public expanded = this.tableUtilityService.expanded;\r\n public isLoading = this.tableUtilityService.isLoading;\r\n public searchText = this.tableStorageService.searchText;\r\n public editIndex = this.tableEditService.editIndex;\r\n public savingIndex = this.tableEditService.savingIndex;\r\n\r\n public highLightedText = computed(() => this.highlightText());\r\n public sortCell = computed(\r\n () => this.tableUtilityService.sortCellIndex() === this.cellIndex()\r\n );\r\n public cellIndex = signal<number>(-2);\r\n\r\n editSavingEffect = effect(() => {\r\n if (this.savingIndex() > -1 && !this.isLoading() && this.isEditing()) {\r\n this.tableEditService.savingIndex.set(-1);\r\n this.tableEditService.stopEditing();\r\n }\r\n });\r\n\r\n public ngOnInit(): void {\r\n const rowIndex = this.getRowIndex();\r\n this.rowIndex.set(rowIndex);\r\n\r\n const cellIndex = this.getCellIndex();\r\n this.cellIndex.set(cellIndex);\r\n this.headerText.set(\r\n this.tableUtilityService.getHeaderText(cellIndex) || ''\r\n );\r\n }\r\n\r\n public highlightText(): string {\r\n const cellValue = this.cellValue();\r\n const searchText = this.searchText();\r\n\r\n if (!searchText || (!cellValue && cellValue !== 0)) {\r\n return cellValue as any;\r\n }\r\n\r\n const cellValueStr = cellValue.toString();\r\n const searchTerm = searchText.toString().toLowerCase();\r\n const regex = new RegExp(`(${searchTerm})`, 'gi');\r\n\r\n return cellValueStr.replace(regex, '<span class=\"fu-highlight\">$1</span>');\r\n }\r\n\r\n public onInputChange(value: any): void {\r\n this.tableEditService.updateEditValues(this.editKey(), value);\r\n }\r\n\r\n private getCellIndex(): number {\r\n const parent = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n return Array.from(parent.children).indexOf(this.elementRef.nativeElement);\r\n }\r\n\r\n private getRowIndex(): number {\r\n const element = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n const parent = element.parentElement;\r\n if (!parent) return -1;\r\n\r\n const children = Array.from(parent.children);\r\n return children.indexOf(element);\r\n }\r\n}\r\n","<div>\r\n <span class=\"fu-header-text\">{{ headerText() }}</span>\r\n\r\n @if ((isLoading() && savingIndex() < 0) || savingIndex() === rowIndex()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n @if (cellValue() !== undefined) {\r\n @if (isEditing()) {\r\n @switch (cellValueType()) {\r\n @case ('string') {\r\n <input\r\n class=\"fu-edit\"\r\n #editInput\r\n [value]=\"cellValue()\"\r\n (input)=\"onInputChange(editInput.value)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }\r\n @case ('number') {\r\n <input\r\n class=\"fu-edit\"\r\n #editInput\r\n type=\"number\"\r\n [value]=\"cellValue()\"\r\n (input)=\"onInputChange(editInput.value)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }\r\n @case ('boolean') {\r\n <div class=\"fu-checkbox-wrapper\" [class.editing]=\"isEditing()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"fu-input-checkbox\"\r\n #editInput\r\n [id]=\"cellIndex()\"\r\n [checked]=\"cellValue()\"\r\n (change)=\"onInputChange(editInput.checked)\"\r\n />\r\n <svg><use xlink:href=\"#fu-checkmark\" /></svg>\r\n <label [for]=\"cellIndex()\"></label>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none\">\r\n <symbol id=\"fu-checkmark\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-miterlimit=\"10\"\r\n fill=\"none\"\r\n d=\"M22.9 3.7l-15.2 16.6-6.6-7.1\"\r\n ></path>\r\n </symbol>\r\n </svg>\r\n </div>\r\n }\r\n }\r\n } @else {\r\n @switch (cellValueType()) {\r\n @case ('boolean') {\r\n <div class=\"fu-checkbox-wrapper fu-checkbox-disabled\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"fu-input-checkbox\"\r\n disabled\r\n [checked]=\"cellValue()\"\r\n />\r\n <svg><use xlink:href=\"#fu-checkmark\" /></svg>\r\n <label></label>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none\">\r\n <symbol id=\"fu-checkmark\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-miterlimit=\"10\"\r\n fill=\"none\"\r\n d=\"M22.9 3.7l-15.2 16.6-6.6-7.1\"\r\n ></path>\r\n </symbol>\r\n </svg>\r\n </div>\r\n }\r\n @default {\r\n <span class=\"fu-cell-text\" [innerHTML]=\"highLightedText()\"></span>\r\n }\r\n }\r\n }\r\n } @else {\r\n <span class=\"fu-cell-text\" [style.display]=\"'flex'\"> <ng-content /></span>\r\n }\r\n }\r\n</div>\r\n","import { Directive, input } from '@angular/core';\r\n\r\ninterface PopupTemplateContext<T extends object> {\r\n $implicit: T;\r\n index: number;\r\n}\r\n\r\n@Directive({\r\n selector: '[fuPopupTemplate]',\r\n})\r\nexport class PopupTemplateDirective<T extends object> {\r\n public dataSource = input<T[] | ''>([], { alias: 'fuPopupTemplate' });\r\n\r\n static ngTemplateContextGuard<TContextItem extends object>(\r\n dir: PopupTemplateDirective<TContextItem>,\r\n ctx: unknown\r\n ): ctx is PopupTemplateContext<TContextItem> {\r\n return true;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n inject,\r\n input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { IconModule } from '../../icons';\r\nimport { ButtonModule } from '../../button';\r\nimport { TableIntlService } from '../services/table-intl.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\n\r\n@Component({\r\n selector: 'fu-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrl: './table-filter.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [IconModule, ButtonModule],\r\n})\r\nexport class TableFilterComponent {\r\n public title = input<string>();\r\n\r\n private tableStorageService = inject(TableStorageService);\r\n private tableEditService = inject(TableEditService);\r\n private tableIntl = inject(TableIntlService);\r\n\r\n public placeholder = this.tableIntl.searchPlaceholder;\r\n public searchText = this.tableStorageService.searchText;\r\n\r\n public resetSearch(): void {\r\n this.resetEdit();\r\n this.tableStorageService.setSearchText('');\r\n this.tableStorageService.setCurrentPage(0);\r\n }\r\n\r\n public searchFilter(text: string) {\r\n this.resetEdit();\r\n this.tableStorageService.setSearchText(text);\r\n this.tableStorageService.setCurrentPage(0);\r\n }\r\n\r\n private resetEdit(): void {\r\n if (this.tableEditService.editIndex() !== null) {\r\n this.tableEditService.stopEditing();\r\n }\r\n }\r\n}\r\n","<div class=\"fu-table-search\" [class.title]=\"title()\">\r\n @if (title()) {\r\n <div class=\"fu-table-title\">\r\n <h3>{{ title() }}</h3>\r\n </div>\r\n }\r\n\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [value]=\"searchText()\"\r\n (input)=\"searchFilter(searchInput.value)\"\r\n />\r\n\r\n @if (searchText()) {\r\n <button\r\n fuButton\r\n iconButton\r\n variant=\"text\"\r\n class=\"fu-table-clear-button\"\r\n (click)=\"resetSearch()\"\r\n >\r\n <fu-icon color=\"gray\" iconName=\"cancel\" />\r\n </button>\r\n }\r\n</div>\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { TableStorageService } from './table-storage.service';\r\n\r\n@Injectable()\r\nexport class TableSortService {\r\n private tableStorageService = inject(TableStorageService);\r\n\r\n private sortKey = this.tableStorageService.sortKey;\r\n private sortDirection = this.tableStorageService.sortDirection;\r\n\r\n public updateSort(column: string | number) {\r\n const newDirection =\r\n this.sortKey() === column && this.sortDirection() === 'asc'\r\n ? 'desc'\r\n : 'asc';\r\n\r\n this.tableStorageService.setCurrentPage(0);\r\n this.tableStorageService.setSortKey(column);\r\n this.tableStorageService.setSortDirection(newDirection);\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n EventEmitter,\r\n inject,\r\n input,\r\n model,\r\n OnChanges,\r\n Output,\r\n output,\r\n signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n untracked,\r\n ViewEncapsulation,\r\n DestroyRef,\r\n ChangeDetectionStrategy,\r\n HostListener,\r\n OnInit,\r\n Injector,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject } from 'rxjs';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { TablePaginatorComponent } from '../table-paginator/table-paginator.component';\r\nimport { BodyTemplateDirective } from '../directives/body-template.directive';\r\nimport { ExpandTemplateDirective } from '../directives/expand-template.directive';\r\nimport { HeaderTemplateDirective } from '../directives/header-template.directive';\r\nimport { KeyMappingPipe } from '../pipes/key-mapping.pipe';\r\nimport { ButtonModule } from '../../button';\r\nimport { IconModule } from '../../icons';\r\nimport { TbodyCellComponent } from '../tbody-cell/tbody-cell.component';\r\nimport { PopupTemplateDirective } from '../directives/popup-template.directive';\r\nimport { TableFilterComponent } from '../table-filter/table-filter.component';\r\nimport { TableIntlService } from '../services/table-intl.service';\r\nimport { TableActions, TableLayout } from '../models';\r\nimport { TableSortService } from '../services/table-sort.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\n\r\n@Component({\r\n selector: 'fu-table',\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n IconModule,\r\n TablePaginatorComponent,\r\n TableFilterComponent,\r\n TbodyCellComponent,\r\n KeyMappingPipe,\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n providers: [\r\n TableUtilityService,\r\n TableStorageService,\r\n TableSortService,\r\n TableEditService,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent<T extends object> implements OnChanges, OnInit {\r\n public dataSource = input.required<T[]>();\r\n public localStorageKey = input<string, string>('', {\r\n transform: val => `fu-table-${val}`,\r\n });\r\n\r\n public tableLayout = input<TableLayout>('auto');\r\n public firstPageOnInit = input<boolean>(false);\r\n public pageSizeOptions = input<number[]>([10, 15, 20]);\r\n public isLoading = input<boolean>(false);\r\n public totalCount = input<number>();\r\n public serverPagination = input<boolean>(false);\r\n public stripedRows = input<boolean>(true);\r\n public expandable = input<boolean>(false);\r\n public expanded = input<boolean>(false);\r\n public showFilter = input<boolean>(false);\r\n public showPaginator = input<boolean>(true);\r\n public quickPageJump = input<boolean>(true);\r\n public popupOffset = input<number>(0);\r\n public tableTitle = input<string>();\r\n public variant = input<'outlined' | 'raised'>('raised');\r\n public sideBar = input<boolean>(false);\r\n\r\n public setsFirstPage$ = input<Subject<void>>();\r\n public expandIndex = model<number | null>(null);\r\n\r\n public sidebarTemplate = contentChild<TemplateRef<any>>('sidebarTemplate');\r\n public noRecordsTemplate =\r\n contentChild<TemplateRef<any>>('noRecordsTemplate');\r\n public footerTemplate = contentChild<TemplateRef<any>>('footerTemplate');\r\n public popupTemplate = contentChild(PopupTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n public expandTemplate = contentChild(ExpandTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n public bodyTemplate = contentChild.required(BodyTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n public headerTemplate = contentChild.required(HeaderTemplateDirective, {\r\n read: TemplateRef,\r\n });\r\n\r\n public isInitLoad = signal<boolean>(true);\r\n public filteredData = signal<T[]>([]);\r\n public sortedData = signal<T[]>([]);\r\n\r\n private destroyRef = inject(DestroyRef);\r\n private tableIntl = inject(TableIntlService);\r\n private tableUtilityService = inject(TableUtilityService);\r\n private tableStorageService = inject(TableStorageService);\r\n public injector = inject(Injector);\r\n\r\n public noRecordsText = this.tableIntl.noRecordsText;\r\n public columnCount = this.tableUtilityService.headerCount;\r\n public pageSize = this.tableStorageService.pageSize;\r\n public currentPage = this.tableStorageService.currentPage;\r\n public searchText = this.tableStorageService.searchText;\r\n\r\n private sortColumn = this.tableStorageService.sortKey;\r\n private sortDirection = this.tableStorageService.sortDirection;\r\n\r\n public totalItems = computed(\r\n () => this.totalCount() || this.filteredData().length\r\n );\r\n\r\n public expandedRowIndex: number | null = null;\r\n public arrayFromSize = computed(() =>\r\n Array.from({ length: this.pageSize() })\r\n );\r\n public arrayFromCols = computed(() =>\r\n Array.from({ length: this.expandColumnSpan() })\r\n );\r\n public expandColumnSpan = computed(() => {\r\n if (this.expandable()) {\r\n return this.columnCount() + 1;\r\n } else {\r\n return this.columnCount();\r\n }\r\n });\r\n\r\n public hoveredRow = signal<T | null>(null);\r\n public popupPosition = signal({ top: 0, left: 0, right: 0 });\r\n private isMobile = signal<boolean>(false);\r\n private hidePopupTimeout: ReturnType<typeof setTimeout> | undefined =\r\n undefined;\r\n private isPopupReady = computed(\r\n () => this.popupTemplate() && !this.isMobile() && !this.isLoading()\r\n );\r\n\r\n public tableActions = output<TableActions>();\r\n @Output() public selectRowAction = new EventEmitter<T>();\r\n\r\n tableActionsEffect = effect(() => {\r\n if (this.serverPagination()) {\r\n this.emitTableActions();\r\n } else {\r\n this.toggleSort();\r\n }\r\n });\r\n\r\n loadingEffect = effect(() => {\r\n this.tableUtilityService.setIsLoading(this.isLoading());\r\n this.watchInitLoad();\r\n\r\n untracked(() => {\r\n this.expandedRowIndex = null;\r\n this.expandIndex.set(null);\r\n });\r\n });\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localStorageKey']) {\r\n this.tableStorageService.setLocalStorageKey(this.localStorageKey());\r\n }\r\n\r\n if (changes['expanded']) {\r\n this.tableUtilityService.getExpanded(this.expanded());\r\n }\r\n\r\n if (changes['dataSource']) {\r\n if (this.serverPagination()) {\r\n this.loadServerData();\r\n } else {\r\n this.filteredData.set([...this.dataSource()]);\r\n }\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.isMobile.set(window.innerWidth < 900);\r\n\r\n this.setsFirstPage$()\r\n ?.pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.tableStorageService.setCurrentPage(0);\r\n });\r\n\r\n if (this.firstPageOnInit()) {\r\n this.tableStorageService.setCurrentPage(0);\r\n }\r\n }\r\n\r\n @HostListener('window:resize') public onResize() {\r\n const mobile = window.innerWidth < 900;\r\n this.isMobile.set(mobile);\r\n }\r\n\r\n public toggleRow(row: T, index: number = 0): void {\r\n if (this.isLoading()) return;\r\n if (this.expandable()) {\r\n if (this.expandedRowIndex === index) {\r\n this.expandedRowIndex = null;\r\n } else {\r\n this.expandedRowIndex = index;\r\n }\r\n return;\r\n }\r\n\r\n this.selectRowAction.emit(row);\r\n }\r\n\r\n private filterData() {\r\n const filteredData = this.dataSource().filter(item =>\r\n Object.values(item).some((value: unknown) => {\r\n if (typeof value !== 'string' && typeof value !== 'number') {\r\n return;\r\n }\r\n\r\n return value\r\n .toString()\r\n .toLowerCase()\r\n .includes(this.searchText().toLowerCase());\r\n })\r\n );\r\n\r\n this.filteredData.set(filteredData);\r\n }\r\n\r\n private sortData() {\r\n if (!this.sortDirection()) {\r\n this.filterData();\r\n return;\r\n }\r\n\r\n this.filterData();\r\n\r\n this.filteredData().sort((a, b) => {\r\n const valA = a[this.sortColumn() as keyof typeof a];\r\n const valB = b[this.sortColumn() as keyof typeof b];\r\n\r\n if (typeof valA === 'number' && typeof valB === 'number') {\r\n return this.sortDirection() === 'asc' ? valA - valB : valB - valA;\r\n }\r\n\r\n return this.sortDirection() === 'asc'\r\n ? String(valA).localeCompare(String(valB))\r\n : String(valB).localeCompare(String(valA));\r\n });\r\n }\r\n\r\n private paginateData() {\r\n this.expandedRowIndex = null;\r\n this.expandIndex.set(null);\r\n\r\n const startIndex = this.currentPage() * this.pageSize();\r\n const endIndex = startIndex + this.pageSize();\r\n const sortedData = this.filteredData().slice(startIndex, endIndex);\r\n this.sortedData.set(sortedData);\r\n }\r\n\r\n private loadServerData(): void {\r\n this.sortedData.set([...this.dataSource()]);\r\n }\r\n\r\n private watchInitLoad(): void {\r\n if (this.isInitLoad()) {\r\n this.isInitLoad.set(this.isLoading());\r\n }\r\n }\r\n\r\n private emitTableActions(): void {\r\n this.tableActions.emit({\r\n sortDirection: this.sortDirection(),\r\n sortKey: this.sortColumn(),\r\n pageSize: this.pageSize(),\r\n page: this.currentPage(),\r\n });\r\n }\r\n\r\n private toggleSort(): void {\r\n this.sortData();\r\n this.paginateData();\r\n }\r\n\r\n public onRowHover(event: MouseEvent, row: T): void {\r\n if (!this.isPopupReady()) return;\r\n clearTimeout(this.hidePopupTimeout);\r\n this.hoveredRow.set(row);\r\n\r\n const rowElement = (event.target as HTMLElement).closest('tr');\r\n if (rowElement) {\r\n const rect = rowElement.getBoundingClientRect();\r\n\r\n this.popupPosition.set({\r\n top: rect.top + window.scrollY,\r\n left: rect.right + window.scrollX,\r\n right: window.innerWidth - rect.right + this.popupOffset(),\r\n });\r\n }\r\n }\r\n\r\n public onRowLeave(): void {\r\n if (!this.isPopupReady()) return;\r\n this.hidePopupTimeout = setTimeout(() => {\r\n this.hoveredRow.set(null);\r\n }, 100);\r\n }\r\n\r\n public onPopupHover(): void {\r\n clearTimeout(this.hidePopupTimeout);\r\n }\r\n\r\n public onPopupLeave(): void {\r\n this.hidePopupTimeout = setTimeout(() => {\r\n this.hoveredRow.set(null);\r\n }, 100);\r\n }\r\n\r\n public onExpandHover(): void {\r\n if (!this.isPopupReady()) return;\r\n this.hoveredRow.set(null);\r\n }\r\n}\r\n","<div class=\"fu-table-wrapper\" [attr.outlined]=\"variant() === 'outlined'\">\r\n <!-- Search Filter -->\r\n @if (showFilter()) {\r\n <fu-table-filter [title]=\"tableTitle()\" />\r\n } @else if (tableTitle()) {\r\n <div style=\"margin-bottom: 12px\">\r\n <h3>{{ tableTitle() }}</h3>\r\n </div>\r\n }\r\n\r\n <!-- Table -->\r\n <table [attr.role]=\"'table'\" [style.table-layout]=\"tableLayout()\">\r\n <thead [attr.role]=\"'rowgroup'\">\r\n <tr [attr.role]=\"'row'\">\r\n @if (expandable()) {\r\n <th class=\"fu-expand-head\"></th>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: dataSource()[0] | keyMapping }\r\n \"\r\n />\r\n </tr>\r\n </thead>\r\n\r\n <tbody [attr.role]=\"'rowgroup'\">\r\n @if (sideBar()) {\r\n <div class=\"fu-sidebar\">\r\n <ng-container *ngTemplateOutlet=\"sidebarTemplate() || null\" />\r\n </div>\r\n }\r\n\r\n @if (isInitLoad()) {\r\n <ng-container *ngTemplateOutlet=\"initLoadTemplate\" />\r\n } @else {\r\n @for (row of sortedData(); track $index; let odd = $odd) {\r\n <tr\r\n [attr.outlined]=\"variant() === 'outlined'\"\r\n [attr.role]=\"'row'\"\r\n class=\"fu-body-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd,\r\n hoverable: expandable() || selectRowAction.observed,\r\n }\"\r\n (mouseenter)=\"onRowHover($event, row)\"\r\n (mouseleave)=\"onRowLeave()\"\r\n (click)=\"toggleRow(row, $index)\"\r\n >\r\n @if (expandable()) {\r\n <td\r\n class=\"fu-expand-cell\"\r\n [attr.data-expand]=\"expandedRowIndex === $index\"\r\n >\r\n <fu-icon size=\"16px\" iconName=\"chevronRight\" />\r\n </td>\r\n }\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate();\r\n context: {\r\n $implicit: row,\r\n index: $index,\r\n keys: row | keyMapping,\r\n }\r\n \"\r\n />\r\n </tr>\r\n\r\n @if (\r\n (expandable() && expandedRowIndex === $index) ||\r\n expandIndex() === $index ||\r\n expanded()\r\n ) {\r\n <tr\r\n class=\"fu-expand-row\"\r\n [ngClass]=\"{\r\n striped: stripedRows() && odd && expanded(),\r\n }\"\r\n [attr.expanded]=\"expanded()\"\r\n (mouseenter)=\"onExpandHover()\"\r\n >\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n @if (isLoading() && expanded()) {\r\n <span class=\"fu-skeleton-loader\"></span>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandTemplate() || null;\r\n context: { $implicit: row, index: $index }\r\n \"\r\n />\r\n }\r\n </td>\r\n </tr>\r\n }\r\n } @empty {\r\n <tr class=\"fu-empty-row\">\r\n <td [attr.colspan]=\"expandColumnSpan()\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n noRecordsTemplate() || defaultNoRecordsTemplate\r\n \"\r\n />\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (footerTemplate()) {\r\n <div class=\"fu-table-footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n footerTemplate() || null;\r\n context: { $implicit: sortedData() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n @if (showPaginator()) {\r\n <fu-table-paginator\r\n [dataLenght]=\"totalItems()\"\r\n [quickPageJump]=\"quickPageJump()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n />\r\n }\r\n</div>\r\n\r\n@if (hoveredRow()) {\r\n <div\r\n class=\"fu-action-popup\"\r\n [style.top.px]=\"popupPosition().top\"\r\n [style.right.px]=\"popupPosition().right\"\r\n (mouseenter)=\"onPopupHover()\"\r\n (mouseleave)=\"onPopupLeave()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n popupTemplate() || null;\r\n context: { $implicit: hoveredRow() }\r\n \"\r\n />\r\n </div>\r\n}\r\n\r\n<ng-template #defaultNoRecordsTemplate>\r\n <div class=\"fu-no-records\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M12 8v4m0 4.01l.01-.011M9 3H4v3m0 5v2m16-2v2M15 3h5v3M9 21H4v-3m11 3h5v-3\"\r\n />\r\n </svg>\r\n <p>{{ noRecordsText() }}</p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #initLoadTemplate>\r\n @for (item of arrayFromSize(); track $index) {\r\n <tr class=\"fu-empty-row\">\r\n @for (item of arrayFromCols(); track $index) {\r\n <fu-tbody-cell />\r\n }\r\n </tr>\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n OnInit,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { TableSortService } from '../services/table-sort.service';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { IconModule } from '../../icons';\r\nimport { CssUnit } from '../models';\r\n\r\n@Component({\r\n selector: 'fu-thead-cell',\r\n imports: [CommonModule, IconModule],\r\n templateUrl: './thead-cell.component.html',\r\n styleUrl: './thead-cell.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[attr.role]': '\"columnheader\"',\r\n '[style.width]': 'width()',\r\n '[class.sorting]': 'sortKey() !== undefined',\r\n },\r\n})\r\nexport class TheadCellComponent implements OnInit {\r\n public headerText = input<string>('');\r\n public sortKey = input<string | number | undefined>(undefined);\r\n public width = input<CssUnit>('auto');\r\n\r\n private tableStorageService = inject(TableStorageService);\r\n private tableSortService = inject(TableSortService);\r\n private tableUtilityService = inject(TableUtilityService);\r\n private elementRef = inject(ElementRef);\r\n\r\n public sortColumn = this.tableStorageService.sortKey;\r\n public sortDirection = this.tableStorageService.sortDirection;\r\n\r\n public cellIndex = signal<number>(-1);\r\n\r\n initSortEffect = effect(() => {\r\n this.initSortCell();\r\n });\r\n\r\n public ngOnInit(): void {\r\n const index = this.getIndex();\r\n this.cellIndex.set(index);\r\n\r\n this.tableUtilityService.setHeaderText(index, this.headerText());\r\n this.tableUtilityService.setColumnCount();\r\n }\r\n\r\n public toogleSort() {\r\n this.tableUtilityService.setSortCellIndex(this.cellIndex());\r\n this.tableSortService.updateSort(this.sortKey()!);\r\n }\r\n\r\n private initSortCell(): void {\r\n if (this.sortColumn() === this.sortKey()) {\r\n this.tableUtilityService.setSortCellIndex(this.cellIndex());\r\n }\r\n }\r\n\r\n private getIndex(): number {\r\n const parent = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n return Array.from(parent.children).indexOf(this.elementRef.nativeElement);\r\n }\r\n}\r\n","<div\r\n class=\"fu-header-cell\"\r\n (click)=\"toogleSort()\"\r\n [ngClass]=\"{ disabled: !sortKey() }\"\r\n>\r\n <span class=\"fu-header-text\">{{ headerText() }} </span>\r\n\r\n @if (sortKey()) {\r\n @if (sortColumn() === sortKey()) {\r\n @switch (sortDirection()) {\r\n @case ('asc') {\r\n <fu-icon size=\"1rem\" strokeWidth=\"2.5\" iconName=\"sortAsc\" />\r\n }\r\n @case ('desc') {\r\n <fu-icon size=\"1rem\" strokeWidth=\"2.5\" iconName=\"sortDesc\" />\r\n }\r\n @default {\r\n <fu-icon size=\"1rem\" color=\"gray\" iconName=\"sort\" />\r\n }\r\n }\r\n } @else {\r\n <fu-icon size=\"1rem\" color=\"gray\" iconName=\"sort\" />\r\n }\r\n }\r\n\r\n <span class=\"fu-header-cell-content\">\r\n <ng-content />\r\n </span>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n input,\r\n OnDestroy,\r\n Output,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TableUtilityService } from '../services/table-utility.service';\r\nimport { TableEditService } from '../services/table-edit.service';\r\nimport { IconModule } from '../../icons';\r\nimport { ButtonModule } from '../../button';\r\n\r\n@Component({\r\n selector: 'fu-tbody-actions',\r\n imports: [IconModule, ButtonModule],\r\n templateUrl: './tbody-actions.component.html',\r\n styleUrl: './tbody-actions.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[attr.role]': '\"cell\"',\r\n },\r\n})\r\nexport class TbodyActionsComponent<T extends object> implements OnDestroy {\r\n public editRowData = input<T>();\r\n public disabled = input<boolean>(false);\r\n\r\n private tableUtilityService = inject(TableUtilityService);\r\n private tableEditService = inject(TableEditService);\r\n private elementRef = inject(ElementRef);\r\n\r\n public isLoading = this.tableUtilityService.isLoading;\r\n public editIndex = this.tableEditService.editIndex;\r\n public rowIndex = signal<number>(-1);\r\n\r\n @Output() public editSaveAction = new EventEmitter<T>();\r\n @Output() public deleteAction = new EventEmitter<void>();\r\n\r\n cancelEditEffect = effect(() => {\r\n if (\r\n this.isLoading() &&\r\n this.editIndex() !== null &&\r\n this.tableEditService.savingIndex() < 0\r\n ) {\r\n this.tableEditService.stopEditing();\r\n }\r\n });\r\n\r\n public startEditing(event: Event): void {\r\n const rowIndex = this.getRowIndex();\r\n this.rowIndex.set(rowIndex);\r\n this.tableEditService.startEditing(rowIndex);\r\n event.stopPropagation();\r\n }\r\n\r\n public cancelEditing(event: Event): void {\r\n this.tableEditService.stopEditing();\r\n event.stopPropagation();\r\n }\r\n\r\n public saveEditing(event: Event): void {\r\n this.tableEditService.savingIndex.set(this.rowIndex());\r\n\r\n const editedValues = this.tableEditService.editValues();\r\n const updatedRow = { ...this.editRowData(), ...editedValues } as T;\r\n\r\n this.editSaveAction.emit(updatedRow);\r\n\r\n this.tableEditService.resetEditValues();\r\n event.stopPropagation();\r\n }\r\n\r\n public deleteRow(event: Event): void {\r\n this.deleteAction.emit();\r\n event.stopPropagation();\r\n }\r\n\r\n private getRowIndex(): number {\r\n const element = this.elementRef.nativeElement.parentElement as HTMLElement;\r\n const parent = element.parentElement;\r\n if (!parent) return -1;\r\n\r\n const children = Array.from(parent.children);\r\n return children.indexOf(element);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.tableEditService.stopEditing();\r\n }\r\n}\r\n","<div class=\"fu-row-actions\" (click)=\"$event.stopPropagation()\">\r\n @if (editIndex() === rowIndex()) {\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n severity=\"warning\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"cancelEditing($event)\"\r\n >\r\n <fu-icon iconName=\"cancel\" />\r\n </button>\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n severity=\"success\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"saveEditing($event)\"\r\n >\r\n <fu-icon iconName=\"save\" />\r\n </button>\r\n } @else if (editSaveAction.observed) {\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"startEditing($event)\"\r\n >\r\n <fu-icon iconName=\"edit\" />\r\n </button>\r\n }\r\n @if (editIndex() !== rowIndex() && deleteAction.observed) {\r\n <button\r\n fuButton\r\n iconButton\r\n raised\r\n variant=\"text\"\r\n severity=\"danger\"\r\n [disabled]=\"isLoading() || disabled()\"\r\n (click)=\"deleteRow($event)\"\r\n >\r\n <fu-icon iconName=\"trash\" />\r\n </button>\r\n }\r\n\r\n <ng-content />\r\n</div>\r\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { TableStorageService } from '../services/table-storage.service';\r\nimport { BodyCellValue } from '../models';\r\n\r\n@Directive({\r\n selector: '[fuHighlight]',\r\n})\r\nexport class HighlightDirective {\r\n public fuHighlight = input<BodyCellValue>('');\r\n\r\n private storageService = inject(TableStorageService);\r\n private el = inject(ElementRef);\r\n\r\n private searchText = this.storageService.searchText;\r\n\r\n highlightEffect = effect(() => {\r\n this.highlightText();\r\n });\r\n\r\n private highlightText() {\r\n const value = this.fuHighlight();\r\n if (!this.searchText() || !value) {\r\n this.el.nativeElement.innerHTML = value;\r\n return;\r\n }\r\n\r\n const regex = new RegExp(`(${this.searchText()})`, 'gi');\r\n this.el.nativeElement.innerHTML = `${value}`.replace(\r\n regex,\r\n '<span class=\"fu-highlight\">$1</span>'\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TableComponent } from './table/table.component';\r\nimport { TbodyCellComponent } from './tbody-cell/tbody-cell.component';\r\nimport { TheadCellComponent } from './thead-cell/thead-cell.component';\r\nimport { TbodyActionsComponent } from './tbody-actions/tbody-actions.component';\r\nimport { BodyTemplateDirective } from './directives/body-template.directive';\r\nimport { HeaderTemplateDirective } from './directives/header-template.directive';\r\nimport { ExpandTemplateDirective } from './directives/expand-template.directive';\r\nimport { PopupTemplateDirective } from './directives/popup-template.directive';\r\nimport { HighlightDirective } from './directives/highlight.directive';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n TableComponent,\r\n TbodyCellComponent,\r\n TheadCellComponent,\r\n TbodyActionsComponent,\r\n BodyTemplateDirective,\r\n HeaderTemplateDirective,\r\n ExpandTemplateDirective,\r\n PopupTemplateDirective,\r\n HighlightDirective,\r\n ],\r\n exports: [\r\n TableComponent,\r\n TbodyCellComponent,\r\n TheadCellComponent,\r\n TbodyActionsComponent,\r\n BodyTemplateDirective,\r\n HeaderTemplateDirective,\r\n ExpandTemplateDirective,\r\n PopupTemplateDirective,\r\n HighlightDirective,\r\n ],\r\n})\r\nexport class DataTableModule {}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n contentChild,\r\n input,\r\n output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { IconModule } from '../../icons';\r\nimport { ButtonModule } from '../../button';\r\nimport { TreeNode } from '../models';\r\n\r\n@Component({\r\n selector: 'fu-tree',\r\n imports: [NgTemplateOutlet, ButtonModule, IconModule],\r\n templateUrl: './tree.component.html',\r\n styleUrl: './tree.component.scss',\r\n})\r\nexport class TreeComponent {\r\n public dataSource = input.required<TreeNode[]>();\r\n\r\n public onExpand = output<TreeNode>();\r\n public onCollapse = output<TreeNode>();\r\n public onSelect = output<TreeNode>();\r\n\r\n public actionTemplate = contentChild<TemplateRef<any>>('actionTemplate');\r\n\r\n public toggleExpand(event: Event, item: TreeNode) {\r\n event.stopPropagation();\r\n item.isExpanded = !item.isExpanded;\r\n\r\n this.emitEvents(item);\r\n\r\n if (item.hasChildren && item.children) {\r\n item.children.forEach(sub => {\r\n sub.isExpanded = false;\r\n });\r\n }\r\n }\r\n\r\n public toggleSelect(item: TreeNode) {\r\n this.onSelect.emit(item);\r\n }\r\n\r\n private emitEvents(item: TreeNode) {\r\n if (item.isExpanded) {\r\n this.onExpand.emit(item);\r\n } else {\r\n this.onCollapse.emit(item);\r\n }\r\n }\r\n}\r\n","<div class=\"fu-tree-container\">\r\n <ul>\r\n <ng-container\r\n *ngTemplateOutlet=\"recursiveList; context: { $implicit: dataSource() }\"\r\n />\r\n </ul>\r\n</div>\r\n\r\n<ng-template #recursiveList let-items>\r\n @for (item of items; track $index) {\r\n <li>\r\n <div class=\"fu-tree-item\" (click)=\"toggleSelect(item)\">\r\n @if (item.hasChildren) {\r\n <button\r\n fuButton\r\n variant=\"text\"\r\n iconButton\r\n (click)=\"toggleExpand($event, item)\"\r\n >\r\n <fu-icon\r\n size=\"16px\"\r\n strokeWidth=\"3px\"\r\n [class.fu-rotate]=\"item.isExpanded\"\r\n iconName=\"arrowRight\"\r\n />\r\n </button>\r\n }\r\n\r\n <span\r\n [style.margin-left]=\"!item.hasChildren ? '40px' : '0'\"\r\n class=\"fu-tree-item-text\"\r\n >{{ item.label }}</span\r\n >\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n actionTemplate() || null;\r\n context: { $implicit: item }\r\n \"\r\n />\r\n </div>\r\n\r\n @if (item.hasChildren && item.isExpanded) {\r\n <ul style=\"padding-left: 16px\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n recursiveList;\r\n context: { $implicit: item.children }\r\n \"\r\n />\r\n </ul>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { TreeComponent } from './tree/tree.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [TreeComponent],\r\n exports: [TreeComponent],\r\n})\r\nexport class TreeModule {}\r\n","/*\r\n * Public API Surface of ng-fusion-ui\r\n */\r\n\r\nexport * from './lib/button/index';\r\nexport * from './lib/icons/index';\r\nexport * from './lib/data-table/index';\r\nexport * from './lib/tree/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IconRegistryService","i2.IconComponent","i2.ButtonDirective","i1"],"mappings":";;;;;;;AASA;;AAEG;MAKU,uBAAuB,CAAA;IAOlC,WACU,CAAA,EAAc,EACd,QAAmB,EAAA;QADnB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QART,IAAO,CAAA,OAAA,GAAiD,SAAS;QAElC,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAO,CAAA,OAAA,GAAY,KAAK;QACxB,IAAO,CAAA,OAAA,GAAY,KAAK;;IAOzD,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;AAEvE,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;;AAGnE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;AAGtE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;;8GA9B7D,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAGd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,gBAAgB,CAChB,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,mCAChB,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FALzB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;uGAEU,OAAO,EAAA,CAAA;sBAAf;gBAEuC,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ACZxC;;AAEG;MAKU,mBAAmB,CAAA;IAQ9B,WACU,CAAA,EAAc,EACd,QAAmB,EAAA;QADnB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QATT,IAAO,CAAA,OAAA,GAAiD,SAAS;QAElC,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAO,CAAA,OAAA,GAAY,KAAK;QACxB,IAAM,CAAA,MAAA,GAAY,KAAK;QACvB,IAAO,CAAA,OAAA,GAAY,KAAK;;IAOzD,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;AAC5D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;AAEvE,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;;AAGnE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;AAGtE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC;;AAGrE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;;8GAnC7D,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wHAGV,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAChB,gBAAgB,CAChB,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAgB,mCAChB,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FANzB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;uGAEU,OAAO,EAAA,CAAA;sBAAf;gBAEuC,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,MAAM,EAAA,CAAA;sBAA7C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ACbxC;;AAEG;MAKU,qBAAqB,CAAA;IAOhC,WACU,CAAA,EAAc,EACd,QAAmB,EAAA;QADnB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QART,IAAO,CAAA,OAAA,GAAiD,SAAS;QAElC,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAO,CAAA,OAAA,GAAY,KAAK;QACxB,IAAO,CAAA,OAAA,GAAY,KAAK;;IAOzD,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;AAEvE,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;;AAGnE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;AAGtE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;;8GA9B7D,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAGZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,gBAAgB,CAChB,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,mCAChB,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FALzB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA;uGAEU,OAAO,EAAA,CAAA;sBAAf;gBAEuC,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;MCN3B,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;AAIS,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAgC,QAAQ,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CACrB,SAAS,CACV;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,KAAK,EAAE;AAChD,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,KAAK,EAAE;AAC7C,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,KAAK,EAAE;AAC7C,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,KAAK,EAAE;AAC5C,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEM,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AA2BrC;IAzBQ,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC;AAE1E,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;;AAGnE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;AAGtE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;;AAGtE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC;;;8GA5C5D,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA;;;MCQY,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAbrB,uBAAuB;YACvB,qBAAqB;YACrB,mBAAmB;YACnB,eAAe;AACf,YAAA,YAAY,aAGZ,uBAAuB;YACvB,qBAAqB;YACrB,mBAAmB;YACnB,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YATrB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FASH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;wBACf,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;AAChB,qBAAA;AACF,iBAAA;;;ACrBM,MAAM,IAAI,GAAG,8QAA8Q;AAC3R,MAAM,OAAO,GAAG,oTAAoT;AACpU,MAAM,QAAQ,GAAG,4RAA4R;AAC7S,MAAM,KAAK,GAAG,4TAA4T;AAC1U,MAAM,gBAAgB,GAAG,gPAAgP;AACzQ,MAAM,eAAe,GAAG,iPAAiP;AACzQ,MAAM,SAAS,GAAG,mOAAmO;AACrP,MAAM,UAAU,GAAG,kOAAkO;AACrP,MAAM,IAAI,GAAG,6PAA6P;AAC1Q,MAAM,OAAO,GAAG,6PAA6P;AAC7Q,MAAM,QAAQ,GAAG,6PAA6P;AAC9Q,MAAM,YAAY,GAAG,uUAAuU;AAC5V,MAAM,UAAU,GAAG,uTAAuT;AAC1U,MAAM,UAAU,GAAG,kWAAkW;AACrX,MAAM,KAAK,GAAG,mOAAmO;AACjP,MAAM,IAAI,GAAG,+WAA+W;AAC5X,MAAM,MAAM,GAAG,wVAAwV;AAEvW,MAAM,QAAQ,GAAG,slCAAslC;AACvmC,MAAM,YAAY,GAAG,q6CAAq6C;AAC17C,MAAM,YAAY,GAAG,4yHAA4yH;AACj0H,MAAM,YAAY,GAAG,ilFAAilF;AACtmF,MAAM,aAAa,GAAG,8yEAA8yE;AACp0E,MAAM,YAAY,GAAG,gmGAAgmG;AACrnG,MAAM,iBAAiB,GAAG,u0HAAu0H;AACj2H,MAAM,cAAc,GAAG,osEAAosE;AAC3tE,MAAM,WAAW,GAAG,ulEAAulE;AAE3mE,MAAM,QAAQ,GAAG,sMAAsM;AACvN,MAAM,cAAc,GAAG,+SAA+S;AACtU,MAAM,MAAM,GAAG,4SAA4S;AAC3T,MAAM,YAAY,GAAG,gfAAgf;AACrgB,MAAM,IAAI,GAAG,qOAAqO;AAClP,MAAM,UAAU,GAAG,sQAAsQ;AACzR,MAAM,GAAG,GAAG,gTAAgT;AAC5T,MAAM,YAAY,GAAG,wMAAwM;AAC7N,MAAM,IAAI,GAAG,4dAA4d;AACze,MAAM,WAAW,GAAG,4jBAA4jB;AAChlB,MAAM,QAAQ,GAAG,qRAAqR;AACtS,MAAM,MAAM,GAAG,qZAAqZ;AACpa,MAAM,YAAY,GAAG,+1DAA+1D;AACp3D,MAAM,SAAS,GAAG,y1BAAy1B;AAC32B,MAAM,OAAO,GAAG,wOAAwO;AACxP,MAAM,WAAW,GAAG,6WAA6W;AACjY,MAAM,SAAS,GAAG,wPAAwP;;MCQpQ,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;AAFrB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAoB;AAGzC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;AACvD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC;;IAGpC,YAAY,CAAC,IAAe,EAAE,GAAW,EAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;;AAGxB,IAAA,OAAO,CAAC,IAAY,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;8GAvDlB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC5BY,aAAa,CAAA;AAOxB,IAAA,IAA0B,SAAS,GAAA;AACjC,QAAA,OAAO,SAAS;;IAKlB,WACU,CAAA,YAAiC,EACjC,UAAsB,EAAA;QADtB,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU;AAdb,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAa;AAEtC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;;AAazB,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;;AAEpB,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACpB,IAAI,CAAC,YAAY,EAAE;;AAErB,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAC1B,IAAI,CAAC,kBAAkB,EAAE;;;IAItB,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;IAGnD,YAAY,GAAA;QAClB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;AAE3D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;;IAIlE,WAAW,GAAA;QACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;AAEpE,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAC7C,gBAAgB,EAChB,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CACvB;;;IAIG,kBAAkB,GAAA;QACxB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAChD,wBAAwB,CACzB;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAC7C,wBAAwB,EACxB,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAC9B;;;8GA7DM,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,ipBCvB1B,uEACA,EAAA,MAAA,EAAA,CAAA,yVAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDsBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;+BACI,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,yVAAA,CAAA,EAAA;8GASO,SAAS,EAAA,CAAA;sBAAlC,WAAW;uBAAC,OAAO;;;MEnBT,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EALN,YAAA,EAAA,CAAA,aAAa,CAClB,EAAA,OAAA,EAAA,CAAA,YAAY,aAEZ,aAAa,CAAA,EAAA,CAAA,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAHV,SAAA,EAAA,CAAC,mBAAmB,CAAC,YADtB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIX,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,mBAAmB,CAAC;oBAChC,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;MCPY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;QAEU,IAAW,CAAA,WAAA,GAAa,EAAE;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;AAqCzC;AAnCQ,IAAA,gBAAgB,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGxB,kBAAkB,GAAA;QACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;IAGrB,aAAa,CAAC,KAAa,EAAE,IAAY,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI;;AAGzB,IAAA,aAAa,CAAC,KAAa,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;IAGzB,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;;IAGhB,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;;IAGtC,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGlB,IAAA,YAAY,CAAC,OAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;AAGtB,IAAA,WAAW,CAAC,QAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;8GAzClB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACSD,MAAM,YAAY,GAAiB;AACjC,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,UAAU,EAAE,EAAE;CACf;MAGY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAe,YAAY,CAAC;AAElD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC;AAC7D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;AACvD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC;AACrD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC;AACjE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC;AAElE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AAElC,SAAC,CAAC;AAyDH;AAvDQ,IAAA,cAAc,CAAC,WAAmB,EAAA;QACvC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AACjC,YAAA,GAAG,KAAK;YACR,WAAW;AACZ,SAAA,CAAC,CAAC;;AAGE,IAAA,WAAW,CAAC,QAAgB,EAAA;QACjC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AACjC,YAAA,GAAG,KAAK;YACR,QAAQ;AACT,SAAA,CAAC,CAAC;;AAGE,IAAA,UAAU,CAAC,OAAwB,EAAA;QACxC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AACjC,YAAA,GAAG,KAAK;YACR,OAAO;AACR,SAAA,CAAC,CAAC;;AAGE,IAAA,gBAAgB,CAAC,aAA4B,EAAA;QAClD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AACjC,YAAA,GAAG,KAAK;YACR,aAAa;AACd,SAAA,CAAC,CAAC;;AAGE,IAAA,aAAa,CAAC,UAAkB,EAAA;QACrC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AACjC,YAAA,GAAG,KAAK;YACR,UAAU;AACX,SAAA,CAAC,CAAC;;AAGE,IAAA,kBAAkB,CAAC,GAAW,EAAA;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAErD,QAAA,IAAI,YAAY,IAAI,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;;AAEjD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGxB,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;;IAGvB,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;;AAG7B,IAAA,kBAAkB,CAAC,KAAmB,EAAA;AAC5C,QAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;8GAvEjE,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCdY,gBAAgB,CAAA;AAH7B,IAAA,WAAA,GAAA;AAIS,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAS,WAAW,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,WAAW,CAAC;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,kBAAkB,CAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,YAAY,CAAC;AAE7C,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa,KAC/D,GAAG,KAAK,CAAA,IAAA,EAAO,IAAI,CAAO,IAAA,EAAA,KAAK,UAAU;AAC5C;8GARY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCDY,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAyB,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAqBxC;AAnBQ,IAAA,YAAY,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAGvB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGnB,gBAAgB,CAAC,GAAW,EAAE,KAAU,EAAA;QAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK;AAChC,YAAA,GAAG,MAAM;YACT,CAAC,GAAG,GAAG,KAAK;AACb,SAAA,CAAC,CAAC;;IAGE,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;;8GAtBd,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCoBY,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;AASS,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAW,EAAE,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAE/C,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MACtB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CACxE;QACM,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,MAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAC/C;QACM,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc;AAC9C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAC1E;AA6DF;AA3DQ,IAAA,QAAQ,CAAC,IAAY,EAAA;QAC1B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE;YACxC;;QAGF,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC;;AAGxC,IAAA,cAAc,CAAC,KAAU,EAAA;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE;;AAGb,IAAA,UAAU,CAAC,KAAuB,EAAA;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC;QAChE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAE7B,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,UAAU,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE;AACnD,YAAA,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE;YACtC;;AAGF,QAAA,IAAI,KAAK,GAAG,GAAG,EAAE;AACf,YAAA,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;;AAC3C,aAAA,IAAI,KAAK,GAAG,GAAG,EAAE;AACtB,YAAA,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;;aAC3C;YACL,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;;QAGpD,IAAI,CAAC,WAAW,EAAE;;AAGb,IAAA,WAAW,CAAC,KAAuB,EAAA;AACxC,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;;AAGtD,IAAA,cAAc,CAAC,KAAyC,EAAA;AAC7D,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC5C,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;QACtC,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;;IAG3C,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAC9C,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;;8GAnF5B,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,ECtBpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,o9FAmGA,EDnFY,MAAA,EAAA,CAAA,iyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mLAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,YAAY,EAAE,UAAU,CAAC,EAGlB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,o9FAAA,EAAA,MAAA,EAAA,CAAA,iyCAAA,CAAA,EAAA;;;MEP1B,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;QAIS,IAAU,CAAA,UAAA,GAAG,KAAK,CAAM,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAQhE;AANC,IAAA,OAAO,sBAAsB,CAC3B,GAAwC,EACxC,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI;;8GAPF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;;MCFY,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;QAIS,IAAU,CAAA,UAAA,GAAG,KAAK,CAAW,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AAQvE;AANC,IAAA,OAAO,sBAAsB,CAC3B,GAA0C,EAC1C,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI;;8GAPF,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;;;MCEY,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;QAIS,IAAU,CAAA,UAAA,GAAG,KAAK,CAAW,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AAQvE;AANC,IAAA,OAAO,sBAAsB,CAC3B,GAA0C,EAC1C,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI;;8GAPF,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;;;MCLY,cAAc,CAAA;AACzB,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,KAAK;;QAGd,MAAM,YAAY,GAA2B,EAAE;QAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC/B,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG;AACzB,SAAC,CAAC;AAEF,QAAA,OAAO,YAAY;;8GAXV,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA;;;MC0BY,kBAAkB,CAAA;AAb/B,IAAA,WAAA,GAAA;AAcS,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,SAAS,CAAC;AAC3C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC;AAE3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAE7B,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QACvD,IAAS,CAAA,SAAA,GAAG,QAAQ,CACzB,MACE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAC5E;AAEO,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC5C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAChD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW;QAE/C,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CACxB,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,CACpE;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAErC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,MAAK;AAC7B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBACpE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;AAEvC,SAAC,CAAC;AA6CH;IA3CQ,QAAQ,GAAA;AACb,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CACxD;;IAGI,aAAa,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AAEpC,QAAA,IAAI,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAClD,YAAA,OAAO,SAAgB;;AAGzB,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE;QACzC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,UAAU,CAAG,CAAA,CAAA,EAAE,IAAI,CAAC;QAEjD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,sCAAsC,CAAC;;AAGrE,IAAA,aAAa,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;;IAGvD,YAAY,GAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAA4B;AACzE,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;IAGnE,WAAW,GAAA;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAA4B;AAC1E,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa;AACpC,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QAEtB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5C,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;;8GA9EvB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,0eC9B/B,yrGAuFA,EAAA,MAAA,EAAA,CAAA,w5FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDzDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,iBAAiB,EAAE,aAAa;AAChC,wBAAA,kBAAkB,EAAE,aAAa;AAClC,qBAAA,EAAA,QAAA,EAAA,yrGAAA,EAAA,MAAA,EAAA,CAAA,w5FAAA,CAAA,EAAA;;;MElBU,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;QAIS,IAAU,CAAA,UAAA,GAAG,KAAK,CAAW,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;AAQtE;AANC,IAAA,OAAO,sBAAsB,CAC3B,GAAyC,EACzC,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI;;8GAPF,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;;MCYY,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;QASS,IAAK,CAAA,KAAA,GAAG,KAAK,EAAU;AAEtB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAmBxD;IAjBQ,WAAW,GAAA;QAChB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;;AAGrC,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;;IAGpC,SAAS,GAAA;QACf,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAC9C,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;;8GAxB5B,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,ECrBjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,soBA2BA,EDRY,MAAA,EAAA,CAAA,skBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,qJAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEvB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC5B,OAAA,EAAA,CAAC,UAAU,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,soBAAA,EAAA,MAAA,EAAA,CAAA,skBAAA,CAAA,EAAA;;;MEfxB,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEjD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAY/D;AAVQ,IAAA,UAAU,CAAC,MAAuB,EAAA;AACvC,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK;AACpD,cAAE;cACA,KAAK;AAEX,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,CAAC;;8GAd9C,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MC8DY,cAAc,CAAA;AAtB3B,IAAA,WAAA,GAAA;AAuBS,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAO;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiB,EAAE,EAAE;AACjD,YAAA,SAAS,EAAE,GAAG,IAAI,CAAA,SAAA,EAAY,GAAG,CAAE,CAAA;AACpC,SAAA,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAc,MAAM,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,CAAC;QACvC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;QACjC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC;AACpC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,CAAC,CAAC;QAC9B,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAwB,QAAQ,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;QAE/B,IAAc,CAAA,cAAA,GAAG,KAAK,EAAiB;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,CAAC;AAExC,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAmB,iBAAiB,CAAC;AACnE,QAAA,IAAA,CAAA,iBAAiB,GACtB,YAAY,CAAmB,mBAAmB,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAmB,gBAAgB,CAAC;AACjE,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,sBAAsB,EAAE;AAC1D,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,uBAAuB,EAAE;AAC5D,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AACjE,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AACrE,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA,CAAC;AAEK,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,IAAI,CAAC;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAM,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAM,EAAE,CAAC;AAE3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAE/C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAEvD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAC1B,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CACtD;QAEM,IAAgB,CAAA,gBAAA,GAAkB,IAAI;QACtC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,MAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CACxC;QACM,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,MAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAChD;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;;iBACxB;AACL,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAE7B,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAW,IAAI,CAAC;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;QACjC,IAAgB,CAAA,gBAAA,GACtB,SAAS;QACH,IAAY,CAAA,YAAA,GAAG,QAAQ,CAC7B,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CACpE;QAEM,IAAY,CAAA,YAAA,GAAG,MAAM,EAAgB;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAK;AAExD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,EAAE;;iBAClB;gBACL,IAAI,CAAC,UAAU,EAAE;;AAErB,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,MAAK;YAC1B,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,EAAE;YAEpB,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,aAAC,CAAC;AACJ,SAAC,CAAC;AAoKH;AAlKQ,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;YAC9B,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGrE,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACvB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAGvD,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC3B,IAAI,CAAC,cAAc,EAAE;;iBAChB;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;;;IAK5C,QAAQ,GAAA;QACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;QAE1C,IAAI,CAAC,cAAc;cACf,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACzC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,SAAC,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;;;IAIR,QAAQ,GAAA;AAC5C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;;AAGpB,IAAA,SAAS,CAAC,GAAM,EAAE,KAAA,GAAgB,CAAC,EAAA;QACxC,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;AACnC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;iBACvB;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;YAE/B;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;;IAGxB,UAAU,GAAA;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,IAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAc,KAAI;YAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC1D;;AAGF,YAAA,OAAO;AACJ,iBAAA,QAAQ;AACR,iBAAA,WAAW;iBACX,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;SAC7C,CAAC,CACH;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;;IAG7B,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE;YACjB;;QAGF,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAChC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAoB,CAAC;YACnD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAoB,CAAC;YAEnD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACxD,gBAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;;AAGnE,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK;AAC9B,kBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,kBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAC,CAAC;;IAGI,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QACvD,MAAM,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;;IAGzB,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;IAGrC,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;;IAIjC,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACzB,SAAA,CAAC;;IAGI,UAAU,GAAA;QAChB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,YAAY,EAAE;;IAGd,UAAU,CAAC,KAAiB,EAAE,GAAM,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;AAC1B,QAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAExB,MAAM,UAAU,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9D,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE;AAE/C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AACrB,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO;AAC9B,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO;AACjC,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAC3D,aAAA,CAAC;;;IAIC,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAK;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;SAC1B,EAAE,GAAG,CAAC;;IAGF,YAAY,GAAA;AACjB,QAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;;IAG9B,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAK;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;SAC1B,EAAE,GAAG,CAAC;;IAGF,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;8GA/QhB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EATd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACT,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;AACjB,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkCmC,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAClD,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEkB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACpD,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEyB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACzD,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE2B,uBAAuB,EAC7D,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,ECzGrB,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,g3KAkLA,EDpII,MAAA,EAAA,CAAA,gmGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,uFAClB,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAaL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACX,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;wBACZ,UAAU;wBACV,uBAAuB;wBACvB,oBAAoB;wBACpB,kBAAkB;wBAClB,cAAc;qBACf,EAGU,SAAA,EAAA;wBACT,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;AACjB,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,g3KAAA,EAAA,MAAA,EAAA,CAAA,gmGAAA,CAAA,EAAA;8BA6FpB,eAAe,EAAA,CAAA;sBAA/B;gBAoDqC,QAAQ,EAAA,CAAA;sBAA7C,YAAY;uBAAC,eAAe;;;MEjLlB,kBAAkB,CAAA;AAb/B,IAAA,WAAA,GAAA;AAcS,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA8B,SAAS,CAAC;AACvD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,MAAM,CAAC;AAE7B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAErC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,MAAK;YAC3B,IAAI,CAAC,YAAY,EAAE;AACrB,SAAC,CAAC;AAyBH;IAvBQ,QAAQ,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAEzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE;;IAGpC,UAAU,GAAA;QACf,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC;;IAG3C,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE;YACxC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;;IAIvD,QAAQ,GAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAA4B;AACzE,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;8GAxChE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EC/B/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,20BA6BA,EDTY,MAAA,EAAA,CAAA,6qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8HAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAWvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAChB,OAAA,EAAA,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,iBAAiB,EAAE,yBAAyB;AAC7C,qBAAA,EAAA,QAAA,EAAA,20BAAA,EAAA,MAAA,EAAA,CAAA,6qBAAA,CAAA,EAAA;;;MEAU,qBAAqB,CAAA;AAXlC,IAAA,WAAA,GAAA;QAYS,IAAW,CAAA,WAAA,GAAG,KAAK,EAAK;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAE/B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAEnB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAK;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAExD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,MAAK;YAC7B,IACE,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI;gBACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,EACvC;AACA,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;AAEvC,SAAC,CAAC;AA2CH;AAzCQ,IAAA,YAAY,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC5C,KAAK,CAAC,eAAe,EAAE;;AAGlB,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACnC,KAAK,CAAC,eAAe,EAAE;;AAGlB,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACvD,QAAA,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,YAAY,EAAO;AAElE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;QACvC,KAAK,CAAC,eAAe,EAAE;;AAGlB,IAAA,SAAS,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,KAAK,CAAC,eAAe,EAAE;;IAGjB,WAAW,GAAA;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAA4B;AAC1E,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa;AACpC,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QAEtB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5C,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;;IAG3B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;8GAhE1B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EC7BlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,u1CAoDA,EDhCY,MAAA,EAAA,CAAA,wWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,qJAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FASvB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EACnB,OAAA,EAAA,CAAC,UAAU,EAAE,YAAY,CAAC,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,aAAa,EAAE,QAAQ;AACxB,qBAAA,EAAA,QAAA,EAAA,u1CAAA,EAAA,MAAA,EAAA,CAAA,wWAAA,CAAA,EAAA;8BAcgB,cAAc,EAAA,CAAA;sBAA9B;gBACgB,YAAY,EAAA,CAAA;sBAA5B;;;MEnCU,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;AAIS,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,EAAE,CAAC;AAErC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC5C,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAEnD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,MAAK;YAC5B,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;AAeH;IAbS,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK;YACvC;;AAGF,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,UAAU,EAAE,CAAA,CAAA,CAAG,EAAE,IAAI,CAAC;AACxD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC,OAAO,CAClD,KAAK,EACL,sCAAsC,CACvC;;8GAvBQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;;;MC8BY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAtBxB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,qBAAqB;YACrB,uBAAuB;YACvB,uBAAuB;YACvB,sBAAsB;AACtB,YAAA,kBAAkB,aAGlB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,qBAAqB;YACrB,uBAAuB;YACvB,uBAAuB;YACvB,sBAAsB;YACtB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAtBxB,cAAc;YAEd,kBAAkB;YAClB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAmBZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAzB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,kBAAkB;wBAClB,kBAAkB;wBAClB,qBAAqB;wBACrB,qBAAqB;wBACrB,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;wBACtB,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,kBAAkB;wBAClB,kBAAkB;wBAClB,qBAAqB;wBACrB,qBAAqB;wBACrB,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;wBACtB,kBAAkB;AACnB,qBAAA;AACF,iBAAA;;;MCjBY,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAc;QAEzC,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAY;QAC7B,IAAU,CAAA,UAAA,GAAG,MAAM,EAAY;QAC/B,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAY;AAE7B,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAmB,gBAAgB,CAAC;AA0BzE;IAxBQ,YAAY,CAAC,KAAY,EAAE,IAAc,EAAA;QAC9C,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;AAElC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAErB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAG;AAC1B,gBAAA,GAAG,CAAC,UAAU,GAAG,KAAK;AACxB,aAAC,CAAC;;;AAIC,IAAA,YAAY,CAAC,IAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGlB,IAAA,UAAU,CAAC,IAAc,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;aACnB;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;8GA9BnB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,saClB1B,2/CAuDA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCY,gBAAgB,EAAE,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mLAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIzC,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,WACV,CAAC,gBAAgB,EAAE,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,2/CAAA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA;;;MEN1C,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAV,UAAU,EAAA,OAAA,EAAA,CAHX,aAAa,CAAA,EAAA,OAAA,EAAA,CACb,aAAa,CAAA,EAAA,CAAA,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHX,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAGZ,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnChanges, SimpleChanges, TemplateRef, OnInit } from '@angular/core';
1
+ import { EventEmitter, OnChanges, SimpleChanges, TemplateRef, OnInit, Injector } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { TableActions, TableLayout } from '../models';
4
4
  import * as i0 from "@angular/core";
@@ -20,8 +20,10 @@ export declare class TableComponent<T extends object> implements OnChanges, OnIn
20
20
  popupOffset: import("@angular/core").InputSignal<number>;
21
21
  tableTitle: import("@angular/core").InputSignal<string | undefined>;
22
22
  variant: import("@angular/core").InputSignal<"outlined" | "raised">;
23
+ sideBar: import("@angular/core").InputSignal<boolean>;
23
24
  setsFirstPage$: import("@angular/core").InputSignal<Subject<void> | undefined>;
24
25
  expandIndex: import("@angular/core").ModelSignal<number | null>;
26
+ sidebarTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
25
27
  noRecordsTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
26
28
  footerTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
27
29
  popupTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
@@ -35,6 +37,7 @@ export declare class TableComponent<T extends object> implements OnChanges, OnIn
35
37
  private tableIntl;
36
38
  private tableUtilityService;
37
39
  private tableStorageService;
40
+ injector: Injector;
38
41
  noRecordsText: import("@angular/core").WritableSignal<string>;
39
42
  columnCount: import("@angular/core").WritableSignal<number>;
40
43
  pageSize: import("@angular/core").Signal<number>;
@@ -77,5 +80,5 @@ export declare class TableComponent<T extends object> implements OnChanges, OnIn
77
80
  onPopupLeave(): void;
78
81
  onExpandHover(): void;
79
82
  static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
80
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "fu-table", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "localStorageKey": { "alias": "localStorageKey"; "required": false; "isSignal": true; }; "tableLayout": { "alias": "tableLayout"; "required": false; "isSignal": true; }; "firstPageOnInit": { "alias": "firstPageOnInit"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "serverPagination": { "alias": "serverPagination"; "required": false; "isSignal": true; }; "stripedRows": { "alias": "stripedRows"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showPaginator": { "alias": "showPaginator"; "required": false; "isSignal": true; }; "quickPageJump": { "alias": "quickPageJump"; "required": false; "isSignal": true; }; "popupOffset": { "alias": "popupOffset"; "required": false; "isSignal": true; }; "tableTitle": { "alias": "tableTitle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "setsFirstPage$": { "alias": "setsFirstPage$"; "required": false; "isSignal": true; }; "expandIndex": { "alias": "expandIndex"; "required": false; "isSignal": true; }; }, { "expandIndex": "expandIndexChange"; "tableActions": "tableActions"; "selectRowAction": "selectRowAction"; }, ["noRecordsTemplate", "footerTemplate", "popupTemplate", "expandTemplate", "bodyTemplate", "headerTemplate"], never, true, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "fu-table", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "localStorageKey": { "alias": "localStorageKey"; "required": false; "isSignal": true; }; "tableLayout": { "alias": "tableLayout"; "required": false; "isSignal": true; }; "firstPageOnInit": { "alias": "firstPageOnInit"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "serverPagination": { "alias": "serverPagination"; "required": false; "isSignal": true; }; "stripedRows": { "alias": "stripedRows"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showPaginator": { "alias": "showPaginator"; "required": false; "isSignal": true; }; "quickPageJump": { "alias": "quickPageJump"; "required": false; "isSignal": true; }; "popupOffset": { "alias": "popupOffset"; "required": false; "isSignal": true; }; "tableTitle": { "alias": "tableTitle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "sideBar": { "alias": "sideBar"; "required": false; "isSignal": true; }; "setsFirstPage$": { "alias": "setsFirstPage$"; "required": false; "isSignal": true; }; "expandIndex": { "alias": "expandIndex"; "required": false; "isSignal": true; }; }, { "expandIndex": "expandIndexChange"; "tableActions": "tableActions"; "selectRowAction": "selectRowAction"; }, ["sidebarTemplate", "noRecordsTemplate", "footerTemplate", "popupTemplate", "expandTemplate", "bodyTemplate", "headerTemplate"], never, true, never>;
81
84
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-fusion-ui",
3
- "version": "0.6.30",
3
+ "version": "0.6.31",
4
4
  "description": "New Angular component library!",
5
5
  "homepage": "https://fusion-ui.up.railway.app",
6
6
  "license": "MIT",