@apexara/ng-components 1.0.6-test.5 → 1.0.6-test.7

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":"apexara-ng-components-table.mjs","sources":["../../../../projects/apexara/ng-components/table/src/table.component.ts","../../../../projects/apexara/ng-components/table/src/table.component.html","../../../../projects/apexara/ng-components/table/apexara-ng-components-table.ts"],"sourcesContent":["import { Component, ViewChildren, QueryList, ViewChild, ElementRef, Input, Output, EventEmitter, HostListener, SimpleChanges, TemplateRef, signal, Injector, afterNextRender } from '@angular/core';\nimport { NgTemplateOutlet, NgStyle, NgClass, DecimalPipe, formatDate } from '@angular/common';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { ApexChipComponent } from '@apexara/ng-components/chip';\nimport { ApexImageComponent } from '@apexara/ng-components/image';\nimport { ApexCheckboxComponent } from '@apexara/ng-components/checkbox';\nimport { ApexSelectComponent, ApexSelectOptions } from '@apexara/ng-components/select';\n\nimport { OSService, MobileOS, ScrollBlockService } from '@apexara/ng-components/services';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexTableColumn {\n label?: string;\n value?: string;\n type?: ApexTableColumnType;\n width?: string;\n editable?: boolean;\n prefix?: string;\n suffix?: string;\n singleActions?: Action[];\n multipleActions?: Action[];\n dateFormat?: ApexDateFormatOptions;\n chipLabel?: { [key: string]: string };\n class?: string | { [key: string]: string };\n change?: string;\n listOptions?: ApexTableListOptions;\n cellOptions?: ApexTableCellOptions;\n}\n\nexport interface ApexTableListOptions {\n label?: string;\n max?: number;\n}\n\nexport interface ApexTableCellOptions {\n icon?: string | { [key: string]: string };\n iconPosition?: 'left' | 'right';\n iconColor?: { [key: string]: string };\n textColor?: { [key: string]: string };\n chipColor?: { [key: string]: string };\n chipBackgroundColor?: { [key: string]: string };\n}\n\nexport enum ApexTableColumnType {\n Text,\n Date,\n Currency,\n Chip,\n Number,\n NumberMath,\n Actions,\n Checkbox,\n List,\n}\n\nexport type ActionShowType = Array<{ property: string; values: any[]; exists?: boolean; }> \n\nexport interface Action {\n icon: string;\n label: string;\n class?: string;\n showOn?: ActionShowType;\n disabled?: boolean;\n execute?: (row: any) => void;\n}\n\nexport interface ApexTableChange {\n from: number;\n to: number;\n filter?: string;\n sort?: any;\n}\n\nexport interface ApexDateFormatOptions {\n format: string;\n locale: string;\n timezone?: string;\n}\n\ninterface PageFormControls {\n pageSize: FormControl<{ label: string, value: number }>;\n}\n\n@Component({\n standalone: true,\n selector: 'apex-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n imports: [\n NgStyle,\n NgClass,\n DecimalPipe,\n NgTemplateOutlet,\n ApexChipComponent,\n ApexImageComponent,\n ApexSelectComponent,\n ApexTooltipDirective,\n ApexCheckboxComponent,\n ScrollingModule,\n ]\n})\n\nexport class ApexTableComponent {\n\n constructor(\n private elementRef: ElementRef,\n private osService: OSService,\n private formBuilder: FormBuilder,\n private scrollBlockService: ScrollBlockService,\n private injector: Injector) {\n }\n\n @ViewChild('theadRef') theadRef?: ElementRef<HTMLElement>;\n @ViewChildren('moreActionsList') moreActionsList!: QueryList<ElementRef>;\n @ViewChild(CdkVirtualScrollViewport) cdkViewport?: CdkVirtualScrollViewport;\n @ViewChild('dropdownElement') DropdownElement: ElementRef<any> | null = null;\n\n // Cell templates (mapped by type)\n @ViewChild('textCell', { static: true }) textCellTpl!: TemplateRef<any>;\n @ViewChild('numberCell', { static: true }) numberCellTpl!: TemplateRef<any>;\n @ViewChild('currencyCell', { static: true }) currencyCellTpl!: TemplateRef<any>;\n @ViewChild('numberMathCell', { static: true }) numberMathCellTpl!: TemplateRef<any>;\n @ViewChild('dateCell', { static: true }) dateCellTpl!: TemplateRef<any>;\n @ViewChild('chipCell', { static: true }) chipCellTpl!: TemplateRef<any>;\n @ViewChild('checkboxCell', { static: true }) checkboxCellTpl!: TemplateRef<any>;\n @ViewChild('actionCell', { static: true }) actionCellTpl!: TemplateRef<any>;\n @ViewChild('listCell', { static: true }) listCellTpl!: TemplateRef<any>;\n \n\n // Data configuration\n @Input() data!: any[];\n @Input() dataLength!: number;\n @Input() columns!: ApexTableColumn[];\n @Input() filter!: string;\n\n // Data source configuration (serverSide loaded or local data)\n @Input() serverSide!: boolean;\n @Input() isLoading!: boolean;\n\n // Sorting configuration\n @Input() sortIndex = 0;\n @Input() sortable = true;\n @Input() sortDirection: 'asc' | 'desc' = 'asc';\n\n // Pagination configuration\n @Input() pageSize = 10;\n @Input() currentPage = 0;\n @Input() pageable = false;\n @Input() pageSizeOptions = [ 10, 25, 50, 100, 1000 ];\n\n // Virtual scroll configuration (optimization for large datasets)\n @Input() virtualScroll: boolean = false; // For local data only\n @Input() tableMaxHeight: number = 800;\n\n // Sticky header configuration\n @Input() stickyHeader: boolean = false;\n\n // Edit mode configuration\n @Input() editMode: boolean = false;\n\n @Output() tableChange = new EventEmitter<ApexTableChange>()\n @Output() selectionChange = new EventEmitter<any[]>()\n @Output() editModeChange = new EventEmitter<boolean>()\n\n public itemSize: number = 42; // Must match CSS table row height\n\n public tooltipPosition = TooltipPosition;\n\n public TableColumnType = ApexTableColumnType;\n\n public totalPages = signal(0);\n public visibleRange = signal('');\n\n public filteredData = signal<any[]>([]);\n public pageData = signal<any[]>([]);\n\n public pageSizeSelectOptions!: ApexSelectOptions;\n\n public currentActiveRow = signal<any>(null);\n public currentActiveColumn = signal<ApexTableColumn | null>(null);\n public isDropdown = signal(false);\n public isHeaderStuck = signal(false);\n\n public selectedRows = signal<Set<any>>(new Set());\n public allSelected = signal(false);\n public virtualViewportHeight = signal(0);\n public showViewportScroll = signal(false);\n private lastSelectedIndex: number = -1;\n\n public formGroup!: FormGroup<PageFormControls>;\n\n private _dataLength!: number;\n\n @HostListener('document:click', ['$event'])\n public onClick(event: any): void {\n // TO DO: When two tables exists the dropdown from first table is not closed\n if (event.target !== this.DropdownElement?.nativeElement && event.target) {\n const row = this.currentActiveRow();\n\n if (row) {\n row.isDropdown = false;\n this.currentActiveRow.set(null);\n this.unlockScroll();\n }\n }\n }\n\n @HostListener('document:scroll')\n public onScroll(): void {\n\n if (this.stickyHeader) {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const stuck = rect.top < 0;\n\n if (stuck !== this.isHeaderStuck()) {\n this.isHeaderStuck.set(stuck);\n }\n }\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) {\n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n }\n\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n\n break;\n }\n }\n }\n\n @HostListener('window:resize')\n public onResize(): void {\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) { \n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n \n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n\n break;\n }\n }\n }\n\n public ngOnInit(): void {\n }\n\n public ngAfterViewInit(): void {\n const from = this.currentPage * this.pageSize;\n const to = from + this.pageSize;\n\n if (this.serverSide && !this.data) {\n this.tableChange.emit({ from, to, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n if (!this.serverSide) {\n this.buildPaginationSelectDependecies();\n }\n\n this.updateViewportLayout();\n\n setTimeout(() => {\n this.cdkViewport?.checkViewportSize();\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['isLoading'] && changes['isLoading'].currentValue === false) {\n if (this.data) {\n this._dataLength = this.data.length;\n }\n }\n\n if (changes['data'] && changes['data'].currentValue) {\n if (this.serverSide) {\n this.filteredData.set(this.data);\n\n this.preprocessData();\n } else {\n this.filteredData.set(this.filter ? this.filterData() : this.data);\n\n this.preprocessData();\n\n setTimeout(() => {\n this.sortColumn(this.columns[this.sortIndex], false);\n })\n }\n\n this._dataLength = this.dataLength ? this.dataLength : this.filteredData().length;\n }\n\n if (changes['filter'] && !changes['filter'].firstChange) {\n // The two ways of filtering data -> local and serverSide\n if (!this.serverSide) {\n this.filteredData.set(this.filterData());\n this._dataLength = this.filteredData().length;\n\n setTimeout(() => {\n this.goToFirstPage();\n });\n\n } else {\n setTimeout(() => {\n this.currentPage = 0;\n\n this.tableChange.emit({ from: 0, to: 0 + this.pageSize, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n });\n }\n\n }\n\n if (changes['editMode']) {\n this.editModeChange.emit(changes['editMode'].currentValue);\n\n if (!changes['editMode'].currentValue) {\n this.selectedRows.set(new Set());\n this.allSelected.set(false);\n this.lastSelectedIndex = -1;\n this.selectionChange.emit([]);\n }\n }\n\n if (changes['pageable'] && changes['pageable'].currentValue !== undefined) {\n this.buildPaginationSelectDependecies();\n }\n\n const from = this.currentPage * this.pageSize;\n const to = Math.min(this._dataLength, from + this.pageSize);\n \n this.calculateTotalPages();\n this.updateVisibleRange(from, to);\n this.updatePageData();\n this.refreshLayout();\n }\n\n public updatePageData(): void {\n const data = this.filteredData();\n if (!data || !data.length) {\n this.pageData.set([]);\n return;\n }\n\n if (!this.pageable) {\n this.pageData.set(data);\n return;\n }\n\n if (!this.serverSide) {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n\n this.pageData.set(data.slice(start, end));\n return;\n }\n\n this.pageData.set(data);\n }\n\n public updateVisibleRange(start: number, end: number): void {\n this.visibleRange.set(`Showing ${ start + 1 } to ${end} of ${this._dataLength} results`);\n }\n\n public calculateTotalPages(): void {\n this.totalPages.set(Math.ceil(this._dataLength / this.pageSize));\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public updateViewportLayout(): void {\n const headerHeight = this.theadRef?.nativeElement?.getBoundingClientRect().height || 0;\n\n const data = this.filteredData();\n const renderedCount = this.serverSide\n ? (data ? data.length : 0)\n : (this.pageData() ? this.pageData().length : 0);\n\n // Update viewport height\n if (renderedCount <= 0) {\n this.virtualViewportHeight.set(headerHeight);\n } else {\n const maxTotal = this.tableMaxHeight;\n const bodyCapacity = Math.max(0, maxTotal - headerHeight);\n const rowsHeight = Math.min(bodyCapacity, this.itemSize * renderedCount);\n this.virtualViewportHeight.set(Math.max(0, headerHeight + rowsHeight));\n }\n\n // Update scroll visibility\n if (!this.virtualScroll) {\n this.showViewportScroll.set(false);\n } else {\n const availableBodyHeight = Math.max(0, this.tableMaxHeight - headerHeight);\n const rowsHeight = this.itemSize * renderedCount;\n this.showViewportScroll.set(rowsHeight > availableBodyHeight);\n }\n }\n\n public getCellTemplate(column: ApexTableColumn): TemplateRef<any> {\n switch (column.type) {\n case ApexTableColumnType.Number:\n return this.numberCellTpl;\n case ApexTableColumnType.Currency:\n return this.currencyCellTpl;\n case ApexTableColumnType.NumberMath:\n return this.numberMathCellTpl;\n case ApexTableColumnType.Date:\n return this.dateCellTpl;\n case ApexTableColumnType.Chip:\n return this.chipCellTpl;\n case ApexTableColumnType.Checkbox:\n return this.checkboxCellTpl;\n case ApexTableColumnType.Actions:\n return this.actionCellTpl;\n case ApexTableColumnType.List:\n return this.listCellTpl;\n default:\n return this.textCellTpl;\n }\n }\n\n private refreshLayout(): void {\n this.updateViewportLayout();\n\n setTimeout(() => {\n this.cdkViewport?.checkViewportSize();\n });\n }\n\n public goToPage(page: number): void {\n this.currentPage = page;\n this.calculatePages();\n }\n\n public goToPreviousPage(): void {\n this.currentPage--;\n this.calculatePages();\n }\n\n public goToNextPage(): void {\n this.currentPage++;\n this.calculatePages();\n }\n\n public goToFirstPage(): void {\n this.currentPage = 0;\n this.calculatePages();\n }\n\n public goToLastPage(): void {\n this.currentPage = this.totalPages() - 1;\n this.calculatePages();\n }\n\n public cellEdit(event: KeyboardEvent, column: string, currentPageRowIndex: number): void {\n const dataIndex = currentPageRowIndex + (this.currentPage * this.pageSize);\n const filtered = this.filteredData();\n\n if (column.indexOf('.') === -1) {\n filtered[dataIndex][column] = (event.target as HTMLDivElement).innerText;\n } else { // Nested properties\n let data = filtered[dataIndex];\n const fullPath = column.split('.');\n\n for (let i = 0; i < fullPath.length; i++) {\n if (i < fullPath.length - 1) {\n data = data[fullPath[i]];\n } else {\n data[fullPath[i]] = (event.target as HTMLDivElement).innerText;\n }\n }\n }\n }\n\n public formatDate(dateAsString: string | null | undefined, formatDateOptions: ApexDateFormatOptions = { format: 'shortDate', locale: 'en-US', timezone: undefined }): string {\n if (dateAsString === null || dateAsString === undefined || dateAsString === '') {\n return '';\n }\n\n return formatDate(dateAsString, formatDateOptions.format, formatDateOptions.locale, formatDateOptions.timezone);\n }\n\n public getClass(row: any, column: ApexTableColumn): string {\n if (!column.class) {\n return '';\n }\n\n if (typeof column.class === 'string') {\n return column.class;\n }\n\n return column.class[this.getDescendantProp(row, column)] || '';\n }\n\n public getDescendantProp(row: any, column: ApexTableColumn): any {\n if (!column.value || column.value === null) {\n return column.label;\n }\n\n // Case only on preprocessing - returns any numbers that have been passed in the column.value string\n if (isFinite(Number(column.value))) {\n return parseFloat(column.value);\n }\n\n if (column.type === this.TableColumnType.NumberMath) {\n return row[column.value];\n }\n\n return column.value.split('.')\n .reduce((prev: any, curr: string) => {\n if (prev && curr in prev) {\n return prev[curr];\n } else {\n return undefined;\n }\n }, row);\n }\n\n public getTextColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.textColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.textColor[value] || null;\n }\n\n public getChipColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.chipColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.chipColor[value] || null;\n }\n\n public getChipBackgroundColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.chipBackgroundColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.chipBackgroundColor[value] || null;\n }\n\n public getCellIconColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.iconColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.iconColor[value] || null;\n }\n\n public getCellIcon(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.icon) {\n return null;\n }\n\n if (typeof column.cellOptions.icon === 'string') {\n return column.cellOptions.icon;\n }\n\n const value = this.getDescendantProp(row, column);\n return column.cellOptions.icon[value] || null;\n }\n\n public getChangeValue(row: any, column: ApexTableColumn): number | null {\n if (!column.change) return null;\n\n const value = this.getDescendantProp(row, { value: column.change } as ApexTableColumn);\n\n return typeof value === 'number' ? value : parseFloat(value) || null;\n }\n\n public getListDisplayText(row: any, column: ApexTableColumn): string {\n const arr = this.getDescendantProp(row, column);\n\n if (!Array.isArray(arr) || arr.length === 0) {\n return '--';\n }\n\n const max = column.listOptions?.max ?? 3;\n const visible = arr.slice(0, max);\n const labelKey = column.listOptions?.label;\n\n return visible.map(item => labelKey ? item[labelKey] : item).join(' / ');\n }\n\n public getListOverflowCount(row: any, column: ApexTableColumn): number {\n const arr = this.getDescendantProp(row, column);\n\n if (!Array.isArray(arr)) {\n return 0;\n }\n\n const max = column.listOptions?.max ?? 3;\n\n return Math.max(0, arr.length - max);\n }\n\n public getListTooltipContent(row: any, column: ApexTableColumn): string {\n const arr = this.getDescendantProp(row, column);\n\n if (!Array.isArray(arr)) {\n return '';\n }\n\n const max = column.listOptions?.max ?? 3;\n const hidden = arr.slice(max);\n const labelKey = column.listOptions?.label;\n\n return hidden.map(item => labelKey ? item[labelKey] : item).join('<br>');\n }\n\n public getChipLabel(row: any, column: ApexTableColumn): string {\n if (!column.chipLabel) {\n return column.label ? column.label : this.getDescendantProp(row, column);\n }\n\n return column.chipLabel[this.getDescendantProp(row, column)];\n }\n\n public getCheckboxState(row: any, column: ApexTableColumn): boolean {\n let state = this.getDescendantProp(row, column);\n\n if (typeof state !== 'boolean') {\n return false;\n }\n\n return state;\n }\n\n public handleActionShow(action: Action, row: any, column?: ApexTableColumn): boolean {\n if (!action.showOn || action.showOn.length === 0) {\n return true;\n }\n\n return action.showOn.every((condition) => {\n const rowValue = this.getDescendantProp(row, { value: condition.property });\n\n const ifValueExists = !!rowValue;\n \n if (condition.exists != null && condition.exists === ifValueExists) {\n return ifValueExists;\n }\n\n return condition.values.includes(rowValue);\n });\n }\n\n public sortColumn(column: any, changeSortDirection = true): void {\n if (!this.sortable) {\n return;\n }\n\n if (!column.value) {\n return;\n }\n\n if (changeSortDirection) {\n\n if (this.sortIndex == this.columns.indexOf(column)) {\n switch (this.sortDirection) {\n case 'asc':\n this.sortDirection = 'desc';\n break;\n case 'desc':\n this.sortDirection = 'asc';\n break;\n default:\n this.sortDirection = 'asc';\n break;\n }\n } else {\n this.sortDirection = 'asc';\n this.sortIndex = this.columns.indexOf(column);\n }\n\n }\n\n if (this.serverSide) {\n this.currentPage = 0;\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n } else {\n this.goToFirstPage();\n\n this.sortData(this.filteredData(), column);\n this.updatePageData();\n }\n\n const row = this.currentActiveRow();\n if (row) {\n row.isDropdown = false;\n this.currentActiveRow.set(null);\n this.unlockScroll();\n }\n }\n\n public toggleActionDropdown(row: any, column: ApexTableColumn, event: any): void {\n // Prevent the event to be processed by the Hostlistener\n event.stopPropagation();\n\n const prevRow = this.currentActiveRow();\n if (prevRow) {\n prevRow.isDropdown = false;\n }\n\n row.isDropdown = !row.isDropdown;\n\n this.currentActiveRow.set(row);\n this.currentActiveColumn.set(column);\n\n // Wait for Angular to render the dropdown element via @if before positioning it.\n afterNextRender(() => {\n let actionPos!: DOMRect;\n\n for (let i of this.moreActionsList) {\n if (i.nativeElement.classList.contains('opened')) {\n actionPos = i.nativeElement.getBoundingClientRect();\n }\n }\n\n if (this.DropdownElement) {\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n\n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n\n this.lockScroll();\n } else {\n this.unlockScroll();\n }\n }, { injector: this.injector });\n }\n\n public onViewportScroll(): void {\n // Safety net: close dropdown if scroll somehow fires while it's open\n const row = this.currentActiveRow();\n if (row) {\n row.isDropdown = false;\n this.currentActiveRow.set(null);\n this.currentActiveColumn.set(null);\n this.unlockScroll();\n }\n }\n\n public toggleRowSelection(row: any, event?: MouseEvent): void {\n const pageData = this.pageData();\n const currentIndex = pageData.indexOf(row);\n\n this.selectedRows.update(s => {\n const next = new Set(s);\n if (event?.shiftKey && this.lastSelectedIndex !== -1 && currentIndex !== -1) {\n const start = Math.min(this.lastSelectedIndex, currentIndex);\n const end = Math.max(this.lastSelectedIndex, currentIndex);\n\n for (let i = start; i <= end; i++) {\n next.add(pageData[i]);\n }\n } else {\n if (next.has(row)) {\n next.delete(row);\n } else {\n next.add(row);\n }\n }\n return next;\n });\n\n this.lastSelectedIndex = currentIndex;\n this.allSelected.set(this.selectedRows().size === pageData.length);\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n public toggleSelectAll(): void {\n const pageData = this.pageData();\n\n if (this.allSelected()) {\n this.selectedRows.set(new Set());\n this.allSelected.set(false);\n } else {\n this.selectedRows.set(new Set(pageData));\n this.allSelected.set(true);\n }\n\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n public isRowSelected(row: any): boolean {\n return this.selectedRows().has(row);\n }\n\n private lockScroll(): void {\n this.scrollBlockService.activate();\n\n if (this.cdkViewport) {\n this.cdkViewport.elementRef.nativeElement.style.overflow = 'hidden';\n }\n }\n\n private unlockScroll(): void {\n this.scrollBlockService.deactivate();\n\n if (this.cdkViewport) {\n this.cdkViewport.elementRef.nativeElement.style.overflow = '';\n }\n }\n\n private preprocessData(): void {\n if (!this.data || this.data.length === 0) {\n return;\n }\n\n this.columns.forEach(column => {\n if (!column.value || column.type !== this.TableColumnType.NumberMath) {\n return;\n }\n\n this.data.forEach(row => {\n const result = this.calculateNumberMathCell(row, column);\n row[column.value as any] = result;\n });\n });\n }\n\n private calculateNumberMathCell(row: any, column: any): any {\n const expression = column.value.replace(\n /([a-zA-Z_][a-zA-Z0-9_.]*|\\d*\\.?\\d+)/g,\n (match: any) => {\n let value = this.getDescendantProp(row, { value: match });\n\n return (typeof value === 'number') ? value : parseFloat(value) || 0;\n }\n );\n\n let fn = new Function(`return ${expression};`);\n let result = fn();\n\n if (Number.isFinite(result)) {\n return result;\n }\n\n return this.getDescendantProp(row, column);\n }\n\n private filterData(): any[] {\n if (!this.data || this.data.length === 0) {\n return [];\n }\n\n let arrayToReturn: any[] = [ ];\n\n for (let row of this.data) {\n for (let column of this.columns) {\n if (!column.value) { continue; }\n\n let access = row[column.value];\n\n if (column.value.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n access = this.getAccessIfColumnValueIsObject(row, column);\n }\n\n if (access === undefined) {\n break;\n }\n\n const rowPropAsString = JSON.stringify(access).toLowerCase();\n\n if (rowPropAsString.includes(this.filter.toLowerCase())) {\n arrayToReturn.push(row);\n\n break;\n }\n }\n }\n\n return arrayToReturn;\n }\n\n private sortData(data: any[], column: ApexTableColumn): any[] {\n if (!data || data.length === 0 || !Array.isArray(data)) {\n return [];\n }\n\n if (column) {\n this.sortByProperty(data, column);\n }\n\n return data;\n }\n\n private sortByProperty(arr: any, column: any): number | void {\n if (this.sortDirection === 'desc') {\n this.sortReverse(arr, column);\n return;\n }\n\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueA - valueB;\n }\n \n if (!valueA && valueB) return -1;\n if (valueA && !valueB) return 1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return -1;\n if (valueA > valueB) return 1;\n\n return 0;\n });\n }\n\n private sortReverse(arr: any, column: any) {\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueB - valueA;\n }\n\n if (!valueA && valueB) return 1;\n if (valueA && !valueB) return -1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return 1;\n if (valueA > valueB) return -1;\n\n return 0;\n });\n }\n\n private getAccessIfColumnValueIsObject(row: any, column: ApexTableColumn): any {\n if (!column.value || column.value === null) {\n return undefined;\n }\n\n const keys = column.value.split('.');\n\n let access = row[keys[0]];\n\n for (let i = 1; i < keys.length; i++) {\n if (access && keys[i] in access) {\n access = access[keys[i]];\n } else {\n return undefined;\n }\n }\n\n return access;\n }\n\n private buildPaginationSelectDependecies(): void {\n const formControls: PageFormControls = {\n pageSize: this.formBuilder.control({ label: this.pageSize.toString(), value: this.pageSize }, { nonNullable: true, validators: [ Validators.required ] })\n };\n\n this.formGroup = this.formBuilder.group(formControls);\n\n const selectData = this.pageSizeOptions.map(item => ({\n label: item.toString(),\n value: item\n }));\n\n this.pageSizeSelectOptions = {\n label: '',\n data: selectData,\n formGroup: this.formGroup,\n formControlName: 'pageSize'\n };\n\n this.subscribeToFormValueChanges();\n }\n\n private subscribeToFormValueChanges(): void {\n this.formGroup.controls.pageSize.valueChanges.subscribe((value) => {\n if (this.pageSize === value.value) {\n return;\n }\n\n const currentPageFirstRowIndex = this.currentPage * this.pageSize;\n this.pageSize = value.value;\n\n this.currentPage = Math.floor(currentPageFirstRowIndex / this.pageSize);\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n if (this.serverSide) {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n this.calculateTotalPages();\n this.updateVisibleRange(start, end);\n this.updatePageData();\n this.refreshLayout();\n });\n }\n\n private calculatePages(): void {\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n this.updatePageData();\n\n if (!this.serverSide) {\n this.updateVisibleRange(start, end);\n } else {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n }\n}\n","<div class=\"container\" [ngClass]=\"{ 'is-loading': isLoading, 'sticky-header': stickyHeader, 'header-stuck': isHeaderStuck() }\">\n @if (virtualScroll) {\n @if (stickyHeader) {\n <table class=\"sticky-virtual-header\">\n <thead>\n <ng-container *ngTemplateOutlet=\"headerRow\"></ng-container>\n </thead>\n </table>\n }\n\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" class=\"cdk-table-viewport\" [ngStyle]=\"{ height: virtualViewportHeight() + 'px' }\" [style.overflow-y]=\"showViewportScroll() ? 'auto' : 'hidden'\" (scrolled)=\"onViewportScroll()\">\n <table>\n @if (!stickyHeader) {\n <thead #theadRef>\n <ng-container *ngTemplateOutlet=\"headerRow\"></ng-container>\n </thead>\n }\n\n <tbody>\n <tr *cdkVirtualFor=\"let row of pageData(); trackBy: trackByIndex\" [ngClass]=\"{ 'selected-row': editMode && isRowSelected(row) }\">\n @for (column of columns; track $index) {\n <td tabindex=\"-1\" [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n\n @if (editMode) {\n <td class=\"select-column\" (click)=\"toggleRowSelection(row, $event)\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"isRowSelected(row)\"></apex-checkbox>\n </div>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <table>\n <thead>\n <ng-container *ngTemplateOutlet=\"headerRow\"></ng-container>\n </thead>\n\n <tbody>\n @for (row of pageData(); track $index) {\n <tr [ngClass]=\"{ 'selected-row': editMode && isRowSelected(row) }\">\n @for (column of columns; track $index) {\n <td tabindex=\"-1\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n\n @if (editMode) {\n <td class=\"select-column\" (click)=\"toggleRowSelection(row, $event)\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"isRowSelected(row)\"></apex-checkbox>\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n\n @if (currentActiveRow()?.isDropdown && currentActiveColumn()) {\n <ng-container *ngTemplateOutlet=\"multipleActionsDropdown; context: { row: currentActiveRow(), column: currentActiveColumn() }\"></ng-container>\n }\n\n @if (filter && filteredData() && filteredData().length === 0) {\n <div class=\"row no-data\">\n <span>No data matching the filter:</span>\n\n <span>\"{{ filter }}\"</span>\n </div>\n }\n\n @if (!filter && data && data.length === 0) {\n <div class=\"row no-data\">No data available.</div>\n }\n\n @if (pageable && pageData().length !== 0) {\n <div class=\"paging\">\n <div class=\"visible-range\">{{ visibleRange() }}</div>\n\n <ng-container *ngTemplateOutlet=\"pagePicker; context: { totalPages: totalPages() }\"></ng-container>\n\n <div class=\"page-size-option-picker\">\n <span>Items per page:</span>\n\n <apex-select class=\"table\" [options]=\"pageSizeSelectOptions\"></apex-select>\n </div>\n </div>\n }\n</div>\n\n<ng-template #textCell let-row=\"row\" let-column=\"column\" let-index=\"$index\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '', column.cellOptions?.icon ? 'has-icon' : '']\"\n [style.color]=\"getTextColor(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n @if (getCellIcon(row, column) && column.cellOptions?.iconPosition !== 'right') {\n <div class=\"cell-icon\" [class.has-color]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-fill]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-stroke]=\"getCellIconColor(row, column)\">\n <apex-img [src]=\"'assets/img/' + getCellIcon(row, column)\" [alt]=\"'Cell icon.'\"></apex-img>\n </div>\n }\n\n <span class=\"cell-text\">{{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) }}{{ column.suffix ? column.suffix : '' }}</span>\n\n @if (getCellIcon(row, column) && column.cellOptions?.iconPosition === 'right') {\n <div class=\"cell-icon\" [class.has-color]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-fill]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-stroke]=\"getCellIconColor(row, column)\">\n <apex-img [src]=\"'assets/img/' + getCellIcon(row, column)\" [alt]=\"'Cell icon.'\"></apex-img>\n </div>\n }\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #dateCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\">\n {{ formatDate(getDescendantProp(row, column), column.dateFormat) }}\n </div>\n</ng-template>\n\n<ng-template #currencyCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '']\">\n\n @if (getDescendantProp(row, column) !== undefined) {\n {{ column.prefix ? column.prefix : '' }}{{ (getDescendantProp(row, column) / 100) | number }}\n }\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #numberCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '']\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #numberMathCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '']\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #actionCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell actions\">\n\n @for (action of column.singleActions; track $index) {\n @if (handleActionShow(action, row, column)) {\n <div ApexTooltip (click)=\"action.execute && action.execute(row)\" [apexTooltip]=\"action.label\" [tooltipPosition]=\"tooltipPosition.Above\" class=\"action-icon-wrapper\" [ngClass]=\"{ 'disabled': action.disabled }\">\n <apex-img [src]=\" 'assets/img/' + action.icon\" [ngClass]=\"action.class\" [alt]=\"'Action icon for ' + action.label\"></apex-img>\n </div>\n }\n }\n\n @if (column.multipleActions) {\n <div class=\"action-icon-wrapper\" #moreActionsList [ngClass]=\"{ 'opened': row.isDropdown }\" (click)=\"toggleActionDropdown(row, column, $event)\">\n <svg class=\"multiple-action-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\n <path d=\"M10.3047 8C10.3047 8.34612 10.2021 8.68446 10.0098 8.97225C9.81747 9.26004 9.54416 9.48434 9.22438 9.61679C8.90461 9.74924 8.55275 9.7839 8.21328 9.71638C7.87381 9.64885 7.56199 9.48218 7.31725 9.23744C7.07251 8.9927 6.90584 8.68088 6.83831 8.34141C6.77079 8.00194 6.80545 7.65008 6.9379 7.33031C7.07035 7.01053 7.29465 6.73722 7.58244 6.54493C7.87023 6.35264 8.20857 6.25 8.55469 6.25C9.01868 6.25046 9.46353 6.43498 9.79162 6.76307C10.1197 7.09116 10.3042 7.53601 10.3047 8ZM8.55469 4.75C8.90081 4.75 9.23915 4.64737 9.52694 4.45507C9.81472 4.26278 10.039 3.98947 10.1715 3.6697C10.3039 3.34993 10.3386 2.99806 10.2711 2.65859C10.2035 2.31913 10.0369 2.00731 9.79213 1.76256C9.54738 1.51782 9.23556 1.35115 8.8961 1.28363C8.55663 1.2161 8.20476 1.25076 7.88499 1.38321C7.56522 1.51566 7.29191 1.73997 7.09962 2.02775C6.90732 2.31554 6.80469 2.65388 6.80469 3C6.80515 3.46399 6.98967 3.90884 7.31776 4.23693C7.64585 4.56502 8.0907 4.74954 8.55469 4.75ZM8.55469 11.25C8.20857 11.25 7.87023 11.3526 7.58244 11.5449C7.29465 11.7372 7.07035 12.0105 6.9379 12.3303C6.80545 12.6501 6.77079 13.0019 6.83831 13.3414C6.90584 13.6809 7.07251 13.9927 7.31725 14.2374C7.56199 14.4822 7.87381 14.6489 8.21328 14.7164C8.55275 14.7839 8.90461 14.7492 9.22438 14.6168C9.54416 14.4843 9.81747 14.26 10.0098 13.9722C10.2021 13.6845 10.3047 13.3461 10.3047 13C10.3042 12.536 10.1197 12.0912 9.79162 11.7631C9.46353 11.435 9.01868 11.2505 8.55469 11.25Z\"/>\n </svg>\n </div>\n }\n\n </div>\n</ng-template>\n\n<ng-template #chipCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell chip\">\n @if (getChipLabel(row, column)) {\n <apex-chip [ngClass]=\"getClass(row, column)\"\n [style.--apex-chip-color]=\"getChipColor(row, column)\"\n [style.--apex-chip-background-color]=\"getChipBackgroundColor(row, column)\"> {{ getChipLabel(row, column) }}</apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #listCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell list\">\n <span class=\"list-text\">{{ getListDisplayText(row, column) }}</span>\n\n @if (getListOverflowCount(row, column) > 0) {\n <apex-chip class=\"list-overflow-badge\"\n ApexTooltip\n [apexTooltip]=\"getListTooltipContent(row, column)\"\n [tooltipPosition]=\"tooltipPosition.Below\">\n +{{ getListOverflowCount(row, column) }}\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #checkboxCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"getCheckboxState(row, column)\" [disabled]=\"true\"></apex-checkbox>\n </div>\n</ng-template>\n\n<ng-template #multipleActionsDropdown let-row=\"row\" let-column=\"column\">\n <div #multipleActionsDropdownElement #dropdownElement class=\"more-actions-dropdown\">\n @for (action of column.multipleActions; track $index) {\n\n @if (handleActionShow(action, row, column)) {\n <div class=\"dropdown-row\" (click)=\"action.execute && action.execute(row)\">\n <apex-img [src]=\"'assets/img/' + action.icon\" [ngClass]=\"action.class\" [alt]=\"'Action icon for ' + action.label\"></apex-img>\n\n <span>{{ action.label }}</span>\n </div>\n }\n\n }\n </div>\n</ng-template>\n\n<ng-template #pagePicker let-totalPages=\"totalPages\">\n <div class=\"page-picker\">\n <!-- If page one should be visible -->\n @if (currentPage + 1 >= 3) {\n <span (click)=\"goToPage(0)\">1</span>\n <span class=\"style-excluded\">...</span>\n }\n\n <!-- Middle part of the page-picker -->\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage - 1 } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage, class: 'highlighted' } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage + 1 } \"></ng-container>\n\n <!-- If last page should be visible -->\n @if (currentPage + 1 <= totalPages - 2) {\n <span class=\"style-excluded\">...</span>\n <span (click)=\"goToPage(totalPages - 1)\">{{ totalPages }}</span>\n }\n\n </div>\n</ng-template>\n\n<ng-template #page let-page=\"page\" let-class=\"class\">\n @if (page >= 0 && page < totalPages()) {\n <span [ngClass]=\"class\" (click)=\"goToPage(page)\">{{ page + 1 }}</span>\n }\n</ng-template>\n\n<ng-template #headerRow>\n <tr>\n @for (column of columns; track $index) {\n <th [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <div class=\"cell\">\n <span>{{ column.label }}</span>\n\n @if (column.type !== TableColumnType.Actions && sortable) {\n <div class=\"arranger\" (click)=\"sortColumn(column)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.11445 5.50005H8.88795C9.31895 5.50005 9.54795 4.99005 9.26145 4.66755L6.37495 1.42005C6.32813 1.3672 6.27063 1.32489 6.20624 1.29591C6.14186 1.26694 6.07205 1.25195 6.00145 1.25195C5.93084 1.25195 5.86104 1.26694 5.79666 1.29591C5.73227 1.32489 5.67477 1.3672 5.62795 1.42005L2.74045 4.66755C2.45395 4.99005 2.68295 5.50005 3.11445 5.50005ZM5.62745 10.5795C5.67427 10.6324 5.73177 10.6747 5.79616 10.7037C5.86054 10.7327 5.93034 10.7476 6.00095 10.7476C6.07155 10.7476 6.14136 10.7327 6.20574 10.7037C6.27013 10.6747 6.32763 10.6324 6.37445 10.5795L9.26095 7.33205C9.54795 7.01005 9.31895 6.50005 8.88745 6.50005H3.11445C2.68345 6.50005 2.45445 7.01005 2.74095 7.33255L5.62745 10.5795Z\" fill=\"#C6C6C6\"/>\n </svg>\n </div>\n }\n </div>\n </th>\n }\n\n @if (editMode) {\n <th class=\"select-column\">\n <div class=\"cell\">\n <span class=\"select-all-btn\" (click)=\"toggleSelectAll()\">{{ allSelected() ? 'Deselect' : 'Select all' }}</span>\n </div>\n </th>\n }\n </tr>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apexara-ng-components-table.mjs","sources":["../../../../projects/apexara/ng-components/table/src/table.component.ts","../../../../projects/apexara/ng-components/table/src/table.component.html","../../../../projects/apexara/ng-components/table/apexara-ng-components-table.ts"],"sourcesContent":["import { Component, ViewChildren, QueryList, ViewChild, ElementRef, Input, Output, EventEmitter, HostListener, SimpleChanges, TemplateRef, signal, Injector, afterNextRender } from '@angular/core';\nimport { NgTemplateOutlet, NgStyle, NgClass, DecimalPipe, formatDate } from '@angular/common';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { ApexChipComponent } from '@apexara/ng-components/chip';\nimport { ApexImageComponent } from '@apexara/ng-components/image';\nimport { ApexCheckboxComponent } from '@apexara/ng-components/checkbox';\nimport { ApexSelectComponent, ApexSelectOptions } from '@apexara/ng-components/select';\n\nimport { OSService, MobileOS, ScrollBlockService } from '@apexara/ng-components/services';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexTableColumn {\n label?: string;\n value?: string;\n type?: ApexTableColumnType;\n width?: string;\n editable?: boolean;\n prefix?: string;\n suffix?: string;\n singleActions?: Action[];\n multipleActions?: Action[];\n dateFormat?: ApexDateFormatOptions;\n chipLabel?: { [key: string]: string };\n class?: string | { [key: string]: string };\n change?: string;\n listOptions?: ApexTableListOptions;\n cellOptions?: ApexTableCellOptions;\n statusSteps?: ApexTableStatusStep[];\n}\n\nexport interface ApexTableStatusStep {\n label: string;\n value: string | number | boolean;\n color: string;\n}\n\nexport interface ApexTableListOptions {\n label?: string;\n max?: number;\n}\n\nexport interface ApexTableCellOptions {\n icon?: string | { [key: string]: string };\n iconPosition?: 'left' | 'right';\n iconColor?: { [key: string]: string };\n textColor?: { [key: string]: string };\n chipColor?: { [key: string]: string };\n chipBackgroundColor?: { [key: string]: string };\n}\n\nexport enum ApexTableColumnType {\n Text,\n Date,\n Currency,\n Chip,\n Number,\n NumberMath,\n Actions,\n Checkbox,\n List,\n Status,\n}\n\nexport type ActionShowType = Array<{ property: string; values: any[]; exists?: boolean; }> \n\nexport interface Action {\n icon: string;\n label: string;\n class?: string;\n showOn?: ActionShowType;\n disabled?: boolean;\n execute?: (row: any) => void;\n}\n\nexport interface ApexTableChange {\n from: number;\n to: number;\n filter?: string;\n sort?: any;\n}\n\nexport interface ApexDateFormatOptions {\n format: string;\n locale: string;\n timezone?: string;\n}\n\ninterface PageFormControls {\n pageSize: FormControl<{ label: string, value: number }>;\n}\n\n@Component({\n standalone: true,\n selector: 'apex-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n imports: [\n NgStyle,\n NgClass,\n DecimalPipe,\n NgTemplateOutlet,\n ApexChipComponent,\n ApexImageComponent,\n ApexSelectComponent,\n ApexTooltipDirective,\n ApexCheckboxComponent,\n ScrollingModule,\n ]\n})\n\nexport class ApexTableComponent {\n\n constructor(\n private elementRef: ElementRef,\n private osService: OSService,\n private formBuilder: FormBuilder,\n private scrollBlockService: ScrollBlockService,\n private injector: Injector) {\n }\n\n @ViewChild('theadRef') theadRef?: ElementRef<HTMLElement>;\n @ViewChildren('moreActionsList') moreActionsList!: QueryList<ElementRef>;\n @ViewChild(CdkVirtualScrollViewport) cdkViewport?: CdkVirtualScrollViewport;\n @ViewChild('dropdownElement') DropdownElement: ElementRef<any> | null = null;\n\n // Cell templates (mapped by type)\n @ViewChild('textCell', { static: true }) textCellTpl!: TemplateRef<any>;\n @ViewChild('numberCell', { static: true }) numberCellTpl!: TemplateRef<any>;\n @ViewChild('currencyCell', { static: true }) currencyCellTpl!: TemplateRef<any>;\n @ViewChild('numberMathCell', { static: true }) numberMathCellTpl!: TemplateRef<any>;\n @ViewChild('dateCell', { static: true }) dateCellTpl!: TemplateRef<any>;\n @ViewChild('chipCell', { static: true }) chipCellTpl!: TemplateRef<any>;\n @ViewChild('checkboxCell', { static: true }) checkboxCellTpl!: TemplateRef<any>;\n @ViewChild('actionCell', { static: true }) actionCellTpl!: TemplateRef<any>;\n @ViewChild('listCell', { static: true }) listCellTpl!: TemplateRef<any>;\n @ViewChild('statusCell', { static: true }) statusCellTpl!: TemplateRef<any>;\n \n\n // Data configuration\n @Input() data!: any[];\n @Input() dataLength!: number;\n @Input() columns!: ApexTableColumn[];\n @Input() filter!: string;\n\n // Data source configuration (serverSide loaded or local data)\n @Input() serverSide!: boolean;\n @Input() isLoading!: boolean;\n\n // Sorting configuration\n @Input() sortIndex = 0;\n @Input() sortable = true;\n @Input() sortDirection: 'asc' | 'desc' = 'asc';\n\n // Pagination configuration\n @Input() pageSize = 10;\n @Input() currentPage = 0;\n @Input() pageable = false;\n @Input() pageSizeOptions = [ 10, 25, 50, 100, 1000 ];\n\n // Virtual scroll configuration (optimization for large datasets)\n @Input() virtualScroll: boolean = false; // For local data only\n @Input() tableMaxHeight: number = 800;\n\n // Sticky header configuration\n @Input() stickyHeader: boolean = false;\n\n // Edit mode configuration\n @Input() editMode: boolean = false;\n\n @Output() tableChange = new EventEmitter<ApexTableChange>()\n @Output() selectionChange = new EventEmitter<any[]>()\n @Output() editModeChange = new EventEmitter<boolean>()\n\n public itemSize: number = 42; // Must match CSS table row height\n\n public tooltipPosition = TooltipPosition;\n\n public TableColumnType = ApexTableColumnType;\n\n public totalPages = signal(0);\n public visibleRange = signal('');\n\n public filteredData = signal<any[]>([]);\n public pageData = signal<any[]>([]);\n\n public pageSizeSelectOptions!: ApexSelectOptions;\n\n public currentActiveRow = signal<any>(null);\n public currentActiveColumn = signal<ApexTableColumn | null>(null);\n public isDropdown = signal(false);\n public isHeaderStuck = signal(false);\n\n public selectedRows = signal<Set<any>>(new Set());\n public allSelected = signal(false);\n public virtualViewportHeight = signal(0);\n public showViewportScroll = signal(false);\n private lastSelectedIndex: number = -1;\n\n public formGroup!: FormGroup<PageFormControls>;\n\n private _dataLength!: number;\n\n @HostListener('document:click', ['$event'])\n public onClick(event: any): void {\n // TO DO: When two tables exists the dropdown from first table is not closed\n if (event.target !== this.DropdownElement?.nativeElement && event.target) {\n const row = this.currentActiveRow();\n\n if (row) {\n row.isDropdown = false;\n this.currentActiveRow.set(null);\n this.unlockScroll();\n }\n }\n }\n\n @HostListener('document:scroll')\n public onScroll(): void {\n\n if (this.stickyHeader) {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const stuck = rect.top < 0;\n\n if (stuck !== this.isHeaderStuck()) {\n this.isHeaderStuck.set(stuck);\n }\n }\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) {\n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n }\n\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n\n break;\n }\n }\n }\n\n @HostListener('window:resize')\n public onResize(): void {\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) { \n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n \n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n\n break;\n }\n }\n }\n\n public ngOnInit(): void {\n }\n\n public ngAfterViewInit(): void {\n const from = this.currentPage * this.pageSize;\n const to = from + this.pageSize;\n\n if (this.serverSide && !this.data) {\n this.tableChange.emit({ from, to, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n if (!this.serverSide) {\n this.buildPaginationSelectDependecies();\n }\n\n this.updateViewportLayout();\n\n setTimeout(() => {\n this.cdkViewport?.checkViewportSize();\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['isLoading'] && changes['isLoading'].currentValue === false) {\n if (this.data) {\n this._dataLength = this.data.length;\n }\n }\n\n if (changes['data'] && changes['data'].currentValue) {\n if (this.serverSide) {\n this.filteredData.set(this.data);\n\n this.preprocessData();\n } else {\n this.filteredData.set(this.filter ? this.filterData() : this.data);\n\n this.preprocessData();\n\n setTimeout(() => {\n this.sortColumn(this.columns[this.sortIndex], false);\n })\n }\n\n this._dataLength = this.dataLength ? this.dataLength : this.filteredData().length;\n }\n\n if (changes['filter'] && !changes['filter'].firstChange) {\n // The two ways of filtering data -> local and serverSide\n if (!this.serverSide) {\n this.filteredData.set(this.filterData());\n this._dataLength = this.filteredData().length;\n\n setTimeout(() => {\n this.goToFirstPage();\n });\n\n } else {\n setTimeout(() => {\n this.currentPage = 0;\n\n this.tableChange.emit({ from: 0, to: 0 + this.pageSize, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n });\n }\n\n }\n\n if (changes['editMode']) {\n this.editModeChange.emit(changes['editMode'].currentValue);\n\n if (!changes['editMode'].currentValue) {\n this.selectedRows.set(new Set());\n this.allSelected.set(false);\n this.lastSelectedIndex = -1;\n this.selectionChange.emit([]);\n }\n }\n\n if (changes['pageable'] && changes['pageable'].currentValue !== undefined) {\n this.buildPaginationSelectDependecies();\n }\n\n const from = this.currentPage * this.pageSize;\n const to = Math.min(this._dataLength, from + this.pageSize);\n \n this.calculateTotalPages();\n this.updateVisibleRange(from, to);\n this.updatePageData();\n this.refreshLayout();\n }\n\n public updatePageData(): void {\n const data = this.filteredData();\n if (!data || !data.length) {\n this.pageData.set([]);\n return;\n }\n\n if (!this.pageable) {\n this.pageData.set(data);\n return;\n }\n\n if (!this.serverSide) {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n\n this.pageData.set(data.slice(start, end));\n return;\n }\n\n this.pageData.set(data);\n }\n\n public updateVisibleRange(start: number, end: number): void {\n this.visibleRange.set(`Showing ${ start + 1 } to ${end} of ${this._dataLength} results`);\n }\n\n public calculateTotalPages(): void {\n this.totalPages.set(Math.ceil(this._dataLength / this.pageSize));\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public updateViewportLayout(): void {\n const headerHeight = this.theadRef?.nativeElement?.getBoundingClientRect().height || 0;\n\n const data = this.filteredData();\n const renderedCount = this.serverSide\n ? (data ? data.length : 0)\n : (this.pageData() ? this.pageData().length : 0);\n\n // Update viewport height\n if (renderedCount <= 0) {\n this.virtualViewportHeight.set(headerHeight);\n } else {\n const maxTotal = this.tableMaxHeight;\n const bodyCapacity = Math.max(0, maxTotal - headerHeight);\n const rowsHeight = Math.min(bodyCapacity, this.itemSize * renderedCount);\n this.virtualViewportHeight.set(Math.max(0, headerHeight + rowsHeight));\n }\n\n // Update scroll visibility\n if (!this.virtualScroll) {\n this.showViewportScroll.set(false);\n } else {\n const availableBodyHeight = Math.max(0, this.tableMaxHeight - headerHeight);\n const rowsHeight = this.itemSize * renderedCount;\n this.showViewportScroll.set(rowsHeight > availableBodyHeight);\n }\n }\n\n public getCellTemplate(column: ApexTableColumn): TemplateRef<any> {\n switch (column.type) {\n case ApexTableColumnType.Number:\n return this.numberCellTpl;\n case ApexTableColumnType.Currency:\n return this.currencyCellTpl;\n case ApexTableColumnType.NumberMath:\n return this.numberMathCellTpl;\n case ApexTableColumnType.Date:\n return this.dateCellTpl;\n case ApexTableColumnType.Chip:\n return this.chipCellTpl;\n case ApexTableColumnType.Checkbox:\n return this.checkboxCellTpl;\n case ApexTableColumnType.Actions:\n return this.actionCellTpl;\n case ApexTableColumnType.List:\n return this.listCellTpl;\n case ApexTableColumnType.Status:\n return this.statusCellTpl;\n default:\n return this.textCellTpl;\n }\n }\n\n private refreshLayout(): void {\n this.updateViewportLayout();\n\n setTimeout(() => {\n this.cdkViewport?.checkViewportSize();\n });\n }\n\n public goToPage(page: number): void {\n this.currentPage = page;\n this.calculatePages();\n }\n\n public goToPreviousPage(): void {\n this.currentPage--;\n this.calculatePages();\n }\n\n public goToNextPage(): void {\n this.currentPage++;\n this.calculatePages();\n }\n\n public goToFirstPage(): void {\n this.currentPage = 0;\n this.calculatePages();\n }\n\n public goToLastPage(): void {\n this.currentPage = this.totalPages() - 1;\n this.calculatePages();\n }\n\n public cellEdit(event: KeyboardEvent, column: string, currentPageRowIndex: number): void {\n const dataIndex = currentPageRowIndex + (this.currentPage * this.pageSize);\n const filtered = this.filteredData();\n\n if (column.indexOf('.') === -1) {\n filtered[dataIndex][column] = (event.target as HTMLDivElement).innerText;\n } else { // Nested properties\n let data = filtered[dataIndex];\n const fullPath = column.split('.');\n\n for (let i = 0; i < fullPath.length; i++) {\n if (i < fullPath.length - 1) {\n data = data[fullPath[i]];\n } else {\n data[fullPath[i]] = (event.target as HTMLDivElement).innerText;\n }\n }\n }\n }\n\n public formatDate(dateAsString: string | null | undefined, formatDateOptions: ApexDateFormatOptions = { format: 'shortDate', locale: 'en-US', timezone: undefined }): string {\n if (dateAsString === null || dateAsString === undefined || dateAsString === '') {\n return '';\n }\n\n return formatDate(dateAsString, formatDateOptions.format, formatDateOptions.locale, formatDateOptions.timezone);\n }\n\n public getClass(row: any, column: ApexTableColumn): string {\n if (!column.class) {\n return '';\n }\n\n if (typeof column.class === 'string') {\n return column.class;\n }\n\n return column.class[this.getDescendantProp(row, column)] || '';\n }\n\n public getDescendantProp(row: any, column: ApexTableColumn): any {\n if (!column.value || column.value === null) {\n return column.label;\n }\n\n // Case only on preprocessing - returns any numbers that have been passed in the column.value string\n if (isFinite(Number(column.value))) {\n return parseFloat(column.value);\n }\n\n if (column.type === this.TableColumnType.NumberMath) {\n return row[column.value];\n }\n\n return column.value.split('.')\n .reduce((prev: any, curr: string) => {\n if (prev && curr in prev) {\n return prev[curr];\n } else {\n return undefined;\n }\n }, row);\n }\n\n public getTextColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.textColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.textColor[value] || null;\n }\n\n public getChipColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.chipColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.chipColor[value] || null;\n }\n\n public getChipBackgroundColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.chipBackgroundColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.chipBackgroundColor[value] || null;\n }\n\n public getCellIconColor(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.iconColor) {\n return null;\n }\n\n const value = this.getDescendantProp(row, column);\n\n return column.cellOptions.iconColor[value] || null;\n }\n\n public getCellIcon(row: any, column: ApexTableColumn): string | null {\n if (!column.cellOptions?.icon) {\n return null;\n }\n\n if (typeof column.cellOptions.icon === 'string') {\n return column.cellOptions.icon;\n }\n\n const value = this.getDescendantProp(row, column);\n return column.cellOptions.icon[value] || null;\n }\n\n public getChangeValue(row: any, column: ApexTableColumn): number | null {\n if (!column.change) return null;\n\n const value = this.getDescendantProp(row, { value: column.change } as ApexTableColumn);\n\n return typeof value === 'number' ? value : parseFloat(value) || null;\n }\n\n public getListDisplayText(row: any, column: ApexTableColumn): string {\n const arr = this.getDescendantProp(row, column);\n\n if (!Array.isArray(arr) || arr.length === 0) {\n return '--';\n }\n\n const max = column.listOptions?.max ?? 3;\n const visible = arr.slice(0, max);\n const labelKey = column.listOptions?.label;\n\n return visible.map(item => labelKey ? item[labelKey] : item).join(' / ');\n }\n\n public getListOverflowCount(row: any, column: ApexTableColumn): number {\n const arr = this.getDescendantProp(row, column);\n\n if (!Array.isArray(arr)) {\n return 0;\n }\n\n const max = column.listOptions?.max ?? 3;\n\n return Math.max(0, arr.length - max);\n }\n\n public getListTooltipContent(row: any, column: ApexTableColumn): string {\n const arr = this.getDescendantProp(row, column);\n\n if (!Array.isArray(arr)) {\n return '';\n }\n\n const max = column.listOptions?.max ?? 3;\n const hidden = arr.slice(max);\n const labelKey = column.listOptions?.label;\n\n return hidden.map(item => labelKey ? item[labelKey] : item).join('<br>');\n }\n\n public getChipLabel(row: any, column: ApexTableColumn): string {\n if (!column.chipLabel) {\n return column.label ? column.label : this.getDescendantProp(row, column);\n }\n\n return column.chipLabel[this.getDescendantProp(row, column)];\n }\n\n public isStatusStepCompleted(row: any, column: ApexTableColumn, stepIndex: number): boolean {\n if (!column.statusSteps?.length) {\n return false;\n }\n\n const currentValue = this.getDescendantProp(row, column);\n const currentIndex = column.statusSteps.findIndex(s => s.value === currentValue);\n\n return currentIndex !== -1 && stepIndex <= currentIndex;\n }\n\n public getCheckboxState(row: any, column: ApexTableColumn): boolean {\n let state = this.getDescendantProp(row, column);\n\n if (typeof state !== 'boolean') {\n return false;\n }\n\n return state;\n }\n\n public handleActionShow(action: Action, row: any, column?: ApexTableColumn): boolean {\n if (!action.showOn || action.showOn.length === 0) {\n return true;\n }\n\n return action.showOn.every((condition) => {\n const rowValue = this.getDescendantProp(row, { value: condition.property });\n\n const ifValueExists = !!rowValue;\n \n if (condition.exists != null && condition.exists === ifValueExists) {\n return ifValueExists;\n }\n\n return condition.values.includes(rowValue);\n });\n }\n\n public sortColumn(column: any, changeSortDirection = true): void {\n if (!this.sortable) {\n return;\n }\n\n if (!column.value) {\n return;\n }\n\n if (changeSortDirection) {\n\n if (this.sortIndex == this.columns.indexOf(column)) {\n switch (this.sortDirection) {\n case 'asc':\n this.sortDirection = 'desc';\n break;\n case 'desc':\n this.sortDirection = 'asc';\n break;\n default:\n this.sortDirection = 'asc';\n break;\n }\n } else {\n this.sortDirection = 'asc';\n this.sortIndex = this.columns.indexOf(column);\n }\n\n }\n\n if (this.serverSide) {\n this.currentPage = 0;\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n } else {\n this.goToFirstPage();\n\n this.sortData(this.filteredData(), column);\n this.updatePageData();\n }\n\n const row = this.currentActiveRow();\n if (row) {\n row.isDropdown = false;\n this.currentActiveRow.set(null);\n this.unlockScroll();\n }\n }\n\n public toggleActionDropdown(row: any, column: ApexTableColumn, event: any): void {\n // Prevent the event to be processed by the Hostlistener\n event.stopPropagation();\n\n const prevRow = this.currentActiveRow();\n if (prevRow) {\n prevRow.isDropdown = false;\n }\n\n row.isDropdown = !row.isDropdown;\n\n this.currentActiveRow.set(row);\n this.currentActiveColumn.set(column);\n\n // Wait for Angular to render the dropdown element via @if before positioning it.\n afterNextRender(() => {\n let actionPos!: DOMRect;\n\n for (let i of this.moreActionsList) {\n if (i.nativeElement.classList.contains('opened')) {\n actionPos = i.nativeElement.getBoundingClientRect();\n }\n }\n\n if (this.DropdownElement) {\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n\n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n\n this.lockScroll();\n } else {\n this.unlockScroll();\n }\n }, { injector: this.injector });\n }\n\n public onViewportScroll(): void {\n // Safety net: close dropdown if scroll somehow fires while it's open\n const row = this.currentActiveRow();\n if (row) {\n row.isDropdown = false;\n this.currentActiveRow.set(null);\n this.currentActiveColumn.set(null);\n this.unlockScroll();\n }\n }\n\n public toggleRowSelection(row: any, event?: MouseEvent): void {\n const pageData = this.pageData();\n const currentIndex = pageData.indexOf(row);\n\n this.selectedRows.update(s => {\n const next = new Set(s);\n if (event?.shiftKey && this.lastSelectedIndex !== -1 && currentIndex !== -1) {\n const start = Math.min(this.lastSelectedIndex, currentIndex);\n const end = Math.max(this.lastSelectedIndex, currentIndex);\n\n for (let i = start; i <= end; i++) {\n next.add(pageData[i]);\n }\n } else {\n if (next.has(row)) {\n next.delete(row);\n } else {\n next.add(row);\n }\n }\n return next;\n });\n\n this.lastSelectedIndex = currentIndex;\n this.allSelected.set(this.selectedRows().size === pageData.length);\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n public toggleSelectAll(): void {\n const pageData = this.pageData();\n\n if (this.allSelected()) {\n this.selectedRows.set(new Set());\n this.allSelected.set(false);\n } else {\n this.selectedRows.set(new Set(pageData));\n this.allSelected.set(true);\n }\n\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n public isRowSelected(row: any): boolean {\n return this.selectedRows().has(row);\n }\n\n private lockScroll(): void {\n this.scrollBlockService.activate();\n\n if (this.cdkViewport) {\n this.cdkViewport.elementRef.nativeElement.style.overflow = 'hidden';\n }\n }\n\n private unlockScroll(): void {\n this.scrollBlockService.deactivate();\n\n if (this.cdkViewport) {\n this.cdkViewport.elementRef.nativeElement.style.overflow = '';\n }\n }\n\n private preprocessData(): void {\n if (!this.data || this.data.length === 0) {\n return;\n }\n\n this.columns.forEach(column => {\n if (!column.value || column.type !== this.TableColumnType.NumberMath) {\n return;\n }\n\n this.data.forEach(row => {\n const result = this.calculateNumberMathCell(row, column);\n row[column.value as any] = result;\n });\n });\n }\n\n private calculateNumberMathCell(row: any, column: any): any {\n const expression = column.value.replace(\n /([a-zA-Z_][a-zA-Z0-9_.]*|\\d*\\.?\\d+)/g,\n (match: any) => {\n let value = this.getDescendantProp(row, { value: match });\n\n return (typeof value === 'number') ? value : parseFloat(value) || 0;\n }\n );\n\n let fn = new Function(`return ${expression};`);\n let result = fn();\n\n if (Number.isFinite(result)) {\n return result;\n }\n\n return this.getDescendantProp(row, column);\n }\n\n private filterData(): any[] {\n if (!this.data || this.data.length === 0) {\n return [];\n }\n\n let arrayToReturn: any[] = [ ];\n\n for (let row of this.data) {\n for (let column of this.columns) {\n if (!column.value) { continue; }\n\n let access = row[column.value];\n\n if (column.value.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n access = this.getAccessIfColumnValueIsObject(row, column);\n }\n\n if (access === undefined) {\n break;\n }\n\n const rowPropAsString = JSON.stringify(access).toLowerCase();\n\n if (rowPropAsString.includes(this.filter.toLowerCase())) {\n arrayToReturn.push(row);\n\n break;\n }\n }\n }\n\n return arrayToReturn;\n }\n\n private sortData(data: any[], column: ApexTableColumn): any[] {\n if (!data || data.length === 0 || !Array.isArray(data)) {\n return [];\n }\n\n if (column) {\n this.sortByProperty(data, column);\n }\n\n return data;\n }\n\n private sortByProperty(arr: any, column: any): number | void {\n if (this.sortDirection === 'desc') {\n this.sortReverse(arr, column);\n return;\n }\n\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueA - valueB;\n }\n \n if (!valueA && valueB) return -1;\n if (valueA && !valueB) return 1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return -1;\n if (valueA > valueB) return 1;\n\n return 0;\n });\n }\n\n private sortReverse(arr: any, column: any) {\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueB - valueA;\n }\n\n if (!valueA && valueB) return 1;\n if (valueA && !valueB) return -1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return 1;\n if (valueA > valueB) return -1;\n\n return 0;\n });\n }\n\n private getAccessIfColumnValueIsObject(row: any, column: ApexTableColumn): any {\n if (!column.value || column.value === null) {\n return undefined;\n }\n\n const keys = column.value.split('.');\n\n let access = row[keys[0]];\n\n for (let i = 1; i < keys.length; i++) {\n if (access && keys[i] in access) {\n access = access[keys[i]];\n } else {\n return undefined;\n }\n }\n\n return access;\n }\n\n private buildPaginationSelectDependecies(): void {\n const formControls: PageFormControls = {\n pageSize: this.formBuilder.control({ label: this.pageSize.toString(), value: this.pageSize }, { nonNullable: true, validators: [ Validators.required ] })\n };\n\n this.formGroup = this.formBuilder.group(formControls);\n\n const selectData = this.pageSizeOptions.map(item => ({\n label: item.toString(),\n value: item\n }));\n\n this.pageSizeSelectOptions = {\n label: '',\n data: selectData,\n formGroup: this.formGroup,\n formControlName: 'pageSize'\n };\n\n this.subscribeToFormValueChanges();\n }\n\n private subscribeToFormValueChanges(): void {\n this.formGroup.controls.pageSize.valueChanges.subscribe((value) => {\n if (this.pageSize === value.value) {\n return;\n }\n\n const currentPageFirstRowIndex = this.currentPage * this.pageSize;\n this.pageSize = value.value;\n\n this.currentPage = Math.floor(currentPageFirstRowIndex / this.pageSize);\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n if (this.serverSide) {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n this.calculateTotalPages();\n this.updateVisibleRange(start, end);\n this.updatePageData();\n this.refreshLayout();\n });\n }\n\n private calculatePages(): void {\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n this.updatePageData();\n\n if (!this.serverSide) {\n this.updateVisibleRange(start, end);\n } else {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n }\n}\n","<div class=\"container\" [ngClass]=\"{ 'is-loading': isLoading, 'sticky-header': stickyHeader, 'header-stuck': isHeaderStuck() }\">\n @if (virtualScroll) {\n @if (stickyHeader) {\n <table class=\"sticky-virtual-header\">\n <thead>\n <ng-container *ngTemplateOutlet=\"headerRow\"></ng-container>\n </thead>\n </table>\n }\n\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" class=\"cdk-table-viewport\" [ngStyle]=\"{ height: virtualViewportHeight() + 'px' }\" [style.overflow-y]=\"showViewportScroll() ? 'auto' : 'hidden'\" (scrolled)=\"onViewportScroll()\">\n <table>\n @if (!stickyHeader) {\n <thead #theadRef>\n <ng-container *ngTemplateOutlet=\"headerRow\"></ng-container>\n </thead>\n }\n\n <tbody>\n <tr *cdkVirtualFor=\"let row of pageData(); trackBy: trackByIndex\" [ngClass]=\"{ 'selected-row': editMode && isRowSelected(row) }\">\n @for (column of columns; track $index) {\n <td tabindex=\"-1\" [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n\n @if (editMode) {\n <td class=\"select-column\" (click)=\"toggleRowSelection(row, $event)\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"isRowSelected(row)\"></apex-checkbox>\n </div>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <table>\n <thead>\n <ng-container *ngTemplateOutlet=\"headerRow\"></ng-container>\n </thead>\n\n <tbody>\n @for (row of pageData(); track $index) {\n <tr [ngClass]=\"{ 'selected-row': editMode && isRowSelected(row) }\">\n @for (column of columns; track $index) {\n <td tabindex=\"-1\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n\n @if (editMode) {\n <td class=\"select-column\" (click)=\"toggleRowSelection(row, $event)\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"isRowSelected(row)\"></apex-checkbox>\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n\n @if (currentActiveRow()?.isDropdown && currentActiveColumn()) {\n <ng-container *ngTemplateOutlet=\"multipleActionsDropdown; context: { row: currentActiveRow(), column: currentActiveColumn() }\"></ng-container>\n }\n\n @if (filter && filteredData() && filteredData().length === 0) {\n <div class=\"row no-data\">\n <span>No data matching the filter:</span>\n\n <span>\"{{ filter }}\"</span>\n </div>\n }\n\n @if (!filter && data && data.length === 0) {\n <div class=\"row no-data\">No data available.</div>\n }\n\n @if (pageable && pageData().length !== 0) {\n <div class=\"paging\">\n <div class=\"visible-range\">{{ visibleRange() }}</div>\n\n <ng-container *ngTemplateOutlet=\"pagePicker; context: { totalPages: totalPages() }\"></ng-container>\n\n <div class=\"page-size-option-picker\">\n <span>Items per page:</span>\n\n <apex-select class=\"table\" [options]=\"pageSizeSelectOptions\"></apex-select>\n </div>\n </div>\n }\n</div>\n\n<ng-template #textCell let-row=\"row\" let-column=\"column\" let-index=\"$index\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '', column.cellOptions?.icon ? 'has-icon' : '']\"\n [style.color]=\"getTextColor(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n @if (getCellIcon(row, column) && column.cellOptions?.iconPosition !== 'right') {\n <div class=\"cell-icon\" [class.has-color]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-fill]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-stroke]=\"getCellIconColor(row, column)\">\n <apex-img [src]=\"'assets/img/' + getCellIcon(row, column)\" [alt]=\"'Cell icon.'\"></apex-img>\n </div>\n }\n\n <span class=\"cell-text\">{{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) }}{{ column.suffix ? column.suffix : '' }}</span>\n\n @if (getCellIcon(row, column) && column.cellOptions?.iconPosition === 'right') {\n <div class=\"cell-icon\" [class.has-color]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-fill]=\"getCellIconColor(row, column)\" [style.--apex-table-cell-icon-stroke]=\"getCellIconColor(row, column)\">\n <apex-img [src]=\"'assets/img/' + getCellIcon(row, column)\" [alt]=\"'Cell icon.'\"></apex-img>\n </div>\n }\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #dateCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\">\n {{ formatDate(getDescendantProp(row, column), column.dateFormat) }}\n </div>\n</ng-template>\n\n<ng-template #currencyCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '']\">\n\n @if (getDescendantProp(row, column) !== undefined) {\n {{ column.prefix ? column.prefix : '' }}{{ (getDescendantProp(row, column) / 100) | number }}\n }\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #numberCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '']\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #numberMathCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"[getClass(row, column), column.change ? 'has-change' : '']\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n\n @if (getChangeValue(row, column) !== null) {\n <apex-chip [ngClass]=\"getChangeValue(row, column)! >= 0 ? 'change-positive' : 'change-negative'\">\n {{ getChangeValue(row, column)! >= 0 ? '+' : '' }}{{ getChangeValue(row, column) }}%\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #actionCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell actions\">\n\n @for (action of column.singleActions; track $index) {\n @if (handleActionShow(action, row, column)) {\n <div ApexTooltip (click)=\"action.execute && action.execute(row)\" [apexTooltip]=\"action.label\" [tooltipPosition]=\"tooltipPosition.Above\" class=\"action-icon-wrapper\" [ngClass]=\"{ 'disabled': action.disabled }\">\n <apex-img [src]=\" 'assets/img/' + action.icon\" [ngClass]=\"action.class\" [alt]=\"'Action icon for ' + action.label\"></apex-img>\n </div>\n }\n }\n\n @if (column.multipleActions) {\n <div class=\"action-icon-wrapper\" #moreActionsList [ngClass]=\"{ 'opened': row.isDropdown }\" (click)=\"toggleActionDropdown(row, column, $event)\">\n <svg class=\"multiple-action-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\n <path d=\"M10.3047 8C10.3047 8.34612 10.2021 8.68446 10.0098 8.97225C9.81747 9.26004 9.54416 9.48434 9.22438 9.61679C8.90461 9.74924 8.55275 9.7839 8.21328 9.71638C7.87381 9.64885 7.56199 9.48218 7.31725 9.23744C7.07251 8.9927 6.90584 8.68088 6.83831 8.34141C6.77079 8.00194 6.80545 7.65008 6.9379 7.33031C7.07035 7.01053 7.29465 6.73722 7.58244 6.54493C7.87023 6.35264 8.20857 6.25 8.55469 6.25C9.01868 6.25046 9.46353 6.43498 9.79162 6.76307C10.1197 7.09116 10.3042 7.53601 10.3047 8ZM8.55469 4.75C8.90081 4.75 9.23915 4.64737 9.52694 4.45507C9.81472 4.26278 10.039 3.98947 10.1715 3.6697C10.3039 3.34993 10.3386 2.99806 10.2711 2.65859C10.2035 2.31913 10.0369 2.00731 9.79213 1.76256C9.54738 1.51782 9.23556 1.35115 8.8961 1.28363C8.55663 1.2161 8.20476 1.25076 7.88499 1.38321C7.56522 1.51566 7.29191 1.73997 7.09962 2.02775C6.90732 2.31554 6.80469 2.65388 6.80469 3C6.80515 3.46399 6.98967 3.90884 7.31776 4.23693C7.64585 4.56502 8.0907 4.74954 8.55469 4.75ZM8.55469 11.25C8.20857 11.25 7.87023 11.3526 7.58244 11.5449C7.29465 11.7372 7.07035 12.0105 6.9379 12.3303C6.80545 12.6501 6.77079 13.0019 6.83831 13.3414C6.90584 13.6809 7.07251 13.9927 7.31725 14.2374C7.56199 14.4822 7.87381 14.6489 8.21328 14.7164C8.55275 14.7839 8.90461 14.7492 9.22438 14.6168C9.54416 14.4843 9.81747 14.26 10.0098 13.9722C10.2021 13.6845 10.3047 13.3461 10.3047 13C10.3042 12.536 10.1197 12.0912 9.79162 11.7631C9.46353 11.435 9.01868 11.2505 8.55469 11.25Z\"/>\n </svg>\n </div>\n }\n\n </div>\n</ng-template>\n\n<ng-template #chipCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell chip\">\n @if (getChipLabel(row, column)) {\n <apex-chip [ngClass]=\"getClass(row, column)\"\n [style.--apex-chip-color]=\"getChipColor(row, column)\"\n [style.--apex-chip-background-color]=\"getChipBackgroundColor(row, column)\"> {{ getChipLabel(row, column) }}</apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #statusCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell status\">\n @for (step of column.statusSteps; track step.value; let i = $index) {\n <div class=\"status-step\" [class.completed]=\"isStatusStepCompleted(row, column, i)\">\n <span class=\"status-step-label\">{{ step.label }}</span>\n\n <div class=\"status-step-bar\"\n [style.background-color]=\"isStatusStepCompleted(row, column, i) ? step.color : null\">\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #listCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell list\">\n <span class=\"list-text\">{{ getListDisplayText(row, column) }}</span>\n\n @if (getListOverflowCount(row, column) > 0) {\n <apex-chip class=\"list-overflow-badge\"\n ApexTooltip\n [apexTooltip]=\"getListTooltipContent(row, column)\"\n [tooltipPosition]=\"tooltipPosition.Below\">\n +{{ getListOverflowCount(row, column) }}\n </apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #checkboxCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"getCheckboxState(row, column)\" [disabled]=\"true\"></apex-checkbox>\n </div>\n</ng-template>\n\n<ng-template #multipleActionsDropdown let-row=\"row\" let-column=\"column\">\n <div #multipleActionsDropdownElement #dropdownElement class=\"more-actions-dropdown\">\n @for (action of column.multipleActions; track $index) {\n\n @if (handleActionShow(action, row, column)) {\n <div class=\"dropdown-row\" (click)=\"action.execute && action.execute(row)\">\n <apex-img [src]=\"'assets/img/' + action.icon\" [ngClass]=\"action.class\" [alt]=\"'Action icon for ' + action.label\"></apex-img>\n\n <span>{{ action.label }}</span>\n </div>\n }\n\n }\n </div>\n</ng-template>\n\n<ng-template #pagePicker let-totalPages=\"totalPages\">\n <div class=\"page-picker\">\n <!-- If page one should be visible -->\n @if (currentPage + 1 >= 3) {\n <span (click)=\"goToPage(0)\">1</span>\n <span class=\"style-excluded\">...</span>\n }\n\n <!-- Middle part of the page-picker -->\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage - 1 } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage, class: 'highlighted' } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage + 1 } \"></ng-container>\n\n <!-- If last page should be visible -->\n @if (currentPage + 1 <= totalPages - 2) {\n <span class=\"style-excluded\">...</span>\n <span (click)=\"goToPage(totalPages - 1)\">{{ totalPages }}</span>\n }\n\n </div>\n</ng-template>\n\n<ng-template #page let-page=\"page\" let-class=\"class\">\n @if (page >= 0 && page < totalPages()) {\n <span [ngClass]=\"class\" (click)=\"goToPage(page)\">{{ page + 1 }}</span>\n }\n</ng-template>\n\n<ng-template #headerRow>\n <tr>\n @for (column of columns; track $index) {\n <th [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <div class=\"cell\">\n <span>{{ column.label }}</span>\n\n @if (column.type !== TableColumnType.Actions && sortable) {\n <div class=\"arranger\" (click)=\"sortColumn(column)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.11445 5.50005H8.88795C9.31895 5.50005 9.54795 4.99005 9.26145 4.66755L6.37495 1.42005C6.32813 1.3672 6.27063 1.32489 6.20624 1.29591C6.14186 1.26694 6.07205 1.25195 6.00145 1.25195C5.93084 1.25195 5.86104 1.26694 5.79666 1.29591C5.73227 1.32489 5.67477 1.3672 5.62795 1.42005L2.74045 4.66755C2.45395 4.99005 2.68295 5.50005 3.11445 5.50005ZM5.62745 10.5795C5.67427 10.6324 5.73177 10.6747 5.79616 10.7037C5.86054 10.7327 5.93034 10.7476 6.00095 10.7476C6.07155 10.7476 6.14136 10.7327 6.20574 10.7037C6.27013 10.6747 6.32763 10.6324 6.37445 10.5795L9.26095 7.33205C9.54795 7.01005 9.31895 6.50005 8.88745 6.50005H3.11445C2.68345 6.50005 2.45445 7.01005 2.74095 7.33255L5.62745 10.5795Z\" fill=\"#C6C6C6\"/>\n </svg>\n </div>\n }\n </div>\n </th>\n }\n\n @if (editMode) {\n <th class=\"select-column\">\n <div class=\"cell\">\n <span class=\"select-all-btn\" (click)=\"toggleSelectAll()\">{{ allSelected() ? 'Deselect' : 'Select all' }}</span>\n </div>\n </th>\n }\n </tr>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;IAqDY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,mBAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACR,CAAC,EAXW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;MA4DlB,kBAAkB,CAAA;IAE7B,WAAA,CACU,UAAsB,EACtB,SAAoB,EACpB,WAAwB,EACxB,kBAAsC,EACtC,QAAkB,EAAA;QAJlB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAMY,IAAA,CAAA,eAAe,GAA2B,IAAI;;QA0BnE,IAAA,CAAA,SAAS,GAAG,CAAC;QACb,IAAA,CAAA,QAAQ,GAAG,IAAI;QACf,IAAA,CAAA,aAAa,GAAmB,KAAK;;QAGrC,IAAA,CAAA,QAAQ,GAAG,EAAE;QACb,IAAA,CAAA,WAAW,GAAG,CAAC;QACf,IAAA,CAAA,QAAQ,GAAG,KAAK;AAChB,QAAA,IAAA,CAAA,eAAe,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAE;;AAG3C,QAAA,IAAA,CAAA,aAAa,GAAY,KAAK,CAAC;QAC/B,IAAA,CAAA,cAAc,GAAW,GAAG;;QAG5B,IAAA,CAAA,YAAY,GAAY,KAAK;;QAG7B,IAAA,CAAA,QAAQ,GAAY,KAAK;AAExB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAmB;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAS;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAE/C,QAAA,IAAA,CAAA,QAAQ,GAAW,EAAE,CAAC;QAEtB,IAAA,CAAA,eAAe,GAAG,eAAe;QAEjC,IAAA,CAAA,eAAe,GAAG,mBAAmB;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,CAAC,sDAAC;AACtB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE,wDAAC;AAEzB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAQ,EAAE,wDAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAQ,EAAE,oDAAC;AAI5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAM,IAAI,4DAAC;AACpC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAyB,IAAI,+DAAC;AAC1D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC1B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAE7B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAW,IAAI,GAAG,EAAE,wDAAC;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,CAAC,iEAAC;AACjC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;QACjC,IAAA,CAAA,iBAAiB,GAAW,CAAC,CAAC;IA9EtC;AAqFO,IAAA,OAAO,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE,aAAa,IAAI,KAAK,CAAC,MAAM,EAAE;AACxE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;YAEnC,IAAI,GAAG,EAAE;AACP,gBAAA,GAAG,CAAC,UAAU,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC/B,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;IACF;IAGO,QAAQ,GAAA;AAEb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AAE1B,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B;QACF;AAEA,QAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;gBAC3E,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;gBAE1D,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE;oBAC5C,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,cAAe,CAAC,SAAS;gBACjD;AAEA,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAO,IAAI;gBAEtF;YACF;QACF;IACF;IAGO,QAAQ,GAAA;AAEb,QAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;gBAC3E,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;gBAE1D,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE;oBAC5C,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,cAAe,CAAC,UAAU;gBAClD;gBAEA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW;AAEpE,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,aAAa;gBAE5H,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,kBAAkB,GAAG,EAAE;AACnG,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAI,IAAI;gBAE5D;YACF;QACF;IACF;IAEO,QAAQ,GAAA;IACf;IAEO,eAAe,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ;QAE/B,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACnI;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,gCAAgC,EAAE;QACzC;QAEA,IAAI,CAAC,oBAAoB,EAAE;QAE3B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE;AACvC,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;AACvE,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YACrC;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAEhC,IAAI,CAAC,cAAc,EAAE;YACvB;iBAAO;gBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;gBAElE,IAAI,CAAC,cAAc,EAAE;gBAErB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;AACtD,gBAAA,CAAC,CAAC;YACJ;YAEA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM;QACnF;AAEA,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;;AAEvD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM;gBAE7C,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,CAAC,CAAC;YAEJ;iBAAO;gBACL,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,WAAW,GAAG,CAAC;oBAEpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;AAC9K,gBAAA,CAAC,CAAC;YACJ;QAEF;AAEA,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC;YAE1D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE;gBACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AAChC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE;YACzE,IAAI,CAAC,gCAAgC,EAAE;QACzC;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE3D,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,aAAa,EAAE;IACtB;IAEO,cAAc,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QAChC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC9C,YAAA,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ;AAEjC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzC;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;IAEO,kBAAkB,CAAC,KAAa,EAAE,GAAW,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAY,KAAK,GAAG,CAAE,CAAA,IAAA,EAAO,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,WAAW,CAAA,QAAA,CAAU,CAAC;IAC1F;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE;AAEO,IAAA,YAAY,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,KAAK;IACd;IAEO,oBAAoB,GAAA;AACzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC;AAEtF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AACzB,eAAG,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;eACtB,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGlD,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC;QAC9C;aAAO;AACL,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc;AACpC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;AACzD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AACxE,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,CAAC;QACxE;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;QACpC;aAAO;AACL,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;AAC3E,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa;YAChD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,GAAG,mBAAmB,CAAC;QAC/D;IACF;AAEO,IAAA,eAAe,CAAC,MAAuB,EAAA;AAC5C,QAAA,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,mBAAmB,CAAC,MAAM;gBAC7B,OAAO,IAAI,CAAC,aAAa;YAC3B,KAAK,mBAAmB,CAAC,QAAQ;gBAC/B,OAAO,IAAI,CAAC,eAAe;YAC7B,KAAK,mBAAmB,CAAC,UAAU;gBACjC,OAAO,IAAI,CAAC,iBAAiB;YAC/B,KAAK,mBAAmB,CAAC,IAAI;gBAC3B,OAAO,IAAI,CAAC,WAAW;YACzB,KAAK,mBAAmB,CAAC,IAAI;gBAC3B,OAAO,IAAI,CAAC,WAAW;YACzB,KAAK,mBAAmB,CAAC,QAAQ;gBAC/B,OAAO,IAAI,CAAC,eAAe;YAC7B,KAAK,mBAAmB,CAAC,OAAO;gBAC9B,OAAO,IAAI,CAAC,aAAa;YAC3B,KAAK,mBAAmB,CAAC,IAAI;gBAC3B,OAAO,IAAI,CAAC,WAAW;YACzB,KAAK,mBAAmB,CAAC,MAAM;gBAC7B,OAAO,IAAI,CAAC,aAAa;AAC3B,YAAA;gBACE,OAAO,IAAI,CAAC,WAAW;;IAE7B;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,oBAAoB,EAAE;QAE3B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE;AACvC,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,QAAQ,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEO,gBAAgB,GAAA;QACrB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;QACxC,IAAI,CAAC,cAAc,EAAE;IACvB;AAEO,IAAA,QAAQ,CAAC,KAAoB,EAAE,MAAc,EAAE,mBAA2B,EAAA;AAC/E,QAAA,MAAM,SAAS,GAAG,mBAAmB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;QAEpC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9B,YAAA,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAI,KAAK,CAAC,MAAyB,CAAC,SAAS;QAC1E;AAAO,aAAA;AACL,YAAA,IAAI,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAElC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1B;qBAAO;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAI,KAAK,CAAC,MAAyB,CAAC,SAAS;gBAChE;YACF;QACF;IACF;AAEO,IAAA,UAAU,CAAC,YAAuC,EAAE,iBAAA,GAA2C,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAA;AACjK,QAAA,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,EAAE;AAC9E,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC;IACjH;IAEO,QAAQ,CAAC,GAAQ,EAAE,MAAuB,EAAA;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YACpC,OAAO,MAAM,CAAC,KAAK;QACrB;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;IAChE;IAEO,iBAAiB,CAAC,GAAQ,EAAE,MAAuB,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE;YAC1C,OAAO,MAAM,CAAC,KAAK;QACrB;;QAGA,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAClC,YAAA,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC;QAEA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AACnD,YAAA,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;AAC1B,aAAA,MAAM,CAAC,CAAC,IAAS,EAAE,IAAY,KAAI;AAClC,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACxB,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB;iBAAO;AACL,gBAAA,OAAO,SAAS;YAClB;QACF,CAAC,EAAE,GAAG,CAAC;IACX;IAEO,YAAY,CAAC,GAAQ,EAAE,MAAuB,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAEjD,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI;IACpD;IAEO,YAAY,CAAC,GAAQ,EAAE,MAAuB,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAEjD,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI;IACpD;IAEO,sBAAsB,CAAC,GAAQ,EAAE,MAAuB,EAAA;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAEjD,OAAO,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI;IAC9D;IAEO,gBAAgB,CAAC,GAAQ,EAAE,MAAuB,EAAA;AACvD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAEjD,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI;IACpD;IAEO,WAAW,CAAC,GAAQ,EAAE,MAAuB,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE;AAC7B,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI;QAChC;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QACjD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;IAC/C;IAEO,cAAc,CAAC,GAAQ,EAAE,MAAuB,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AAE/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAqB,CAAC;AAEtF,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI;IACtE;IAEO,kBAAkB,CAAC,GAAQ,EAAE,MAAuB,EAAA;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAE/C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;AACjC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK;QAE1C,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1E;IAEO,oBAAoB,CAAC,GAAQ,EAAE,MAAuB,EAAA;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC;QACV;QAEA,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AAExC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACtC;IAEO,qBAAqB,CAAC,GAAQ,EAAE,MAAuB,EAAA;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK;QAE1C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1E;IAEO,YAAY,CAAC,GAAQ,EAAE,MAAuB,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACrB,OAAO,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAC1E;AAEA,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9D;AAEO,IAAA,qBAAqB,CAAC,GAAQ,EAAE,MAAuB,EAAE,SAAiB,EAAA;AAC/E,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE;AAC/B,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACxD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC;QAEhF,OAAO,YAAY,KAAK,CAAC,CAAC,IAAI,SAAS,IAAI,YAAY;IACzD;IAEO,gBAAgB,CAAC,GAAQ,EAAE,MAAuB,EAAA;QACvD,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAE/C,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,gBAAgB,CAAC,MAAc,EAAE,GAAQ,EAAE,MAAwB,EAAA;AACxE,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,IAAI;QACf;QAEA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,KAAI;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE3E,YAAA,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ;AAEhC,YAAA,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,EAAE;AAClE,gBAAA,OAAO,aAAa;YACtB;YAEA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5C,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,UAAU,CAAC,MAAW,EAAE,mBAAmB,GAAG,IAAI,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACjB;QACF;QAEA,IAAI,mBAAmB,EAAE;AAEvB,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClD,gBAAA,QAAQ,IAAI,CAAC,aAAa;AACxB,oBAAA,KAAK,KAAK;AACR,wBAAA,IAAI,CAAC,aAAa,GAAG,MAAM;wBAC3B;AACF,oBAAA,KAAK,MAAM;AACT,wBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;wBAC1B;AACF,oBAAA;AACE,wBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;wBAC1B;;YAEN;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;gBAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C;QAEF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;YAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC9C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACpK;aAAO;YACL,IAAI,CAAC,aAAa,EAAE;YAEpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC;YAC1C,IAAI,CAAC,cAAc,EAAE;QACvB;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,UAAU,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEO,IAAA,oBAAoB,CAAC,GAAQ,EAAE,MAAuB,EAAE,KAAU,EAAA;;QAEvE,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,UAAU,GAAG,KAAK;QAC5B;AAEA,QAAA,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU;AAEhC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;;QAGpC,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,SAAmB;AAEvB,YAAA,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;gBAClC,IAAI,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChD,oBAAA,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE;gBACrD;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE;oBAC5C,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,cAAe,CAAC,SAAS;oBAC/C,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,cAAe,CAAC,UAAU;gBAClD;gBAEA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW;AAEpE,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,aAAa;gBAE5H,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,kBAAkB,GAAG,EAAE;AACnG,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC3D,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAO,IAAI;gBAEtF,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;gBACL,IAAI,CAAC,YAAY,EAAE;YACrB;QACF,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC;IAEO,gBAAgB,GAAA;;AAErB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,UAAU,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEO,kBAAkB,CAAC,GAAQ,EAAE,KAAkB,EAAA;AACpD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;AAE1C,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAG;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AAC3E,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;AAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;AAE1D,gBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB;YACF;iBAAO;AACL,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBAClB;qBAAO;AACL,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBACf;YACF;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC;AAClE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D;IAEO,eAAe,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEhC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;aAAO;YACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D;AAEO,IAAA,aAAa,CAAC,GAAQ,EAAA;QAC3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACrC;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACrE;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;AAEpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;QAC/D;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;gBACpE;YACF;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC;AACxD,gBAAA,GAAG,CAAC,MAAM,CAAC,KAAY,CAAC,GAAG,MAAM;AACnC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,uBAAuB,CAAC,GAAQ,EAAE,MAAW,EAAA;AACnD,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CACrC,sCAAsC,EACtC,CAAC,KAAU,KAAI;AACb,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAEzD,YAAA,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACrE,QAAA,CAAC,CACF;QAED,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA,CAAG,CAAC;AAC9C,QAAA,IAAI,MAAM,GAAG,EAAE,EAAE;AAEjB,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,YAAA,OAAO,MAAM;QACf;QAEA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;IAC5C;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,aAAa,GAAU,EAAG;AAE9B,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,YAAA,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBAAE;gBAAU;gBAE/B,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;gBAE9B,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;oBACvF,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC3D;AAEA,gBAAA,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB;gBACF;gBAEA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;AAE5D,gBAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE;AACvD,oBAAA,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;oBAEvB;gBACF;YACF;QACF;AAEA,QAAA,OAAO,aAAa;IACtB;IAEQ,QAAQ,CAAC,IAAW,EAAE,MAAuB,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACtD,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC;QACnC;AAEA,QAAA,OAAO,IAAI;IACb;IAEQ,cAAc,CAAC,GAAQ,EAAE,MAAW,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;YAC7B;QACF;QAEA,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;YACjC,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAE5B,YAAA,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK;YAEzB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;gBACjF,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,MAAM,CAAC;gBACvD,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,MAAM,CAAC;YACzD;iBAAO;gBACL,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AACtD,oBAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;AAC7B,oBAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;gBAC/B;YACF;YAEA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5D,OAAO,MAAM,GAAG,MAAM;YACxB;YAEA,IAAI,CAAC,MAAM,IAAI,MAAM;gBAAE,OAAO,CAAC,CAAC;YAChC,IAAI,MAAM,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,CAAC;AAE/B,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,CAAC;YAEhC,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,MAAM,GAAG,MAAM;AAAE,gBAAA,OAAO,CAAC;AAE7B,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,CAAC,GAAQ,EAAE,MAAW,EAAA;QACvC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;YACjC,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAE5B,YAAA,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK;YAEzB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;gBACjF,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,MAAM,CAAC;gBACvD,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,MAAM,CAAC;YACzD;iBAAO;gBACL,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AACtD,oBAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;AAC7B,oBAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;gBAC/B;YACF;YAEA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5D,OAAO,MAAM,GAAG,MAAM;YACxB;YAEA,IAAI,CAAC,MAAM,IAAI,MAAM;AAAE,gBAAA,OAAO,CAAC;YAC/B,IAAI,MAAM,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;AAEhC,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,CAAC;YAEhC,IAAI,MAAM,GAAG,MAAM;AAAE,gBAAA,OAAO,CAAC;YAC7B,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,CAAC,CAAC;AAE9B,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;IAEQ,8BAA8B,CAAC,GAAQ,EAAE,MAAuB,EAAA;QACtE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE;AAC1C,YAAA,OAAO,SAAS;QAClB;QAEA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAEpC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE;gBAC/B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B;iBAAO;AACL,gBAAA,OAAO,SAAS;YAClB;QACF;AAEA,QAAA,OAAO,MAAM;IACf;IAEQ,gCAAgC,GAAA;AACtC,QAAA,MAAM,YAAY,GAAqB;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAE,UAAU,CAAC,QAAQ,CAAE,EAAE;SACzJ;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;AAErD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK;AACnD,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,KAAK,EAAE;AACR,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,GAAG;AAC3B,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,eAAe,EAAE;SAClB;QAED,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEQ,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAChE,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,EAAE;gBACjC;YACF;YAEA,MAAM,wBAAwB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AACjE,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK;AAE3B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEvE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC9C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE7D,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACpK;YAEA,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC9C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;QACrC;aAAO;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACpK;IAEF;8GAv9BW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAYlB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7HrC,slhBAkUA,qqQD9NI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,oBAAoB,sGACpB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAPf,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAWF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,SAAS;iCACI,IAAI,EAAA,QAAA,EACN,YAAY,EAAA,OAAA,EAGb;wBACP,OAAO;wBACP,OAAO;wBACP,WAAW;wBACX,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,mBAAmB;wBACnB,oBAAoB;wBACpB,qBAAqB;wBACrB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,slhBAAA,EAAA,MAAA,EAAA,CAAA,6mQAAA,CAAA,EAAA;;sBAaA,SAAS;uBAAC,UAAU;;sBACpB,YAAY;uBAAC,iBAAiB;;sBAC9B,SAAS;uBAAC,wBAAwB;;sBAClC,SAAS;uBAAC,iBAAiB;;sBAG3B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACtC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACxC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACtC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACtC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACxC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACtC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAIxC;;sBACA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBAGA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBAGA;;sBAGA;;sBAEA;;sBACA;;sBACA;;sBA+BA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAczC,YAAY;uBAAC,iBAAiB;;sBA2B9B,YAAY;uBAAC,eAAe;;;AEtP/B;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apexara/ng-components",
3
- "version": "1.0.6-test.5",
3
+ "version": "1.0.6-test.7",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/cdk": ">=19",
@@ -21,6 +21,8 @@ interface ApexSelectOptions {
21
21
  formControlName?: string;
22
22
  errors?: ControlErrors;
23
23
  maxDropdownHeightPx?: number;
24
+ searchInDropdown?: boolean;
25
+ groups?: ApexSelectGroup[];
24
26
  }
25
27
  interface ApexSelectData {
26
28
  label: string;
@@ -29,6 +31,10 @@ interface ApexSelectData {
29
31
  isHover?: boolean;
30
32
  icon?: string;
31
33
  }
34
+ interface ApexSelectGroup {
35
+ label: string;
36
+ data: ApexSelectData[];
37
+ }
32
38
  interface ControlErrors {
33
39
  [x: string]: string;
34
40
  }
@@ -40,6 +46,8 @@ declare class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {
40
46
  label: ElementRef<HTMLLabelElement> | null;
41
47
  dropdown: CdkVirtualScrollViewport | null;
42
48
  inputWrapper: ElementRef<HTMLInputElement> | null;
49
+ dropdownSearch: ElementRef<HTMLInputElement> | null;
50
+ dropdownContainer: ElementRef<HTMLElement> | null;
43
51
  options: ApexSelectOptions;
44
52
  selectChange: EventEmitter<ApexSelectData>;
45
53
  helperTextChange: EventEmitter<void>;
@@ -55,8 +63,10 @@ declare class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {
55
63
  private documentKeyupValueResetTime;
56
64
  private documentKeyUpSubscription;
57
65
  private dataDiffer;
66
+ private groupsDiffer;
58
67
  private controlSubscription;
59
68
  filteredData: _angular_core.WritableSignal<ApexSelectData[]>;
69
+ filteredGroups: _angular_core.WritableSignal<ApexSelectGroup[]>;
60
70
  private lastSearch;
61
71
  private keyListener;
62
72
  private wheelListener;
@@ -70,6 +80,11 @@ declare class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {
70
80
  ngOnInit(): void;
71
81
  ngDoCheck(): void;
72
82
  ngAfterViewInit(): void;
83
+ private cloneGroups;
84
+ private hasGroups;
85
+ isSearchInDropdown(): boolean;
86
+ getAllOptions(): ApexSelectData[];
87
+ private getDropdownEl;
73
88
  ngOnChanges(changes: SimpleChanges): void;
74
89
  ngOnDestroy(): void;
75
90
  onHelperText(): void;
@@ -90,6 +105,7 @@ declare class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {
90
105
  handleKeydown(event: any): void;
91
106
  preventFocusChange(event: MouseEvent): void;
92
107
  onSearch(value: string, shouldResetHover?: boolean): void;
108
+ private filterGroups;
93
109
  getPlaceholder(): string;
94
110
  checkIfControlInvalid(): boolean;
95
111
  checkIfControlDisabled(): boolean;
@@ -99,6 +115,8 @@ declare class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {
99
115
  private keyup;
100
116
  private documentEnterKeyup;
101
117
  private documentArrowsKeyup;
118
+ getNavigableOptions(): ApexSelectData[];
119
+ private scrollGroupedOptionIntoView;
102
120
  private documentKeyup;
103
121
  private removeProperty;
104
122
  private blockArrowScroll;
@@ -111,4 +129,4 @@ declare class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {
111
129
  }
112
130
 
113
131
  export { ApexSelectComponent };
114
- export type { ApexSelectData, ApexSelectOptions, ControlErrors };
132
+ export type { ApexSelectData, ApexSelectGroup, ApexSelectOptions, ControlErrors };
@@ -26,6 +26,12 @@ interface ApexTableColumn {
26
26
  change?: string;
27
27
  listOptions?: ApexTableListOptions;
28
28
  cellOptions?: ApexTableCellOptions;
29
+ statusSteps?: ApexTableStatusStep[];
30
+ }
31
+ interface ApexTableStatusStep {
32
+ label: string;
33
+ value: string | number | boolean;
34
+ color: string;
29
35
  }
30
36
  interface ApexTableListOptions {
31
37
  label?: string;
@@ -58,7 +64,8 @@ declare enum ApexTableColumnType {
58
64
  NumberMath = 5,
59
65
  Actions = 6,
60
66
  Checkbox = 7,
61
- List = 8
67
+ List = 8,
68
+ Status = 9
62
69
  }
63
70
  type ActionShowType = Array<{
64
71
  property: string;
@@ -110,6 +117,7 @@ declare class ApexTableComponent {
110
117
  checkboxCellTpl: TemplateRef<any>;
111
118
  actionCellTpl: TemplateRef<any>;
112
119
  listCellTpl: TemplateRef<any>;
120
+ statusCellTpl: TemplateRef<any>;
113
121
  data: any[];
114
122
  dataLength: number;
115
123
  columns: ApexTableColumn[];
@@ -181,6 +189,7 @@ declare class ApexTableComponent {
181
189
  getListOverflowCount(row: any, column: ApexTableColumn): number;
182
190
  getListTooltipContent(row: any, column: ApexTableColumn): string;
183
191
  getChipLabel(row: any, column: ApexTableColumn): string;
192
+ isStatusStepCompleted(row: any, column: ApexTableColumn, stepIndex: number): boolean;
184
193
  getCheckboxState(row: any, column: ApexTableColumn): boolean;
185
194
  handleActionShow(action: Action, row: any, column?: ApexTableColumn): boolean;
186
195
  sortColumn(column: any, changeSortDirection?: boolean): void;
@@ -206,4 +215,4 @@ declare class ApexTableComponent {
206
215
  }
207
216
 
208
217
  export { ApexTableColumnType, ApexTableComponent };
209
- export type { Action, ActionShowType, ApexDateFormatOptions, ApexTableCellOptions, ApexTableChange, ApexTableColumn, ApexTableListOptions };
218
+ export type { Action, ActionShowType, ApexDateFormatOptions, ApexTableCellOptions, ApexTableChange, ApexTableColumn, ApexTableListOptions, ApexTableStatusStep };