{"version":3,"file":"sixbell-telco-sdk-components-data-table.mjs","sources":["../../../projects/sdk/components/data-table/src/data-table-context.service.ts","../../../projects/sdk/components/data-table/actions/actions.component.ts","../../../projects/sdk/components/data-table/data-table-empty-actions/data-table-empty-actions.component.ts","../../../projects/sdk/components/data-table/data-table-empty-actions/data-table-empty-actions.component.html","../../../projects/sdk/components/data-table/expandable/expandable.component.ts","../../../projects/sdk/components/data-table/selection/selection.component.ts","../../../projects/sdk/components/data-table/sortable-header/sortable-header.component.ts","../../../projects/sdk/components/data-table/src/data-table.component.ts","../../../projects/sdk/components/data-table/src/data-table.component.html","../../../projects/sdk/components/data-table/sub-component-toggle/sub-component-toggle.component.ts","../../../projects/sdk/components/data-table/sixbell-telco-sdk-components-data-table.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { TableContentSizeProps } from '@sixbell-telco/sdk/components/table';\n\n/**\n * Context service to share data table configuration with sub-components\n * This allows sub-components to automatically sync their sizes with the parent data table\n */\n@Injectable()\nexport class DataTableContextService {\n\t/**\n\t * Current table size that sub-components can subscribe to\n\t */\n\treadonly size = signal<TableContentSizeProps>('sm');\n\n\t/**\n\t * Update the table size - called by the main data table component\n\t */\n\tsetSize(size: TableContentSizeProps) {\n\t\tthis.size.set(size);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { matMoreVert } from '@sixbell-telco/sdk/components/icon/material/baseline';\nimport { TableActionsComponent } from '@sixbell-telco/sdk/components/table';\nimport { type CellContext, injectFlexRenderContext, RowData } from '@tanstack/angular-table';\nimport { DataTableContextService } from '../src/data-table-context.service';\nimport { DataTableActionConfig, DataTableActionEvent, DataTableActionsMode, DataTableActionsSizeProps } from './actions.types';\n\n/**\n * Data-table actions component that auto-syncs with the parent data-table size\n * and provides row context from TanStack Table.\n *\n * @remarks\n * This component wraps `st-table-actions` for use within TanStack-based data tables.\n * It injects the flex render context to access the row data and the data table context\n * to automatically synchronize the action button sizes with the table size.\n *\n * @example\n * ```typescript\n * // In column definitions:\n * {\n *   id: 'actions',\n *   header: 'Actions',\n *   enableSorting: false,\n *   cell: () => flexRenderComponent(DataTableActionsComponent, {\n *     inputs: { actions: this.userActions },\n *     outputs: { actionTriggered: (event) => this.handleAction(event.action, event.row) },\n *   }),\n * }\n * ```\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-actions',\n\timports: [TableActionsComponent],\n\ttemplate: `\n\t\t<st-table-actions\n\t\t\t[actions]=\"actions()\"\n\t\t\t[mode]=\"mode()\"\n\t\t\t[size]=\"actionsSize()\"\n\t\t\t[triggerIcon]=\"triggerIcon()\"\n\t\t\t(actionTriggered)=\"onActionClick($event)\"\n\t\t/>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableActionsComponent<T extends RowData> {\n\t/**\n\t * TanStack Table context injected by flexRender\n\t */\n\treadonly context = injectFlexRenderContext<CellContext<T, unknown>>();\n\n\t/**\n\t * Data table context for size synchronization\n\t */\n\treadonly dataTableContext = inject(DataTableContextService);\n\n\t/**\n\t * Array of action configurations.\n\t */\n\treadonly actions = input<DataTableActionConfig[]>([]);\n\n\t/**\n\t * Rendering mode for the actions.\n\t * @defaultValue 'inline'\n\t */\n\treadonly mode = input<DataTableActionsMode>('inline');\n\n\t/**\n\t * Icon for the dropdown trigger button.\n\t * @defaultValue matMoreVert (Material vertical dots icon)\n\t */\n\treadonly triggerIcon = input<string>(matMoreVert);\n\n\t/**\n\t * Emitted when an action is triggered. Includes both the action config and the row data.\n\t */\n\treadonly actionTriggered = output<DataTableActionEvent<T>>();\n\n\t/**\n\t * @internal\n\t * Computed action size synchronized with the parent data-table size.\n\t */\n\treadonly actionsSize = computed<DataTableActionsSizeProps>(() => {\n\t\tconst tableSize = this.dataTableContext.size();\n\t\tswitch (tableSize) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'md':\n\t\t\t\treturn 'md';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'lg';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'xl';\n\t\t\tdefault:\n\t\t\t\treturn 'md';\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Handles action click from the inner st-table-actions and emits with row context.\n\t */\n\tonActionClick(action: DataTableActionConfig): void {\n\t\tthis.actionTriggered.emit({ action, row: this.context.row.original });\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n\tselector: 'st-data-table-empty-actions',\n\tstandalone: true,\n\timports: [CommonModule],\n\ttemplateUrl: './data-table-empty-actions.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableEmptyActionsComponent {}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { ButtonComponent, ButtonSizeProps } from '@sixbell-telco/sdk/components/button';\nimport { IconComponent, IconSizeProps } from '@sixbell-telco/sdk/components/icon';\nimport { matArrowUpward, matInfo, matKeyboardArrowDown, matSwapVert } from '@sixbell-telco/sdk/components/icon/material/baseline';\nimport { injectFlexRenderContext, RowData, type CellContext, type HeaderContext, type Row } from '@tanstack/angular-table';\nimport { DataTableContextService } from '../src/data-table-context.service';\n\n/**\n * Expandable cell component that shows row data and expand/collapse toggle\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-expandable-cell',\n\timports: [CommonModule, IconComponent, ButtonComponent],\n\ttemplate: `\n\t\t<div [style.--depth]=\"row.depth\">\n\t\t\t<div>\n\t\t\t\t@if (row.getCanExpand()) {\n\t\t\t\t\t<st-button\n\t\t\t\t\t\tvariant=\"base\"\n\t\t\t\t\t\t[size]=\"buttonSize()\"\n\t\t\t\t\t\t[square]=\"true\"\n\t\t\t\t\t\t[link]=\"true\"\n\t\t\t\t\t\tclass=\"group\"\n\t\t\t\t\t\t[stopPropagation]=\"true\"\n\t\t\t\t\t\t(triggered)=\"row.getToggleExpandedHandler()()\"\n\t\t\t\t\t\t[attr.aria-expanded]=\"row.getIsExpanded()\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<st-icon\n\t\t\t\t\t\t\tclass=\"transition-transform duration-300 ease-in-out group-aria-[expanded=false]:rotate-0 group-aria-[expanded=true]:rotate-180\"\n\t\t\t\t\t\t\t[icon]=\"iconChevronDown\"\n\t\t\t\t\t\t\t[size]=\"iconSize()\"\n\t\t\t\t\t\t></st-icon>\n\t\t\t\t\t</st-button>\n\t\t\t\t} @else {\n\t\t\t\t\t<span>&nbsp;&nbsp;</span>\n\t\t\t\t}\n\t\t\t\t{{ context.getValue() }}\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstyles: `\n\t\t:host {\n\t\t\t> div {\n\t\t\t\tpadding-left: calc(2rem * var(--depth, 1));\n\t\t\t}\n\t\t}\n\t`,\n})\nexport class DataTableExpandableCellComponent<T extends RowData> {\n\t/**\n\t * TanStack Table context injected by flexRender\n\t */\n\tcontext = injectFlexRenderContext<CellContext<T, unknown>>();\n\n\t/**\n\t * Data table context for size synchronization\n\t */\n\tdataTableContext = inject(DataTableContextService);\n\n\t/**\n\t * Get the row instance from context\n\t */\n\tget row() {\n\t\treturn this.context.row;\n\t}\n\n\t/** @internal */\n\treadonly iconChevronDown = matKeyboardArrowDown;\n\n\t/**\n\t * @internal\n\t * Computes button size based on data table size\n\t */\n\treadonly buttonSize = computed<ButtonSizeProps>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'md':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'md';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes icon size based on data table size\n\t */\n\treadonly iconSize = computed<IconSizeProps>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'md':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'md';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t});\n}\n\n/**\n * Expandable header cell component with sorting capability and expand all functionality\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-expandable-header-cell',\n\timports: [CommonModule, IconComponent, ButtonComponent],\n\ttemplate: `\n\t\t<div class=\"inline-flex items-center gap-1\">\n\t\t\t<st-button\n\t\t\t\tvariant=\"base\"\n\t\t\t\t[size]=\"buttonSize()\"\n\t\t\t\t[square]=\"true\"\n\t\t\t\t[link]=\"true\"\n\t\t\t\t[stopPropagation]=\"true\"\n\t\t\t\t(triggered)=\"context.table.getToggleAllRowsExpandedHandler()($event)\"\n\t\t\t\tclass=\"group\"\n\t\t\t\t[attr.aria-expanded]=\"context.table.getIsAllRowsExpanded()\"\n\t\t\t>\n\t\t\t\t<st-icon\n\t\t\t\t\tclass=\"transition-transform duration-300 ease-in-out group-aria-[expanded=false]:rotate-0 group-aria-[expanded=true]:rotate-180\"\n\t\t\t\t\t[icon]=\"iconChevronDown\"\n\t\t\t\t\t[size]=\"iconSize()\"\n\t\t\t\t></st-icon>\n\t\t\t</st-button>\n\t\t\t<!-- Column Label -->\n\t\t\t<span class=\"font-bold\">{{ label() }}</span>\n\t\t\t<!-- Button for sorting -->\n\t\t\t@if (canSort()) {\n\t\t\t\t<st-button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t[size]=\"buttonSize()\"\n\t\t\t\t\t[square]=\"true\"\n\t\t\t\t\t[ghost]=\"true\"\n\t\t\t\t\t[stopPropagation]=\"true\"\n\t\t\t\t\t(triggered)=\"sortToggle.emit()\"\n\t\t\t\t\tclass=\"group\"\n\t\t\t\t\t[attr.aria-label]=\"'Sort by ' + label()\"\n\t\t\t\t\t[attr.aria-sort]=\"computedAriaSortAttribute()\"\n\t\t\t\t>\n\t\t\t\t\t<st-icon\n\t\t\t\t\t\tclass=\"transition-transform duration-300 ease-in-out group-aria-[sort=ascending]:rotate-0 group-aria-[sort=descending]:rotate-180\"\n\t\t\t\t\t\t[icon]=\"currentSortIcon()\"\n\t\t\t\t\t\t[size]=\"iconSize()\"\n\t\t\t\t\t></st-icon>\n\t\t\t\t</st-button>\n\t\t\t}\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableExpandableHeaderCellComponent<T extends RowData> {\n\t/**\n\t * TanStack Table context injected by flexRender\n\t */\n\treadonly context = injectFlexRenderContext<HeaderContext<T, unknown>>();\n\n\t/**\n\t * Data table context for size synchronization\n\t */\n\treadonly dataTableContext = inject(DataTableContextService);\n\n\t/**\n\t * Display label for the column\n\t */\n\treadonly label = input.required<string>();\n\n\t/**\n\t * Whether this column can be sorted\n\t */\n\treadonly canSort = input<boolean>(false);\n\n\t/**\n\t * Current sort state of the column\n\t */\n\treadonly sortState = input<'asc' | 'desc' | false>(false);\n\n\t/**\n\t * Event emitted when sort toggle is requested\n\t */\n\treadonly sortToggle = output<void>();\n\n\t/**\n\t * Get the table instance from context\n\t */\n\tget table() {\n\t\treturn this.context.table;\n\t}\n\n\t/** @internal */\n\treadonly iconChevronDown = matKeyboardArrowDown;\n\n\t/** @internal */\n\treadonly iconDefaultSort = matSwapVert;\n\n\t/** @internal */\n\treadonly iconAscending = matArrowUpward;\n\n\t/**\n\t * @internal\n\t * Computes button size based on data table size\n\t */\n\treadonly buttonSize = computed<ButtonSizeProps>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'md':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'md';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes icon size based on data table size\n\t */\n\treadonly iconSize = computed<IconSizeProps>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'md':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'md';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes the appropriate icon based on current sort state\n\t */\n\treadonly currentSortIcon = computed(() => {\n\t\tswitch (this.sortState()) {\n\t\t\tcase 'asc':\n\t\t\tcase 'desc':\n\t\t\t\treturn this.iconAscending;\n\t\t\tdefault:\n\t\t\t\treturn this.iconDefaultSort;\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes aria-sort attribute for accessibility\n\t */\n\treadonly computedAriaSortAttribute = computed<'ascending' | 'descending' | 'none'>(() => {\n\t\tswitch (this.sortState()) {\n\t\t\tcase 'asc':\n\t\t\t\treturn 'ascending';\n\t\t\tcase 'desc':\n\t\t\t\treturn 'descending';\n\t\t\tdefault:\n\t\t\t\treturn 'none';\n\t\t}\n\t});\n}\n\n/**\n * Sub-component toggle cell for controlling custom sub-component visibility\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-sub-toggle-cell',\n\timports: [CommonModule, IconComponent, ButtonComponent],\n\ttemplate: `\n\t\t@if (canToggleSubComponent()) {\n\t\t\t<st-button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"xs\"\n\t\t\t\t[circle]=\"true\"\n\t\t\t\t[ghost]=\"true\"\n\t\t\t\tclass=\"group\"\n\t\t\t\t[stopPropagation]=\"true\"\n\t\t\t\t(triggered)=\"handleToggle()\"\n\t\t\t\t[attr.aria-expanded]=\"isExpanded()\"\n\t\t\t\t[attr.title]=\"isExpanded() ? 'Hide Details' : 'Show Details'\"\n\t\t\t>\n\t\t\t\t<st-icon\n\t\t\t\t\tclass=\"transition-transform duration-300 ease-in-out group-aria-[expanded=false]:rotate-0 group-aria-[expanded=true]:rotate-180\"\n\t\t\t\t\t[icon]=\"expandIcon\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t></st-icon>\n\t\t\t\t<span class=\"sr-only\">{{ isExpanded() ? 'Hide Details' : 'Show Details' }}</span>\n\t\t\t</st-button>\n\t\t} @else {\n\t\t\t<!-- Display an informational icon if a sub-component cannot be shown for this row -->\n\t\t\t<st-button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"xs\"\n\t\t\t\t[circle]=\"true\"\n\t\t\t\t[ghost]=\"true\"\n\t\t\t\t[attr.aria-expanded]=\"isExpanded()\"\n\t\t\t\t[attr.title]=\"isExpanded() ? 'Hide Details' : 'Show Details'\"\n\t\t\t\t[disabled]=\"true\"\n\t\t\t>\n\t\t\t\t<st-icon [icon]=\"infoIcon\" size=\"sm\"></st-icon>\n\t\t\t\t<span class=\"sr-only\">{{ isExpanded() ? 'Hide Details' : 'Show Details' }}</span>\n\t\t\t</st-button>\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableSubToggleCellComponent {\n\t/**\n\t * The table row instance\n\t */\n\treadonly row = input.required<Row<unknown>>();\n\n\t/**\n\t * Whether the sub-component is currently expanded\n\t */\n\treadonly isExpanded = input<boolean>(false);\n\n\t/**\n\t * Whether this row can toggle a sub-component\n\t */\n\treadonly canToggleSubComponent = input<boolean>(false);\n\n\t/**\n\t * Event emitted when toggle is clicked\n\t */\n\treadonly toggled = output<string>();\n\n\t/** @internal */\n\treadonly expandIcon = matKeyboardArrowDown;\n\n\t/** @internal */\n\treadonly infoIcon = matInfo;\n\n\t/**\n\t * @internal\n\t * Handles the toggle click\n\t */\n\thandleToggle() {\n\t\tthis.toggled.emit(this.row().id);\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { CheckboxComponent } from '@sixbell-telco/sdk/components/forms/checkbox';\nimport { type CellContext, type HeaderContext, injectFlexRenderContext, RowData } from '@tanstack/angular-table';\nimport { DataTableContextService } from '../src/data-table-context.service';\n\n/**\n * Header checkbox component for selecting/deselecting all rows on current page\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-head-selection',\n\timports: [CheckboxComponent, CommonModule],\n\ttemplate: `\n\t\t<st-checkbox\n\t\t\t[value]=\"context.table.getIsAllPageRowsSelected()\"\n\t\t\t(valueUpdated)=\"context.table.toggleAllPageRowsSelected()\"\n\t\t\t[size]=\"checkboxSize()\"\n\t\t></st-checkbox>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableHeadSelectionComponent<T extends RowData> {\n\t/**\n\t * TanStack Table context injected by flexRender\n\t */\n\tcontext = injectFlexRenderContext<HeaderContext<T, unknown>>();\n\n\t/**\n\t * Data table context for size synchronization\n\t */\n\treadonly dataTableContext = inject(DataTableContextService);\n\n\t/**\n\t * Computed checkbox size based on table size\n\t */\n\treadonly checkboxSize = computed(() => {\n\t\tconst tableSize = this.dataTableContext.size();\n\t\tswitch (tableSize) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'md':\n\t\t\t\treturn 'md';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'lg';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'lg';\n\t\t\tdefault:\n\t\t\t\treturn 'sm';\n\t\t}\n\t});\n}\n\n/**\n * Row checkbox component for individual row selection\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-row-selection',\n\timports: [CheckboxComponent, CommonModule],\n\ttemplate: `\n\t\t<st-checkbox\n\t\t\t[value]=\"context.row.getIsSelected()\"\n\t\t\t[disabled]=\"!context.row.getCanSelect()\"\n\t\t\t(valueUpdated)=\"context.row.toggleSelected()\"\n\t\t\t[size]=\"checkboxSize()\"\n\t\t></st-checkbox>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableRowSelectionComponent<T extends RowData> {\n\t/**\n\t * TanStack Table context injected by flexRender\n\t */\n\tcontext = injectFlexRenderContext<CellContext<T, unknown>>();\n\n\t/**\n\t * Data table context for size synchronization\n\t */\n\treadonly dataTableContext = inject(DataTableContextService);\n\n\t/**\n\t * Computed checkbox size based on table size\n\t */\n\treadonly checkboxSize = computed(() => {\n\t\tconst tableSize = this.dataTableContext.size();\n\t\tswitch (tableSize) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'md':\n\t\t\t\treturn 'md';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'lg';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'lg';\n\t\t\tdefault:\n\t\t\t\treturn 'sm';\n\t\t}\n\t});\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { ButtonComponent, ButtonSizeProps } from '@sixbell-telco/sdk/components/button';\nimport { IconComponent, IconSizeProps } from '@sixbell-telco/sdk/components/icon';\nimport { matArrowUpward, matSwapVert } from '@sixbell-telco/sdk/components/icon/material/baseline';\nimport { TextDirective, TextPreset } from '@sixbell-telco/sdk/directives/text';\nimport { DataTableContextService } from '../src/data-table-context.service';\n\n/**\n * Sortable header component for data table columns\n *\n * @example\n * ```typescript\n * flexRenderComponent(DataTableSortableHeaderComponent, {\n *   inputs: {\n *     label: 'Column Name',\n *     sortState: column.getIsSorted(),\n *   },\n *   outputs: {\n *     sortToggle: () => column.toggleSorting(),\n *   },\n * })\n * ```\n */\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-sortable-header',\n\timports: [CommonModule, IconComponent, ButtonComponent, TextDirective],\n\ttemplate: `\n\t\t<div class=\"inline-flex items-center gap-1\">\n\t\t\t<span [stText]=\"labelPreset()\" class=\"font-heading font-semibold\">{{ label() }}</span>\n\t\t\t<st-button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\t[size]=\"buttonSize()\"\n\t\t\t\t[square]=\"true\"\n\t\t\t\t[ghost]=\"true\"\n\t\t\t\t[stopPropagation]=\"true\"\n\t\t\t\t(triggered)=\"sortToggle.emit()\"\n\t\t\t\tclass=\"group\"\n\t\t\t\t[attr.aria-label]=\"'Sort by ' + label()\"\n\t\t\t\t[attr.aria-sort]=\"computedAriaSortAttribute()\"\n\t\t\t>\n\t\t\t\t<st-icon\n\t\t\t\t\tclass=\"transition-transform duration-300 ease-in-out group-aria-[sort=ascending]:rotate-0 group-aria-[sort=descending]:rotate-180\"\n\t\t\t\t\t[icon]=\"currentSortIcon()\"\n\t\t\t\t\t[size]=\"iconSize()\"\n\t\t\t\t></st-icon>\n\t\t\t</st-button>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableSortableHeaderComponent {\n\treadonly dataTableContext = inject(DataTableContextService);\n\n\t/**\n\t * Display label for the column\n\t */\n\treadonly label = input.required<string>();\n\n\t/**\n\t * Current sort state of the column\n\t */\n\treadonly sortState = input<'asc' | 'desc' | false>(false);\n\n\t/**\n\t * Event emitted when sort toggle is requested\n\t */\n\treadonly sortToggle = output<void>();\n\n\t/** @internal */\n\treadonly iconDefaultSort = matSwapVert;\n\n\t/** @internal */\n\treadonly iconAscending = matArrowUpward;\n\n\t/**\n\t * @internal\n\t * Computes button size based on data table size\n\t */\n\treadonly buttonSize = computed<ButtonSizeProps>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'md':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'md';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'lg';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes icon size based on data table size\n\t */\n\treadonly iconSize = computed<IconSizeProps>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'sm':\n\t\t\t\treturn 'xs';\n\t\t\tcase 'md':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'lg':\n\t\t\t\treturn 'sm';\n\t\t\tcase 'xl':\n\t\t\t\treturn 'md';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t});\n\n\treadonly labelPreset = computed<TextPreset>(() => {\n\t\tswitch (this.dataTableContext.size()) {\n\t\t\tcase 'xs':\n\t\t\t\treturn '9';\n\t\t\tcase 'sm':\n\t\t\t\treturn '8';\n\t\t\tcase 'md':\n\t\t\t\treturn '7';\n\t\t\tcase 'lg':\n\t\t\t\treturn '7';\n\t\t\tcase 'xl':\n\t\t\t\treturn '6';\n\t\t\tdefault:\n\t\t\t\treturn '8';\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes the appropriate icon based on current sort state\n\t */\n\treadonly currentSortIcon = computed(() => {\n\t\tswitch (this.sortState()) {\n\t\t\tcase 'asc':\n\t\t\tcase 'desc':\n\t\t\t\treturn this.iconAscending;\n\t\t\tdefault:\n\t\t\t\treturn this.iconDefaultSort;\n\t\t}\n\t});\n\n\t/**\n\t * @internal\n\t * Computes aria-sort attribute for accessibility\n\t */\n\treadonly computedAriaSortAttribute = computed<'ascending' | 'descending' | 'none'>(() => {\n\t\tswitch (this.sortState()) {\n\t\t\tcase 'asc':\n\t\t\t\treturn 'ascending';\n\t\t\tcase 'desc':\n\t\t\t\treturn 'descending';\n\t\t\tdefault:\n\t\t\t\treturn 'none';\n\t\t}\n\t});\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output } from '@angular/core';\nimport { heroDocumentText } from '@ng-icons/heroicons/outline';\nimport { matSearchOff } from '@ng-icons/material-icons/baseline';\nimport { SelectComponent, SelectSizeProps } from '@sixbell-telco/sdk/components/forms/select';\nimport { IconComponent } from '@sixbell-telco/sdk/components/icon';\nimport { PaginationType, PaginatorComponent, PaginatorSizeProps } from '@sixbell-telco/sdk/components/paginator';\nimport {\n\tgetTableHierarchyTypographyClasses,\n\tgetTableSizeTokens,\n\tresolveTableSize,\n\tTableContainerHeightProps,\n\tTableContentSizeProps,\n\tTableFooterLayoutTokens,\n\tTableResolvedSize,\n\tTableSizeTokens,\n} from '@sixbell-telco/sdk/components/table';\nimport { TextDirective, TextPreset } from '@sixbell-telco/sdk/directives/text';\nimport { cn } from '@sixbell-telco/sdk/utils/cn';\nimport { TranslatePipe, TranslateService } from '@sixbell-telco/sdk/utils/translation';\nimport { cva } from 'class-variance-authority';\nimport { DataTableContextService } from './data-table-context.service';\nimport { DataTablePagination } from './models';\n\nconst DATA_TABLE_FOOTER_LAYOUT_BY_SIZE: Record<TableResolvedSize, TableFooterLayoutTokens> = {\n\txs: {\n\t\twrapper: ['gap-2', 'pb-2'],\n\t\tdivider: ['px-3'],\n\t\tcontent: ['gap-2', 'px-3', '@2xl:gap-2'],\n\t},\n\tsm: {\n\t\twrapper: ['gap-2', 'pb-2'],\n\t\tdivider: ['px-3'],\n\t\tcontent: ['gap-2', 'px-3', '@2xl:gap-2'],\n\t},\n\tmd: {\n\t\twrapper: ['gap-4', 'pb-3'],\n\t\tdivider: ['px-4'],\n\t\tcontent: ['gap-4', 'px-4', '@2xl:gap-2'],\n\t},\n\tlg: {\n\t\twrapper: ['gap-4', 'pb-3'],\n\t\tdivider: ['px-4'],\n\t\tcontent: ['gap-4', 'px-4', '@2xl:gap-2'],\n\t},\n\txl: {\n\t\twrapper: ['gap-4', 'pb-3'],\n\t\tdivider: ['px-4'],\n\t\tcontent: ['gap-4', 'px-4', '@2xl:gap-2'],\n\t},\n};\n\nfunction getDataTableFooterLayoutTokens(size: TableContentSizeProps): TableFooterLayoutTokens {\n\treturn DATA_TABLE_FOOTER_LAYOUT_BY_SIZE[resolveTableSize(size)];\n}\n\n/** Configuration object for data table styling variants */\nexport type DataTableVariantProps = {\n\tsize?: TableContentSizeProps;\n\tcontainerHeight?: TableContainerHeightProps;\n};\n\n/**\n * @internal\n * Generates data table classes with size and height variants\n */\nexport const dataTableContent = cva(\n\t[\n\t\t'table',\n\t\t'relative',\n\t\t'text-pretty',\n\t\t'[&_th]:bg-neutral [&_th]:text-neutral-content',\n\t\t'[&_th]:px-4',\n\t\t'[&_td]:px-4',\n\t\t'[&_tbody_tr]:border-transparent',\n\t\t'rounded-t-box',\n\t\t'[&_tbody_tr]:border-transparent',\n\t],\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\txs: ['table-xs', ...getTableHierarchyTypographyClasses('xs')],\n\t\t\t\tsm: ['table-sm', ...getTableHierarchyTypographyClasses('sm')],\n\t\t\t\tmd: ['table-md', ...getTableHierarchyTypographyClasses('md')],\n\t\t\t\tlg: ['table-lg', ...getTableHierarchyTypographyClasses('lg')],\n\t\t\t\txl: ['table-xl', ...getTableHierarchyTypographyClasses('xl')],\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: 'sm',\n\t\t},\n\t},\n);\n\n/**\n * A styled container component for data tables - provides styling shell only\n *\n * This component is similar to st-table but with additional data table specific styling.\n * Users should compose their own table structure using TanStack Table and SDK components.\n *\n * @example\n * ```html\n * <st-data-table-container size=\"md\" height=\"lg\">\n *   <table>\n *     <thead>\n *       <tr>\n *         <th><st-data-table-sortable-header>Name</st-data-table-sortable-header></th>\n *       </tr>\n *     </thead>\n *     <tbody>\n *       <tr>\n *         <td>John Doe</td>\n *       </tr>\n *     </tbody>\n *   </table>\n * </st-data-table-container>\n * ```\n */\n@Component({\n\tselector: 'st-data-table',\n\timports: [CommonModule, PaginatorComponent, TextDirective, SelectComponent, TranslatePipe, IconComponent],\n\ttemplateUrl: './data-table.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [DataTableContextService],\n})\nexport class DataTableContainerComponent {\n\treadonly translationService = inject(TranslateService);\n\treadonly dataTableContext = inject(DataTableContextService);\n\treadonly resolvedSize = computed<TableResolvedSize>(() => resolveTableSize(this.size()));\n\n\t/**\n\t * Empty state icon for no data state\n\t * @defaultValue heroDocumentText\n\t */\n\tnoDataIcon = input<string>(heroDocumentText);\n\n\t/**\n\t * Empty state icon for no results state\n\t * @defaultValue matSearchOff\n\t */\n\tnoResultsIcon = input<string>(matSearchOff);\n\n\t/**\n\t * Table size variant\n\t * @defaultValue 'sm'\n\t */\n\tsize = input<TableContentSizeProps>('sm');\n\n\tconstructor() {\n\t\t// Update context when size changes\n\t\teffect(() => {\n\t\t\tthis.dataTableContext.setSize(this.resolvedSize());\n\t\t});\n\t}\n\n\t/**\n\t * Enable sticky header row\n\t * @defaultValue false\n\t */\n\tpinRows = input<boolean>(false);\n\n\t/**\n\t * Enable sticky first column\n\t * @defaultValue false\n\t */\n\tpinColumns = input<boolean>(false);\n\n\t/**\n\t * Apply zebra-striping to rows\n\t * @defaultValue false\n\t */\n\tzebra = input<boolean>(false);\n\n\t/**\n\t * Show row dividers (borders) between rows\n\t * @defaultValue false\n\t */\n\tbordered = input<boolean>(false);\n\n\t/**\n\t * Pagination control display variant\n\t * @defaultValue 'default'\n\t */\n\tpaginatorType = input<PaginationType>('default');\n\n\t/**\n\t * Total number of items across all pages\n\t * @defaultValue 0\n\t */\n\ttotalItems = input<number>(0);\n\n\t/**\n\t * Pagination configuration\n\t * @defaultValue { id: 'paginator', currentPage: 1, itemsPerPage: 10, search: '', sortColumn: null, sortDirection: null, filters: {} }\n\t */\n\tpagination = input<DataTablePagination>({\n\t\tid: 'paginator',\n\t\tcurrentPage: 1,\n\t\titemsPerPage: 10,\n\t\tsearch: '',\n\t\tsortColumn: null,\n\t\tsortDirection: null,\n\t\tfilters: {},\n\t});\n\n\t/**\n\t * Maximum number of pagination buttons to display\n\t * @defaultValue 4\n\t */\n\tmaxSize = input<number>(4);\n\n\t/** Event emitted when page changes */\n\tpageChanged = output<number>();\n\n\t/** Event emitted when page size changes */\n\tpageSizeChanged = output<number>();\n\n\treadonly ENTRIES = [5, 10, 20, 50, 100] as const;\n\n\treadonly entriesPerPageOptions = computed(() => {\n\t\treturn this.ENTRIES.map((n) => {\n\t\t\tconst translatedText = this.translationService.instant('sdk.dataTable.perPage', { count: n });\n\t\t\t// Fallback if translation fails\n\t\t\tconst fallbackText = `${n} / page`;\n\t\t\treturn {\n\t\t\t\tvalue: n,\n\t\t\t\ttext: translatedText && translatedText !== 'sdk.dataTable.perPage' ? translatedText : fallbackText,\n\t\t\t};\n\t\t});\n\t});\n\n\t/**\n\t * Computed total number of pages for the internal paginator.\n\t * Calculated from totalItems and itemsPerPage.\n\t */\n\treadonly totalPages = computed(() => {\n\t\tconst itemsPerPage = this.pagination().itemsPerPage || 1;\n\t\tconst totalItems = this.totalItems();\n\t\treturn Math.ceil(totalItems / itemsPerPage);\n\t});\n\n\t/**\n\t * Computed display range for current page entries\n\t * @example \"1-10\" of 100 entries\n\t */\n\tpaginationRange = computed(() => {\n\t\tconst start = this.pagination().currentPage * this.pagination().itemsPerPage - this.pagination().itemsPerPage + 1;\n\t\tconst end = Math.min(this.pagination().currentPage * this.pagination().itemsPerPage, this.totalItems());\n\t\treturn `${start}-${end}`;\n\t});\n\n\t/**\n\t * Function to determine if any filters are currently active\n\t * This allows the parent component to define what constitutes an \"active filter\"\n\t */\n\thasActiveFiltersCallback = input<(() => boolean) | undefined>();\n\n\t/**\n\t * Computed boolean indicating if any filters are currently active\n\t */\n\treadonly hasActiveFilters = computed(() => {\n\t\tconst callback = this.hasActiveFiltersCallback();\n\n\t\tif (callback) {\n\t\t\treturn callback();\n\t\t}\n\n\t\t// Fallback: check for basic search term only\n\t\tconst pagination = this.pagination();\n\t\treturn !!pagination.search?.trim();\n\t});\n\n\t/**\n\t * Computed boolean indicating if we should show \"no results\" vs \"no data\"\n\t */\n\treadonly hasNoResults = computed(() => {\n\t\treturn this.totalItems() === 0 && this.hasActiveFilters();\n\t});\n\n\t/**\n\t * Computed boolean indicating if we should show \"no data\" state\n\t */\n\treadonly hasNoData = computed(() => {\n\t\treturn this.totalItems() === 0 && !this.hasActiveFilters();\n\t});\n\n\t/**\n\t * Handles page navigation events\n\t * @param page - New page number\n\t */\n\thandlePageChange(page: number) {\n\t\tthis.pageChanged.emit(page);\n\t}\n\n\t/**\n\t * Handles page size changes\n\t * @param size - New items per page value\n\t */\n\thandlePageSizeChange(size: unknown) {\n\t\tlet resolved: number | undefined;\n\t\tif (typeof size === 'number') {\n\t\t\tresolved = size;\n\t\t} else if (size && typeof size === 'object' && 'value' in (size as Record<string, unknown>)) {\n\t\t\tconst v = (size as Record<string, unknown>)['value'];\n\t\t\tconst safeStringify = (x: unknown) => (['string', 'number', 'boolean'].includes(typeof x) ? String(x) : '0');\n\t\t\tresolved = typeof v === 'number' ? v : Number(safeStringify(v));\n\t\t} else {\n\t\t\tconst safeStringify = (x: unknown) => (['string', 'number', 'boolean'].includes(typeof x) ? String(x) : '0');\n\t\t\tresolved = Number(safeStringify(size)) || undefined;\n\t\t}\n\t\tconst s = Number(resolved || 1);\n\t\tthis.pageSizeChanged.emit(s);\n\t}\n\n\t/**\n\t * @internal\n\t * Computes typography variant for paginator text based on table size\n\t */\n\treadonly paginatorTextSize = computed<TextPreset>(() => {\n\t\treturn this.size() === 'sm' ? '8' : this.sizeTokens().footerPreset;\n\t});\n\n\treadonly sizeTokens = computed<TableSizeTokens>(() => getTableSizeTokens(this.size()));\n\n\treadonly footerLayoutTokens = computed(() => getDataTableFooterLayoutTokens(this.size()));\n\n\treadonly footerSelectSize = computed<SelectSizeProps>(() => this.sizeTokens().selectSize);\n\n\treadonly footerPaginatorSize = computed<PaginatorSizeProps>(() => this.sizeTokens().paginatorSize);\n\n\treadonly footerWrapperClass = computed(() => cn('@container flex w-full flex-col overflow-x-auto', this.footerLayoutTokens().wrapper));\n\n\treadonly footerDividerClass = computed(() =>\n\t\tcn('divider divider-neutral my-0 h-[0.0625rem] before:h-[0.0625rem] after:h-[0.0625rem]', this.footerLayoutTokens().divider),\n\t);\n\n\treadonly footerContentClass = computed(() =>\n\t\tcn(\n\t\t\t'flex flex-col items-center @2xl:flex-row @2xl:justify-between @4xl:grid @4xl:grid-cols-[auto_1fr_auto] @4xl:items-center',\n\t\t\tthis.footerLayoutTokens().content,\n\t\t),\n\t);\n\n\t/**\n\t * @internal\n\t * Computes table element classes based on current configuration\n\t */\n\treadonly tableClass = computed(() =>\n\t\tcn(\n\t\t\tdataTableContent({\n\t\t\t\tsize: this.size(),\n\t\t\t}),\n\t\t\t{\n\t\t\t\t'table-pin-rows': this.pinRows(),\n\t\t\t\t'table-pin-cols': this.pinColumns(),\n\t\t\t\t'table-zebra': this.zebra(),\n\t\t\t\t'table-bordered': this.bordered(),\n\t\t\t},\n\t\t),\n\t);\n\n\t/**\n\t * @internal\n\t * Computes table container classes based on height input\n\t */\n\treadonly tableContainerClass = computed(() => cn('rounded-t-box w-full flex-grow overflow-y-clip'));\n\n\t/**\n\t * @internal\n\t * Computes outer container classes based on size\n\t */\n\treadonly containerClass = computed(() =>\n\t\tcn('rounded-box border-neutral @container flex min-w-0 flex-col gap-3 overflow-x-auto border border-solid', {\n\t\t\t'gap-3 pb-3': this.size() === 'xs' || this.size() === 'sm' || this.size() === 'md',\n\t\t\t'gap-4 pb-4': this.size() === 'lg',\n\t\t\t'gap-5 pb-5': this.size() === 'xl',\n\t\t}),\n\t);\n}\n","<div [class]=\"containerClass()\">\n\t<!-- Table container -->\n\t<div [class]=\"tableContainerClass()\">\n\t\t<div class=\"w-full flex-grow overflow-x-auto\">\n\t\t\t@if (hasNoData()) {\n\t\t\t\t<!-- No data state -->\n\t\t\t\t<div class=\"flex flex-col items-center justify-center gap-1.5 py-12 text-center\">\n\t\t\t\t\t<div class=\"text-base-content/40\">\n\t\t\t\t\t\t<st-icon [icon]=\"noDataIcon()\" size=\"lg\" color=\"base-content\" class=\"mx-auto opacity-40\"></st-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"flex flex-col items-center justify-center gap-0.5\">\n\t\t\t\t\t\t<h3 stText=\"6\" class=\"text-base-content/60\">{{ 'sdk.dataTable.noData.title' | translate }}</h3>\n\t\t\t\t\t\t<p stText=\"8\" class=\"text-base-content/40\">{{ 'sdk.dataTable.noData.message' | translate }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t} @else if (hasNoResults()) {\n\t\t\t\t<!-- No results from filters state -->\n\t\t\t\t<div class=\"flex flex-col items-center justify-center gap-1.5 py-12 text-center\">\n\t\t\t\t\t<div class=\"text-base-content/40\">\n\t\t\t\t\t\t<st-icon [icon]=\"noResultsIcon()\" size=\"xl\" color=\"base-content\" class=\"mx-auto opacity-40\"></st-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"flex flex-col items-center justify-center gap-0.5\">\n\t\t\t\t\t\t<h3 stText=\"6\" class=\"text-base-content/60\">{{ 'sdk.dataTable.noResults.title' | translate }}</h3>\n\t\t\t\t\t\t<p stText=\"8\" class=\"text-base-content/40\">{{ 'sdk.dataTable.noResults.message' | translate }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"mt-3\">\n\t\t\t\t\t\t<ng-content select=\"st-data-table-empty-actions\"></ng-content>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t} @else {\n\t\t\t\t<table [class]=\"tableClass()\">\n\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t</table>\n\t\t\t}\n\t\t</div>\n\t</div>\n\n\t<!-- Pagination from showcase -->\n\t<div [class]=\"footerWrapperClass()\">\n\t\t<!-- Divider -->\n\t\t<div [class]=\"footerDividerClass()\"></div>\n\t\t<!-- Paginator Container -->\n\t\t<div [class]=\"footerContentClass()\">\n\t\t\t<!-- Entries range text -->\n\t\t\t<div class=\"flex items-center justify-end\">\n\t\t\t\t<span [stText]=\"paginatorTextSize()\">{{ 'sdk.dataTable.entriesRange' | translate: { range: paginationRange(), total: totalItems() } }}</span>\n\t\t\t</div>\n\n\t\t\t<!-- Paginator -->\n\t\t\t<div class=\"flex justify-center\">\n\t\t\t\t<st-paginator\n\t\t\t\t\t[pages]=\"totalPages()\"\n\t\t\t\t\t[currentPage]=\"pagination().currentPage\"\n\t\t\t\t\t[size]=\"footerPaginatorSize()\"\n\t\t\t\t\t[maxSize]=\"maxSize()\"\n\t\t\t\t\ttype=\"default\"\n\t\t\t\t\t(pageChanged)=\"handlePageChange($event)\"\n\t\t\t\t></st-paginator>\n\t\t\t</div>\n\n\t\t\t<!-- Entries per page dropdown -->\n\t\t\t<div class=\"flex items-center justify-end\">\n\t\t\t\t<span class=\"sr-only\">{{ 'sdk.dataTable.entriesByPage' | translate }}</span>\n\t\t\t\t<st-select\n\t\t\t\t\t[options]=\"entriesPerPageOptions()\"\n\t\t\t\t\t[value]=\"pagination().itemsPerPage\"\n\t\t\t\t\tvalueKey=\"value\"\n\t\t\t\t\tdisplayKey=\"text\"\n\t\t\t\t\t[size]=\"footerSelectSize()\"\n\t\t\t\t\t(valueUpdated)=\"handlePageSizeChange($event)\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t[allowClear]=\"false\"\n\t\t\t\t></st-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { ButtonComponent } from '@sixbell-telco/sdk/components/button';\nimport { IconComponent } from '@sixbell-telco/sdk/components/icon';\nimport { matInfo, matKeyboardArrowDown } from '@sixbell-telco/sdk/components/icon/material/baseline';\nimport { Row, RowData } from '@tanstack/angular-table';\n\n@Component({\n\tstandalone: true,\n\tselector: 'st-data-table-sub-component-toggle-cell',\n\timports: [CommonModule, IconComponent, ButtonComponent],\n\ttemplate: `\n\t\t@if (canToggleSubComponent()) {\n\t\t\t<st-button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"xs\"\n\t\t\t\t[circle]=\"true\"\n\t\t\t\t[ghost]=\"true\"\n\t\t\t\tclass=\"group\"\n\t\t\t\t(click)=\"toggled.emit(row().id)\"\n\t\t\t\t[attr.aria-expanded]=\"isExpanded()\"\n\t\t\t\ttitle=\"{{ isExpanded() ? 'Hide Details' : 'Show Details' }}\"\n\t\t\t>\n\t\t\t\t<st-icon\n\t\t\t\t\tclass=\"transition-transform duration-300 ease-in-out group-aria-[expanded=false]:rotate-0 group-aria-[expanded=true]:rotate-180\"\n\t\t\t\t\t[icon]=\"iconChevronDown\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t></st-icon>\n\t\t\t\t<span class=\"sr-only\">{{ isExpanded() ? 'Hide Details' : 'Show Details' }}</span>\n\t\t\t</st-button>\n\t\t} @else {\n\t\t\t<!-- Display an informational icon if a sub-component cannot be shown for this row -->\n\t\t\t<st-button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"xs\"\n\t\t\t\t[circle]=\"true\"\n\t\t\t\t[ghost]=\"true\"\n\t\t\t\t[attr.aria-expanded]=\"isExpanded()\"\n\t\t\t\ttitle=\"{{ isExpanded() ? 'Hide Details' : 'Show Details' }}\"\n\t\t\t\t[disabled]=\"true\"\n\t\t\t>\n\t\t\t\t<st-icon [icon]=\"iconInfo\" size=\"sm\"></st-icon>\n\t\t\t\t<span class=\"sr-only\">{{ isExpanded() ? 'Hide Details' : 'Show Details' }}</span>\n\t\t\t</st-button>\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableSubComponentToggleCellComponent<T extends RowData> {\n\treadonly row = input.required<Row<T>>();\n\treadonly isExpanded = input.required<boolean>(); // Current state of the sub-component for this row\n\treadonly toggled = output<string>(); // Emits row.id when clicked to trigger parent component update\n\n\t// Input to determine if this specific row is eligible to display a sub-component\n\treadonly canToggleSubComponent = input<boolean>(false);\n\n\treadonly iconChevronDown = matKeyboardArrowDown;\n\treadonly iconInfo = matInfo;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAGA;;;AAGG;MAEU,uBAAuB,CAAA;AACnC;;AAEG;AACM,IAAA,IAAI,GAAG,MAAM,CAAwB,IAAI,CAAC;AAEnD;;AAEG;AACH,IAAA,OAAO,CAAC,IAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACpB;wGAXY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAvB,uBAAuB,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;ACAD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAgBU,yBAAyB,CAAA;AACrC;;AAEG;IACM,OAAO,GAAG,uBAAuB,EAA2B;AAErE;;AAEG;AACM,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE3D;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAA0B,EAAE,CAAC;AAErD;;;AAGG;AACM,IAAA,IAAI,GAAG,KAAK,CAAuB,QAAQ,CAAC;AAErD;;;AAGG;AACM,IAAA,WAAW,GAAG,KAAK,CAAS,WAAW,CAAC;AAEjD;;AAEG;IACM,eAAe,GAAG,MAAM,EAA2B;AAE5D;;;AAGG;AACM,IAAA,WAAW,GAAG,QAAQ,CAA4B,MAAK;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC9C,QAAQ,SAAS;AAChB,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACH,IAAA,aAAa,CAAC,MAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACtE;wGA7DY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX3B;;;;;;;;AAQT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAYnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;MClCY,8BAA8B,CAAA;wGAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3C,6BACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKW,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIV,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;+BACC,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAEN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6BAAA,EAAA;;;AEAhD;;AAEG;MAyCU,gCAAgC,CAAA;AAC5C;;AAEG;IACH,OAAO,GAAG,uBAAuB,EAA2B;AAE5D;;AAEG;AACH,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAElD;;AAEG;AACH,IAAA,IAAI,GAAG,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG;IACxB;;IAGS,eAAe,GAAG,oBAAoB;AAE/C;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAkB,MAAK;AACpD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,QAAQ,GAAG,QAAQ,CAAgB,MAAK;AAChD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;wGA7DU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApClC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA3BS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqC1C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAxC5C,SAAS;iCACG,IAAI,EAAA,QAAA,EACN,+BAA+B,EAAA,OAAA,EAChC,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BT,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA;;AAyEhD;;AAEG;MAiDU,sCAAsC,CAAA;AAClD;;AAEG;IACM,OAAO,GAAG,uBAAuB,EAA6B;AAEvE;;AAEG;AACM,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE3D;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEzC;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;AAExC;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAyB,KAAK,CAAC;AAEzD;;AAEG;IACM,UAAU,GAAG,MAAM,EAAQ;AAEpC;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;IAC1B;;IAGS,eAAe,GAAG,oBAAoB;;IAGtC,eAAe,GAAG,WAAW;;IAG7B,aAAa,GAAG,cAAc;AAEvC;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAkB,MAAK;AACpD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,QAAQ,GAAG,QAAQ,CAAgB,MAAK;AAChD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;gBACV,OAAO,IAAI,CAAC,aAAa;AAC1B,YAAA;gBACC,OAAO,IAAI,CAAC,eAAe;;AAE9B,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,yBAAyB,GAAG,QAAQ,CAAsC,MAAK;AACvF,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,KAAK,KAAK;AACT,gBAAA,OAAO,WAAW;AACnB,YAAA,KAAK,MAAM;AACV,gBAAA,OAAO,YAAY;AACpB,YAAA;AACC,gBAAA,OAAO,MAAM;;AAEhB,IAAA,CAAC,CAAC;wGApHU,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5CxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1CS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA6C1C,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAhDlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC;AACvD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;AAwHD;;AAEG;MA2CU,+BAA+B,CAAA;AAC3C;;AAEG;AACM,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAgB;AAE7C;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;AAE3C;;AAEG;AACM,IAAA,qBAAqB,GAAG,KAAK,CAAU,KAAK,CAAC;AAEtD;;AAEG;IACM,OAAO,GAAG,MAAM,EAAU;;IAG1B,UAAU,GAAG,oBAAoB;;IAGjC,QAAQ,GAAG,OAAO;AAE3B;;;AAGG;IACH,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IACjC;wGAjCY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtCjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApCS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAuC1C,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBA1C3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC;AACvD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;ACnUD;;AAEG;MAcU,+BAA+B,CAAA;AAC3C;;AAEG;IACH,OAAO,GAAG,uBAAuB,EAA6B;AAE9D;;AAEG;AACM,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE3D;;AAEG;AACM,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC9C,QAAQ,SAAS;AAChB,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;wGA9BU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATjC;;;;;;EAMT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,iBAAiB,kSAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAU7B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAb3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;AAC1C,oBAAA,QAAQ,EAAE;;;;;;AAMT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;AAkCD;;AAEG;MAeU,8BAA8B,CAAA;AAC1C;;AAEG;IACH,OAAO,GAAG,uBAAuB,EAA2B;AAE5D;;AAEG;AACM,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE3D;;AAEG;AACM,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC9C,QAAQ,SAAS;AAChB,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;wGA9BU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVhC;;;;;;;EAOT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,iBAAiB,kSAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAW7B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAd1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;AAC1C,oBAAA,QAAQ,EAAE;;;;;;;AAOT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;AC/DD;;;;;;;;;;;;;;;AAeG;MA6BU,gCAAgC,CAAA;AACnC,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE3D;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEzC;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAyB,KAAK,CAAC;AAEzD;;AAEG;IACM,UAAU,GAAG,MAAM,EAAQ;;IAG3B,eAAe,GAAG,WAAW;;IAG7B,aAAa,GAAG,cAAc;AAEvC;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAkB,MAAK;AACpD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,QAAQ,GAAG,QAAQ,CAAgB,MAAK;AAChD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,IAAI;;AAEd,IAAA,CAAC,CAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAa,MAAK;AAChD,QAAA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACnC,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,GAAG;AACX,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,GAAG;AACX,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,GAAG;AACX,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,GAAG;AACX,YAAA,KAAK,IAAI;AACR,gBAAA,OAAO,GAAG;AACX,YAAA;AACC,gBAAA,OAAO,GAAG;;AAEb,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;gBACV,OAAO,IAAI,CAAC,aAAa;AAC1B,YAAA;gBACC,OAAO,IAAI,CAAC,eAAe;;AAE9B,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,yBAAyB,GAAG,QAAQ,CAAsC,MAAK;AACvF,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,KAAK,KAAK;AACT,gBAAA,OAAO,WAAW;AACnB,YAAA,KAAK,MAAM;AACV,gBAAA,OAAO,YAAY;AACpB,YAAA;AACC,gBAAA,OAAO,MAAM;;AAEhB,IAAA,CAAC,CAAC;wGA9GU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBlC;;;;;;;;;;;;;;;;;;;;;AAqBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,+VAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAyBzD,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBA5B5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,+BAA+B;oBACzC,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;AACtE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;AAqBT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;AC3BD,MAAM,gCAAgC,GAAuD;AAC5F,IAAA,EAAE,EAAE;AACH,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,KAAA;CACD;AAED,SAAS,8BAA8B,CAAC,IAA2B,EAAA;AAClE,IAAA,OAAO,gCAAgC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChE;AAQA;;;AAGG;AACI,MAAM,gBAAgB,GAAG,GAAG,CAClC;IACC,OAAO;IACP,UAAU;IACV,aAAa;IACb,+CAA+C;IAC/C,aAAa;IACb,aAAa;IACb,iCAAiC;IACjC,eAAe;IACf,iCAAiC;CACjC,EACD;AACC,IAAA,QAAQ,EAAE;AACT,QAAA,IAAI,EAAE;YACL,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;YAC7D,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;YAC7D,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;YAC7D,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;YAC7D,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;AAC7D,SAAA;AACD,KAAA;AACD,IAAA,eAAe,EAAE;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,KAAA;AACD,CAAA;AAGF;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAQU,2BAA2B,CAAA;AAC9B,IAAA,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC7C,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAClD,IAAA,YAAY,GAAG,QAAQ,CAAoB,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAExF;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK,CAAS,gBAAgB,CAAC;AAE5C;;;AAGG;AACH,IAAA,aAAa,GAAG,KAAK,CAAS,YAAY,CAAC;AAE3C;;;AAGG;AACH,IAAA,IAAI,GAAG,KAAK,CAAwB,IAAI,CAAC;AAEzC,IAAA,WAAA,GAAA;;QAEC,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACnD,QAAA,CAAC,CAAC;IACH;AAEA;;;AAGG;AACH,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;AAE/B;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;AAElC;;;AAGG;AACH,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAE7B;;;AAGG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEhC;;;AAGG;AACH,IAAA,aAAa,GAAG,KAAK,CAAiB,SAAS,CAAC;AAEhD;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK,CAAS,CAAC,CAAC;AAE7B;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAsB;AACvC,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,OAAO,EAAE,EAAE;AACX,KAAA,CAAC;AAEF;;;AAGG;AACH,IAAA,OAAO,GAAG,KAAK,CAAS,CAAC,CAAC;;IAG1B,WAAW,GAAG,MAAM,EAAU;;IAG9B,eAAe,GAAG,MAAM,EAAU;AAEzB,IAAA,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU;AAEvC,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC7B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;AAE7F,YAAA,MAAM,YAAY,GAAG,CAAA,EAAG,CAAC,SAAS;YAClC,OAAO;AACN,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,cAAc,IAAI,cAAc,KAAK,uBAAuB,GAAG,cAAc,GAAG,YAAY;aAClG;AACF,QAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,IAAI,CAAC;AACxD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;AAC5C,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACH,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,GAAG,CAAC;QACjH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvG,QAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,GAAG,EAAE;AACzB,IAAA,CAAC,CAAC;AAEF;;;AAGG;IACH,wBAAwB,GAAG,KAAK,EAA+B;AAE/D;;AAEG;AACM,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE;QAEhD,IAAI,QAAQ,EAAE;YACb,OAAO,QAAQ,EAAE;QAClB;;AAGA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;AACnC,IAAA,CAAC,CAAC;AAEF;;AAEG;AACM,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACrC,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC1D,IAAA,CAAC,CAAC;AAEF;;AAEG;AACM,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC3D,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACH,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA;;;AAGG;AACH,IAAA,oBAAoB,CAAC,IAAa,EAAA;AACjC,QAAA,IAAI,QAA4B;AAChC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,QAAQ,GAAG,IAAI;QAChB;aAAO,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAK,IAAgC,EAAE;AAC5F,YAAA,MAAM,CAAC,GAAI,IAAgC,CAAC,OAAO,CAAC;AACpD,YAAA,MAAM,aAAa,GAAG,CAAC,CAAU,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5G,YAAA,QAAQ,GAAG,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAChE;aAAO;AACN,YAAA,MAAM,aAAa,GAAG,CAAC,CAAU,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5G,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS;QACpD;QACA,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B;AAEA;;;AAGG;AACM,IAAA,iBAAiB,GAAG,QAAQ,CAAa,MAAK;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY;AACnE,IAAA,CAAC,CAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAkB,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAE7E,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAEhF,IAAA,gBAAgB,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC;AAEhF,IAAA,mBAAmB,GAAG,QAAQ,CAAqB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;AAEzF,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,iDAAiD,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC;AAE7H,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACtC,EAAE,CAAC,qFAAqF,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAC5H;AAEQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACtC,EAAE,CACD,0HAA0H,EAC1H,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CACjC,CACD;AAED;;;AAGG;IACM,UAAU,GAAG,QAAQ,CAAC,MAC9B,EAAE,CACD,gBAAgB,CAAC;AAChB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,KAAA,CAAC,EACF;AACC,QAAA,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE;AAChC,QAAA,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE;AACnC,QAAA,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE;AAC3B,QAAA,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjC,KAAA,CACD,CACD;AAED;;;AAGG;IACM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,gDAAgD,CAAC,CAAC;AAEnG;;;AAGG;IACM,cAAc,GAAG,QAAQ,CAAC,MAClC,EAAE,CAAC,uGAAuG,EAAE;QAC3G,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI;AAClF,QAAA,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI;AAClC,QAAA,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI;AAClC,KAAA,CAAC,CACF;wGA5PW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,4uDAF5B,CAAC,uBAAuB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3HrC,4tGA6EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED2CW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,oLAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,cAAA,EAAA,cAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,kDAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAK5F,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACC,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAC,EAAA,eAAA,EAExF,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,uBAAuB,CAAC,EAAA,QAAA,EAAA,4tGAAA,EAAA;;;ME3ExB,wCAAwC,CAAA;AAC3C,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC9B,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAW,CAAC;AACvC,IAAA,OAAO,GAAG,MAAM,EAAU,CAAC;;AAG3B,IAAA,qBAAqB,GAAG,KAAK,CAAU,KAAK,CAAC;IAE7C,eAAe,GAAG,oBAAoB;IACtC,QAAQ,GAAG,OAAO;wGATf,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnCS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsC1C,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAzCpD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC;AACvD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;AC/CD;;AAEG;;;;"}