UNPKG

ng-fusion-ui

Version:

New Angular component library!

1 lines 238 kB
{"version":3,"file":"ng-fusion-ui.mjs","sources":["../../../projects/ng-fusion-ui/src/lib/data-grid/services/data-sorting.service.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/services/edit-row.service.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/data-grid/components/body-row-cell/body-row-cell.component.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/components/body-row-cell/body-row-cell.component.html","../../../projects/ng-fusion-ui/src/lib/data-grid/directives/sort-column.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/components/head-row-cell/head-row-cell.component.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/components/head-row-cell/head-row-cell.component.html","../../../projects/ng-fusion-ui/src/lib/button/directives/btn-outline.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/components/row-actions/row-actions.component.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/components/row-actions/row-actions.component.html","../../../projects/ng-fusion-ui/src/lib/data-grid/directives/grid-header-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/directives/grid-body-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/directives/grid-expand-template.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/services/paginator.service.ts","../../../projects/ng-fusion-ui/src/lib/button/directives/btn-text.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/directives/grid-columns.directive.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/pipes/key-mapping.pipe.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/data-grid/data-grid.component.ts","../../../projects/ng-fusion-ui/src/lib/data-grid/data-grid/data-grid.component.html","../../../projects/ng-fusion-ui/src/lib/data-grid/services/data-grid-paginator.ts","../../../projects/ng-fusion-ui/src/lib/icons/icon.module.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/data-grid/data-grid.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 { Injectable, OnInit, computed, effect, signal } from '@angular/core';\r\n\r\nexport type OnSortEvent = {\r\n  sortKey: string | number;\r\n  sortDirection: TSort;\r\n};\r\n\r\nexport type TSort = 'asc' | 'desc';\r\n\r\n@Injectable()\r\nexport class DataSortingService {\r\n  private sortKeyValue = signal<string>('');\r\n  private sortDirectionValue = signal<TSort>('asc');\r\n  private cellDefs: string[] = [];\r\n  private localStorageKey = signal<string>('');\r\n\r\n  public cellKeys = signal<string[]>([]);\r\n  public sortKey = computed(() => this.sortKeyValue());\r\n  public sortDirection = computed(() => this.sortDirectionValue());\r\n  public storedValues = signal<OnSortEvent>({\r\n    sortKey: '',\r\n    sortDirection: 'asc',\r\n  });\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      const storedData = window.localStorage.getItem(this.localStorageKey());\r\n\r\n      if (storedData) {\r\n        const parsedData = JSON.parse(storedData);\r\n        this.storedValues.set(parsedData);\r\n        this.sortKeyValue.set(parsedData.sortKey as string);\r\n        this.sortDirectionValue.set(parsedData.sortDirection);\r\n      }\r\n    });\r\n  }\r\n\r\n  public getLocalStorageKey(key: string): void {\r\n    this.localStorageKey.set(`fu-${key}-sort`);\r\n  }\r\n\r\n  public setSortKey(key: TSort): void {\r\n    if (this.sortKey() !== key) {\r\n      this.sortDirectionValue.set('asc');\r\n    } else {\r\n      this.sortDirectionValue.update(val => (val === 'asc' ? 'desc' : 'asc'));\r\n    }\r\n    this.sortKeyValue.set(key);\r\n\r\n    window.localStorage.setItem(\r\n      this.localStorageKey(),\r\n      JSON.stringify({ sortKey: key, sortDirection: this.sortDirectionValue() })\r\n    );\r\n  }\r\n\r\n  public setCellDef(index: number, cellDef: string): void {\r\n    this.cellDefs[index] = cellDef;\r\n  }\r\n\r\n  public getCellDef(index: number): string | undefined {\r\n    return this.cellDefs[index];\r\n  }\r\n\r\n  public clear(): void {\r\n    this.cellDefs = [];\r\n  }\r\n\r\n  public getCellKeys(data: object): void {\r\n    this.cellKeys.set(Object.keys(data));\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class EditRowService {\r\n  private editIndexSubject = new BehaviorSubject<number | null>(null);\r\n  public editIndex$: Observable<number | null> =\r\n    this.editIndexSubject.asObservable();\r\n\r\n  private editValuesSubject = new BehaviorSubject<{ [key: string]: any }>({});\r\n  public editValues$: Observable<{ [key: string]: any }> =\r\n    this.editValuesSubject.asObservable();\r\n\r\n  public startEditing(rowIndex: number): void {\r\n    this.editIndexSubject.next(rowIndex);\r\n  }\r\n\r\n  public stopEditing(): void {\r\n    this.editIndexSubject.next(null);\r\n  }\r\n\r\n  public updateEditValues(key: string, value: any): void {\r\n    const currentValues = this.editValuesSubject.value;\r\n    this.editValuesSubject.next({ ...currentValues, [key]: value });\r\n  }\r\n\r\n  public resetEditValues(): void {\r\n    this.editValuesSubject.next({});\r\n  }\r\n}\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 {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  SimpleChanges,\r\n  ViewEncapsulation,\r\n  computed,\r\n  input,\r\n  model,\r\n  signal,\r\n} from '@angular/core';\r\nimport { DataSortingService } from '../../services/data-sorting.service';\r\nimport { EditRowService } from '../../services/edit-row.service';\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\n@Component({\n    selector: 'fu-body-row-cell',\n    templateUrl: './body-row-cell.component.html',\n    styleUrl: './body-row-cell.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\r\nexport class BodyRowCellComponent implements OnInit, OnChanges, OnDestroy {\r\n  public cellValue = input<string | number | boolean>('');\r\n  public editKey = input<string>('');\r\n\r\n  public cellDef = signal<string>('');\r\n  public editCellValue = model<string | number | boolean>();\r\n  public isEditing = signal<boolean>(false);\r\n  public hasCellValue = signal<boolean>(false);\r\n  public isCellBoolean = computed<boolean>(\r\n    () => typeof this.cellValue() === 'boolean'\r\n  );\r\n\r\n  private subscription: Subscription;\r\n\r\n  constructor(\r\n    private sortService: DataSortingService,\r\n    private editRowService: EditRowService,\r\n    private elementRef: ElementRef\r\n  ) {}\r\n\r\n  public ngOnChanges(changes: SimpleChanges): void {\r\n    const rowIndex = this.getRowIndex();\r\n\r\n    if (changes['cellValue']) {\r\n      this.hasCellValue.set(true);\r\n    }\r\n\r\n    if (changes['editKey']) {\r\n      this.validateKey();\r\n\r\n      this.subscription = this.editRowService.editIndex$\r\n        .pipe(filter(() => !!this.editKey))\r\n        .subscribe(index => {\r\n          this.editCellValue.set(this.cellValue());\r\n          this.isEditing.set(index === rowIndex);\r\n        });\r\n    }\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    const index = this.getCellIndex();\r\n    this.cellDef.set(this.sortService.getCellDef(index) || '');\r\n  }\r\n\r\n  public checkboxClick(event: Event): void {\r\n    event.stopPropagation();\r\n  }\r\n\r\n  public onInputChange(value: any): void {\r\n    this.editCellValue.set(value);\r\n    if (this.isEditing()) {\r\n      this.editRowService.updateEditValues(this.editKey(), value);\r\n    }\r\n  }\r\n\r\n  private validateKey(): void {\r\n    if (!this.sortService.cellKeys().includes(this.editKey())) {\r\n      console.warn(`Invalid editKey '${this.editKey}' provided.`);\r\n    }\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  public ngOnDestroy(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","<div class=\"fu-body-row-cell\" [attr.data-edit]=\"isEditing()\">\r\n  <span>{{ cellDef() }}</span>\r\n\r\n  @if (hasCellValue()) {\r\n    @if (isEditing()) {\r\n      @if (isCellBoolean()) {\r\n        <div class=\"fu-checkbox-input\">\r\n          <input\r\n            type=\"checkbox\"\r\n            [checked]=\"cellValue()\"\r\n            [(ngModel)]=\"editCellValue\"\r\n            (ngModelChange)=\"onInputChange($event)\"\r\n            (click)=\"checkboxClick($event)\"\r\n          />\r\n        </div>\r\n      } @else {\r\n        <input\r\n          class=\"fu-edit-input\"\r\n          [(ngModel)]=\"editCellValue\"\r\n          (ngModelChange)=\"onInputChange($event)\"\r\n          (click)=\"$event.stopPropagation()\"\r\n        />\r\n      }\r\n    } @else {\r\n      @if (isCellBoolean()) {\r\n        @if (cellValue()) {\r\n          <div style=\"margin-left: 6px\">\r\n            <fu-icon iconName=\"check\" size=\"16px\" strokeWidth=\"3\" />\r\n          </div>\r\n        }\r\n      } @else {\r\n        <span>{{ cellValue() }}</span>\r\n      }\r\n    }\r\n  }\r\n\r\n  @if (!hasCellValue()) {\r\n    <span>\r\n      <ng-content />\r\n    </span>\r\n  }\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  Renderer2,\r\n} from '@angular/core';\r\n\r\n@Directive({\n    selector: '[sortColumn]',\n    standalone: false\n})\r\nexport class SortColumnDirective implements AfterViewInit {\r\n  @Input('sortColumn') public column: any;\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private renderer: Renderer2\r\n  ) {}\r\n\r\n  public ngAfterViewInit(): void {\r\n    if (this.column) {\r\n      this.renderer.setAttribute(\r\n        this.el.nativeElement,\r\n        'data-sorted',\r\n        this.column\r\n      );\r\n    }\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  computed,\r\n  input,\r\n} from '@angular/core';\r\nimport { DataSortingService, TSort } from '../../services/data-sorting.service';\r\n\r\n@Component({\n    selector: 'fu-head-row-cell',\n    templateUrl: './head-row-cell.component.html',\n    styleUrl: './head-row-cell.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\r\nexport class HeadRowCellComponent implements OnInit {\r\n  public cellDef = input.required<string>();\r\n  public sortKey = input<string | number>();\r\n\r\n  public direction = computed<TSort>(() => this.sortService.sortDirection());\r\n  public sorting = computed<string>(() => this.sortService.sortKey());\r\n\r\n  // private storedValues = computed<OnSortEvent>(() =>\r\n  //   this.sortService.storedValues()\r\n  // );\r\n\r\n  constructor(\r\n    private sortService: DataSortingService,\r\n    private elementRef: ElementRef\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    const index = this.getIndex();\r\n    this.sortService.setCellDef(index, this.cellDef());\r\n  }\r\n\r\n  public onSorting(): void {\r\n    this.sortService.setSortKey(this.sortKey()! as TSort);\r\n  }\r\n\r\n  // private validateKey(): void {\r\n  //   if (this.sortService.cellKeys().length > 0) {\r\n  //     if (!this.sortService.cellKeys().includes(this.sortKey()! as string)) {\r\n  //       console.warn(`Invalid sortKey '${this.sortKey}' provided.`);\r\n  //     }\r\n  //   }\r\n  // }\r\n\r\n  private getIndex(): number {\r\n    const parent = this.elementRef.nativeElement.parentElement;\r\n    return Array.from(parent.children).indexOf(this.elementRef.nativeElement);\r\n  }\r\n}\r\n","<div\r\n  class=\"fu-head-row-cell\"\r\n  [ngClass]=\"{ disabled: !sortKey() }\"\r\n  [sortColumn]=\"sortKey()\"\r\n  (click)=\"onSorting()\"\r\n>\r\n  <span>{{ cellDef() }}</span>\r\n  @if (sortKey()) {\r\n    @if (sortKey() == sorting()) {\r\n      <button>\r\n        @if (direction() === 'asc') {\r\n          <fu-icon strokeWidth=\"2.5\" iconName=\"sortAsc\" />\r\n        }\r\n        @if (direction() === 'desc') {\r\n          <fu-icon strokeWidth=\"2.5\" iconName=\"sortDesc\" />\r\n        }\r\n      </button>\r\n    } @else {\r\n      <button><fu-icon color=\"gray\" iconName=\"sort\" /></button>\r\n    }\r\n  }\r\n</div>\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-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  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewEncapsulation,\r\n  input,\r\n  signal,\r\n} from '@angular/core';\r\nimport { EditRowService } from '../../services/edit-row.service';\r\nimport { filter, Subscription, take } from 'rxjs';\r\n\r\n@Component({\n    selector: 'fu-row-actions',\n    templateUrl: './row-actions.component.html',\n    styleUrl: './row-actions.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\r\nexport class RowActionsComponent<T extends object>\r\n  implements OnChanges, OnInit, OnDestroy\r\n{\r\n  public editRow = input<T>();\r\n  public editIndex = input<number>();\r\n\r\n  public isEditing = signal<boolean>(false);\r\n  public showDelete = signal<boolean>(false);\r\n\r\n  @Output() public editSave = new EventEmitter<T>();\r\n  @Output() public delete = new EventEmitter<void>();\r\n\r\n  private subscription: Subscription;\r\n\r\n  constructor(\r\n    private renderer: Renderer2,\r\n    private el: ElementRef,\r\n    private editRowService: EditRowService\r\n  ) {\r\n    this.renderer.setAttribute(this.el.nativeElement, 'data-actions', 'true');\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['editRow'] && changes['editIndex']) {\r\n      this.subscription = this.editRowService.editIndex$.subscribe(index => {\r\n        this.isEditing.set(index === this.editIndex());\r\n      });\r\n    }\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.showDelete.set(this.delete.observed);\r\n  }\r\n\r\n  public setEdit(e: Event): void {\r\n    this.editRowService.startEditing(this.editIndex()!);\r\n    e.stopPropagation();\r\n  }\r\n\r\n  public cancelEdit(e: Event): void {\r\n    this.editRowService.stopEditing();\r\n    e.stopPropagation();\r\n  }\r\n\r\n  public saveEdit(e: Event): void {\r\n    this.editRowService.stopEditing();\r\n\r\n    this.editRowService.editValues$.pipe(take(1)).subscribe(editedValues => {\r\n      const updatedRow = { ...this.editRow(), ...editedValues } as T;\r\n\r\n      this.editSave.emit(updatedRow);\r\n    });\r\n\r\n    this.editRowService.resetEditValues();\r\n    e.stopPropagation();\r\n  }\r\n\r\n  public emitDelete(e: Event): void {\r\n    this.delete.emit();\r\n    e.stopPropagation();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      setTimeout(() => {\r\n        this.editRowService.stopEditing();\r\n      }, 100);\r\n    }\r\n  }\r\n}\r\n","<div class=\"fu-row-actions\">\r\n  @if (editRow() && editIndex() !== null) {\r\n    @if (isEditing()) {\r\n      <button fu-btn-outline iconButton (click)=\"cancelEdit($event)\">\r\n        <fu-icon iconName=\"editOff\" />\r\n      </button>\r\n      <button\r\n        fu-btn-outline\r\n        iconButton\r\n        variant=\"success\"\r\n        (click)=\"saveEdit($event)\"\r\n      >\r\n        <fu-icon iconName=\"save\" />\r\n      </button>\r\n    } @else {\r\n      <button fu-btn-outline iconButton (click)=\"setEdit($event)\">\r\n        <fu-icon iconName=\"edit\" />\r\n      </button>\r\n    }\r\n  }\r\n  @if (!isEditing() && showDelete()) {\r\n    <button\r\n      fu-btn-outline\r\n      iconButton\r\n      variant=\"danger\"\r\n      (click)=\"emitDelete($event)\"\r\n    >\r\n      <fu-icon iconName=\"trash\" />\r\n    </button>\r\n  }\r\n  <ng-content />\r\n</div>\r\n","import { Directive, Input } from '@angular/core';\r\n\r\ninterface HeaderTemplateContext<T extends object> {\r\n  $implicit: T;\r\n  keys: Record<keyof T, keyof T>;\r\n}\r\n\r\n@Directive({\n    selector: '[fuHeaderTemplate]',\n    standalone: false\n})\r\nexport class GridHeaderTemplateDirective<T extends object> {\r\n  @Input('fuHeaderTemplate') public dataSource: T[] | '';\r\n\r\n  static ngTemplateContextGuard<TContextItem extends object>(\r\n    dir: GridHeaderTemplateDirective<TContextItem>,\r\n    ctx: unknown\r\n  ): ctx is HeaderTemplateContext<TContextItem> {\r\n    return true;\r\n  }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\ninterface BodyTemplateContext<T extends object> {\r\n  $implicit: T;\r\n  index: number;\r\n  keys: Record<keyof T, keyof T>;\r\n}\r\n\r\n@Directive({\n    selector: '[fuBodyTemplate]',\n    standalone: false\n})\r\nexport class GridBodyTemplateDirective<T extends object> {\r\n  @Input('fuBodyTemplate') public dataSource: T[] = [];\r\n\r\n  static ngTemplateContextGuard<TContextItem extends object>(\r\n    dir: GridBodyTemplateDirective<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({\n    selector: '[fuExpandTemplate]',\n    standalone: false\n})\r\nexport class GridExpandTemplateDirective<T extends object> {\r\n  @Input('fuExpandTemplate') public dataSource: T[] | '';\r\n\r\n  static ngTemplateContextGuard<TContextItem extends object>(\r\n    dir: GridExpandTemplateDirective<TContextItem>,\r\n    ctx: unknown\r\n  ): ctx is ExpandTemplateContext<TContextItem> {\r\n    return true;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DataGridPaginator } from './data-grid-paginator';\r\n\r\nexport interface PaginationState {\r\n  page: number;\r\n  pageSize: number;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'any',\r\n})\r\nexport class PaginationService implements DataGridPaginator {\r\n  private paginationSubject = new Subject<PaginationState>();\r\n  private firstPageSubject = new Subject<boolean>();\r\n\r\n  public paginator$: Observable<PaginationState> =\r\n    this.paginationSubject.asObservable();\r\n  public firstPage$ = this.firstPageSubject.asObservable();\r\n\r\n  public setPage(page: number, pageSize: number): void {\r\n    // const currentState = this.paginationSubject.value;\r\n    this.paginationSubject.next({ page, pageSize });\r\n  }\r\n\r\n  public setPageSize(pageSize: number): void {\r\n    this.paginationSubject.next({ page: 1, pageSize });\r\n  }\r\n\r\n  public initPagination(page: number, pageSize: number): void {\r\n    this.paginationSubject.next({ page, pageSize });\r\n  }\r\n\r\n  public firstPage(): void {\r\n    this.firstPageSubject.next(true);\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  AfterViewInit,\r\n  Directive,\r\n  ElementRef,\r\n  HostListener,\r\n  input,\r\n} from '@angular/core';\r\n\r\nexport type CssUnit = `${number}${'px' | 'fr' | 'rem' | '%'}`;\r\nexport type ColumnSizes = CssUnit[];\r\n\r\n@Directive({\n    selector: '[gridColumns]',\n    standalone: false\n})\r\nexport class GridColumnsDirective implements AfterViewInit {\r\n  public columnSizes = input<ColumnSizes>([]);\r\n\r\n  constructor(private el: ElementRef) {}\r\n\r\n  public ngAfterViewInit(): void {\r\n    this.updateGridColumns();\r\n  }\r\n\r\n  @HostListener('window:resize')\r\n  private onResize(): void {\r\n    this.updateGridColumns();\r\n  }\r\n\r\n  private generateColumns(count: number): string {\r\n    if (this.columnSizes()) {\r\n      const columnsCount = this.columnSizes().length;\r\n      if (columnsCount !== count) {\r\n        console.warn(\r\n          `Incorect amount of Column sizes ${columnsCount}/${count} provided!`\r\n        );\r\n      }\r\n      return this.columnSizes().join(' ');\r\n    }\r\n    return Array(count).fill('1fr').join(' ');\r\n  }\r\n\r\n  private updateGridColumns(): void {\r\n    const childrenCount = this.el.nativeElement.children.length as number;\r\n\r\n    const dataGrid = this.el.nativeElement.closest(\r\n      '#fusion-datagrid'\r\n    ) as HTMLElement;\r\n\r\n    const columns = this.generateColumns(childrenCount);\r\n\r\n    if (dataGrid) {\r\n      dataGrid.style.setProperty('--grid-columns', columns);\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n    name: 'keyMapping',\n    standalone: false\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  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewEncapsulation,\r\n  effect,\r\n  model,\r\n  signal,\r\n} from '@angular/core';\r\nimport {\r\n  DataSortingService,\r\n  OnSortEvent,\r\n} from '../services/data-sorting.service';\r\nimport { GridHeaderTemplateDirective } from '../directives/grid-header-template.directive';\r\nimport { GridBodyTemplateDirective } from '../directives/grid-body-template.directive';\r\nimport { GridExpandTemplateDirective } from '../directives/grid-expand-template.directive';\r\nimport { PaginationService } from '../services/paginator.service';\r\nimport { ColumnSizes } from '../directives/grid-columns.directive';\r\nimport { filter, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'fu-data-grid',\r\n  templateUrl: './data-grid.component.html',\r\n  styleUrl: './data-grid.component.scss',\r\n  providers: [DataSortingService],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\nexport class DataGridComponent<T extends object>\r\n  implements OnChanges, AfterContentInit, OnDestroy\r\n{\r\n  /**\r\n   * Table data - array of objects.\r\n   * [totalCount] required with server side pagination.\r\n   */\r\n  @Input({ required: true }) public dataSource: T[] = [];\r\n  /**\r\n   * String key which will be used to store pageSize and currentPage in local storage for each table.\r\n   */\r\n  @Input({ required: true }) public localStorageKey: string = 'data';\r\n  /**\r\n   * Total data count.\r\n   * Required with server side pagination.\r\n   */\r\n  @Input() public totalCount: number;\r\n  /**\r\n   * Initial page size for paginator.\r\n   */\r\n  @Input() public pageSize: number = 5;\r\n  /**\r\n   * Page size optionsfor paginator.\r\n   */\r\n  @Input() public pageSizeOptions: number[] = [5, 10, 15];\r\n  /**\r\n   * An array of column sizes, where each size is a valid CSS unit string.\r\n   * Valid units are: `px`, `fr`, `rem`, `%`.\r\n   * Example: ['200px', '1fr', '10%', '5rem']\r\n   */\r\n  @Input() public columnSizes: ColumnSizes;\r\n  /**\r\n   * Shows spinner and overlay when new data is being loaded.\r\n   * Usable only with server pagination when totalCount is provided.\r\n   */\r\n  @Input() public dataLoading: boolean = false;\r\n  /**\r\n   * Makes row expandable on click.\r\n   */\r\n  @Input() public expandable: boolean = false;\r\n  /**\r\n   * Enables filter for dataSource.\r\n   * Usable only if not server side pagination.\r\n   */\r\n  @Input() public filter: boolean = false;\r\n  /**\r\n   * Shows paginator.\r\n   */\r\n  @Input() public paginator: boolean = false;\r\n  /**\r\n   * Highlights row on hover.\r\n   */\r\n  @Input() public hoverable: boolean = true;\r\n  /**\r\n   * Darker background for each odd row.\r\n   */\r\n  @Input() public striped: boolean = true;\r\n  /**\r\n   * Sets paginator to first page on init.\r\n   */\r\n  @Input() public firstPageOnInit: boolean = false;\r\n  /**\r\n   * Renders empty container above paginator.\r\n   */\r\n  @Input() public renderNewAddRow: boolean = false;\r\n\r\n  @ContentChild('caption') public captionTemplate!: TemplateRef<any>;\r\n  @ContentChild(GridHeaderTemplateDirective, { read: TemplateRef })\r\n  public headerTemplate!: TemplateRef<any>;\r\n  @ContentChild(GridBodyTemplateDirective, { read: TemplateRef })\r\n  public bodyTemplate!: TemplateRef<any>;\r\n  @ContentChild(GridExpandTemplateDirective, { read: TemplateRef })\r\n  public expandTemplate!: TemplateRef<any>;\r\n  @ContentChild('footer') public footerTemplate!: TemplateRef<any>;\r\n  @ContentChild('noDataRow') public noDataTemplate!: TemplateRef<any>;\r\n  @ContentChild('addButton') public addButtonTemplate!: TemplateRef<any>;\r\n  @ContentChild('addNewRow') public addNewRowTemplate!: TemplateRef<any>;\r\n  /**\r\n   * Callback to invoke when a row is clicked.\r\n   * Emits selected row data.\r\n   */\r\n  @Output() public rowSelect = new EventEmitter<T>();\r\n  @Output() public onSort = new EventEmitter<OnSortEvent>();\r\n\r\n  public sortedData: T[] = [...this.dataSource];\r\n  public sortDirection: 'asc' | 'desc' = 'asc';\r\n  public sortKey: string = '';\r\n\r\n  public filteredData: T[] = [];\r\n  public filterText: string = '';\r\n\r\n  public currentPage: number = 1;\r\n  public paginatedData: T[] = [];\r\n\r\n  public expandedRowIndex: number | null = null;\r\n  public serverPagination = signal<boolean>(false);\r\n\r\n  public expandIndex = model<number | null>(null);\r\n  public initLoad: boolean = true;\r\n\r\n  private subscription: Subscription;\r\n\r\n  constructor(\r\n    private sortService: DataSortingService,\r\n    private paginationService: PaginationService\r\n  ) {\r\n    effect(() => {\r\n      if (!this.serverPagination()) {\r\n        this.sortData(this.sortService.sortKey());\r\n      } else if (this.sortService.sortKey()) {\r\n        this.onSort.emit({\r\n          sortKey: this.sortService.sortKey(),\r\n          sortDirection: this.sortService.sortDirection(),\r\n        });\r\n      }\r\n    });\r\n\r\n    this.subscription = this.paginationService.firstPage$\r\n      .pipe(filter(() => this.currentPage !== 1))\r\n      .subscribe(() => {\r\n        this.currentPage = 1;\r\n\r\n        window.localStorage.setItem(\r\n          `fu-grid-${this.localStorageKey}-currentPage`,\r\n          this.currentPage.toString()\r\n        );\r\n\r\n        this.paginationService.initPagination(this.currentPage, this.pageSize);\r\n      });\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['localStorageKey']) {\r\n      const searchText = window.localStorage.getItem(\r\n        `fu-grid-${this.localStorageKey}-searchText`\r\n      );\r\n      if (searchText) {\r\n        this.filterText = searchText;\r\n      }\r\n\r\n      this.sortService.getLocalStorageKey(this.localStorageKey);\r\n\r\n      this.pageSize = JSON.parse(\r\n        window.localStorage.getItem(\r\n          `fu-grid-${this.localStorageKey}-pageSize`\r\n        ) || this.pageSizeOptions[0].toString()\r\n      );\r\n\r\n      if (this.firstPageOnInit) {\r\n        this.paginationService.initPagination(1, this.pageSize);\r\n      } else {\r\n        this.currentPage = JSON.parse(\r\n          window.localStorage.getItem(\r\n            `fu-grid-${this.localStorageKey}-currentPage`\r\n          ) || '1'\r\n        );\r\n        this.paginationService.initPagination(this.currentPage, this.pageSize);\r\n      }\r\n    }\r\n\r\n    if (changes['totalCount']) {\r\n      this.serverPagination.set(true);\r\n    }\r\n\r\n    if (changes['dataSource']) {\r\n      if (!this.serverPagination()) {\r\n        if (!this.initLoad) {\r\n          this.sortData(this.sortService.sortKey());\r\n        }\r\n\r\n        this.filteredData = [...this.dataSource];\r\n        this.sortedData = [...this.filteredData];\r\n      }\r\n      this.sortService.getCellKeys(this.dataSource[0] || {});\r\n      this.updatePagination();\r\n    }\r\n  }\r\n\r\n  public ngAfterContentInit(): void {\r\n    this.sortService.clear();\r\n  }\r\n\r\n  public originalOrder = (a: any, b: any): number => {\r\n    const keys = Object.keys(this.dataSource);\r\n    return keys.indexOf(a.key) - keys.indexOf(b.key);\r\n  };\r\n\r\n  public sortData(key: any): void {\r\n    this.sortKey = key;\r\n    const sortDirection = this.sortService.sortDirection();\r\n\r\n    this.sortedData.sort((a: any, b: any) => {\r\n      if (a[key] < b[key]) {\r\n        return sortDirection === 'asc' ? -1 : 1;\r\n      } else if (a[key] > b[key]) {\r\n        return sortDirection === 'asc' ? 1 : -1;\r\n      }\r\n      return 0;\r\n    });\r\n\r\n    this.addSortClass(key);\r\n\r\n    if (!this.initLoad) {\r\n      this.currentPage = 1;\r\n      window.localStorage.setItem(\r\n        `fu-grid-${this.localStorageKey}-currentPage`,\r\n        this.currentPage.toString()\r\n      );\r\n    }\r\n\r\n    this.initLoad = false;\r\n\r\n    if (this.filterText !== '') {\r\n      this.filterData();\r\n    } else {\r\n      this.updatePagination();\r\n    }\r\n  }\r\n\r\n  private addSortClass(key: string): void {\r\n    const sortDirection = this.sortService.sortDirection();\r\n\r\n    const element = document.querySelector(`[data-sorted=\"${key}\"]`);\r\n\r\n    document\r\n      .querySelectorAll('[data-sorted]')\r\n      .forEach(th => th.classList.remove('sort-asc', 'sort-desc'));\r\n\r\n    if (element) {\r\n      element.classList.add(sortDirection === 'asc' ? 'sort-asc' : 'sort-desc');\r\n    }\r\n  }\r\n\r\n  public filterData(changes: boolean = false): void {\r\n    if (this.filterText.trim() === '') {\r\n      this.filteredData = [...this.sortedData];\r\n    } else {\r\n      window.localStorage.setItem(\r\n        `fu-grid-${this.localStorageKey}-searchText`,\r\n        this.filterText\r\n      );\r\n\r\n      this.filteredData = this.sortedData.filter((item: any) =>\r\n        Object.values(item).some((value: any) => {\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.filterText.toLowerCase());\r\n        })\r\n      );\r\n    }\r\n\r\n    if (changes) {\r\n      this.currentPage = 1;\r\n      window.localStorage.setItem(\r\n        `fu-grid-${this.localStorageKey}-currentPage`,\r\n        this.currentPage.toString()\r\n      );\r\n    }\r\n\r\n    this.updatePagination(true);\r\n  }\r\n\r\n  public resetFilter(): void {\r\n    this.filterText = '';\r\n    window.localStorage.removeItem(\r\n      `fu-grid-${this.localStorageKey}-searchText`\r\n    );\r\n\r\n    this.filterData(true);\r\n  }\r\n\r\n  private serverSidePagination(): void {\r\n    this.paginatedData = this.dataSource;\r\n  }\r\n\r\n  private updatePagination(isFiltering: boolean = false): void {\r\n    this.expandedRowIndex = null;\r\n    this.expandIndex.set(null);\r\n\r\n    if (this.serverPagination()) {\r\n      return this.serverSidePagination();\r\n    }\r\n\r\n    const start = (this.currentPage - 1) * this.pageSize;\r\n    const end = start + this.pageSize;\r\n\r\n    if (isFiltering) {\r\n      this.paginatedData = [...this.filteredData].slice(start, end);\r\n    } else {\r\n      this.paginatedData = this.sortedData.slice(start, end);\r\n    }\r\n  }\r\n\r\n  public goToPage(page: number): void {\r\n    if (page < 1 || page > this.totalPages()) {\r\n      return;\r\n    }\r\n\r\n    this.currentPage = page;\r\n    window.localStorage.setItem(\r\n      `fu-grid-${this.localStorageKey}-currentPage`,\r\n      this.currentPage.toString()\r\n    );\r\n\r\n    this.paginationService.setPage(page, this.pageSize);\r\n    this.updatePagination();\r\n  }\r\n\r\n  public totalPages(): number {\r\n    return Math.ceil(this.totalItemCount() / this.pageSize);\r\n  }\r\n\r\n  public getPageStart(): number {\r\n    return (this.currentPage - 1) * this.pageSize + 1;\r\n  }\r\n\r\n  public getPageEnd(): number {\r\n    return Math.min(this.currentPage * this.pageSize, this.totalItemCount());\r\n  }\r\n\r\n  public changePageSize(event: any): void {\r\n    this.pageSize = Number(event.target.value);\r\n    this.currentPage = 1;\r\n\r\n    this.paginationService.setPageSize(this.pageSize);\r\n    // this.updatePagination();\r\n\r\n    if (this.filterText !== '') {\r\n      this.filterData();\r\n    } else {\r\n      this.updatePagination();\r\n    }\r\n\r\n    window.localStorage.setItem(\r\n      `fu-grid-${this.localStorageKey}-currentPage`,\r\n      this.currentPage.toString()\r\n    );\r\n\r\n    window.localStorage.setItem(\r\n      `fu-grid-${this.localStorageKey}-pageSize`,\r\n      this.pageSize.toString()\r\n    );\r\n  }\r\n\r\n  public totalItemCount(): number {\r\n    return this.totalCount || this.filteredData.length;\r\n  }\r\n\r\n  public rowClick(row: T, index: number = 0): void {\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.rowSelect.emit(row);\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","<div id=\"fusion-datagrid\" class=\"fu-data-grid-wrapper\">\r\n  @if (filter) {\r\n    <div class=\"fu-data-grid-filter\">\r\n      <input\r\n        type=\"text\"\r\n        [(ngModel)]=\"filterText\"\r\n        (input)=\"filterData(true)\"\r\n        placeholder=\"Search...\"\r\n      />\r\n      @if (!!filterText) {\r\n        <div (click)=\"resetFilter()\">\r\n          <fu-icon size=\"20px\" iconName=\"cancel\" />\r\n        </div>\r\n      }\r\n    </div>\r\n  }\r\n\r\n  <div class=\"fu-data-grid-container\">\r\n    <div class=\"fu-data-grid-header\">\r\n      <div class=\"fu-head-row\" gridColumns [columnSizes]=\"columnSizes\">\r\n        <ng-container\r\n          *ngTemplateOutlet=\"\r\n            headerTemplate || defaultHeaderTemplate;\r\n            context: { $implicit: dataSource, keys: dataSource[0] | keyMapping }\r\n          \"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"fu-data-grid-body\">\r\n      <div *ngIf=\"dataLoading\" class=\"fu-data-grid-spinner-overlay\">\r\n        <div class=\"fu-spinner\"></div>\r\n      </div>\r\n\r\n      @for (row of paginatedData; track $index) {\r\n        <div\r\n          class=\"fu-body-row\"\r\n          [ngClass]=\"{ hoverable, striped }\"\r\n          [style.cursor]=\"\r\n            expandable || rowSelect.observed ? 'pointer' : 'default'\r\n          \"\r\n          (click)=\"rowClick(row, $index)\"\r\n        >\r\n          <ng-container\r\n            *ngTemplateOutlet=\"\r\n              bodyTemplate || defaultBodyTemplate;\r\n              context: { $implicit: row, index: $index, keys: row | keyMapping }\r\n            \"\r\n          />\r\n\r\n          @if (\r\n            (expandable && expandedRowIndex === $index) ||\r\n            expandIndex() === $index\r\n          ) {\r\n            <div class=\"fu-expanded-row\" (click)=\"$event.stopPropagation()\">\r\n              <div>\r\n                <ng-container\r\n                  *ngTemplateOutlet=\"\r\n                    expandTemplate;\r\n                    context: { $implicit: row, index: $index }\r\n                  \"\r\n                />\r\n              </div>\r\n            </div>\r\n          }\r\n        </div>\r\n      }\r\n    </div>\r\n  </div>\r\n\r\n  <ng-container\r\n    *ngTemplateOutlet=\"footerTemplate; context: { $implicit: paginatedData }\"\r\n  />\r\n\r\n  @if (paginatedData.length <= 0 && !dataLoading) {\r\n    <ng-container *ngTemplateOutlet=\"noDataTemplate\" />\r\n  }\r\n\r\n  @if (renderNewAddRow) {\r\n    <ng-container *ngTemplateOutlet=\"addNewRowTemplate\" />\r\n  }\r\n\r\n  @if (paginator) {\r\n    <ng-container\r\n      *ngTemplateOutlet=\"defaultPaginator; context: { $implicit: sortData }\"\r\n    />\r\n  }\r\n</div>\r\n\r\n<ng-template #defaultHeaderTemplate let-data>\r\n  @for (header of data[0] | keyvalue: originalOrder; track $index) {\r\n    <fu-head-row-cell\r\n      [cellDef]=\"$any(header.key)\"\r\n      [sortKey]=\"$any(header.key)\"\r\n    />\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #defaultBodyTemplate let-rows>\r\n  @for (row of rows | keyvalue: originalOrder; track $index) {\r\n    <fu-body-row-cell [cellValue]=\"$any(row.value)\" />\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #defaultPaginator let-data>\r\n  <div class=\"fu-data-grid-paginator\">\r\n    <div class=\"fu-grid-add-button\">\r\n      <ng-container *ngTemplateOutlet=\"addButtonTemplate\" />\r\n    </div>\r\n\r\n    <div class=\"fu-paginator-page-select\">\r\n      <span>Page size:</span>\r\n      <select class=\"fu-page-size-select\" (change)=\"changePageSize($event)\">\r\n        <option\r\n          *ngFor=\"let size of pageSizeOptions\"\r\n          [value]=\"size\"\r\n          [selected]=\"size === pageSize\"\r\n        >\r\n          {{ size }}\r\n        </option>\r\n      </select>\r\n    </div>\r\n    <div class=\"fu-paginator-controls\">\r\n      <div>\r\n        {{ getPageStart() }} - {{ getPageEnd() }} of {{ totalItemCount() }}\r\n      </div>\r\n      <button\r\n        fu-btn-text\r\n        iconButton\r\n        (click)=\"goToPage(1)\"\r\n        [disabled]=\"currentPage === 1\"\r\n      >\r\n        <fu-icon iconName=\"doubleArrowLeft\" />\r\n      </button>\r\n      <button\r\n        fu-btn-text\r\n        iconButton\r\n        (click)=\"goToPage(currentPage - 1)\"\r\n        [disabled]=\"currentPage === 1\"\r\n      >\r\n        <fu-icon iconName=\"arrowLeft\" />\r\n      </button>\r\n      <button\r\n        fu-btn-text\r\n        iconButton\r\n        (click)=\"goToPage(currentPage + 1)\"\r\n        [disabled]=\"currentPage >= totalPages()\"\r\n      >\r\n        <fu-icon iconName=\"arrowRight\" />\r\n      </button>\r\n      <button\r\n        fu-btn-text\r\n        iconButton\r\n        (click)=\"goToPage(totalPages())\"\r\n        [disabled]=\"currentPage >= totalPages()\"\r\n      >\r\n        <fu-icon iconName=\"doubleArrowRight\" />\r\n      </button>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import { Observable } from 'rxjs';\r\nimport { PaginationState } from './paginator.service';\r\n\r\nexport abstract class DataGridPaginator {\r\n  abstract paginator$: Observable<PaginationState>;\r\n  abstract firstPage: () => void;\r\n}\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 {\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","import { NgModule } from '@angular/core';\r\nimport { DataGridComponent } from './data-grid/data-grid.component';\r\nimport { HeadRowCellComponent } from './components/head-row-cell/head-row-cell.component';\r\nimport { BodyRowCellComponent } from './components/body-row-cell/body-row-cell.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SortColumnDirective } from './directives/sort-column.directive';\r\nimport { GridColumnsDirective } from './directives/grid-columns.directive';\r\nimport { GridBodyTemplateDirective } from './directives/grid-body-template.directive';\r\nimport { GridHeaderTemplateDirective } from './directives/grid-header-template.directive';\r\nimport { GridExpandTemplateDirective } from './directives/grid-expand-template.directive';\r\nimport { RowActionsComponent } from './components/row-actions/row-actions.component';\r\nimport { PaginationService } from './services/paginator.service';\r\nimport { DataGridPaginator } from './services/data-grid-paginator';\r\nimport { KeyMappingPipe } from './pipes/key-mapping.pipe';\r\nimport { IconModule } from '../icons/icon.module';\r\nimport { ButtonModule } from '../button/button.module';\r\n\r\n/**\r\n * @deprecated This module will be removed in version X. Use `DataTableModule` instead.\r\n */\r\n\r\nconsole.warn(\r\n  'DataGridModule is deprecated and will be removed in the next version. Please use DataTableModule instead.'\r\n);\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SortColumnDirective,\r\n    GridColumnsDirective,\r\n    DataGridComponent,\r\n    BodyRowCellComponent,\r\n    HeadRowCellComponent,\r\n    GridHeaderTemplateDirective,\r\n    GridExpandTemplateDirective,\r\n    GridBodyTemplateDirective,\r\n    RowActionsComponent,\r\n    KeyMappingPipe,\r\n  ],\r\n  imports: [CommonModule, FormsModule, IconModule, ButtonModule],\r\n  exports: [\r\n    DataGridComponent,\r\n    HeadRowCellComponent,\r\n    BodyRowCellComponent,\r\n    RowActionsComponent,\r\n    GridHeaderTemplateDirective,\r\n    GridExpandTemplateDirective,\r\n    GridBodyTemplateDirective,\r\n  ],\r\n  providers: [{ provide: DataGridPaginator, useExisting: PaginationService }],\r\n})\r\nexport class DataGridModule {}\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', ['$event']) 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 valueA = a[this.sortColumn() as keyof typeof a];\r\n      const valueB = b[this.sortColumn() as keyof typeof b];\r\n\r\n      if (valueA < valueB) return this.sortDirection() === 'asc' ? -1 : 1;\r\n      if (valueA > valueB) return this.sortDirection() === 'asc' ? 1 : -1;\r\n      return 0;\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</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/data-grid/index';\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","i1.DataSortingService","i2.EditRowService","i3","i4.IconComponent","i2","i3.IconComponent","i4.SortColumnDirective","i1.EditRowService","i2.IconComponent","i3.OutlinedButtonDirective","KeyMappingPipe","i2.PaginationService","i5.IconComponent","i6.TextButtonDirective","i7.GridColumnsDirective","i8.BodyRowCellComponent","i9.HeadRowCellComponent","i10.KeyMappingPipe","i2.ButtonDirective","i1"],"mappings":"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"}