@masterteam/client-components 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-client-components-client-list.mjs","sources":["../../../../packages/masterteam/client-components/client-list/services/client-list-api.service.ts","../../../../packages/masterteam/client-components/client-list/services/client-list-state.service.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-table-view/client-list-table-view.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-table-view/client-list-table-view.html","../../../../packages/masterteam/client-components/client-list/components/client-list-cards-view/client-list-cards-view.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-cards-view/client-list-cards-view.html","../../../../packages/masterteam/client-components/client-list/components/client-list-informative-view/client-list-informative-view.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-informative-view/client-list-informative-view.html","../../../../packages/masterteam/client-components/client-list/client-list.ts","../../../../packages/masterteam/client-components/client-list/client-list.html","../../../../packages/masterteam/client-components/client-list/masterteam-client-components-client-list.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n ClientListCardsPayload,\r\n ClientListInformativeDashboardPayload,\r\n ClientListTableQuery,\r\n Response,\r\n RuntimeTableRowsResponse,\r\n} from '../models/client-list.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ClientListApiService {\r\n private readonly http = inject(HttpClient);\r\n private readonly tablesBaseUrl = 'data/tables';\r\n private readonly cardsBaseUrl = 'data/modules/cards';\r\n private readonly informativeBaseUrl = 'Modules';\r\n\r\n getRows(\r\n levelId: number,\r\n levelDataId: number,\r\n moduleId: number,\r\n query: ClientListTableQuery,\r\n ): Observable<Response<RuntimeTableRowsResponse>> {\r\n const endpoint = `${this.tablesBaseUrl}/level/${levelId}/level-data/${levelDataId}/module/${moduleId}/rows`;\r\n let params = new HttpParams()\r\n .set('mode', query.mode)\r\n .set('skip', query.skip)\r\n .set('take', query.take);\r\n\r\n (query.columnKeys ?? []).forEach((columnKey) => {\r\n params = params.append('columnKeys', columnKey);\r\n });\r\n\r\n return this.http.get<Response<RuntimeTableRowsResponse>>(endpoint, {\r\n params,\r\n });\r\n }\r\n\r\n getCards(\r\n levelDataId: number,\r\n moduleId: number,\r\n ): Observable<Response<ClientListCardsPayload>> {\r\n const params = new HttpParams()\r\n .set('moduleId', moduleId)\r\n .set('levelDataId', levelDataId)\r\n .append('displayAreas', 'card');\r\n\r\n return this.http.get<Response<ClientListCardsPayload>>(this.cardsBaseUrl, {\r\n params,\r\n });\r\n }\r\n\r\n getInformativeDashboard(\r\n moduleId: number,\r\n ): Observable<Response<ClientListInformativeDashboardPayload>> {\r\n return this.http.get<Response<ClientListInformativeDashboardPayload>>(\r\n `${this.informativeBaseUrl}/${moduleId}/dashboard`,\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, signal } from '@angular/core';\nimport {\n DashboardBuilderData,\n DashboardChartItem,\n} from '@masterteam/dashboard-builder';\nimport {\n ClientListCard,\n ClientListCardDisplayConfiguration,\n ClientListCardDisplayProperty,\n ClientListCardProperty,\n ClientListCardsPayload,\n ClientListInformativeDashboardPayload,\n ClientListState,\n NormalizedClientListConfiguration,\n RuntimeEntityColumnDef,\n RuntimeTableApiRow,\n RuntimeTableCell,\n RuntimeTableColumn,\n RuntimeTableDisplayRow,\n RuntimeTableRowsResponse,\n} from '../models/client-list.model';\n\n@Injectable()\nexport class ClientListStateService {\n readonly itemsByKey = signal<Record<string, ClientListState>>({});\n\n readonly items = computed<ClientListState[]>(() =>\n Object.values(this.itemsByKey()).sort((a, b) =>\n a.config.moduleId === b.config.moduleId\n ? (a.config.levelDataId ?? 0) - (b.config.levelDataId ?? 0)\n : a.config.moduleId - b.config.moduleId,\n ),\n );\n\n setConfigs(configs: ClientListState[]): void {\n const currentItems = this.itemsByKey();\n const next: Record<string, ClientListState> = {};\n\n configs.forEach((item) => {\n next[item.key] = this.mergeItemState(item, currentItems[item.key]);\n });\n\n this.itemsByKey.set(next);\n }\n\n setLoading(key: string, loading: boolean): void {\n const target = this.itemsByKey()[key];\n if (!target) return;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n loading,\n },\n });\n }\n\n setError(key: string, message: string | null): void {\n const target = this.itemsByKey()[key];\n if (!target) return;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n error: message,\n },\n });\n }\n\n setRowsResult(\n key: string,\n response: RuntimeTableRowsResponse,\n config: NormalizedClientListConfiguration,\n skip: number,\n take: number,\n ): void {\n const target = this.itemsByKey()[key];\n if (\n !target ||\n target.type === 'informative' ||\n target.areaType !== 'table'\n ) {\n return;\n }\n\n const visibleColumns = this.getVisibleColumns(response.columns);\n const columns = this.toColumnDefs(visibleColumns);\n const rows = this.toDisplayRows(response.rows ?? [], visibleColumns);\n const title = (config.title ?? '').trim() || response.moduleKey;\n const totalCount =\n config.isPaginated === false\n ? rows.length\n : (response.pagination?.totalCount ?? rows.length);\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n title,\n moduleKey: response.moduleKey ?? '',\n columns,\n rows,\n cards: [],\n skip,\n take,\n totalCount,\n error: null,\n rawData: response,\n },\n });\n }\n\n setCardsResult(\n key: string,\n response: ClientListCardsPayload,\n config: NormalizedClientListConfiguration,\n ): void {\n const target = this.itemsByKey()[key];\n if (\n !target ||\n target.type === 'informative' ||\n target.areaType !== 'cards'\n ) {\n return;\n }\n\n const cards = this.toCards(response);\n const firstModule = response.details?.[0]?.module;\n const moduleKey = firstModule?.key ?? target.moduleKey ?? '';\n const title =\n (config.title ?? '').trim() ||\n firstModule?.name ||\n moduleKey ||\n target.title;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n title,\n moduleKey,\n columns: [],\n rows: [],\n cards,\n skip: 0,\n take: 0,\n totalCount: cards.length,\n error: null,\n rawData: response,\n },\n });\n }\n\n setInformativeResult(\n key: string,\n response: ClientListInformativeDashboardPayload | null,\n config: NormalizedClientListConfiguration,\n ): void {\n const target = this.itemsByKey()[key];\n if (!target || target.type !== 'informative') return;\n\n const moduleKey = target.moduleKey || `Module ${config.moduleId}`;\n const title =\n (config.title ?? '').trim() || target.title || 'Informative Dashboard';\n const dashboardData = response\n ? this.toDashboardData(response, title)\n : null;\n const chartsCount = dashboardData?.charts?.length ?? 0;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n title,\n moduleKey,\n columns: [],\n rows: [],\n cards: [],\n skip: 0,\n take: 0,\n totalCount: chartsCount,\n dashboardData,\n error: null,\n rawData: response,\n },\n });\n }\n\n toggleExpanded(key: string): void {\n const target = this.itemsByKey()[key];\n if (!target) return;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n expanded: !target.expanded,\n },\n });\n }\n\n private mergeItemState(\n item: ClientListState,\n existing?: ClientListState,\n ): ClientListState {\n if (\n !existing ||\n existing.type !== item.type ||\n existing.areaType !== item.areaType\n ) {\n return item;\n }\n\n return {\n ...item,\n loading: existing.loading,\n error: existing.error,\n title: item.title || existing.title,\n moduleKey: existing.moduleKey || item.moduleKey,\n totalCount: existing.totalCount,\n columns: existing.columns,\n rows: existing.rows,\n cards: existing.cards,\n skip: existing.skip,\n take: existing.take,\n expanded: existing.expanded,\n dashboardData: existing.dashboardData,\n rawData: existing.rawData,\n };\n }\n\n private getVisibleColumns(\n columns: RuntimeTableColumn[],\n ): RuntimeTableColumn[] {\n return (columns ?? [])\n .filter((column) => column.isVisible)\n .sort((a, b) => a.order - b.order);\n }\n\n private toColumnDefs(\n columns: RuntimeTableColumn[],\n ): RuntimeEntityColumnDef[] {\n return columns.map((column) => ({\n ...column,\n key: column.columnKey,\n label: column.name || this.toLabel(column.columnKey),\n runtimeType: column.type,\n type: 'entity' as const,\n }));\n }\n\n /**\n * Enriches each flat API row so that every cell value becomes a\n * RuntimeTableCell carrying both the original value and the full\n * column metadata. The `Id` key is preserved as-is.\n */\n private toDisplayRows(\n apiRows: RuntimeTableApiRow[],\n columns: RuntimeTableColumn[],\n ): RuntimeTableDisplayRow[] {\n return apiRows.map((row) => {\n const displayRow: RuntimeTableDisplayRow = { Id: row['Id'] };\n\n for (const col of columns) {\n displayRow[col.columnKey] = this.toCell(row[col.columnKey], col);\n }\n\n return displayRow;\n });\n }\n\n private toCell(value: unknown, column: RuntimeTableColumn): RuntimeTableCell {\n return { ...column, value };\n }\n\n private toCards(data?: ClientListCardsPayload): ClientListCard[] {\n const details = data?.details ?? [];\n if (details.length === 0) {\n return [];\n }\n\n const configurationByKey = this.buildDisplayConfigurationLookup(\n data?.displayConfigurations ?? [],\n );\n\n return details.flatMap((detailsBlock) =>\n (detailsBlock.data ?? []).map((card) => ({\n ...card,\n module: card.module ?? detailsBlock.module,\n entities: this.mapEntities(card.properties ?? [], configurationByKey),\n })),\n );\n }\n\n private toDashboardData(\n data: ClientListInformativeDashboardPayload,\n title: string,\n ): DashboardBuilderData {\n const charts: DashboardChartItem[] = (data.chartLinks ?? []).map((link) => {\n const configuration = link.configuration ?? {};\n\n return {\n ...configuration,\n id: link.id,\n chartComponentId: link.chartComponentId,\n } as DashboardChartItem;\n });\n\n return {\n page: {\n id: data.moduleId,\n name: { en: title, ar: title },\n type: 'Dashboard',\n dashboardConfig: {\n ignoreQueryFilter: data.ignoreQueryFilter,\n filters: data.filters,\n versionNumber: data.versionNumber,\n extraInfo: data.extraInfo,\n },\n },\n charts,\n dialogs: [],\n filters: [],\n };\n }\n\n private buildDisplayConfigurationLookup(\n displayConfigurations: ClientListCardDisplayConfiguration[],\n ): Map<string, ClientListCardDisplayProperty> {\n const configurationsByProperty = new Map<\n string,\n ClientListCardDisplayProperty\n >();\n\n for (const displayConfiguration of displayConfigurations) {\n for (const propertyConfiguration of displayConfiguration.properties ??\n []) {\n if (\n propertyConfiguration.areaKey !== 'card' ||\n !propertyConfiguration.propertyKey\n ) {\n continue;\n }\n\n configurationsByProperty.set(\n propertyConfiguration.propertyKey.toLowerCase(),\n propertyConfiguration,\n );\n }\n }\n\n return configurationsByProperty;\n }\n\n private mapEntities(\n properties: ClientListCardProperty[],\n configurationByKey: Map<string, ClientListCardDisplayProperty>,\n ): ClientListCard['entities'] {\n return properties\n .map((property, index) => {\n const propertyConfiguration = this.getPropertyConfiguration(\n property,\n configurationByKey,\n );\n\n return {\n ...property,\n rawValue: property.rawValue ?? undefined,\n order: propertyConfiguration?.order ?? index + 1,\n configuration: propertyConfiguration?.configuration ?? { size: 4 },\n };\n })\n .sort((first, second) => (first.order ?? 0) - (second.order ?? 0));\n }\n\n private getPropertyConfiguration(\n property: ClientListCardProperty,\n configurationByKey: Map<string, ClientListCardDisplayProperty>,\n ): ClientListCardDisplayProperty | undefined {\n const propertyKeys = [property.normalizedKey, property.key, property.name];\n\n for (const propertyKey of propertyKeys) {\n if (!propertyKey) {\n continue;\n }\n\n const configuration = configurationByKey.get(propertyKey.toLowerCase());\n if (configuration) {\n return configuration;\n }\n }\n\n return undefined;\n }\n\n private toLabel(key: string): string {\n return key\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/[_-]+/g, ' ')\n .split(' ')\n .filter(Boolean)\n .map((word) => word[0].toUpperCase() + word.slice(1))\n .join(' ');\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Card } from '@masterteam/components/card';\nimport { Table, TableAction } from '@masterteam/components/table';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport {\n ClientListContentTemplateContext,\n ClientListLazyLoadEvent,\n ClientListState,\n ClientListTableState,\n} from '../../models/client-list.model';\n\nconst DEFAULT_GRID_COLUMNS = 12;\n\n@Component({\n selector: 'mt-client-list-table-view',\n standalone: true,\n imports: [CommonModule, Card, Table, SkeletonModule],\n templateUrl: './client-list-table-view.html',\n})\nexport class ClientListTableView {\n readonly state = input.required<ClientListState>();\n readonly rowActions = input<TableAction[]>([]);\n readonly lazyLoad = output<ClientListLazyLoadEvent>();\n\n protected readonly table = computed(() => {\n return this.state() as ClientListTableState;\n });\n protected readonly gridTemplateColumns = `repeat(${DEFAULT_GRID_COLUMNS}, minmax(0, 1fr))`;\n\n protected slotGridSpan(span: number): string {\n return `span ${span} / span ${span}`;\n }\n\n protected templateContext(\n item: ClientListState,\n ): ClientListContentTemplateContext {\n return {\n $implicit: item,\n table: item,\n item,\n loading: item.loading,\n error: item.error,\n data: item.rawData,\n };\n }\n}\n","<div class=\"grid gap-4\" [style.gridTemplateColumns]=\"gridTemplateColumns\">\n @if (table().config.contentStart) {\n <div [style.gridColumn]=\"slotGridSpan(table().config.layout.startSpan)\">\n <ng-container\n [ngTemplateOutlet]=\"table().config.contentStart\"\n [ngTemplateOutletContext]=\"templateContext(table())\"\n />\n </div>\n }\n\n <div [style.gridColumn]=\"slotGridSpan(table().config.layout.tableSpan)\">\n <mt-card>\n @if (table().loading && table().rows.length === 0) {\n <div class=\"flex flex-col gap-3 py-3\">\n <p-skeleton height=\"3rem\" />\n <p-skeleton height=\"3rem\" />\n <p-skeleton height=\"3rem\" />\n </div>\n } @else if (table().error) {\n <div\n class=\"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\n >\n {{ table().error }}\n </div>\n } @else {\n <mt-table\n [data]=\"table().rows\"\n [columns]=\"table().columns\"\n [rowActions]=\"rowActions()\"\n [loading]=\"table().loading\"\n [lazy]=\"table().config.isPaginated\"\n [lazyTotalRecords]=\"table().totalCount\"\n [pageSize]=\"table().config.isPaginated ? table().take : 10\"\n (lazyLoad)=\"lazyLoad.emit($event)\"\n />\n }\n </mt-card>\n </div>\n\n @if (table().config.contentEnd) {\n <div [style.gridColumn]=\"slotGridSpan(table().config.layout.endSpan)\">\n <ng-container\n [ngTemplateOutlet]=\"table().config.contentEnd\"\n [ngTemplateOutletContext]=\"templateContext(table())\"\n />\n </div>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { EntitiesPreview } from '@masterteam/components/entities';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport {\r\n ClientListCardsState,\r\n ClientListState,\r\n} from '../../models/client-list.model';\r\n\r\n@Component({\r\n selector: 'mt-client-list-cards-view',\r\n standalone: true,\r\n imports: [CommonModule, Card, EntitiesPreview, SkeletonModule],\r\n templateUrl: './client-list-cards-view.html',\r\n})\r\nexport class ClientListCardsView {\r\n readonly state = input.required<ClientListState>();\r\n\r\n protected readonly cardsState = computed(\r\n () => this.state() as ClientListCardsState,\r\n );\r\n}\r\n","@if (cardsState().loading && cardsState().cards.length === 0) {\r\n <div class=\"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3\">\r\n @for (i of [1, 2, 3, 4, 5, 6]; track i) {\r\n <p-skeleton height=\"20rem\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n} @else if (cardsState().error) {\r\n <div class=\"rounded-lg border border-red-200 bg-red-50 p-6 text-red-600\">\r\n {{ cardsState().error }}\r\n </div>\r\n} @else if (cardsState().cards.length === 0) {\r\n <div class=\"p-6 text-center text-gray-400\">No cards found.</div>\r\n} @else {\r\n <div class=\"grid grid-cols-1 gap-5 md:grid-cols-2 xl:grid-cols-3\">\r\n @for (card of cardsState().cards; track card.id) {\r\n <mt-card class=\"cursor-pointer p-3\">\r\n <ng-template #headless>\r\n <mt-entities-preview [entities]=\"card.entities\" />\r\n </ng-template>\r\n </mt-card>\r\n }\r\n </div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Card } from '@masterteam/components/card';\nimport { DashboardViewer } from '@masterteam/dashboard-builder';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport {\n ClientListContentTemplateContext,\n ClientListInformativeState,\n ClientListState,\n} from '../../models/client-list.model';\n\nconst DEFAULT_GRID_COLUMNS = 12;\n\n@Component({\n selector: 'mt-client-list-informative-view',\n standalone: true,\n imports: [CommonModule, Card, DashboardViewer, SkeletonModule],\n templateUrl: './client-list-informative-view.html',\n})\nexport class ClientListInformativeView {\n readonly state = input.required<ClientListState>();\n\n protected readonly informativeState = computed(\n () => this.state() as ClientListInformativeState,\n );\n protected readonly gridTemplateColumns = `repeat(${DEFAULT_GRID_COLUMNS}, minmax(0, 1fr))`;\n\n protected slotGridSpan(span: number): string {\n return `span ${span} / span ${span}`;\n }\n\n protected templateContext(\n item: ClientListState,\n ): ClientListContentTemplateContext {\n return {\n $implicit: item,\n table: item,\n item,\n loading: item.loading,\n error: item.error,\n data: item.rawData,\n };\n }\n}\n","<div class=\"grid gap-4\" [style.gridTemplateColumns]=\"gridTemplateColumns\">\n @if (informativeState().config.contentStart) {\n <div\n [style.gridColumn]=\"\n slotGridSpan(informativeState().config.layout.startSpan)\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"informativeState().config.contentStart\"\n [ngTemplateOutletContext]=\"templateContext(informativeState())\"\n />\n </div>\n }\n\n <div\n [style.gridColumn]=\"\n slotGridSpan(informativeState().config.layout.tableSpan)\n \"\n >\n <mt-card>\n @if (\n informativeState().loading &&\n !informativeState().dashboardData?.charts?.length\n ) {\n <div class=\"flex flex-col gap-3 py-3\">\n <p-skeleton height=\"6rem\" />\n <p-skeleton height=\"12rem\" />\n <p-skeleton height=\"12rem\" />\n </div>\n } @else if (informativeState().error) {\n <div\n class=\"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\n >\n {{ informativeState().error }}\n </div>\n } @else if (!informativeState().dashboardData?.charts?.length) {\n <div class=\"p-6 text-center text-gray-400\">\n No informative dashboard found.\n </div>\n } @else {\n <div class=\"min-h-[420px]\">\n <mt-dashboard-viewer\n [isPage]=\"false\"\n [showFilters]=\"false\"\n [dashboardData]=\"informativeState().dashboardData\"\n />\n </div>\n }\n </mt-card>\n </div>\n\n @if (informativeState().config.contentEnd) {\n <div\n [style.gridColumn]=\"\n slotGridSpan(informativeState().config.layout.endSpan)\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"informativeState().config.contentEnd\"\n [ngTemplateOutletContext]=\"templateContext(informativeState())\"\n />\n </div>\n }\n</div>\n","import {\n Component,\n effect,\n inject,\n input,\n output,\n untracked,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { Button } from '@masterteam/components/button';\nimport { ClientListApiService } from './services/client-list-api.service';\nimport { ClientListStateService } from './services/client-list-state.service';\nimport {\n ClientListAreaType,\n ClientListConfiguration,\n ClientListContentTemplateContext,\n ClientListLazyLoadEvent,\n ClientListLayoutConfig,\n ClientListMode,\n ClientListState,\n ClientListTableQuery,\n ClientListType,\n NormalizedClientListConfiguration,\n} from './models/client-list.model';\nimport { ClientListTableView } from './components/client-list-table-view/client-list-table-view';\nimport { ClientListCardsView } from './components/client-list-cards-view/client-list-cards-view';\nimport { ClientListInformativeView } from './components/client-list-informative-view/client-list-informative-view';\n\nconst DEFAULT_AREA_TYPE: ClientListAreaType = 'table';\nconst DEFAULT_MODE: ClientListMode = 'auto';\nconst DEFAULT_TYPE: ClientListType = 'form';\nconst DEFAULT_SERVER_PAGE_SIZE = 50;\nconst LOCAL_PAGE_SIZE_SOURCE = 100000;\nconst DEFAULT_COLLAPSE_ICON = 'arrow.chevron-up';\nconst DEFAULT_EXPAND_ICON = 'arrow.chevron-down';\nconst DEFAULT_SIDE_CONTENT_SPAN = 3;\nconst DEFAULT_GRID_COLUMNS = 12;\n\n@Component({\n selector: 'mt-client-list',\n standalone: true,\n imports: [\n CommonModule,\n Button,\n ClientListTableView,\n ClientListCardsView,\n ClientListInformativeView,\n ],\n providers: [ClientListStateService],\n templateUrl: './client-list.html',\n})\nexport class ClientList implements OnDestroy {\n private readonly api = inject(ClientListApiService);\n protected readonly state = inject(ClientListStateService);\n\n readonly configurations = input.required<ClientListConfiguration[]>();\n readonly defaultTake = input(DEFAULT_SERVER_PAGE_SIZE);\n\n readonly loaded = output<string>();\n readonly errored = output<{ key: string; message: string }>();\n\n protected readonly items = this.state.items;\n private readonly subscriptions = new Map<string, Subscription>();\n private readonly inFlightRequestSignatures = new Map<string, string>();\n private readonly fulfilledRequestSignatures = new Map<string, string>();\n\n constructor() {\n effect(() => {\n const configs = this.configurations();\n untracked(() => this.configureItems(configs));\n\n untracked(() => {\n this.state.items().forEach((item) => {\n this.loadItem(item);\n });\n });\n });\n }\n\n onLazyLoad(itemKey: string, event: ClientListLazyLoadEvent): void {\n const item = this.state.itemsByKey()[itemKey];\n if (\n !item ||\n item.type === 'informative' ||\n item.areaType !== 'table' ||\n !item.config.isPaginated\n ) {\n return;\n }\n\n const take = Number(event.pageSize ?? item.take);\n const skip = Number(event.first ?? 0);\n this.loadTable(item.key, item.config, skip, take);\n }\n\n reload(itemKey?: string): void {\n if (itemKey) {\n this.reloadByKey(itemKey);\n return;\n }\n\n this.items().forEach((item) => {\n this.loadItem(item, true);\n });\n }\n\n reloadByKey(itemKey: string): void {\n const item = this.state.itemsByKey()[itemKey];\n if (!item) return;\n\n this.loadItem(item, true);\n }\n\n toggleExpanded(key: string): void {\n this.state.toggleExpanded(key);\n }\n\n templateContext(item: ClientListState): ClientListContentTemplateContext {\n return {\n $implicit: item,\n table: item,\n item,\n loading: item.loading,\n error: item.error,\n data: item.rawData,\n };\n }\n\n defaultTitle(item: ClientListState): string {\n if (item.type === 'informative') {\n return 'Informative Dashboard';\n }\n\n return item.areaType === 'cards' ? 'Cards' : 'Table';\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n this.subscriptions.clear();\n }\n\n private configureItems(configs: ClientListConfiguration[]): void {\n const previousItems = this.state.itemsByKey();\n const hasMultipleConfigs = (configs ?? []).length > 1;\n\n const normalized: ClientListState[] = (configs ?? []).map(\n (config, index) => {\n const type = this.resolveType(config.type);\n const isInformative = type === 'informative';\n const areaType = isInformative\n ? DEFAULT_AREA_TYPE\n : this.resolveAreaType(config.areaType);\n const mode = isInformative\n ? DEFAULT_MODE\n : this.resolveMode(config.mode, config.columnKeys);\n const isPaginated =\n !isInformative &&\n areaType === 'table' &&\n (config.isPaginated ?? true);\n const take =\n !isInformative && areaType === 'table'\n ? isPaginated\n ? (config.take ?? this.defaultTake())\n : LOCAL_PAGE_SIZE_SOURCE\n : 0;\n const collapseEnabled =\n (config.collapse?.enabled ?? true) && hasMultipleConfigs;\n const layout = this.resolveLayout(config);\n const key =\n config.key ??\n `${config.levelId ?? 'x'}-${config.levelDataId ?? 'x'}-${config.moduleId ?? 'x'}-${index}`;\n const existing = previousItems[key];\n const normalizedConfig = this.toNormalizedConfig(\n config,\n type,\n areaType,\n mode,\n isPaginated,\n take,\n collapseEnabled,\n layout,\n );\n\n if (isInformative) {\n return {\n key,\n config: normalizedConfig,\n type: 'informative',\n areaType: 'table',\n loading: false,\n error: null,\n title: config.title?.trim() || '',\n moduleKey: '',\n totalCount: 0,\n columns: [],\n rows: [],\n cards: [],\n skip: 0,\n take: 0,\n expanded:\n existing?.expanded ?? config.collapse?.expandedByDefault ?? true,\n dashboardData: existing?.dashboardData ?? null,\n rawData: existing?.rawData ?? null,\n };\n }\n\n if (areaType === 'cards') {\n return {\n key,\n config: normalizedConfig,\n type: 'form',\n areaType: 'cards',\n loading: false,\n error: null,\n title: config.title?.trim() || '',\n moduleKey: '',\n totalCount: 0,\n columns: [],\n rows: [],\n cards: [],\n skip: 0,\n take: 0,\n expanded:\n existing?.expanded ?? config.collapse?.expandedByDefault ?? true,\n dashboardData: null,\n rawData: existing?.rawData ?? null,\n };\n }\n\n return {\n key,\n config: normalizedConfig,\n type: 'form',\n areaType: 'table',\n loading: false,\n error: null,\n title: config.title?.trim() || '',\n moduleKey: '',\n totalCount: 0,\n columns: [],\n rows: [],\n cards: [],\n skip: existing?.areaType === 'table' ? existing.skip : 0,\n take,\n expanded:\n existing?.expanded ?? config.collapse?.expandedByDefault ?? true,\n dashboardData: null,\n rawData: existing?.rawData ?? null,\n };\n },\n );\n\n this.state.setConfigs(normalized);\n this.cleanupStaleResources(new Set(normalized.map((item) => item.key)));\n }\n\n private loadItem(item: ClientListState, force = false): void {\n if (item.type === 'informative') {\n this.loadInformative(item.key, item.config, force);\n return;\n }\n\n if (item.areaType === 'cards') {\n this.loadCards(item.key, item.config, force);\n return;\n }\n\n this.loadTable(item.key, item.config, item.skip, item.take, force);\n }\n\n private loadTable(\n key: string,\n config: NormalizedClientListConfiguration,\n skip: number,\n take: number,\n force = false,\n ): void {\n if (!this.hasValidIdentifiers(config)) {\n this.state.setLoading(key, false);\n this.state.setError(key, this.getMissingIdentifiersMessage(config));\n return;\n }\n\n const query = this.toTableQuery(config, skip, take);\n const requestSignature = this.createTableRequestSignature(config, query);\n\n if (force) {\n this.inFlightRequestSignatures.delete(key);\n this.fulfilledRequestSignatures.delete(key);\n } else if (\n this.inFlightRequestSignatures.get(key) === requestSignature ||\n this.fulfilledRequestSignatures.get(key) === requestSignature\n ) {\n return;\n }\n\n this.subscriptions.get(key)?.unsubscribe();\n this.inFlightRequestSignatures.set(key, requestSignature);\n this.state.setLoading(key, true);\n this.state.setError(key, null);\n\n const sub = this.api\n .getRows(config.levelId, config.levelDataId, config.moduleId, query)\n .subscribe({\n next: (response) => {\n let hasLoadedData = false;\n\n if (response.data) {\n this.state.setRowsResult(\n key,\n response.data,\n config,\n query.skip,\n query.take,\n );\n this.fulfilledRequestSignatures.set(key, requestSignature);\n hasLoadedData = true;\n } else {\n const message = response.message ?? 'Failed to load table rows';\n this.state.setError(key, message);\n this.errored.emit({ key, message });\n }\n\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n\n if (hasLoadedData) {\n this.notifyDataLoaded(key);\n this.loaded.emit(key);\n }\n },\n error: (error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load rows';\n this.state.setError(key, message);\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n this.errored.emit({ key, message });\n },\n });\n\n this.subscriptions.set(key, sub);\n }\n\n private loadCards(\n key: string,\n config: NormalizedClientListConfiguration,\n force = false,\n ): void {\n if (!this.hasValidIdentifiers(config)) {\n this.state.setLoading(key, false);\n this.state.setError(key, this.getMissingIdentifiersMessage(config));\n return;\n }\n\n const requestSignature = this.createCardsRequestSignature(config);\n\n if (force) {\n this.inFlightRequestSignatures.delete(key);\n this.fulfilledRequestSignatures.delete(key);\n } else if (\n this.inFlightRequestSignatures.get(key) === requestSignature ||\n this.fulfilledRequestSignatures.get(key) === requestSignature\n ) {\n return;\n }\n\n this.subscriptions.get(key)?.unsubscribe();\n this.inFlightRequestSignatures.set(key, requestSignature);\n this.state.setLoading(key, true);\n this.state.setError(key, null);\n\n const sub = this.api\n .getCards(config.levelDataId, config.moduleId)\n .subscribe({\n next: (response) => {\n let hasLoadedData = false;\n\n if (response.data) {\n this.state.setCardsResult(key, response.data, config);\n this.fulfilledRequestSignatures.set(key, requestSignature);\n hasLoadedData = true;\n } else {\n const message = response.message ?? 'Failed to load cards';\n this.state.setError(key, message);\n this.errored.emit({ key, message });\n }\n\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n\n if (hasLoadedData) {\n this.notifyDataLoaded(key);\n this.loaded.emit(key);\n }\n },\n error: (error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load cards';\n this.state.setError(key, message);\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n this.errored.emit({ key, message });\n },\n });\n\n this.subscriptions.set(key, sub);\n }\n\n private loadInformative(\n key: string,\n config: NormalizedClientListConfiguration,\n force = false,\n ): void {\n if (!this.hasValidIdentifiers(config)) {\n this.state.setLoading(key, false);\n this.state.setError(key, this.getMissingIdentifiersMessage(config));\n return;\n }\n\n const requestSignature = this.createInformativeRequestSignature(config);\n\n if (force) {\n this.inFlightRequestSignatures.delete(key);\n this.fulfilledRequestSignatures.delete(key);\n } else if (\n this.inFlightRequestSignatures.get(key) === requestSignature ||\n this.fulfilledRequestSignatures.get(key) === requestSignature\n ) {\n return;\n }\n\n this.subscriptions.get(key)?.unsubscribe();\n this.inFlightRequestSignatures.set(key, requestSignature);\n this.state.setLoading(key, true);\n this.state.setError(key, null);\n\n const sub = this.api.getInformativeDashboard(config.moduleId).subscribe({\n next: (response) => {\n this.state.setInformativeResult(key, response.data ?? null, config);\n this.fulfilledRequestSignatures.set(key, requestSignature);\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n this.notifyDataLoaded(key);\n this.loaded.emit(key);\n },\n error: (error) => {\n if (error?.status === 404) {\n this.state.setInformativeResult(key, null, config);\n this.fulfilledRequestSignatures.set(key, requestSignature);\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n this.notifyDataLoaded(key);\n this.loaded.emit(key);\n return;\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load informative dashboard';\n this.state.setError(key, message);\n this.state.setLoading(key, false);\n this.inFlightRequestSignatures.delete(key);\n this.errored.emit({ key, message });\n },\n });\n\n this.subscriptions.set(key, sub);\n }\n\n private resolveAreaType(\n areaType: ClientListAreaType | undefined,\n ): ClientListAreaType {\n return areaType === 'cards' ? 'cards' : DEFAULT_AREA_TYPE;\n }\n\n private resolveType(\n type: ClientListConfiguration['type'] | undefined,\n ): ClientListType {\n return type === 'informative' ? 'informative' : DEFAULT_TYPE;\n }\n\n private resolveMode(\n mode: ClientListMode | undefined,\n columnKeys: string[] | undefined,\n ): ClientListMode {\n if (mode !== 'override') return DEFAULT_MODE;\n return (columnKeys ?? []).length > 0 ? 'override' : DEFAULT_MODE;\n }\n\n private toNormalizedConfig(\n config: ClientListConfiguration,\n type: ClientListType,\n areaType: ClientListAreaType,\n mode: ClientListMode,\n isPaginated: boolean,\n take: number,\n collapseEnabled: boolean,\n layout: Required<ClientListLayoutConfig>,\n ): NormalizedClientListConfiguration {\n return {\n levelId: config.levelId as number,\n levelDataId: config.levelDataId as number,\n moduleId: config.moduleId as number,\n type,\n areaType,\n mode,\n isPaginated,\n take,\n title: config.title,\n columnKeys: config.columnKeys ?? [],\n headerStart: config.headerStart,\n headerEnd: config.headerEnd,\n contentStart: config.contentStart,\n contentEnd: config.contentEnd,\n templateContent: config.templateContent,\n rowActions: config.rowActions ?? [],\n dataLoaded: config.dataLoaded,\n collapse: {\n enabled: collapseEnabled,\n expandedByDefault: config.collapse?.expandedByDefault ?? true,\n collapseIcon: config.collapse?.collapseIcon ?? DEFAULT_COLLAPSE_ICON,\n expandIcon: config.collapse?.expandIcon ?? DEFAULT_EXPAND_ICON,\n },\n layout,\n };\n }\n\n private resolveLayout(\n config: ClientListConfiguration,\n ): Required<ClientListLayoutConfig> {\n const hasStart = !!config.contentStart;\n const hasEnd = !!config.contentEnd;\n\n const startSpan = hasStart\n ? this.clampSpan(config.layout?.startSpan ?? DEFAULT_SIDE_CONTENT_SPAN)\n : 0;\n let endSpan = hasEnd\n ? this.clampSpan(config.layout?.endSpan ?? DEFAULT_SIDE_CONTENT_SPAN)\n : 0;\n\n if (startSpan + endSpan >= DEFAULT_GRID_COLUMNS) {\n endSpan = Math.max(0, DEFAULT_GRID_COLUMNS - startSpan - 1);\n }\n\n const availableForTable = Math.max(\n 1,\n DEFAULT_GRID_COLUMNS - startSpan - endSpan,\n );\n const tableSpan = this.clampSpan(\n config.layout?.tableSpan ?? availableForTable,\n 1,\n availableForTable,\n );\n\n return {\n startSpan,\n tableSpan,\n endSpan,\n };\n }\n\n private clampSpan(\n value: number | undefined,\n min = 0,\n max = DEFAULT_GRID_COLUMNS,\n ): number {\n const normalized = Number(value ?? min);\n if (!Number.isFinite(normalized)) return min;\n return Math.min(max, Math.max(min, Math.trunc(normalized)));\n }\n\n private cleanupStaleResources(activeKeys: Set<string>): void {\n for (const [key, sub] of this.subscriptions.entries()) {\n if (!activeKeys.has(key)) {\n sub.unsubscribe();\n this.subscriptions.delete(key);\n this.inFlightRequestSignatures.delete(key);\n this.fulfilledRequestSignatures.delete(key);\n }\n }\n }\n\n private notifyDataLoaded(key: string): void {\n const item = this.state.itemsByKey()[key];\n if (!item) {\n return;\n }\n\n item.config.dataLoaded?.(this.templateContext(item));\n }\n\n private toTableQuery(\n config: NormalizedClientListConfiguration,\n skip: number,\n take: number,\n ): ClientListTableQuery {\n return {\n mode: config.mode,\n columnKeys: config.mode === 'override' ? config.columnKeys : undefined,\n skip: config.isPaginated ? skip : 0,\n take: config.isPaginated ? take : LOCAL_PAGE_SIZE_SOURCE,\n };\n }\n\n private createTableRequestSignature(\n config: NormalizedClientListConfiguration,\n query: ClientListTableQuery,\n ): string {\n return [\n config.type,\n config.areaType,\n config.levelId,\n config.levelDataId,\n config.moduleId,\n query.mode,\n query.skip,\n query.take,\n ...(query.columnKeys ?? []),\n ].join('|');\n }\n\n private createCardsRequestSignature(\n config: NormalizedClientListConfiguration,\n ): string {\n return [\n config.type,\n config.areaType,\n config.levelDataId,\n config.moduleId,\n 'card',\n ].join('|');\n }\n\n private createInformativeRequestSignature(\n config: NormalizedClientListConfiguration,\n ): string {\n return [config.type, config.moduleId, 'dashboard'].join('|');\n }\n\n private hasValidIdentifiers(\n config: NormalizedClientListConfiguration,\n ): boolean {\n if (config.type === 'informative') {\n return Number.isFinite(config.moduleId) && config.moduleId > 0;\n }\n\n const hasLevelDataId =\n Number.isFinite(config.levelDataId) && config.levelDataId > 0;\n const hasModuleId = Number.isFinite(config.moduleId) && config.moduleId > 0;\n\n if (config.areaType === 'cards') {\n return hasLevelDataId && hasModuleId;\n }\n\n return (\n Number.isFinite(config.levelId) &&\n config.levelId > 0 &&\n hasLevelDataId &&\n hasModuleId\n );\n }\n\n private getMissingIdentifiersMessage(\n config: NormalizedClientListConfiguration,\n ): string {\n if (config.type === 'informative') {\n return 'Missing identifiers: moduleId is required';\n }\n\n if (config.areaType === 'cards') {\n return 'Missing identifiers: levelDataId and moduleId are required';\n }\n\n return 'Missing identifiers: levelId, levelDataId and moduleId are required';\n }\n}\n","<div class=\"flex flex-col gap-4\">\n @for (item of items(); track item.key) {\n <section class=\"flex flex-col gap-4\">\n <div class=\"flex w-full items-center gap-2\">\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\n @if (item.config.collapse.enabled) {\n <mt-button\n variant=\"text\"\n severity=\"secondary\"\n [icon]=\"\n item.expanded\n ? item.config.collapse.collapseIcon\n : item.config.collapse.expandIcon\n \"\n (onClick)=\"toggleExpanded(item.key)\"\n />\n }\n <h3 class=\"m-0 text-lg font-bold\">\n {{ item.title || item.moduleKey || defaultTitle(item) }}\n </h3>\n @if (item.config.headerStart) {\n <div class=\"flex items-center gap-2\">\n <ng-container\n [ngTemplateOutlet]=\"item.config.headerStart\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n />\n </div>\n }\n </div>\n @if (item.config.headerEnd) {\n <div class=\"ml-auto flex shrink-0 items-center gap-2\">\n <ng-container\n [ngTemplateOutlet]=\"item.config.headerEnd\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n />\n </div>\n }\n </div>\n\n @if (item.expanded || !item.config.collapse.enabled) {\n @if (item.config.templateContent) {\n <ng-container\n [ngTemplateOutlet]=\"item.config.templateContent\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n />\n } @else if (item.type === \"informative\") {\n <mt-client-list-informative-view [state]=\"item\" />\n } @else if (item.areaType === \"table\") {\n <mt-client-list-table-view\n [state]=\"item\"\n [rowActions]=\"item.config.rowActions\"\n (lazyLoad)=\"onLazyLoad(item.key, $event)\"\n />\n } @else {\n <mt-client-list-cards-view [state]=\"item\" />\n }\n }\n </section>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_GRID_COLUMNS","i1"],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-client-components-client-list.mjs","sources":["../../../../packages/masterteam/client-components/client-list/services/client-list-api.service.ts","../../../../packages/masterteam/client-components/client-list/services/client-list-state.service.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-table-view/client-list-table-view.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-table-view/client-list-table-view.html","../../../../packages/masterteam/client-components/client-list/components/client-list-cards-view/client-list-cards-view.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-cards-view/client-list-cards-view.html","../../../../packages/masterteam/client-components/client-list/components/client-list-informative-view/client-list-informative-view.ts","../../../../packages/masterteam/client-components/client-list/components/client-list-informative-view/client-list-informative-view.html","../../../../packages/masterteam/client-components/client-list/client-list.ts","../../../../packages/masterteam/client-components/client-list/client-list.html","../../../../packages/masterteam/client-components/client-list/masterteam-client-components-client-list.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, Observable, of, switchMap } from 'rxjs';\r\nimport {\r\n ClientListFetchRequestFilter,\r\n ClientListCardsPayload,\r\n ClientListFetchQueryRequest,\r\n ClientListRuntimeContext,\r\n ClientListInformativeDashboardPayload,\r\n ClientListTableSettingsCatalogResponse,\r\n ClientListTableQuery,\r\n Response,\r\n RuntimeTableRowsResponse,\r\n} from '../models/client-list.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ClientListApiService {\r\n private readonly http = inject(HttpClient);\r\n private readonly runtimeFetchBaseUrl = 'fetch/query';\r\n private readonly tableSettingsBaseUrl = 'table-display-settings';\r\n private readonly informativeBaseUrl = 'Modules';\r\n\r\n getRows(\r\n contextKey: ClientListRuntimeContext,\r\n instanceId: number,\r\n query: ClientListTableQuery,\r\n ): Observable<Response<RuntimeTableRowsResponse>> {\r\n return this.resolveTablePropertyKeys(contextKey, query).pipe(\r\n switchMap((propertyKeys) =>\r\n this.queryRuntime<RuntimeTableRowsResponse>({\r\n contextKey,\r\n projection: 'Table',\r\n surfaceKey: 'table',\r\n propertyKeys: propertyKeys?.length ? propertyKeys : undefined,\r\n filters: this.buildInstanceFilters(instanceId),\r\n page: this.toPage(query.skip, query.take),\r\n pageSize: query.take,\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n getCards(\n contextKey: ClientListRuntimeContext,\n instanceId?: number | null,\n ): Observable<Response<ClientListCardsPayload>> {\n return this.queryRuntime<ClientListCardsPayload>({\n contextKey,\n projection: 'Card',\n filters:\n instanceId != null ? this.buildInstanceFilters(instanceId) : undefined,\n display: { areas: ['card'] },\n });\n }\n\r\n getInformativeDashboard(\r\n moduleId: number,\r\n ): Observable<Response<ClientListInformativeDashboardPayload>> {\r\n return this.http.get<Response<ClientListInformativeDashboardPayload>>(\r\n `${this.informativeBaseUrl}/${moduleId}/dashboard`,\r\n );\r\n }\r\n\r\n private queryRuntime<T>(\r\n payload: ClientListFetchQueryRequest,\r\n ): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(this.runtimeFetchBaseUrl, payload);\r\n }\r\n\r\n private resolveTablePropertyKeys(\r\n contextKey: ClientListRuntimeContext,\r\n query: ClientListTableQuery,\r\n ): Observable<string[] | undefined> {\r\n if (query.columnKeys?.length) {\r\n return of(query.columnKeys);\r\n }\r\n\r\n const context = this.readTableSettingsContext(contextKey);\r\n if (!context) {\r\n return of(undefined);\r\n }\r\n\r\n return this.http\r\n .get<\r\n Response<ClientListTableSettingsCatalogResponse>\r\n >(`${this.tableSettingsBaseUrl}/level/${context.levelId}/module/${context.moduleId}/catalog`)\r\n .pipe(\r\n map((response) =>\r\n this.toEffectiveColumnKeys(response.data?.effectiveColumns ?? []),\r\n ),\r\n );\r\n }\r\n\r\n private buildInstanceFilters(\r\n instanceId: number,\r\n ): ClientListFetchRequestFilter[] {\r\n return [\r\n {\r\n key: 'levelDataId',\r\n operator: 'Equals',\r\n value: String(instanceId),\r\n },\r\n ];\r\n }\r\n\r\n private toPage(skip: number, take: number): number {\r\n if (take <= 0) {\r\n return 1;\r\n }\r\n\r\n return Math.floor(skip / take) + 1;\r\n }\r\n\r\n private toEffectiveColumnKeys(\r\n columns: ClientListTableSettingsCatalogResponse['effectiveColumns'],\r\n ): string[] | undefined {\r\n const keys = (columns ?? [])\r\n .filter((column) =>\r\n typeof column === 'string' ? true : column.visible !== false,\r\n )\r\n .sort(\r\n (a, b) =>\r\n (typeof a === 'string' ? 0 : (a.order ?? 0)) -\r\n (typeof b === 'string' ? 0 : (b.order ?? 0)),\r\n )\r\n .map((column) =>\r\n typeof column === 'string'\r\n ? column\r\n : (column.key ?? column.propertyKey ?? ''),\r\n )\r\n .filter((key) => key.length > 0);\r\n\r\n return keys.length ? keys : undefined;\r\n }\r\n\r\n private readTableSettingsContext(\n contextKey: string,\n ): { levelId: string; moduleId: string } | null {\n const [levelPart, modulePart] = contextKey.split('/');\r\n const levelId = levelPart?.split(':')[1];\r\n const moduleId = modulePart?.split(':')[1];\r\n\r\n if (!levelId || !moduleId) {\r\n return null;\r\n }\r\n\n return { levelId, moduleId };\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport {\n DashboardBuilderData,\n DashboardChartItem,\n} from '@masterteam/dashboard-builder';\nimport { EntityData } from '@masterteam/components/entities';\nimport {\n ClientListCard,\n ClientListCardsPayload,\n ClientListFetchPropertyMeta,\n ClientListFetchRecord,\n ClientListInformativeDashboardPayload,\n ClientListState,\n NormalizedClientListConfiguration,\n RuntimeEntityColumnDef,\n RuntimeTableDisplayRow,\n RuntimeTableRowsResponse,\n} from '../models/client-list.model';\n\n@Injectable()\nexport class ClientListStateService {\n readonly itemsByKey = signal<Record<string, ClientListState>>({});\n\n readonly items = computed<ClientListState[]>(() =>\n Object.values(this.itemsByKey()).sort((a, b) =>\n a.config.moduleId === b.config.moduleId\n ? (a.config.instanceId ?? 0) - (b.config.instanceId ?? 0)\n : a.config.moduleId - b.config.moduleId,\n ),\n );\n\n setConfigs(configs: ClientListState[]): void {\n const currentItems = this.itemsByKey();\n const next: Record<string, ClientListState> = {};\n\n configs.forEach((item) => {\n next[item.key] = this.mergeItemState(item, currentItems[item.key]);\n });\n\n this.itemsByKey.set(next);\n }\n\n setLoading(key: string, loading: boolean): void {\n const target = this.itemsByKey()[key];\n if (!target) return;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n loading,\n },\n });\n }\n\n setError(key: string, message: string | null): void {\n const target = this.itemsByKey()[key];\n if (!target) return;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n error: message,\n },\n });\n }\n\n setRowsResult(\n key: string,\n response: RuntimeTableRowsResponse,\n config: NormalizedClientListConfiguration,\n skip: number,\n take: number,\n ): void {\n const target = this.itemsByKey()[key];\n if (\n !target ||\n target.type === 'informative' ||\n target.areaType !== 'table'\n ) {\n return;\n }\n\n const columns: RuntimeEntityColumnDef[] = (\n response.projectionMeta?.columns ?? []\n )\n .filter((column) => column.visible)\n .sort((a, b) => a.order - b.order)\n .map((column) => ({\n key: column.key,\n label: column.label,\n type: 'entity' as const,\n viewType: column.viewType,\n order: column.order,\n visible: column.visible,\n configuration: column.configuration ?? null,\n }));\n\n const propertiesByKey = new Map(\n (response.catalog?.properties ?? []).map((property) => [\n property.normalizedKey,\n property,\n ]),\n );\n\n const rows: RuntimeTableDisplayRow[] = (response.records ?? []).map(\n (record) => {\n const row: RuntimeTableDisplayRow = { Id: record.id };\n\n columns.forEach((column) => {\n row[column.key] = this.toEntityData(\n column.key,\n record.values?.[column.key],\n propertiesByKey.get(column.key),\n column.viewType,\n column.label,\n column.configuration,\n record.id,\n );\n });\n\n return row;\n },\n );\n\n const schema = response.schemas?.find(\n (item) => item.id === response.records?.[0]?.schemaId,\n );\n const title =\n (config.title ?? '').trim() || schema?.name || schema?.key || '';\n const totalCount =\n config.isPaginated === false\n ? rows.length\n : (response.pagination?.totalCount ?? rows.length);\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n title,\n moduleKey: schema?.key ?? '',\n columns,\n rows,\n cards: [],\n skip,\n take,\n totalCount,\n error: null,\n rawData: response,\n },\n });\n }\n\n setCardsResult(\n key: string,\n response: ClientListCardsPayload,\n config: NormalizedClientListConfiguration,\n ): void {\n const target = this.itemsByKey()[key];\n if (\n !target ||\n target.type === 'informative' ||\n target.areaType !== 'cards'\n ) {\n return;\n }\n\n const cards = this.toCards(response);\n const firstCardModule = cards[0]?.module;\n const moduleKey = firstCardModule?.key ?? target.moduleKey ?? '';\n const title =\n (config.title ?? '').trim() ||\n firstCardModule?.name ||\n moduleKey ||\n target.title;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n title,\n moduleKey,\n columns: [],\n rows: [],\n cards,\n skip: 0,\n take: 0,\n totalCount: cards.length,\n error: null,\n rawData: response,\n },\n });\n }\n\n setInformativeResult(\n key: string,\n response: ClientListInformativeDashboardPayload | null,\n config: NormalizedClientListConfiguration,\n ): void {\n const target = this.itemsByKey()[key];\n if (!target || target.type !== 'informative') return;\n\n const moduleKey = target.moduleKey || `Module ${config.moduleId}`;\n const title =\n (config.title ?? '').trim() || target.title || 'Informative Dashboard';\n const dashboardData = response\n ? this.toDashboardData(response, title)\n : null;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n title,\n moduleKey,\n columns: [],\n rows: [],\n cards: [],\n skip: 0,\n take: 0,\n totalCount: dashboardData?.charts?.length ?? 0,\n dashboardData,\n error: null,\n rawData: response,\n },\n });\n }\n\n toggleExpanded(key: string): void {\n const target = this.itemsByKey()[key];\n if (!target) return;\n\n this.itemsByKey.set({\n ...this.itemsByKey(),\n [key]: {\n ...target,\n expanded: !target.expanded,\n },\n });\n }\n\n private mergeItemState(\n item: ClientListState,\n existing?: ClientListState,\n ): ClientListState {\n if (\n !existing ||\n existing.type !== item.type ||\n existing.areaType !== item.areaType\n ) {\n return item;\n }\n\n return {\n ...item,\n loading: existing.loading,\n error: existing.error,\n title: item.title || existing.title,\n moduleKey: existing.moduleKey || item.moduleKey,\n totalCount: existing.totalCount,\n columns: existing.columns,\n rows: existing.rows,\n cards: existing.cards,\n skip: existing.skip,\n take: existing.take,\n expanded: existing.expanded,\n dashboardData: existing.dashboardData,\n rawData: existing.rawData,\n };\n }\n\n private toCards(data?: ClientListCardsPayload): ClientListCard[] {\n const records = this.orderRecords(\n data?.records ?? [],\n data?.projectionMeta?.groups ?? [],\n );\n const propertiesByKey = new Map(\n (data?.catalog?.properties ?? []).map((property) => [\n property.normalizedKey,\n property,\n ]),\n );\n const displayOrder = [...(data?.projectionMeta?.displayOrder ?? [])].sort(\n (a, b) => a.order - b.order,\n );\n\n return records.map((record) => {\n const schema = data?.schemas?.find((item) => item.id === record.schemaId);\n const propertyKeys = displayOrder.length\n ? displayOrder.map((item) => item.propertyKey)\n : (data?.catalog?.properties ?? [])\n .filter(\n (property) =>\n record.values?.[property.normalizedKey] !== undefined,\n )\n .sort((a, b) => a.order - b.order)\n .map((property) => property.normalizedKey);\n\n const keys = propertyKeys.length\n ? propertyKeys\n : Object.keys(record.values ?? {});\n const properties = keys.map((propertyKey) => {\n const property = propertiesByKey.get(propertyKey);\n const displayConfig = displayOrder.find(\n (item) => item.propertyKey === propertyKey,\n );\n\n return this.toEntityData(\n propertyKey,\n record.values?.[propertyKey],\n property,\n property?.viewType,\n property?.label,\n displayConfig?.configuration ?? property?.configuration ?? null,\n record.id,\n );\n });\n\n return {\n id: record.id,\n name: record.name ?? `Record ${record.id}`,\n module: schema\n ? {\n id: schema.id,\n key: schema.key,\n name: schema.name,\n order: schema.order,\n typeGroup: schema.typeGroup,\n }\n : undefined,\n instanceId: record.id,\n properties,\n entities: properties,\n };\n });\n }\n\n private orderRecords(\n records: ClientListFetchRecord[],\n groups: Array<{ recordIds: number[] }>,\n ): ClientListFetchRecord[] {\n if (!groups.length) {\n return records;\n }\n\n const recordsById = new Map(records.map((record) => [record.id, record]));\n const ordered: ClientListFetchRecord[] = [];\n const seen = new Set<number>();\n\n groups.forEach((group) => {\n group.recordIds.forEach((recordId) => {\n const record = recordsById.get(recordId);\n if (!record || seen.has(recordId)) {\n return;\n }\n\n ordered.push(record);\n seen.add(recordId);\n });\n });\n\n records.forEach((record) => {\n if (!seen.has(record.id)) {\n ordered.push(record);\n }\n });\n\n return ordered;\n }\n\n private toEntityData(\n propertyKey: string,\n cell: ClientListFetchRecord['values'][string] | undefined,\n property: ClientListFetchPropertyMeta | undefined,\n viewType: string | undefined,\n label: string | undefined,\n configuration: EntityData['configuration'] | null | undefined,\n recordId: number,\n ): EntityData {\n const resolvedViewType = (viewType ?? 'Text') as EntityData['viewType'];\n\n return {\n id: recordId,\n propertyId: property?.id,\n key: property?.key ?? propertyKey,\n normalizedKey: property?.normalizedKey ?? propertyKey,\n name: label ?? property?.label ?? propertyKey,\n rawValue:\n cell?.raw === null || cell?.raw === undefined\n ? undefined\n : String(cell.raw),\n value:\n resolvedViewType === 'Status' ||\n resolvedViewType === 'Lookup' ||\n resolvedViewType === 'User' ||\n resolvedViewType === 'Attachment'\n ? (cell?.value as EntityData['value'])\n : String(cell?.display ?? cell?.value ?? cell?.raw ?? ''),\n viewType: resolvedViewType,\n type: property?.source,\n configuration: configuration as EntityData['configuration'] | undefined,\n };\n }\n\n private toDashboardData(\n data: ClientListInformativeDashboardPayload,\n title: string,\n ): DashboardBuilderData {\n const charts: DashboardChartItem[] = (data.chartLinks ?? []).map((link) => {\n const configuration = link.configuration ?? {};\n\n return {\n ...configuration,\n id: link.id,\n chartComponentId: link.chartComponentId,\n } as DashboardChartItem;\n });\n\n return {\n page: {\n id: data.moduleId,\n name: { en: title, ar: title },\n type: 'Dashboard',\n dashboardConfig: {\n ignoreQueryFilter: data.ignoreQueryFilter,\n filters: data.filters,\n versionNumber: data.versionNumber,\n extraInfo: data.extraInfo,\n },\n },\n charts,\n dialogs: [],\n filters: [],\n };\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { Table, TableAction } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport {\r\n ClientListContentTemplateContext,\r\n ClientListLazyLoadEvent,\r\n RuntimeTableDisplayRow,\r\n ClientListState,\r\n ClientListTableState,\r\n} from '../../models/client-list.model';\r\n\r\nconst DEFAULT_GRID_COLUMNS = 12;\r\n\r\n@Component({\r\n selector: 'mt-client-list-table-view',\r\n standalone: true,\r\n imports: [CommonModule, Card, Table, SkeletonModule],\r\n templateUrl: './client-list-table-view.html',\r\n})\r\nexport class ClientListTableView {\r\n readonly state = input.required<ClientListState>();\r\n readonly rowActions = input<TableAction[]>([]);\r\n readonly lazyLoad = output<ClientListLazyLoadEvent>();\r\n readonly rowClick = output<RuntimeTableDisplayRow>();\r\n\r\n protected readonly table = computed(() => {\r\n return this.state() as ClientListTableState;\r\n });\r\n protected readonly gridTemplateColumns = `repeat(${DEFAULT_GRID_COLUMNS}, minmax(0, 1fr))`;\r\n\r\n protected slotGridSpan(span: number): string {\r\n return `span ${span} / span ${span}`;\r\n }\r\n\r\n protected templateContext(\r\n item: ClientListState,\r\n ): ClientListContentTemplateContext {\r\n return {\r\n $implicit: item,\r\n table: item,\r\n item,\r\n loading: item.loading,\r\n error: item.error,\r\n data: item.rawData,\r\n };\r\n }\r\n}\r\n","<div class=\"grid gap-4\" [style.gridTemplateColumns]=\"gridTemplateColumns\">\r\n @if (table().config.contentStart) {\r\n <div [style.gridColumn]=\"slotGridSpan(table().config.layout.startSpan)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"table().config.contentStart\"\r\n [ngTemplateOutletContext]=\"templateContext(table())\"\r\n />\r\n </div>\r\n }\r\n\r\n <div [style.gridColumn]=\"slotGridSpan(table().config.layout.tableSpan)\">\r\n <mt-card>\r\n @if (table().loading && table().rows.length === 0) {\r\n <div class=\"flex flex-col gap-3 py-3\">\r\n <p-skeleton height=\"3rem\" />\r\n <p-skeleton height=\"3rem\" />\r\n <p-skeleton height=\"3rem\" />\r\n </div>\r\n } @else if (table().error) {\r\n <div\r\n class=\"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\r\n >\r\n {{ table().error }}\r\n </div>\r\n } @else {\r\n <mt-table\r\n [data]=\"table().rows\"\r\n [columns]=\"table().columns\"\r\n [rowActions]=\"rowActions()\"\r\n [loading]=\"table().loading\"\r\n [clickableRows]=\"true\"\r\n [lazy]=\"table().config.isPaginated\"\r\n [lazyTotalRecords]=\"table().totalCount\"\r\n [pageSize]=\"table().config.isPaginated ? table().take : 10\"\r\n (lazyLoad)=\"lazyLoad.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n />\r\n }\r\n </mt-card>\r\n </div>\r\n\r\n @if (table().config.contentEnd) {\r\n <div [style.gridColumn]=\"slotGridSpan(table().config.layout.endSpan)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"table().config.contentEnd\"\r\n [ngTemplateOutletContext]=\"templateContext(table())\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { EntitiesPreview } from '@masterteam/components/entities';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport {\r\n ClientListCard,\r\n ClientListCardsState,\r\n ClientListState,\r\n} from '../../models/client-list.model';\r\n\r\n@Component({\r\n selector: 'mt-client-list-cards-view',\r\n standalone: true,\r\n imports: [CommonModule, Card, EntitiesPreview, SkeletonModule],\r\n templateUrl: './client-list-cards-view.html',\r\n})\r\nexport class ClientListCardsView {\n readonly state = input.required<ClientListState>();\n readonly cardClick = output<ClientListCard>();\n\n protected readonly cardsState = computed(\n () => this.state() as ClientListCardsState,\n );\n}\n","@if (cardsState().loading && cardsState().cards.length === 0) {\r\n <div class=\"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3\">\r\n @for (i of [1, 2, 3, 4, 5, 6]; track i) {\r\n <p-skeleton height=\"20rem\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n} @else if (cardsState().error) {\r\n <div class=\"rounded-lg border border-red-200 bg-red-50 p-6 text-red-600\">\r\n {{ cardsState().error }}\r\n </div>\r\n} @else if (cardsState().cards.length === 0) {\r\n <div class=\"p-6 text-center text-gray-400\">No cards found.</div>\r\n} @else {\n <div class=\"grid grid-cols-1 gap-5 md:grid-cols-2 xl:grid-cols-3\">\n @for (card of cardsState().cards; track card.id) {\n <mt-card class=\"cursor-pointer p-3\" (click)=\"cardClick.emit(card)\">\n <ng-template #headless>\n <mt-entities-preview [entities]=\"card.entities\" />\n </ng-template>\n </mt-card>\n }\n </div>\n}\n","import { Component, computed, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { DashboardViewer } from '@masterteam/dashboard-builder';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport {\r\n ClientListContentTemplateContext,\r\n ClientListInformativeState,\r\n ClientListState,\r\n} from '../../models/client-list.model';\r\n\r\nconst DEFAULT_GRID_COLUMNS = 12;\r\n\r\n@Component({\r\n selector: 'mt-client-list-informative-view',\r\n standalone: true,\r\n imports: [CommonModule, Card, DashboardViewer, SkeletonModule],\r\n templateUrl: './client-list-informative-view.html',\r\n})\r\nexport class ClientListInformativeView {\r\n readonly state = input.required<ClientListState>();\r\n\r\n protected readonly informativeState = computed(\r\n () => this.state() as ClientListInformativeState,\r\n );\r\n protected readonly gridTemplateColumns = `repeat(${DEFAULT_GRID_COLUMNS}, minmax(0, 1fr))`;\r\n\r\n protected slotGridSpan(span: number): string {\r\n return `span ${span} / span ${span}`;\r\n }\r\n\r\n protected templateContext(\r\n item: ClientListState,\r\n ): ClientListContentTemplateContext {\r\n return {\r\n $implicit: item,\r\n table: item,\r\n item,\r\n loading: item.loading,\r\n error: item.error,\r\n data: item.rawData,\r\n };\r\n }\r\n}\r\n","<div class=\"grid gap-4\" [style.gridTemplateColumns]=\"gridTemplateColumns\">\r\n @if (informativeState().config.contentStart) {\r\n <div\r\n [style.gridColumn]=\"\r\n slotGridSpan(informativeState().config.layout.startSpan)\r\n \"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"informativeState().config.contentStart\"\r\n [ngTemplateOutletContext]=\"templateContext(informativeState())\"\r\n />\r\n </div>\r\n }\r\n\r\n <div\r\n [style.gridColumn]=\"\r\n slotGridSpan(informativeState().config.layout.tableSpan)\r\n \"\r\n >\r\n <mt-card>\r\n @if (\r\n informativeState().loading &&\r\n !informativeState().dashboardData?.charts?.length\r\n ) {\r\n <div class=\"flex flex-col gap-3 py-3\">\r\n <p-skeleton height=\"6rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n </div>\r\n } @else if (informativeState().error) {\r\n <div\r\n class=\"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\r\n >\r\n {{ informativeState().error }}\r\n </div>\r\n } @else if (!informativeState().dashboardData?.charts?.length) {\r\n <div class=\"p-6 text-center text-gray-400\">\r\n No informative dashboard found.\r\n </div>\r\n } @else {\r\n <div class=\"min-h-[420px]\">\r\n <mt-dashboard-viewer\r\n [isPage]=\"false\"\r\n [showFilters]=\"false\"\r\n [dashboardData]=\"informativeState().dashboardData\"\r\n />\r\n </div>\r\n }\r\n </mt-card>\r\n </div>\r\n\r\n @if (informativeState().config.contentEnd) {\r\n <div\r\n [style.gridColumn]=\"\r\n slotGridSpan(informativeState().config.layout.endSpan)\r\n \"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"informativeState().config.contentEnd\"\r\n [ngTemplateOutletContext]=\"templateContext(informativeState())\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n untracked,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ClientListApiService } from './services/client-list-api.service';\r\nimport { ClientListStateService } from './services/client-list-state.service';\r\nimport {\r\n ClientListAreaType,\r\n ClientListConfiguration,\r\n ClientListContentTemplateContext,\r\n ClientListFormConfiguration,\r\n ClientListItemClickedEvent,\r\n ClientListInformativeConfiguration,\r\n ClientListLazyLoadEvent,\r\n ClientListLayoutConfig,\r\n ClientListMode,\r\n ClientListState,\r\n RuntimeTableDisplayRow,\r\n ClientListTableQuery,\r\n ClientListType,\r\n NormalizedClientListConfiguration,\r\n ClientListCard,\r\n} from './models/client-list.model';\r\nimport { ClientListTableView } from './components/client-list-table-view/client-list-table-view';\r\nimport { ClientListCardsView } from './components/client-list-cards-view/client-list-cards-view';\r\nimport { ClientListInformativeView } from './components/client-list-informative-view/client-list-informative-view';\r\n\r\nconst DEFAULT_AREA_TYPE: ClientListAreaType = 'table';\r\nconst DEFAULT_MODE: ClientListMode = 'auto';\r\nconst DEFAULT_TYPE: ClientListType = 'form';\r\nconst DEFAULT_SERVER_PAGE_SIZE = 50;\r\nconst LOCAL_PAGE_SIZE_SOURCE = 100000;\r\nconst DEFAULT_COLLAPSE_ICON = 'arrow.chevron-up';\r\nconst DEFAULT_EXPAND_ICON = 'arrow.chevron-down';\r\nconst DEFAULT_SIDE_CONTENT_SPAN = 3;\r\nconst DEFAULT_GRID_COLUMNS = 12;\r\n\r\n@Component({\r\n selector: 'mt-client-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n ClientListTableView,\r\n ClientListCardsView,\r\n ClientListInformativeView,\r\n ],\r\n providers: [ClientListStateService],\r\n templateUrl: './client-list.html',\r\n})\r\nexport class ClientList implements OnDestroy {\r\n private readonly api = inject(ClientListApiService);\r\n protected readonly state = inject(ClientListStateService);\r\n\r\n readonly configurations = input.required<ClientListConfiguration[]>();\r\n readonly defaultTake = input(DEFAULT_SERVER_PAGE_SIZE);\r\n\r\n readonly loaded = output<string>();\r\n readonly errored = output<{ key: string; message: string }>();\r\n readonly itemClicked = output<ClientListItemClickedEvent>();\r\n\r\n protected readonly items = this.state.items;\r\n private readonly subscriptions = new Map<string, Subscription>();\r\n private readonly inFlightRequestSignatures = new Map<string, string>();\r\n private readonly fulfilledRequestSignatures = new Map<string, string>();\r\n\r\n constructor() {\r\n effect(() => {\r\n const configs = this.configurations();\r\n untracked(() => this.configureItems(configs));\r\n\r\n untracked(() => {\r\n this.state.items().forEach((item) => {\r\n this.loadItem(item);\r\n });\r\n });\r\n });\r\n }\r\n\r\n onLazyLoad(itemKey: string, event: ClientListLazyLoadEvent): void {\r\n const item = this.state.itemsByKey()[itemKey];\r\n if (\r\n !item ||\r\n item.type === 'informative' ||\r\n item.areaType !== 'table' ||\r\n !item.config.isPaginated\r\n ) {\r\n return;\r\n }\r\n\r\n const take = Number(event.pageSize ?? item.take);\r\n const skip = Number(event.first ?? 0);\r\n this.loadTable(item.key, item.config, skip, take);\r\n }\r\n\r\n reload(itemKey?: string): void {\r\n if (itemKey) {\r\n this.reloadByKey(itemKey);\r\n return;\r\n }\r\n\r\n this.items().forEach((item) => {\r\n this.loadItem(item, true);\r\n });\r\n }\r\n\r\n reloadByKey(itemKey: string): void {\r\n const item = this.state.itemsByKey()[itemKey];\r\n if (!item) return;\r\n\r\n this.loadItem(item, true);\r\n }\r\n\r\n toggleExpanded(key: string): void {\r\n this.state.toggleExpanded(key);\r\n }\r\n\r\n onTableRowClick(item: ClientListState, row: RuntimeTableDisplayRow): void {\r\n this.itemClicked.emit({\r\n key: item.key,\r\n areaType: 'table',\r\n item: row,\r\n state: item,\r\n });\r\n }\r\n\r\n onCardClick(item: ClientListState, card: ClientListCard): void {\r\n this.itemClicked.emit({\r\n key: item.key,\r\n areaType: 'cards',\r\n item: card,\r\n state: item,\r\n });\r\n }\r\n\r\n templateContext(item: ClientListState): ClientListContentTemplateContext {\r\n return {\r\n $implicit: item,\r\n table: item,\r\n item,\r\n loading: item.loading,\r\n error: item.error,\r\n data: item.rawData,\r\n };\r\n }\r\n\r\n defaultTitle(item: ClientListState): string {\r\n if (item.type === 'informative') {\r\n return 'Informative Dashboard';\r\n }\r\n\r\n return item.areaType === 'cards' ? 'Cards' : 'Table';\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n this.subscriptions.clear();\r\n }\r\n\r\n private configureItems(configs: ClientListConfiguration[]): void {\r\n const previousItems = this.state.itemsByKey();\r\n const hasMultipleConfigs = (configs ?? []).length > 1;\r\n\r\n const normalized: ClientListState[] = (configs ?? []).map(\r\n (config, index) => {\r\n const type = this.resolveType(config);\r\n const isInformative = type === 'informative';\r\n const formConfig = isInformative ? null : this.asFormConfig(config);\r\n const areaType = isInformative\r\n ? DEFAULT_AREA_TYPE\r\n : this.resolveAreaType(formConfig?.areaType);\r\n const mode = isInformative\r\n ? DEFAULT_MODE\r\n : this.resolveMode(formConfig?.mode, formConfig?.columnKeys);\r\n const isPaginated =\r\n !isInformative &&\r\n areaType === 'table' &&\r\n (formConfig?.isPaginated ?? true);\r\n const showHeader = config.showHeader ?? true;\r\n const take =\r\n !isInformative && areaType === 'table'\r\n ? isPaginated\r\n ? (formConfig?.take ?? this.defaultTake())\r\n : LOCAL_PAGE_SIZE_SOURCE\r\n : 0;\r\n const collapseEnabled =\r\n showHeader &&\r\n (config.collapse?.enabled ?? true) &&\r\n hasMultipleConfigs;\r\n const layout = this.resolveLayout(config);\r\n const key = config.key ?? this.createItemKey(config, index);\r\n const existing = previousItems[key];\r\n const normalizedConfig = this.toNormalizedConfig(\r\n config,\r\n type,\r\n areaType,\r\n mode,\r\n isPaginated,\r\n take,\r\n showHeader,\r\n collapseEnabled,\r\n layout,\r\n );\r\n\r\n if (isInformative) {\r\n return {\r\n key,\r\n config: normalizedConfig,\r\n type: 'informative',\r\n areaType: 'table',\r\n loading: false,\r\n error: null,\r\n title: config.title?.trim() || '',\r\n moduleKey: '',\r\n totalCount: 0,\r\n columns: [],\r\n rows: [],\r\n cards: [],\r\n skip: 0,\r\n take: 0,\r\n expanded:\r\n existing?.expanded ?? config.collapse?.expandedByDefault ?? true,\r\n dashboardData: existing?.dashboardData ?? null,\r\n rawData: existing?.rawData ?? null,\r\n };\r\n }\r\n\r\n if (areaType === 'cards') {\r\n return {\r\n key,\r\n config: normalizedConfig,\r\n type: 'form',\r\n areaType: 'cards',\r\n loading: false,\r\n error: null,\r\n title: config.title?.trim() || '',\r\n moduleKey: '',\r\n totalCount: 0,\r\n columns: [],\r\n rows: [],\r\n cards: [],\r\n skip: 0,\r\n take: 0,\r\n expanded:\r\n existing?.expanded ?? config.collapse?.expandedByDefault ?? true,\r\n dashboardData: null,\r\n rawData: existing?.rawData ?? null,\r\n };\r\n }\r\n\r\n return {\r\n key,\r\n config: normalizedConfig,\r\n type: 'form',\r\n areaType: 'table',\r\n loading: false,\r\n error: null,\r\n title: config.title?.trim() || '',\r\n moduleKey: '',\r\n totalCount: 0,\r\n columns: [],\r\n rows: [],\r\n cards: [],\r\n skip: existing?.areaType === 'table' ? existing.skip : 0,\r\n take,\r\n expanded:\r\n existing?.expanded ?? config.collapse?.expandedByDefault ?? true,\r\n dashboardData: null,\r\n rawData: existing?.rawData ?? null,\r\n };\r\n },\r\n );\r\n\r\n this.state.setConfigs(normalized);\r\n this.cleanupStaleResources(new Set(normalized.map((item) => item.key)));\r\n }\r\n\r\n private loadItem(item: ClientListState, force = false): void {\r\n if (item.type === 'informative') {\r\n this.loadInformative(item.key, item.config, force);\r\n return;\r\n }\r\n\r\n if (item.areaType === 'cards') {\r\n this.loadCards(item.key, item.config, force);\r\n return;\r\n }\r\n\r\n this.loadTable(item.key, item.config, item.skip, item.take, force);\r\n }\r\n\r\n private loadTable(\r\n key: string,\r\n config: NormalizedClientListConfiguration,\r\n skip: number,\r\n take: number,\r\n force = false,\r\n ): void {\r\n if (!this.hasValidIdentifiers(config)) {\r\n this.state.setLoading(key, false);\r\n this.state.setError(key, this.getMissingIdentifiersMessage(config));\r\n return;\r\n }\r\n\r\n const query = this.toTableQuery(config, skip, take);\r\n const requestSignature = this.createTableRequestSignature(config, query);\r\n\r\n if (force) {\r\n this.inFlightRequestSignatures.delete(key);\r\n this.fulfilledRequestSignatures.delete(key);\r\n } else if (\r\n this.inFlightRequestSignatures.get(key) === requestSignature ||\r\n this.fulfilledRequestSignatures.get(key) === requestSignature\r\n ) {\r\n return;\r\n }\r\n\r\n this.subscriptions.get(key)?.unsubscribe();\r\n this.inFlightRequestSignatures.set(key, requestSignature);\r\n this.state.setLoading(key, true);\r\n this.state.setError(key, null);\r\n\r\n const sub = this.api\r\n .getRows(config.contextKey!, config.instanceId!, query)\r\n .subscribe({\r\n next: (response) => {\r\n let hasLoadedData = false;\r\n\r\n if (response.data) {\r\n this.state.setRowsResult(\r\n key,\r\n response.data,\r\n config,\r\n query.skip,\r\n query.take,\r\n );\r\n this.fulfilledRequestSignatures.set(key, requestSignature);\r\n hasLoadedData = true;\r\n } else {\r\n const message = response.message ?? 'Failed to load table rows';\r\n this.state.setError(key, message);\r\n this.errored.emit({ key, message });\r\n }\r\n\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n\r\n if (hasLoadedData) {\r\n this.notifyDataLoaded(key);\r\n this.loaded.emit(key);\r\n }\r\n },\r\n error: (error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load rows';\r\n this.state.setError(key, message);\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n this.errored.emit({ key, message });\r\n },\r\n });\r\n\r\n this.subscriptions.set(key, sub);\r\n }\r\n\r\n private loadCards(\r\n key: string,\r\n config: NormalizedClientListConfiguration,\r\n force = false,\r\n ): void {\r\n if (!this.hasValidIdentifiers(config)) {\r\n this.state.setLoading(key, false);\r\n this.state.setError(key, this.getMissingIdentifiersMessage(config));\r\n return;\r\n }\r\n\r\n const requestSignature = this.createCardsRequestSignature(config);\r\n\r\n if (force) {\r\n this.inFlightRequestSignatures.delete(key);\r\n this.fulfilledRequestSignatures.delete(key);\r\n } else if (\r\n this.inFlightRequestSignatures.get(key) === requestSignature ||\r\n this.fulfilledRequestSignatures.get(key) === requestSignature\r\n ) {\r\n return;\r\n }\r\n\r\n this.subscriptions.get(key)?.unsubscribe();\r\n this.inFlightRequestSignatures.set(key, requestSignature);\r\n this.state.setLoading(key, true);\r\n this.state.setError(key, null);\r\n\r\n const sub = this.api\r\n .getCards(config.contextKey!, config.instanceId)\r\n .subscribe({\r\n next: (response) => {\r\n let hasLoadedData = false;\r\n\r\n if (response.data) {\r\n this.state.setCardsResult(key, response.data, config);\r\n this.fulfilledRequestSignatures.set(key, requestSignature);\r\n hasLoadedData = true;\r\n } else {\r\n const message = response.message ?? 'Failed to load cards';\r\n this.state.setError(key, message);\r\n this.errored.emit({ key, message });\r\n }\r\n\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n\r\n if (hasLoadedData) {\r\n this.notifyDataLoaded(key);\r\n this.loaded.emit(key);\r\n }\r\n },\r\n error: (error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load cards';\r\n this.state.setError(key, message);\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n this.errored.emit({ key, message });\r\n },\r\n });\r\n\r\n this.subscriptions.set(key, sub);\r\n }\r\n\r\n private loadInformative(\r\n key: string,\r\n config: NormalizedClientListConfiguration,\r\n force = false,\r\n ): void {\r\n if (!this.hasValidIdentifiers(config)) {\r\n this.state.setLoading(key, false);\r\n this.state.setError(key, this.getMissingIdentifiersMessage(config));\r\n return;\r\n }\r\n\r\n const requestSignature = this.createInformativeRequestSignature(config);\r\n\r\n if (force) {\r\n this.inFlightRequestSignatures.delete(key);\r\n this.fulfilledRequestSignatures.delete(key);\r\n } else if (\r\n this.inFlightRequestSignatures.get(key) === requestSignature ||\r\n this.fulfilledRequestSignatures.get(key) === requestSignature\r\n ) {\r\n return;\r\n }\r\n\r\n this.subscriptions.get(key)?.unsubscribe();\r\n this.inFlightRequestSignatures.set(key, requestSignature);\r\n this.state.setLoading(key, true);\r\n this.state.setError(key, null);\r\n\r\n const sub = this.api.getInformativeDashboard(config.moduleId).subscribe({\r\n next: (response) => {\r\n this.state.setInformativeResult(key, response.data ?? null, config);\r\n this.fulfilledRequestSignatures.set(key, requestSignature);\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n this.notifyDataLoaded(key);\r\n this.loaded.emit(key);\r\n },\r\n error: (error) => {\r\n if (error?.status === 404) {\r\n this.state.setInformativeResult(key, null, config);\r\n this.fulfilledRequestSignatures.set(key, requestSignature);\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n this.notifyDataLoaded(key);\r\n this.loaded.emit(key);\r\n return;\r\n }\r\n\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load informative dashboard';\r\n this.state.setError(key, message);\r\n this.state.setLoading(key, false);\r\n this.inFlightRequestSignatures.delete(key);\r\n this.errored.emit({ key, message });\r\n },\r\n });\r\n\r\n this.subscriptions.set(key, sub);\r\n }\r\n\r\n private resolveAreaType(\r\n areaType: ClientListAreaType | undefined,\r\n ): ClientListAreaType {\r\n return areaType === 'cards' ? 'cards' : DEFAULT_AREA_TYPE;\r\n }\r\n\r\n private resolveType(config: ClientListConfiguration): ClientListType {\r\n return config.type === 'informative' ? 'informative' : DEFAULT_TYPE;\r\n }\r\n\r\n private resolveMode(\r\n mode: ClientListMode | undefined,\r\n columnKeys: string[] | undefined,\r\n ): ClientListMode {\r\n if (mode !== 'override') return DEFAULT_MODE;\r\n return (columnKeys ?? []).length > 0 ? 'override' : DEFAULT_MODE;\r\n }\r\n\r\n private toNormalizedConfig(\r\n config: ClientListConfiguration,\r\n type: ClientListType,\r\n areaType: ClientListAreaType,\r\n mode: ClientListMode,\r\n isPaginated: boolean,\r\n take: number,\r\n showHeader: boolean,\r\n collapseEnabled: boolean,\r\n layout: Required<ClientListLayoutConfig>,\r\n ): NormalizedClientListConfiguration {\r\n const informativeConfig = this.asInformativeConfig(config);\r\n const formConfig = this.asFormConfig(config);\r\n\r\n return {\r\n contextKey: formConfig?.contextKey ?? null,\r\n instanceId: formConfig?.instanceId ?? null,\r\n moduleId: informativeConfig?.moduleId ?? 0,\r\n type,\r\n areaType,\r\n mode,\r\n isPaginated,\r\n take,\r\n title: config.title,\r\n showHeader,\r\n columnKeys: formConfig?.columnKeys ?? [],\r\n headerStart: config.headerStart,\r\n headerEnd: config.headerEnd,\r\n contentStart: config.contentStart,\r\n contentEnd: config.contentEnd,\r\n templateContent: config.templateContent,\r\n rowActions: config.rowActions ?? [],\r\n dataLoaded: config.dataLoaded,\r\n collapse: {\r\n enabled: collapseEnabled,\r\n expandedByDefault: config.collapse?.expandedByDefault ?? true,\r\n collapseIcon: config.collapse?.collapseIcon ?? DEFAULT_COLLAPSE_ICON,\r\n expandIcon: config.collapse?.expandIcon ?? DEFAULT_EXPAND_ICON,\r\n },\r\n layout,\r\n };\r\n }\r\n\r\n private createItemKey(\r\n config: ClientListConfiguration,\r\n index: number,\r\n ): string {\r\n if (this.isInformativeConfig(config)) {\r\n return `informative-${config.moduleId}-${index}`;\r\n }\r\n\r\n return [\r\n config.contextKey,\r\n config.instanceId ?? 'scope',\r\n config.areaType ?? DEFAULT_AREA_TYPE,\r\n index,\r\n ].join('-');\r\n }\r\n\r\n private resolveLayout(\r\n config: ClientListConfiguration,\r\n ): Required<ClientListLayoutConfig> {\r\n const hasStart = !!config.contentStart;\r\n const hasEnd = !!config.contentEnd;\r\n\r\n const startSpan = hasStart\r\n ? this.clampSpan(config.layout?.startSpan ?? DEFAULT_SIDE_CONTENT_SPAN)\r\n : 0;\r\n let endSpan = hasEnd\r\n ? this.clampSpan(config.layout?.endSpan ?? DEFAULT_SIDE_CONTENT_SPAN)\r\n : 0;\r\n\r\n if (startSpan + endSpan >= DEFAULT_GRID_COLUMNS) {\r\n endSpan = Math.max(0, DEFAULT_GRID_COLUMNS - startSpan - 1);\r\n }\r\n\r\n const availableForTable = Math.max(\r\n 1,\r\n DEFAULT_GRID_COLUMNS - startSpan - endSpan,\r\n );\r\n const tableSpan = this.clampSpan(\r\n config.layout?.tableSpan ?? availableForTable,\r\n 1,\r\n availableForTable,\r\n );\r\n\r\n return {\r\n startSpan,\r\n tableSpan,\r\n endSpan,\r\n };\r\n }\r\n\r\n private clampSpan(\r\n value: number | undefined,\r\n min = 0,\r\n max = DEFAULT_GRID_COLUMNS,\r\n ): number {\r\n const normalized = Number(value ?? min);\r\n if (!Number.isFinite(normalized)) return min;\r\n return Math.min(max, Math.max(min, Math.trunc(normalized)));\r\n }\r\n\r\n private cleanupStaleResources(activeKeys: Set<string>): void {\r\n for (const [key, sub] of this.subscriptions.entries()) {\r\n if (!activeKeys.has(key)) {\r\n sub.unsubscribe();\r\n this.subscriptions.delete(key);\r\n this.inFlightRequestSignatures.delete(key);\r\n this.fulfilledRequestSignatures.delete(key);\r\n }\r\n }\r\n }\r\n\r\n private notifyDataLoaded(key: string): void {\r\n const item = this.state.itemsByKey()[key];\r\n if (!item) {\r\n return;\r\n }\r\n\r\n item.config.dataLoaded?.(this.templateContext(item));\r\n }\r\n\r\n private toTableQuery(\r\n config: NormalizedClientListConfiguration,\r\n skip: number,\r\n take: number,\r\n ): ClientListTableQuery {\r\n return {\r\n mode: config.mode,\r\n columnKeys: config.mode === 'override' ? config.columnKeys : undefined,\r\n skip: config.isPaginated ? skip : 0,\r\n take: config.isPaginated ? take : LOCAL_PAGE_SIZE_SOURCE,\r\n };\r\n }\r\n\r\n private createTableRequestSignature(\r\n config: NormalizedClientListConfiguration,\r\n query: ClientListTableQuery,\r\n ): string {\r\n return [\r\n config.type,\r\n config.areaType,\r\n config.contextKey ?? 'x',\r\n config.instanceId ?? 'scope',\r\n query.mode,\r\n query.skip,\r\n query.take,\r\n ...(query.columnKeys ?? []),\r\n ].join('|');\r\n }\r\n\r\n private createCardsRequestSignature(\r\n config: NormalizedClientListConfiguration,\r\n ): string {\r\n return [\r\n config.type,\r\n config.areaType,\r\n config.contextKey ?? 'x',\r\n config.instanceId ?? 'scope',\r\n 'Card',\r\n ].join('|');\r\n }\r\n\r\n private createInformativeRequestSignature(\r\n config: NormalizedClientListConfiguration,\r\n ): string {\r\n return [config.type, config.moduleId, 'dashboard'].join('|');\r\n }\r\n\r\n private hasValidIdentifiers(\r\n config: NormalizedClientListConfiguration,\r\n ): boolean {\r\n if (config.type === 'informative') {\r\n return Number.isFinite(config.moduleId) && config.moduleId > 0;\r\n }\r\n\r\n if (!config.contextKey?.trim()) {\r\n return false;\r\n }\r\n\r\n if (config.areaType === 'cards') {\r\n return true;\r\n }\r\n\r\n const instanceId = config.instanceId;\r\n return instanceId != null && Number.isFinite(instanceId) && instanceId > 0;\r\n }\r\n\r\n private getMissingIdentifiersMessage(\r\n config: NormalizedClientListConfiguration,\r\n ): string {\r\n if (config.type === 'informative') {\r\n return 'Missing identifiers: moduleId is required';\r\n }\r\n\r\n return config.areaType === 'cards'\r\n ? 'Missing identifiers: contextKey is required'\r\n : 'Missing identifiers: contextKey and instanceId are required';\r\n }\r\n\r\n private isInformativeConfig(\r\n config: ClientListConfiguration,\r\n ): config is ClientListInformativeConfiguration {\r\n return config.type === 'informative';\r\n }\r\n\r\n private asInformativeConfig(\r\n config: ClientListConfiguration,\r\n ): ClientListInformativeConfiguration | null {\r\n return this.isInformativeConfig(config) ? config : null;\r\n }\r\n\r\n private asFormConfig(\r\n config: ClientListConfiguration,\r\n ): ClientListFormConfiguration | null {\r\n return this.isInformativeConfig(config) ? null : config;\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-4\">\r\n @for (item of items(); track item.key) {\r\n <section class=\"flex flex-col gap-4\">\r\n @if (item.config.showHeader) {\r\n <div class=\"flex w-full items-center gap-2\">\r\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\r\n @if (item.config.collapse.enabled) {\r\n <mt-button\r\n variant=\"text\"\r\n severity=\"secondary\"\r\n [icon]=\"\r\n item.expanded\r\n ? item.config.collapse.collapseIcon\r\n : item.config.collapse.expandIcon\r\n \"\r\n (onClick)=\"toggleExpanded(item.key)\"\r\n />\r\n }\r\n <h3 class=\"m-0 text-lg font-bold\">\r\n {{ item.title || item.moduleKey || defaultTitle(item) }}\r\n </h3>\r\n @if (item.config.headerStart) {\r\n <div class=\"flex items-center gap-2\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"item.config.headerStart\"\r\n [ngTemplateOutletContext]=\"templateContext(item)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n @if (item.config.headerEnd) {\r\n <div class=\"ml-auto flex shrink-0 items-center gap-2\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"item.config.headerEnd\"\r\n [ngTemplateOutletContext]=\"templateContext(item)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (item.expanded || !item.config.collapse.enabled) {\r\n @if (item.config.templateContent) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"item.config.templateContent\"\r\n [ngTemplateOutletContext]=\"templateContext(item)\"\r\n />\r\n } @else if (item.type === \"informative\") {\r\n <mt-client-list-informative-view [state]=\"item\" />\r\n } @else if (item.areaType === \"table\") {\r\n <mt-client-list-table-view\r\n [state]=\"item\"\r\n [rowActions]=\"item.config.rowActions\"\r\n (lazyLoad)=\"onLazyLoad(item.key, $event)\"\r\n (rowClick)=\"onTableRowClick(item, $event)\"\r\n />\r\n } @else {\r\n <mt-client-list-cards-view\r\n [state]=\"item\"\r\n (cardClick)=\"onCardClick(item, $event)\"\r\n />\r\n }\r\n }\r\n </section>\r\n }\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_GRID_COLUMNS","i1"],"mappings":";;;;;;;;;;;;;;MAgBa,oBAAoB,CAAA;AACd,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IACzB,mBAAmB,GAAG,aAAa;IACnC,oBAAoB,GAAG,wBAAwB;IAC/C,kBAAkB,GAAG,SAAS;AAE/C,IAAA,OAAO,CACL,UAAoC,EACpC,UAAkB,EAClB,KAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,CAC1D,SAAS,CAAC,CAAC,YAAY,KACrB,IAAI,CAAC,YAAY,CAA2B;YAC1C,UAAU;AACV,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;AAC7D,YAAA,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AAC9C,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACzC,QAAQ,EAAE,KAAK,CAAC,IAAI;SACrB,CAAC,CACH,CACF;IACH;IAEA,QAAQ,CACN,UAAoC,EACpC,UAA0B,EAAA;QAE1B,OAAO,IAAI,CAAC,YAAY,CAAyB;YAC/C,UAAU;AACV,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,OAAO,EACL,UAAU,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,GAAG,SAAS;AACxE,YAAA,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;AAC7B,SAAA,CAAC;IACJ;AAEA,IAAA,uBAAuB,CACrB,QAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,CAAA,EAAI,QAAQ,CAAA,UAAA,CAAY,CACnD;IACH;AAEQ,IAAA,YAAY,CAClB,OAAoC,EAAA;AAEpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACvE;IAEQ,wBAAwB,CAC9B,UAAoC,EACpC,KAA2B,EAAA;AAE3B,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE;AAC5B,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAC7B;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;QACtB;QAEA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAEF,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,OAAA,EAAU,OAAO,CAAC,OAAO,CAAA,QAAA,EAAW,OAAO,CAAC,QAAQ,UAAU;aAC3F,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KACX,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAClE,CACF;IACL;AAEQ,IAAA,oBAAoB,CAC1B,UAAkB,EAAA;QAElB,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;AAC1B,aAAA;SACF;IACH;IAEQ,MAAM,CAAC,IAAY,EAAE,IAAY,EAAA;AACvC,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;AACb,YAAA,OAAO,CAAC;QACV;QAEA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IACpC;AAEQ,IAAA,qBAAqB,CAC3B,OAAmE,EAAA;AAEnE,QAAA,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE;aACxB,MAAM,CAAC,CAAC,MAAM,KACb,OAAO,MAAM,KAAK,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK;aAE7D,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3C,aAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;aAE/C,GAAG,CAAC,CAAC,MAAM,KACV,OAAO,MAAM,KAAK;AAChB,cAAE;AACF,eAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AAE7C,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS;IACvC;AAEQ,IAAA,wBAAwB,CAC9B,UAAkB,EAAA;AAElB,QAAA,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;QACrD,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9B;uGAnIW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCKrB,sBAAsB,CAAA;AACxB,IAAA,UAAU,GAAG,MAAM,CAAkC,EAAE,sDAAC;AAExD,IAAA,KAAK,GAAG,QAAQ,CAAoB,MAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KACzC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC;AAC7B,UAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;AACxD,UAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAC1C,iDACF;AAED,IAAA,UAAU,CAAC,OAA0B,EAAA;AACnC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;QACtC,MAAM,IAAI,GAAoC,EAAE;AAEhD,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;IAEA,UAAU,CAAC,GAAW,EAAE,OAAgB,EAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,CAAC,GAAG,GAAG;AACL,gBAAA,GAAG,MAAM;gBACT,OAAO;AACR,aAAA;AACF,SAAA,CAAC;IACJ;IAEA,QAAQ,CAAC,GAAW,EAAE,OAAsB,EAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,CAAC,GAAG,GAAG;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA;AACF,SAAA,CAAC;IACJ;IAEA,aAAa,CACX,GAAW,EACX,QAAkC,EAClC,MAAyC,EACzC,IAAY,EACZ,IAAY,EAAA;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,IACE,CAAC,MAAM;YACP,MAAM,CAAC,IAAI,KAAK,aAAa;AAC7B,YAAA,MAAM,CAAC,QAAQ,KAAK,OAAO,EAC3B;YACA;QACF;QAEA,MAAM,OAAO,GAA6B,CACxC,QAAQ,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE;aAErC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO;AACjC,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AAChC,aAAA,GAAG,CAAC,CAAC,MAAM,MAAM;YAChB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,YAAA,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,YAAA,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;AAC5C,SAAA,CAAC,CAAC;QAEL,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK;AACrD,YAAA,QAAQ,CAAC,aAAa;YACtB,QAAQ;AACT,SAAA,CAAC,CACH;AAED,QAAA,MAAM,IAAI,GAA6B,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CACjE,CAAC,MAAM,KAAI;YACT,MAAM,GAAG,GAA2B,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;AAErD,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CACjC,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,EAC3B,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAC/B,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,EAAE,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,CACF;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CACnC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,QAAQ,CACtD;QACD,MAAM,KAAK,GACT,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE;AAClE,QAAA,MAAM,UAAU,GACd,MAAM,CAAC,WAAW,KAAK;cACnB,IAAI,CAAC;AACP,eAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;AAEtD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,CAAC,GAAG,GAAG;AACL,gBAAA,GAAG,MAAM;gBACT,KAAK;AACL,gBAAA,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;gBAC5B,OAAO;gBACP,IAAI;AACJ,gBAAA,KAAK,EAAE,EAAE;gBACT,IAAI;gBACJ,IAAI;gBACJ,UAAU;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,QAAQ;AAClB,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CACZ,GAAW,EACX,QAAgC,EAChC,MAAyC,EAAA;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,IACE,CAAC,MAAM;YACP,MAAM,CAAC,IAAI,KAAK,aAAa;AAC7B,YAAA,MAAM,CAAC,QAAQ,KAAK,OAAO,EAC3B;YACA;QACF;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM;QACxC,MAAM,SAAS,GAAG,eAAe,EAAE,GAAG,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE;QAChE,MAAM,KAAK,GACT,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE;AAC3B,YAAA,eAAe,EAAE,IAAI;YACrB,SAAS;YACT,MAAM,CAAC,KAAK;AAEd,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,CAAC,GAAG,GAAG;AACL,gBAAA,GAAG,MAAM;gBACT,KAAK;gBACL,SAAS;AACT,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;gBACR,KAAK;AACL,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,IAAI,EAAE,CAAC;gBACP,UAAU,EAAE,KAAK,CAAC,MAAM;AACxB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,QAAQ;AAClB,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,oBAAoB,CAClB,GAAW,EACX,QAAsD,EACtD,MAAyC,EAAA;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;YAAE;QAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAA,OAAA,EAAU,MAAM,CAAC,QAAQ,CAAA,CAAE;AACjE,QAAA,MAAM,KAAK,GACT,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,uBAAuB;QACxE,MAAM,aAAa,GAAG;cAClB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK;cACpC,IAAI;AAER,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,CAAC,GAAG,GAAG;AACL,gBAAA,GAAG,MAAM;gBACT,KAAK;gBACL,SAAS;AACT,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;gBAC9C,aAAa;AACb,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,QAAQ;AAClB,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,GAAW,EAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,CAAC,GAAG,GAAG;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ;AAC3B,aAAA;AACF,SAAA,CAAC;IACJ;IAEQ,cAAc,CACpB,IAAqB,EACrB,QAA0B,EAAA;AAE1B,QAAA,IACE,CAAC,QAAQ;AACT,YAAA,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC3B,YAAA,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EACnC;AACA,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;AACL,YAAA,GAAG,IAAI;YACP,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACnC,YAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAC/C,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B;IACH;AAEQ,IAAA,OAAO,CAAC,IAA6B,EAAA;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAC/B,IAAI,EAAE,OAAO,IAAI,EAAE,EACnB,IAAI,EAAE,cAAc,EAAE,MAAM,IAAI,EAAE,CACnC;QACD,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK;AAClD,YAAA,QAAQ,CAAC,aAAa;YACtB,QAAQ;AACT,SAAA,CAAC,CACH;AACD,QAAA,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,EAAE,cAAc,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACvE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAC5B;AAED,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;YAC5B,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC;AACzE,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC;AAChC,kBAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW;kBAC3C,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;AAC7B,qBAAA,MAAM,CACL,CAAC,QAAQ,KACP,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,SAAS;AAExD,qBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;qBAChC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,aAAa,CAAC;AAEhD,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC;AACxB,kBAAE;kBACA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAI;gBAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;AACjD,gBAAA,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CACrC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,KAAK,WAAW,CAC3C;AAED,gBAAA,OAAO,IAAI,CAAC,YAAY,CACtB,WAAW,EACX,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,EAC5B,QAAQ,EACR,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,aAAa,IAAI,QAAQ,EAAE,aAAa,IAAI,IAAI,EAC/D,MAAM,CAAC,EAAE,CACV;AACH,YAAA,CAAC,CAAC;YAEF,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAA,OAAA,EAAU,MAAM,CAAC,EAAE,CAAA,CAAE;AAC1C,gBAAA,MAAM,EAAE;AACN,sBAAE;wBACE,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B;AACH,sBAAE,SAAS;gBACb,UAAU,EAAE,MAAM,CAAC,EAAE;gBACrB,UAAU;AACV,gBAAA,QAAQ,EAAE,UAAU;aACrB;AACH,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,CAClB,OAAgC,EAChC,MAAsC,EAAA;AAEtC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,OAAO;QAChB;QAEA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAA4B,EAAE;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;AAE9B,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACvB,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;gBACnC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACxC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACjC;gBACF;AAEA,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACtB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,YAAY,CAClB,WAAmB,EACnB,IAAyD,EACzD,QAAiD,EACjD,QAA4B,EAC5B,KAAyB,EACzB,aAA6D,EAC7D,QAAgB,EAAA;AAEhB,QAAA,MAAM,gBAAgB,IAAI,QAAQ,IAAI,MAAM,CAA2B;QAEvE,OAAO;AACL,YAAA,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,QAAQ,EAAE,EAAE;AACxB,YAAA,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,WAAW;AACjC,YAAA,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,WAAW;AACrD,YAAA,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,WAAW;YAC7C,QAAQ,EACN,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,KAAK;AAClC,kBAAE;AACF,kBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,KAAK,EACH,gBAAgB,KAAK,QAAQ;AAC7B,gBAAA,gBAAgB,KAAK,QAAQ;AAC7B,gBAAA,gBAAgB,KAAK,MAAM;AAC3B,gBAAA,gBAAgB,KAAK;kBAChB,IAAI,EAAE;AACT,kBAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAC7D,YAAA,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,QAAQ,EAAE,MAAM;AACtB,YAAA,aAAa,EAAE,aAAwD;SACxE;IACH;IAEQ,eAAe,CACrB,IAA2C,EAC3C,KAAa,EAAA;AAEb,QAAA,MAAM,MAAM,GAAyB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAI;AACxE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE;YAE9C,OAAO;AACL,gBAAA,GAAG,aAAa;gBAChB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aAClB;AACzB,QAAA,CAAC,CAAC;QAEF,OAAO;AACL,YAAA,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,QAAQ;gBACjB,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;AAC9B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,eAAe,EAAE;oBACf,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;oBACzC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1B,iBAAA;AACF,aAAA;YACD,MAAM;AACN,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,EAAE;SACZ;IACH;uGA/ZW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAtB,sBAAsB,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACND,MAAMA,sBAAoB,GAAG,EAAE;MAQlB,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;AACzC,IAAA,UAAU,GAAG,KAAK,CAAgB,EAAE,sDAAC;IACrC,QAAQ,GAAG,MAAM,EAA2B;IAC5C,QAAQ,GAAG,MAAM,EAA0B;AAEjC,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,OAAO,IAAI,CAAC,KAAK,EAA0B;AAC7C,IAAA,CAAC,iDAAC;AACiB,IAAA,mBAAmB,GAAG,CAAA,OAAA,EAAUA,sBAAoB,CAAA,iBAAA,CAAmB;AAEhF,IAAA,YAAY,CAAC,IAAY,EAAA;AACjC,QAAA,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,QAAA,EAAW,IAAI,EAAE;IACtC;AAEU,IAAA,eAAe,CACvB,IAAqB,EAAA;QAErB,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,IAAI;YACX,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,OAAO;SACnB;IACH;uGA1BW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBhC,o0DAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhCY,YAAY,sMAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGxC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,o0DAAA,EAAA;;;MEDzC,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;IACzC,SAAS,GAAG,MAAM,EAAkB;IAE1B,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,KAAK,EAA0B,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3C;uGANU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBhC,y6BAuBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,+BAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGlD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,y6BAAA,EAAA;;;AEHhE,MAAMD,sBAAoB,GAAG,EAAE;MAQlB,yBAAyB,CAAA;AAC3B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;IAE/B,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,KAAK,EAAgC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjD;AACkB,IAAA,mBAAmB,GAAG,CAAA,OAAA,EAAUA,sBAAoB,CAAA,iBAAA,CAAmB;AAEhF,IAAA,YAAY,CAAC,IAAY,EAAA;AACjC,QAAA,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,QAAA,EAAW,IAAI,EAAE;IACtC;AAEU,IAAA,eAAe,CACvB,IAAqB,EAAA;QAErB,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,IAAI;YACX,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,OAAO;SACnB;IACH;uGAvBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBtC,oiEAgEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhDY,YAAY,sMAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGlD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,oiEAAA,EAAA;;;AEmBhE,MAAM,iBAAiB,GAAuB,OAAO;AACrD,MAAM,YAAY,GAAmB,MAAM;AAC3C,MAAM,YAAY,GAAmB,MAAM;AAC3C,MAAM,wBAAwB,GAAG,EAAE;AACnC,MAAM,sBAAsB,GAAG,MAAM;AACrC,MAAM,qBAAqB,GAAG,kBAAkB;AAChD,MAAM,mBAAmB,GAAG,oBAAoB;AAChD,MAAM,yBAAyB,GAAG,CAAC;AACnC,MAAM,oBAAoB,GAAG,EAAE;MAelB,UAAU,CAAA;AACJ,IAAA,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAEhD,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA6B;AAC5D,IAAA,WAAW,GAAG,KAAK,CAAC,wBAAwB,uDAAC;IAE7C,MAAM,GAAG,MAAM,EAAU;IACzB,OAAO,GAAG,MAAM,EAAoC;IACpD,WAAW,GAAG,MAAM,EAA8B;AAExC,IAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAC1B,IAAA,aAAa,GAAG,IAAI,GAAG,EAAwB;AAC/C,IAAA,yBAAyB,GAAG,IAAI,GAAG,EAAkB;AACrD,IAAA,0BAA0B,GAAG,IAAI,GAAG,EAAkB;AAEvE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;YACrC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAE7C,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAClC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,UAAU,CAAC,OAAe,EAAE,KAA8B,EAAA;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;AAC7C,QAAA,IACE,CAAC,IAAI;YACL,IAAI,CAAC,IAAI,KAAK,aAAa;YAC3B,IAAI,CAAC,QAAQ,KAAK,OAAO;AACzB,YAAA,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EACxB;YACA;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;IACnD;AAEA,IAAA,MAAM,CAAC,OAAgB,EAAA;QACrB,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACzB;QACF;QAEA,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3B;AAEA,IAAA,cAAc,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;IAChC;IAEA,eAAe,CAAC,IAAqB,EAAE,GAA2B,EAAA;AAChE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;IACJ;IAEA,WAAW,CAAC,IAAqB,EAAE,IAAoB,EAAA;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,IAAqB,EAAA;QACnC,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,IAAI;YACX,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,OAAO;SACnB;IACH;AAEA,IAAA,YAAY,CAAC,IAAqB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AAC/B,YAAA,OAAO,uBAAuB;QAChC;AAEA,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACtD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IAC5B;AAEQ,IAAA,cAAc,CAAC,OAAkC,EAAA;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;QAC7C,MAAM,kBAAkB,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC;AAErD,QAAA,MAAM,UAAU,GAAsB,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CACvD,CAAC,MAAM,EAAE,KAAK,KAAI;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACrC,YAAA,MAAM,aAAa,GAAG,IAAI,KAAK,aAAa;AAC5C,YAAA,MAAM,UAAU,GAAG,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnE,MAAM,QAAQ,GAAG;AACf,kBAAE;kBACA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC9C,MAAM,IAAI,GAAG;AACX,kBAAE;AACF,kBAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC;YAC9D,MAAM,WAAW,GACf,CAAC,aAAa;AACd,gBAAA,QAAQ,KAAK,OAAO;AACpB,iBAAC,UAAU,EAAE,WAAW,IAAI,IAAI,CAAC;AACnC,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI;AAC5C,YAAA,MAAM,IAAI,GACR,CAAC,aAAa,IAAI,QAAQ,KAAK;AAC7B,kBAAE;uBACG,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AACzC,sBAAE;kBACF,CAAC;YACP,MAAM,eAAe,GACnB,UAAU;AACV,iBAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC;AAClC,gBAAA,kBAAkB;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACzC,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;AAC3D,YAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;YACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAC9C,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,UAAU,EACV,eAAe,EACf,MAAM,CACP;YAED,IAAI,aAAa,EAAE;gBACjB,OAAO;oBACL,GAAG;AACH,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,IAAI,EAAE,CAAC;oBACP,QAAQ,EACN,QAAQ,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,IAAI;AAClE,oBAAA,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI;AAC9C,oBAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;iBACnC;YACH;AAEA,YAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;gBACxB,OAAO;oBACL,GAAG;AACH,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,IAAI,EAAE,CAAC;oBACP,QAAQ,EACN,QAAQ,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,IAAI;AAClE,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;iBACnC;YACH;YAEA,OAAO;gBACL,GAAG;AACH,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC;gBACxD,IAAI;gBACJ,QAAQ,EACN,QAAQ,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,IAAI;AAClE,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;aACnC;AACH,QAAA,CAAC,CACF;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE;AAEQ,IAAA,QAAQ,CAAC,IAAqB,EAAE,KAAK,GAAG,KAAK,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YAClD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YAC5C;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;IACpE;IAEQ,SAAS,CACf,GAAW,EACX,MAAyC,EACzC,IAAY,EACZ,IAAY,EACZ,KAAK,GAAG,KAAK,EAAA;QAEb,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACnE;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC;QAExE,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,YAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7C;aAAO,IACL,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB;YAC5D,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAC7D;YACA;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE;QAC1C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AAE9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC;aACd,OAAO,CAAC,MAAM,CAAC,UAAW,EAAE,MAAM,CAAC,UAAW,EAAE,KAAK;AACrD,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;gBACjB,IAAI,aAAa,GAAG,KAAK;AAEzB,gBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACjB,IAAI,CAAC,KAAK,CAAC,aAAa,CACtB,GAAG,EACH,QAAQ,CAAC,IAAI,EACb,MAAM,EACN,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,CACX;oBACD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;oBAC1D,aAAa,GAAG,IAAI;gBACtB;qBAAO;AACL,oBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,2BAA2B;oBAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;oBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;gBACrC;gBAEA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;gBAE1C,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC1B,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvB;YACF,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,MAAM,OAAO,GACX,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,qBAAqB;gBAClE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YACrC,CAAC;AACF,SAAA,CAAC;QAEJ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAClC;AAEQ,IAAA,SAAS,CACf,GAAW,EACX,MAAyC,EACzC,KAAK,GAAG,KAAK,EAAA;QAEb,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACnE;QACF;QAEA,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;QAEjE,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,YAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7C;aAAO,IACL,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB;YAC5D,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAC7D;YACA;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE;QAC1C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AAE9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC;aACd,QAAQ,CAAC,MAAM,CAAC,UAAW,EAAE,MAAM,CAAC,UAAU;AAC9C,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;gBACjB,IAAI,aAAa,GAAG,KAAK;AAEzB,gBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,oBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;oBACrD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;oBAC1D,aAAa,GAAG,IAAI;gBACtB;qBAAO;AACL,oBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,sBAAsB;oBAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;oBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;gBACrC;gBAEA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;gBAE1C,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC1B,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvB;YACF,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,MAAM,OAAO,GACX,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,sBAAsB;gBACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YACrC,CAAC;AACF,SAAA,CAAC;QAEJ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAClC;AAEQ,IAAA,eAAe,CACrB,GAAW,EACX,MAAyC,EACzC,KAAK,GAAG,KAAK,EAAA;QAEb,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACnE;QACF;QAEA,MAAM,gBAAgB,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC;QAEvE,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,YAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7C;aAAO,IACL,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB;YAC5D,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAC7D;YACA;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE;QAC1C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AAE9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACtE,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,MAAM,CAAC;gBACnE,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;gBAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;oBACzB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;oBAClD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;oBAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,oBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC1B,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;oBACrB;gBACF;AAEA,gBAAA,MAAM,OAAO,GACX,KAAK,EAAE,KAAK,EAAE,OAAO;AACrB,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,sCAAsC;gBACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YACrC,CAAC;AACF,SAAA,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAClC;AAEQ,IAAA,eAAe,CACrB,QAAwC,EAAA;QAExC,OAAO,QAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,iBAAiB;IAC3D;AAEQ,IAAA,WAAW,CAAC,MAA+B,EAAA;AACjD,QAAA,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,GAAG,aAAa,GAAG,YAAY;IACrE;IAEQ,WAAW,CACjB,IAAgC,EAChC,UAAgC,EAAA;QAEhC,IAAI,IAAI,KAAK,UAAU;AAAE,YAAA,OAAO,YAAY;AAC5C,QAAA,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,YAAY;IAClE;AAEQ,IAAA,kBAAkB,CACxB,MAA+B,EAC/B,IAAoB,EACpB,QAA4B,EAC5B,IAAoB,EACpB,WAAoB,EACpB,IAAY,EACZ,UAAmB,EACnB,eAAwB,EACxB,MAAwC,EAAA;QAExC,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAE5C,OAAO;AACL,YAAA,UAAU,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI;AAC1C,YAAA,UAAU,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI;AAC1C,YAAA,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,IAAI,CAAC;YAC1C,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,WAAW;YACX,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU;AACV,YAAA,UAAU,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE;YACxC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;AACvC,YAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7B,YAAA,QAAQ,EAAE;AACR,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,IAAI;AAC7D,gBAAA,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,qBAAqB;AACpE,gBAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,mBAAmB;AAC/D,aAAA;YACD,MAAM;SACP;IACH;IAEQ,aAAa,CACnB,MAA+B,EAC/B,KAAa,EAAA;AAEb,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,OAAO,eAAe,MAAM,CAAC,QAAQ,CAAA,CAAA,EAAI,KAAK,EAAE;QAClD;QAEA,OAAO;AACL,YAAA,MAAM,CAAC,UAAU;YACjB,MAAM,CAAC,UAAU,IAAI,OAAO;YAC5B,MAAM,CAAC,QAAQ,IAAI,iBAAiB;YACpC,KAAK;AACN,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEQ,IAAA,aAAa,CACnB,MAA+B,EAAA;AAE/B,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY;AACtC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU;QAElC,MAAM,SAAS,GAAG;AAChB,cAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,yBAAyB;cACpE,CAAC;QACL,IAAI,OAAO,GAAG;AACZ,cAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,yBAAyB;cAClE,CAAC;AAEL,QAAA,IAAI,SAAS,GAAG,OAAO,IAAI,oBAAoB,EAAE;AAC/C,YAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,GAAG,SAAS,GAAG,CAAC,CAAC;QAC7D;AAEA,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,CAAC,EACD,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAC3C;AACD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,iBAAiB,EAC7C,CAAC,EACD,iBAAiB,CAClB;QAED,OAAO;YACL,SAAS;YACT,SAAS;YACT,OAAO;SACR;IACH;IAEQ,SAAS,CACf,KAAyB,EACzB,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,oBAAoB,EAAA;QAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;AAAE,YAAA,OAAO,GAAG;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D;AAEQ,IAAA,qBAAqB,CAAC,UAAuB,EAAA;AACnD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACxB,GAAG,CAAC,WAAW,EAAE;AACjB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,gBAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC;YAC7C;QACF;IACF;AAEQ,IAAA,gBAAgB,CAAC,GAAW,EAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtD;AAEQ,IAAA,YAAY,CAClB,MAAyC,EACzC,IAAY,EACZ,IAAY,EAAA;QAEZ,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,SAAS;YACtE,IAAI,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC;YACnC,IAAI,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,sBAAsB;SACzD;IACH;IAEQ,2BAA2B,CACjC,MAAyC,EACzC,KAA2B,EAAA;QAE3B,OAAO;AACL,YAAA,MAAM,CAAC,IAAI;AACX,YAAA,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,UAAU,IAAI,GAAG;YACxB,MAAM,CAAC,UAAU,IAAI,OAAO;AAC5B,YAAA,KAAK,CAAC,IAAI;AACV,YAAA,KAAK,CAAC,IAAI;AACV,YAAA,KAAK,CAAC,IAAI;AACV,YAAA,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;AAC5B,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEQ,IAAA,2BAA2B,CACjC,MAAyC,EAAA;QAEzC,OAAO;AACL,YAAA,MAAM,CAAC,IAAI;AACX,YAAA,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,UAAU,IAAI,GAAG;YACxB,MAAM,CAAC,UAAU,IAAI,OAAO;YAC5B,MAAM;AACP,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEQ,IAAA,iCAAiC,CACvC,MAAyC,EAAA;AAEzC,QAAA,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9D;AAEQ,IAAA,mBAAmB,CACzB,MAAyC,EAAA;AAEzC,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;AACjC,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC;QAChE;QAEA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;AAC9B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC/B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU;AACpC,QAAA,OAAO,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;IAC5E;AAEQ,IAAA,4BAA4B,CAClC,MAAyC,EAAA;AAEzC,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;AACjC,YAAA,OAAO,2CAA2C;QACpD;AAEA,QAAA,OAAO,MAAM,CAAC,QAAQ,KAAK;AACzB,cAAE;cACA,6DAA6D;IACnE;AAEQ,IAAA,mBAAmB,CACzB,MAA+B,EAAA;AAE/B,QAAA,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa;IACtC;AAEQ,IAAA,mBAAmB,CACzB,MAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI;IACzD;AAEQ,IAAA,YAAY,CAClB,MAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,MAAM;IACzD;uGArqBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAHV,CAAC,sBAAsB,CAAC,0BCvDrC,whFAkEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,mBAAmB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,mBAAmB,iHACnB,yBAAyB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKhB,UAAU,EAAA,UAAA,EAAA,CAAA;kBAbtB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,MAAM;wBACN,mBAAmB;wBACnB,mBAAmB;wBACnB,yBAAyB;qBAC1B,EAAA,SAAA,EACU,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,whFAAA,EAAA;;;AEvDrC;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/client-components",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/client-components",
6
6
  "linkDirectory": true,
@@ -16,9 +16,9 @@
16
16
  "rxjs": "^7.8.2",
17
17
  "tailwindcss": "^4.1.17",
18
18
  "tailwindcss-primeui": "^0.6.1",
19
- "@masterteam/components": "^0.0.100",
20
- "@masterteam/dashboard-builder": "^0.0.5",
21
- "@masterteam/forms": "^0.0.46"
19
+ "@masterteam/forms": "^0.0.47",
20
+ "@masterteam/components": "^0.0.101",
21
+ "@masterteam/dashboard-builder": "^0.0.5"
22
22
  },
23
23
  "dependencies": {
24
24
  "tslib": "^2.8.1"
@@ -34,14 +34,14 @@
34
34
  "types": "./types/masterteam-client-components.d.ts",
35
35
  "default": "./fesm2022/masterteam-client-components.mjs"
36
36
  },
37
+ "./client-instance-preview": {
38
+ "types": "./types/masterteam-client-components-client-instance-preview.d.ts",
39
+ "default": "./fesm2022/masterteam-client-components-client-instance-preview.mjs"
40
+ },
37
41
  "./client-list": {
38
42
  "types": "./types/masterteam-client-components-client-list.d.ts",
39
43
  "default": "./fesm2022/masterteam-client-components-client-list.mjs"
40
44
  },
41
- "./client-module-preview": {
42
- "types": "./types/masterteam-client-components-client-module-preview.d.ts",
43
- "default": "./fesm2022/masterteam-client-components-client-module-preview.mjs"
44
- },
45
45
  "./escalation-runtime": {
46
46
  "types": "./types/masterteam-client-components-escalation-runtime.d.ts",
47
47
  "default": "./fesm2022/masterteam-client-components-escalation-runtime.mjs"
@@ -0,0 +1,104 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy } from '@angular/core';
3
+ import { EntityData } from '@masterteam/components/entities';
4
+ import { Observable } from 'rxjs';
5
+
6
+ interface ClientInstancePreviewConfig {
7
+ contextKey: string;
8
+ instanceId: number;
9
+ displayAreas?: string[];
10
+ }
11
+ interface Response<T> {
12
+ endpoint: string;
13
+ status: number;
14
+ code: number;
15
+ locale: string;
16
+ message?: string | null;
17
+ errors?: unknown | null;
18
+ data: T;
19
+ cacheSession?: string;
20
+ }
21
+ interface PreviewFetchPropertyMeta {
22
+ id: number;
23
+ key: string;
24
+ normalizedKey: string;
25
+ label: string;
26
+ viewType: string;
27
+ configuration: Record<string, unknown> | null;
28
+ source?: string;
29
+ order: number;
30
+ isRequired?: boolean;
31
+ isSystem?: boolean;
32
+ }
33
+ interface PreviewFetchValueCell {
34
+ raw: unknown;
35
+ value: unknown;
36
+ display?: string | null;
37
+ [key: string]: unknown;
38
+ }
39
+ interface PreviewFetchRecord {
40
+ id: number;
41
+ name?: string;
42
+ schemaId?: number;
43
+ values: Record<string, PreviewFetchValueCell>;
44
+ }
45
+ interface PreviewFetchSchema {
46
+ id: number;
47
+ key: string;
48
+ name: string;
49
+ order?: number;
50
+ typeGroup?: string;
51
+ }
52
+ interface PreviewFetchCatalog {
53
+ properties: PreviewFetchPropertyMeta[];
54
+ }
55
+ interface PreviewFetchRecordResponse {
56
+ contextKey: string;
57
+ schemas?: PreviewFetchSchema[];
58
+ catalog?: PreviewFetchCatalog;
59
+ record?: PreviewFetchRecord | null;
60
+ projectionMeta?: {
61
+ kind?: string;
62
+ };
63
+ }
64
+ interface DisplayConfiguration {
65
+ contextKey: string;
66
+ areaKey: string;
67
+ propertyKey: string;
68
+ order: number;
69
+ configuration: Record<string, unknown>;
70
+ }
71
+ interface PreviewResponse {
72
+ contextKey: string;
73
+ schemas: PreviewFetchSchema[];
74
+ catalog: PreviewFetchCatalog;
75
+ record: PreviewFetchRecord | null;
76
+ displayConfigurations: DisplayConfiguration[];
77
+ }
78
+
79
+ declare class ClientInstancePreview implements OnDestroy {
80
+ private readonly clientInstancePreviewApiService;
81
+ private loadSub?;
82
+ readonly config: _angular_core.InputSignal<ClientInstancePreviewConfig>;
83
+ readonly loading: _angular_core.WritableSignal<boolean>;
84
+ readonly error: _angular_core.WritableSignal<string | null>;
85
+ readonly response: _angular_core.WritableSignal<PreviewResponse | null>;
86
+ readonly entities: _angular_core.Signal<EntityData[]>;
87
+ constructor();
88
+ load(config: ClientInstancePreviewConfig): void;
89
+ ngOnDestroy(): void;
90
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientInstancePreview, never>;
91
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClientInstancePreview, "mt-client-instance-preview", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
92
+ }
93
+
94
+ declare class ClientInstancePreviewApiService {
95
+ private readonly http;
96
+ private readonly fetchBaseUrl;
97
+ private readonly displayConfigBaseUrl;
98
+ resolve(config: ClientInstancePreviewConfig): Observable<Response<PreviewResponse>>;
99
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientInstancePreviewApiService, never>;
100
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ClientInstancePreviewApiService>;
101
+ }
102
+
103
+ export { ClientInstancePreview, ClientInstancePreviewApiService };
104
+ export type { ClientInstancePreviewConfig, DisplayConfiguration, PreviewFetchCatalog, PreviewFetchPropertyMeta, PreviewFetchRecord, PreviewFetchRecordResponse, PreviewFetchSchema, PreviewFetchValueCell, PreviewResponse, Response };