@shival99/z-ui 2.6.6 → 2.6.8

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.
Files changed (82) hide show
  1. package/assets/css/base.css +16 -16
  2. package/fesm2022/shival99-z-ui-components-z-button-group.mjs +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
  4. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +13 -13
  5. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-editor.mjs +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  8. package/fesm2022/shival99-z-ui-components-z-menu.mjs +5 -3
  9. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-modal.mjs +6 -7
  11. package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-popover.mjs +2 -2
  13. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  14. package/fesm2022/shival99-z-ui-components-z-select.mjs +3 -2
  15. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  16. package/fesm2022/shival99-z-ui-components-z-toast.mjs +4 -4
  17. package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
  18. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
  20. package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -2
  21. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  22. package/fesm2022/shival99-z-ui-utils.mjs +27 -1
  23. package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
  24. package/package.json +1 -1
  25. package/types/shival99-z-ui-components-z-button-group.d.ts +1 -1
  26. package/types/shival99-z-ui-components-z-menu.d.ts +2 -0
  27. package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
  28. package/types/shival99-z-ui-components-z-select.d.ts +1 -0
  29. package/types/shival99-z-ui-components-z-upload.d.ts +1 -0
  30. package/types/shival99-z-ui-utils.d.ts +8 -2
  31. package/.npmignore +0 -58
  32. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +0 -1215
  33. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +0 -1
  34. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +0 -994
  35. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +0 -1
  36. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +0 -99
  37. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +0 -1
  38. package/fesm2022/shival99-z-ui-components-z-filter.mjs +0 -962
  39. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +0 -1
  40. package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs +0 -352
  41. package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs.map +0 -1
  42. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +0 -179
  43. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +0 -1
  44. package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +0 -429
  45. package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +0 -1
  46. package/fesm2022/shival99-z-ui-components-z-radio.mjs +0 -183
  47. package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +0 -1
  48. package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +0 -143
  49. package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +0 -1
  50. package/fesm2022/shival99-z-ui-components-z-show-more.mjs +0 -138
  51. package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +0 -1
  52. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +0 -80
  53. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +0 -1
  54. package/fesm2022/shival99-z-ui-components-z-steps.mjs +0 -420
  55. package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +0 -1
  56. package/fesm2022/shival99-z-ui-components-z-table.mjs +0 -11471
  57. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +0 -1
  58. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +0 -1102
  59. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +0 -1
  60. package/fesm2022/shival99-z-ui-components-z-tags.mjs +0 -364
  61. package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +0 -1
  62. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +0 -254
  63. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +0 -1
  64. package/fesm2022/shival99-z-ui-services-excel.mjs +0 -672
  65. package/fesm2022/shival99-z-ui-services-excel.mjs.map +0 -1
  66. package/types/shival99-z-ui-components-z-autocomplete.d.ts +0 -299
  67. package/types/shival99-z-ui-components-z-drawer.d.ts +0 -301
  68. package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +0 -52
  69. package/types/shival99-z-ui-components-z-filter.d.ts +0 -285
  70. package/types/shival99-z-ui-components-z-number-ticker.d.ts +0 -110
  71. package/types/shival99-z-ui-components-z-pagination.d.ts +0 -55
  72. package/types/shival99-z-ui-components-z-qrcode.d.ts +0 -79
  73. package/types/shival99-z-ui-components-z-radio.d.ts +0 -69
  74. package/types/shival99-z-ui-components-z-scrollarea.d.ts +0 -46
  75. package/types/shival99-z-ui-components-z-show-more.d.ts +0 -36
  76. package/types/shival99-z-ui-components-z-skeleton-auto.d.ts +0 -35
  77. package/types/shival99-z-ui-components-z-steps.d.ts +0 -106
  78. package/types/shival99-z-ui-components-z-table.d.ts +0 -2413
  79. package/types/shival99-z-ui-components-z-tabs.d.ts +0 -196
  80. package/types/shival99-z-ui-components-z-tags.d.ts +0 -127
  81. package/types/shival99-z-ui-components-z-timeline.d.ts +0 -71
  82. package/types/shival99-z-ui-services-excel.d.ts +0 -36
@@ -1 +0,0 @@
1
- {"version":3,"file":"shival99-z-ui-services-excel.mjs","sources":["../../../../libs/core-ui/services/excel/z-excel.service.ts","../../../../libs/core-ui/services/excel/shival99-z-ui-services-excel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n Z_EXCEL_DEFAULT_CONFIG,\n Z_EXCEL_BORDER_THIN,\n Z_EXCEL_CHAR_WIDTH_MAP,\n Z_EXCEL_FONT_MULTIPLIERS,\n Z_EXCEL_WIDTH_LIMITS,\n} from '@shival99/z-ui/services';\nimport type {\n ZExcelConfig,\n ZExcelColumnConfig,\n ZExcelExportOptions,\n ZExcelExportResult,\n ZExcelFromTableConfig,\n ZExcelCell,\n ZExcelCellContext,\n ZExcelAlign,\n ZExcelTableColumnConfig,\n ZExcelTableHeaderConfig,\n} from '@shival99/z-ui/services';\nimport { zConvertColorToArgb, zFormatNumExcel } from '@shival99/z-ui/utils';\nimport * as ExcelJS from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport * as XLSX from 'xlsx';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZExcelService {\n private static _isHeaderConfig<T>(\n config: ZExcelTableColumnConfig<T>['header']\n ): config is { content?: string | (() => string); align?: ZExcelAlign } {\n if (!config || typeof config !== 'object') {\n return false;\n }\n return config.constructor === Object;\n }\n\n private static _getHeaderConfig<T>(col: ZExcelTableColumnConfig<T> | undefined): ZExcelTableHeaderConfig {\n const empty: ZExcelTableHeaderConfig = {\n content: undefined,\n class: undefined,\n style: undefined,\n align: undefined,\n tooltip: undefined,\n rowSpan: undefined,\n colSpan: undefined,\n };\n\n if (!col) {\n return empty;\n }\n\n if (!ZExcelService._isHeaderConfig(col.header)) {\n return { ...empty, content: col.header as string | (() => string) | undefined };\n }\n\n return {\n content: col.header.content,\n class: undefined,\n style: undefined,\n align: col.header.align,\n tooltip: undefined,\n rowSpan: undefined,\n colSpan: undefined,\n };\n }\n\n public async exportExcel<T = unknown>(config: ZExcelConfig<T>, options: ZExcelExportOptions = {}): Promise<void> {\n try {\n const result = await ZExcelService.exportExcelStatic(config);\n await this._saveFile(result, options);\n } catch (error) {\n console.error('Error exporting Excel:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public async exportFromTable<T = unknown>(\n config: ZExcelFromTableConfig<T>,\n options: ZExcelExportOptions = {}\n ): Promise<void> {\n try {\n const excelColumns = this._convertTableColumnsToExcel(config);\n const excelConfig: ZExcelConfig<T> = {\n fileName: config.fileName,\n columns: excelColumns,\n source: config.source,\n };\n await this.exportExcel(excelConfig, options);\n } catch (error) {\n console.error('Error exporting from table:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public async exportFromElement(\n elementId: string,\n fileName = 'export',\n options: ZExcelExportOptions = {}\n ): Promise<void> {\n try {\n const result = await ZExcelService.exportFromElementStatic(elementId, fileName);\n await this._saveFile(result, options);\n } catch (error) {\n console.error('Error exporting from element:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public async exportFromElementXlsx(\n elementId: string,\n fileName = 'export',\n options: ZExcelExportOptions = {}\n ): Promise<void> {\n try {\n const element = document.getElementById(elementId);\n if (!element) {\n throw new Error(`Element with id \"${elementId}\" not found`);\n }\n\n const table = element.querySelector('table') || element;\n if (table.tagName !== 'TABLE') {\n throw new Error('Element must be a table or contain a table');\n }\n\n const workbook = XLSX.utils.table_to_book(table as HTMLTableElement, { sheet: 'Sheet1' });\n const { addTimestamp = true } = options;\n\n let finalFileName = `${fileName}.xlsx`;\n if (addTimestamp) {\n finalFileName = `${fileName}_${ZExcelService._formatTimestamp()}.xlsx`;\n }\n\n XLSX.writeFile(workbook, finalFileName);\n\n if (options.showNotification !== false) {\n options.toast?.success?.(`File \"${finalFileName}\" has been downloaded`);\n }\n } catch (error) {\n console.error('Error exporting from element with XLSX:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public static async exportExcelStatic<T = unknown>(config: ZExcelConfig<T>): Promise<ZExcelExportResult> {\n const workbook = new ExcelJS.Workbook();\n const { fileName = 'export', columns, source } = config;\n\n for (const sheetSource of source) {\n const sheet = workbook.addWorksheet(sheetSource.sheetName || 'Sheet1');\n const flatColumns = ZExcelService._flattenColumns(columns);\n const headerLevels = ZExcelService._calculateHeaderLevels(columns);\n\n sheet.columns = flatColumns.map(col => ({\n key: col.id,\n header: col.header || col.id,\n width: col.width || Z_EXCEL_WIDTH_LIMITS.default,\n style: { font: Z_EXCEL_DEFAULT_CONFIG.font },\n }));\n\n ZExcelService._createHeaderRows(sheet, columns, headerLevels);\n const dataStartRow = headerLevels + 1;\n const mergedCells = new Set<string>();\n const mergeRegions = ZExcelService._processMergeRegions(flatColumns, sheetSource.data, dataStartRow);\n\n sheetSource.data.forEach((dataItem: T, rowIndex: number) => {\n const row = sheet.addRow([]);\n\n flatColumns.forEach((col, colIndex) => {\n const cell = row.getCell(colIndex + 1);\n const cellValue = ZExcelService._getCellValue(col, dataItem, rowIndex, sheetSource.data);\n cell.value = cellValue as ExcelJS.CellValue;\n });\n\n row.eachCell((cell: ExcelJS.Cell, colNumber: number) => {\n const colConfig = flatColumns[colNumber - 1];\n const currentRow = dataStartRow + rowIndex + 1;\n const cellKey = `${currentRow}:${colNumber}`;\n\n if (mergedCells.has(cellKey)) {\n return;\n }\n\n cell.font = {\n name: Z_EXCEL_DEFAULT_CONFIG.font.name,\n size: Z_EXCEL_DEFAULT_CONFIG.font.size,\n ...(cell.font || {}),\n };\n\n if (colConfig.formatNum) {\n const rawValue = ZExcelService._getCellValue(colConfig, dataItem, rowIndex, sheetSource.data);\n zFormatNumExcel(cell, rawValue, colConfig.formatNum);\n }\n\n if (!colConfig.formatNum && colConfig.format) {\n const context: ZExcelCellContext<T> = {\n row: dataItem,\n rowIndex,\n data: sheetSource.data,\n cell: cell as unknown as ZExcelCell,\n };\n colConfig.format(context);\n }\n\n if (colConfig.align) {\n cell.alignment = {\n horizontal: colConfig.align,\n vertical: 'middle',\n ...(cell.alignment || {}),\n };\n }\n\n if (colConfig.note) {\n const noteText = colConfig.note(dataItem, rowIndex, sheetSource.data);\n if (noteText) {\n cell.note = noteText;\n }\n }\n\n cell.border = Z_EXCEL_BORDER_THIN;\n });\n });\n\n mergeRegions.forEach(region => {\n try {\n sheet.mergeCells(region.startRow, region.startCol, region.endRow, region.endCol);\n\n const mergedCell = sheet.getCell(region.startRow, region.startCol);\n if (!mergedCell.alignment) {\n mergedCell.alignment = { vertical: 'middle' };\n }\n\n for (let r = region.startRow; r <= region.endRow; r++) {\n for (let c = region.startCol; c <= region.endCol; c++) {\n mergedCells.add(`${r}:${c}`);\n }\n }\n } catch (error) {\n console.warn(`Failed to merge cells:`, error);\n }\n });\n\n ZExcelService._applyAutoFitWidth(sheet, flatColumns);\n }\n\n const buffer = await workbook.xlsx.writeBuffer();\n return { buffer: buffer as ArrayBuffer, fileName: `${fileName}.xlsx` };\n }\n\n public static async exportFromElementStatic(elementId: string, fileName = 'export'): Promise<ZExcelExportResult> {\n const workbook = new ExcelJS.Workbook();\n const element = document.getElementById(elementId);\n\n if (!element) {\n throw new Error(`Element with id \"${elementId}\" not found`);\n }\n\n const sheet = workbook.addWorksheet('Sheet1');\n const table = element.querySelector('table') || element;\n\n if (table.tagName !== 'TABLE') {\n throw new Error('Element must be a table or contain a table');\n }\n\n ZExcelService._processTableElement(sheet, table as HTMLTableElement);\n ZExcelService._applyAutoFitWidthForTable(sheet);\n\n const buffer = await workbook.xlsx.writeBuffer();\n return { buffer: buffer as ArrayBuffer, fileName: `${fileName}.xlsx` };\n }\n\n private async _saveFile(result: ZExcelExportResult, options: ZExcelExportOptions): Promise<void> {\n const { addTimestamp = true, showNotification = true } = options;\n\n let finalFileName = result.fileName;\n if (addTimestamp) {\n const timestamp = ZExcelService._formatTimestamp();\n if (!finalFileName.includes(timestamp.slice(0, 8))) {\n finalFileName = finalFileName.replace('.xlsx', `_${timestamp}.xlsx`);\n }\n }\n\n const blob = new Blob([result.buffer], {\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n });\n saveAs(blob, finalFileName);\n\n if (showNotification) {\n options.toast?.success?.(`File \"${finalFileName}\" has been downloaded`);\n }\n }\n\n private _convertTableColumnsToExcel<T>(config: ZExcelFromTableConfig<T>): ZExcelColumnConfig<T>[] {\n const { tableColumns, excelOverrides = {}, excludeColumns = [], headerResolver } = config;\n\n const convertColumn = (col: ZExcelTableColumnConfig<T>): ZExcelColumnConfig<T> | null => {\n if (excludeColumns.includes(col.id)) {\n return null;\n }\n\n if (['select', 'expand', 'actions'].includes(col.id)) {\n return null;\n }\n\n const headerConfig = ZExcelService._getHeaderConfig(col);\n let headerText = col.id;\n\n if (headerResolver) {\n headerText = headerResolver(col);\n }\n\n if (!headerResolver && typeof headerConfig.content === 'string') {\n headerText = headerConfig.content;\n }\n\n if (!headerResolver && typeof headerConfig.content === 'function') {\n const result = (headerConfig.content as () => string)();\n headerText = typeof result === 'string' ? result : col.id;\n }\n\n const excelCol: ZExcelColumnConfig<T> = {\n id: col.id,\n header: headerText,\n accessorKey: col.accessorKey,\n accessorFn: col.accessorFn ? (row: T) => col.accessorFn!(row) : undefined,\n autoFit: true,\n align: headerConfig.align as ZExcelAlign,\n visible: typeof col.visible === 'boolean' ? col.visible : true,\n };\n\n const override = excelOverrides[col.id];\n if (override) {\n Object.assign(excelCol, override);\n }\n\n if (col.columns && col.columns.length > 0) {\n excelCol.columns = col.columns\n .map((childCol: ZExcelTableColumnConfig<T>) => convertColumn(childCol))\n .filter((c: ZExcelColumnConfig<T> | null): c is ZExcelColumnConfig<T> => c !== null);\n\n if (excelCol.columns && excelCol.columns.length > 0) {\n excelCol.headerColSpan = ZExcelService._getLeafCount(excelCol.columns);\n }\n }\n\n return excelCol;\n };\n\n return tableColumns\n .map((col: ZExcelTableColumnConfig<T>) => convertColumn(col))\n .filter((c: ZExcelColumnConfig<T> | null): c is ZExcelColumnConfig<T> => c !== null);\n }\n\n private static _flattenColumns<T>(columns: ZExcelColumnConfig<T>[]): ZExcelColumnConfig<T>[] {\n const result: ZExcelColumnConfig<T>[] = [];\n\n const flatten = (cols: ZExcelColumnConfig<T>[]) => {\n for (const col of cols) {\n if (col.visible === false) {\n continue;\n }\n\n if (col.columns && col.columns.length > 0) {\n flatten(col.columns);\n continue;\n }\n\n result.push(col);\n }\n };\n\n flatten(columns);\n return result;\n }\n\n private static _calculateHeaderLevels<T>(columns: ZExcelColumnConfig<T>[]): number {\n const getLevel = (cols: ZExcelColumnConfig<T>[], currentLevel = 1): number => {\n let maxLevel = currentLevel;\n\n for (const col of cols) {\n let currentColLevel = currentLevel;\n\n if (col.headerRowSpan && col.headerRowSpan > 1) {\n currentColLevel = currentLevel + col.headerRowSpan - 1;\n }\n\n if (col.columns && col.columns.length > 0) {\n if (!col.headerRowSpan || col.headerRowSpan <= 1) {\n const childLevel = getLevel(col.columns, currentLevel + 1);\n currentColLevel = Math.max(currentColLevel, childLevel);\n }\n }\n\n maxLevel = Math.max(maxLevel, currentColLevel);\n }\n\n return maxLevel;\n };\n\n return getLevel(columns);\n }\n\n private static _createHeaderRows<T>(\n sheet: ExcelJS.Worksheet,\n columns: ZExcelColumnConfig<T>[],\n maxLevels: number\n ): void {\n interface ZHeaderCellInfo {\n header: string;\n colSpan: number;\n rowSpan: number;\n formatHeader?: (cell: ZExcelCell) => void;\n startCol: number;\n endCol: number;\n isProcessed?: boolean;\n isEmpty?: boolean;\n }\n\n const headerStructure: Array<Array<ZHeaderCellInfo>> = [];\n\n for (let i = 0; i < maxLevels; i++) {\n headerStructure[i] = [];\n }\n\n ZExcelService._buildHeaderStructure(columns, headerStructure, 0, maxLevels);\n\n const processedMergeRegions = new Set<string>();\n\n headerStructure.forEach((row, rowIndex) => {\n const headerRow = sheet.getRow(rowIndex + 1);\n const sortedRow = row.sort((a, b) => (a.startCol || 0) - (b.startCol || 0));\n\n sortedRow.forEach((headerCell: ZHeaderCellInfo) => {\n if (headerCell.isProcessed || headerCell.isEmpty) {\n return;\n }\n\n const colIndex = (headerCell.startCol || 0) + 1;\n const cell = headerRow.getCell(colIndex);\n cell.value = headerCell.header;\n\n if (headerCell.colSpan > 1 || headerCell.rowSpan > 1) {\n const startRow = rowIndex + 1;\n const endRow = startRow + headerCell.rowSpan - 1;\n const startCol = colIndex;\n const endCol = colIndex + headerCell.colSpan - 1;\n const mergeKey = `${startRow}:${startCol}-${endRow}:${endCol}`;\n\n if (!processedMergeRegions.has(mergeKey)) {\n try {\n sheet.mergeCells(startRow, startCol, endRow, endCol);\n processedMergeRegions.add(mergeKey);\n headerCell.isProcessed = true;\n } catch (error) {\n console.warn(`Failed to merge header cells:`, error);\n }\n }\n }\n\n const defaultColor =\n rowIndex === 0 ? Z_EXCEL_DEFAULT_CONFIG.headerColors.level0 : Z_EXCEL_DEFAULT_CONFIG.headerColors.level1;\n\n cell.fill = {\n type: 'pattern',\n pattern: 'solid',\n fgColor: { argb: defaultColor },\n };\n\n cell.font = Z_EXCEL_DEFAULT_CONFIG.headerFont;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.border = Z_EXCEL_BORDER_THIN;\n\n if (headerCell.formatHeader) {\n headerCell.formatHeader(cell as unknown as ZExcelCell);\n }\n });\n });\n }\n\n private static _buildHeaderStructure<T>(\n columns: ZExcelColumnConfig<T>[],\n headerStructure: Array<\n Array<{\n header: string;\n colSpan: number;\n rowSpan: number;\n formatHeader?: (cell: ZExcelCell) => void;\n startCol: number;\n endCol: number;\n }>\n >,\n level: number,\n maxLevels: number,\n startCol = 0\n ): number {\n let currentCol = startCol;\n\n for (const col of columns) {\n if (col.visible === false) {\n continue;\n }\n\n if (col.columns && col.columns.length > 0) {\n const childrenLeafCount = ZExcelService._getLeafCount(col.columns);\n const colSpan = col.headerColSpan || childrenLeafCount;\n const rowSpan = col.headerRowSpan || 1;\n\n headerStructure[level].push({\n header: col.header || col.id,\n colSpan,\n rowSpan,\n formatHeader: col.formatHeader,\n startCol: currentCol,\n endCol: currentCol + colSpan - 1,\n });\n\n if (col.headerRowSpan && col.headerRowSpan > 1) {\n currentCol += colSpan;\n continue;\n }\n\n ZExcelService._buildHeaderStructure(col.columns, headerStructure, level + 1, maxLevels, currentCol);\n\n currentCol += colSpan;\n continue;\n }\n\n const colSpan = col.headerColSpan || 1;\n const rowSpan = col.headerRowSpan || maxLevels - level;\n\n headerStructure[level].push({\n header: col.header || col.id,\n colSpan,\n rowSpan,\n formatHeader: col.formatHeader,\n startCol: currentCol,\n endCol: currentCol + colSpan - 1,\n });\n\n currentCol += colSpan;\n }\n\n return currentCol;\n }\n\n private static _getLeafCount<T>(columns: ZExcelColumnConfig<T>[]): number {\n let count = 0;\n for (const col of columns) {\n if (col.visible === false) {\n continue;\n }\n\n if (col.columns && col.columns.length > 0) {\n count += ZExcelService._getLeafCount(col.columns);\n continue;\n }\n count++;\n }\n return count;\n }\n\n private static _getCellValue<T>(col: ZExcelColumnConfig<T>, row: T, rowIndex: number, data: T[]): unknown {\n if (col.accessorFn) {\n return col.accessorFn(row, rowIndex, data);\n }\n if (col.accessorKey) {\n return (row as Record<string, unknown>)[col.accessorKey];\n }\n return '';\n }\n\n private static _processMergeRegions<T>(\n flatColumns: ZExcelColumnConfig<T>[],\n data: T[],\n dataStartRow: number\n ): Array<{\n startRow: number;\n startCol: number;\n endRow: number;\n endCol: number;\n firstItemIndex: number;\n }> {\n const mergeRegions: Array<{\n startRow: number;\n startCol: number;\n endRow: number;\n endCol: number;\n firstItemIndex: number;\n }> = [];\n const dataLength = data.length;\n\n flatColumns.forEach((colConfig, colIndex) => {\n const colNumber = colIndex + 1;\n\n if (colConfig.rowSpan || colConfig.colSpan) {\n let currentGroupStart = 0;\n\n while (currentGroupStart < dataLength) {\n const currentItem = data[currentGroupStart];\n\n const rowSpan =\n typeof colConfig.rowSpan === 'function'\n ? colConfig.rowSpan(currentItem, currentGroupStart, data)\n : colConfig.rowSpan || 1;\n const colSpan =\n typeof colConfig.colSpan === 'function'\n ? colConfig.colSpan(currentItem, currentGroupStart, data)\n : colConfig.colSpan || 1;\n\n const hasRowSpan = rowSpan > 1;\n const hasColSpan = colSpan > 1;\n\n if (hasRowSpan || hasColSpan) {\n const startRow = dataStartRow + currentGroupStart;\n const endRow = hasRowSpan ? Math.min(startRow + rowSpan - 1, dataStartRow + dataLength - 1) : startRow;\n const startCol = colNumber;\n const endCol = hasColSpan ? colNumber + colSpan - 1 : colNumber;\n\n if ((endRow > startRow || endCol > startCol) && endRow < dataStartRow + dataLength) {\n mergeRegions.push({\n startRow,\n startCol,\n endRow,\n endCol,\n firstItemIndex: currentGroupStart,\n });\n }\n }\n\n currentGroupStart += Math.max(1, rowSpan);\n }\n }\n });\n\n return mergeRegions;\n }\n\n private static _applyAutoFitWidth<T>(sheet: ExcelJS.Worksheet, flatColumns: ZExcelColumnConfig<T>[]): void {\n flatColumns.forEach((col, index) => {\n const colNumber = index + 1;\n const column = sheet.getColumn(colNumber);\n\n if (col.autoFit && !col.width) {\n let maxWidth = 0;\n\n sheet.eachRow((row: ExcelJS.Row) => {\n const cell = row.getCell(colNumber);\n if (cell.value) {\n const cellWidth =\n ZExcelService._calculateCellWidth(cell, String(cell.value)) /\n ZExcelService._getMergedColumnSpan(sheet, row, cell);\n maxWidth = Math.max(maxWidth, cellWidth);\n }\n });\n\n const calculatedWidth = Math.max(Z_EXCEL_WIDTH_LIMITS.min, Math.min(Z_EXCEL_WIDTH_LIMITS.max, maxWidth + 1));\n column.width = calculatedWidth;\n }\n });\n }\n\n private static _applyAutoFitWidthForTable(sheet: ExcelJS.Worksheet): void {\n const { columnCount } = sheet;\n\n for (let colNumber = 1; colNumber <= columnCount; colNumber++) {\n const column = sheet.getColumn(colNumber);\n let maxWidth = 0;\n\n sheet.eachRow((row: ExcelJS.Row) => {\n const cell = row.getCell(colNumber);\n if (cell.value) {\n const cellWidth =\n ZExcelService._calculateCellWidth(cell, String(cell.value)) /\n ZExcelService._getMergedColumnSpan(sheet, row, cell);\n maxWidth = Math.max(maxWidth, cellWidth);\n }\n });\n\n const calculatedWidth = Math.max(\n Z_EXCEL_WIDTH_LIMITS.tableMin,\n Math.min(Z_EXCEL_WIDTH_LIMITS.tableMax, maxWidth * 0.8 + 2)\n );\n column.width = calculatedWidth;\n }\n }\n\n private static _getMergedColumnSpan(sheet: ExcelJS.Worksheet, row: ExcelJS.Row, cell: ExcelJS.Cell): number {\n if (!cell.isMerged) {\n return 1;\n }\n\n let colSpan = 0;\n for (let colNumber = 1; colNumber <= sheet.columnCount; colNumber++) {\n const mergedCell = row.getCell(colNumber);\n if (mergedCell.address === cell.master.address || mergedCell.isMergedTo(cell.master)) {\n colSpan++;\n }\n }\n\n return Math.max(1, colSpan);\n }\n\n private static _calculateCellWidth(cell: ExcelJS.Cell, text: string): number {\n const font = cell.font || {};\n const fontSize = font.size || Z_EXCEL_DEFAULT_CONFIG.font.size;\n const fontFamily = font.name || Z_EXCEL_DEFAULT_CONFIG.font.name;\n const isBold = font.bold || false;\n const isItalic = font.italic || false;\n\n const fontSizeMultiplier = fontSize / 11;\n const fontMultiplier = Z_EXCEL_FONT_MULTIPLIERS[fontFamily] || 1.0;\n\n let adjustedWidth = 0;\n for (const char of text) {\n const charWidth = Z_EXCEL_CHAR_WIDTH_MAP[char] || 1.0;\n adjustedWidth += charWidth;\n }\n\n adjustedWidth *= fontSizeMultiplier * fontMultiplier;\n\n if (isBold) {\n adjustedWidth *= 1.1;\n }\n if (isItalic) {\n adjustedWidth *= 1.05;\n }\n\n return Math.ceil(adjustedWidth * 1.2);\n }\n\n private static _processTableElement(sheet: ExcelJS.Worksheet, table: HTMLTableElement): void {\n const rows = Array.from(table.rows);\n const mergedCells = new Set<string>();\n\n rows.forEach((row, rowIndex) => {\n const cells = Array.from(row.cells);\n let colOffset = 0;\n\n cells.forEach((cell, cellIndex) => {\n const computedStyle = window.getComputedStyle(cell);\n if (computedStyle.display === 'none' || computedStyle.visibility === 'hidden') {\n return;\n }\n\n const rect = cell.getBoundingClientRect();\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n\n while (mergedCells.has(`${rowIndex + 1}:${cellIndex + colOffset + 1}`)) {\n colOffset++;\n }\n\n const excelRow = sheet.getRow(rowIndex + 1);\n const colIndex = cellIndex + colOffset;\n const excelCell = excelRow.getCell(colIndex + 1);\n\n const cellContent = cell.textContent?.trim() || '';\n excelCell.value = ZExcelService._parseContentValue(cellContent);\n\n if (!excelCell.font) {\n excelCell.font = Z_EXCEL_DEFAULT_CONFIG.font;\n }\n\n ZExcelService._applyCellFormatFromHTML(excelCell, cell);\n\n const rowSpan = parseInt(cell.getAttribute('rowspan') || '1');\n const colSpan = parseInt(cell.getAttribute('colspan') || '1');\n\n if (rowSpan > 1 || colSpan > 1) {\n const startRow = rowIndex + 1;\n const startCol = colIndex + 1;\n const endRow = startRow + rowSpan - 1;\n const endCol = startCol + colSpan - 1;\n\n const mergeKey = `${startRow}:${startCol}-${endRow}:${endCol}`;\n if (!mergedCells.has(mergeKey)) {\n sheet.mergeCells(startRow, startCol, endRow, endCol);\n mergedCells.add(mergeKey);\n\n for (let r = startRow; r <= endRow; r++) {\n for (let c = startCol; c <= endCol; c++) {\n mergedCells.add(`${r}:${c}`);\n }\n }\n }\n }\n });\n });\n }\n\n private static _parseContentValue(content: string): string | number {\n if (!content || content.trim() === '') {\n return '';\n }\n\n const trimmedContent = content.trim();\n\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmedContent)) {\n const parsed = parseFloat(trimmedContent);\n if (!isNaN(parsed) && isFinite(parsed)) {\n return parsed;\n }\n }\n\n if (/^-?\\d+(\\.\\d+)?%$/.test(trimmedContent)) {\n const numberPart = trimmedContent.replace('%', '');\n const parsed = parseFloat(numberPart);\n if (!isNaN(parsed) && isFinite(parsed)) {\n return parsed / 100;\n }\n }\n\n return trimmedContent;\n }\n\n private static _applyCellFormatFromHTML(excelCell: ExcelJS.Cell, htmlCell: HTMLTableCellElement): void {\n const computedStyle = window.getComputedStyle(htmlCell);\n\n excelCell.font = {\n name: Z_EXCEL_DEFAULT_CONFIG.font.name,\n bold: computedStyle.fontWeight === 'bold' || parseInt(computedStyle.fontWeight) >= 600,\n italic: computedStyle.fontStyle === 'italic',\n size: parseInt(computedStyle.fontSize) || Z_EXCEL_DEFAULT_CONFIG.font.size,\n color: { argb: zConvertColorToArgb(computedStyle.color) },\n };\n\n if (computedStyle.backgroundColor && computedStyle.backgroundColor !== 'rgba(0, 0, 0, 0)') {\n excelCell.fill = {\n type: 'pattern',\n pattern: 'solid',\n fgColor: { argb: zConvertColorToArgb(computedStyle.backgroundColor) },\n };\n }\n\n excelCell.alignment = {\n horizontal: ZExcelService._getExcelAlignment(computedStyle.textAlign),\n vertical: ZExcelService._getExcelVerticalAlignment(computedStyle.verticalAlign),\n };\n\n excelCell.border = Z_EXCEL_BORDER_THIN;\n }\n\n private static _getExcelAlignment(textAlign: string): 'left' | 'center' | 'right' | undefined {\n switch (textAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'right';\n case 'left':\n return 'left';\n default:\n return undefined;\n }\n }\n\n private static _getExcelVerticalAlignment(verticalAlign: string): 'top' | 'middle' | 'bottom' | undefined {\n switch (verticalAlign) {\n case 'middle':\n return 'middle';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n default:\n return 'middle';\n }\n }\n\n private static _formatTimestamp(): string {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const day = String(now.getDate()).padStart(2, '0');\n const hours = String(now.getHours()).padStart(2, '0');\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n return `${year}${month}${day}_${hours}${minutes}${seconds}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MA4Ba,aAAa,CAAA;IAChB,OAAO,eAAe,CAC5B,MAA4C,EAAA;QAE5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,MAAM,CAAC,WAAW,KAAK,MAAM;IACtC;IAEQ,OAAO,gBAAgB,CAAI,GAA2C,EAAA;AAC5E,QAAA,MAAM,KAAK,GAA4B;AACrC,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,SAAS;SACnB;QAED,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC9C,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAA6C,EAAE;QACjF;QAEA,OAAO;AACL,YAAA,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO;AAC3B,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;AACvB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,SAAS;SACnB;IACH;AAEO,IAAA,MAAM,WAAW,CAAc,MAAuB,EAAE,UAA+B,EAAE,EAAA;AAC9F,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5D,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;QACvC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;YAC9C,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,6BAA6B,CAAC;AACrD,YAAA,MAAM,KAAK;QACb;IACF;AAEO,IAAA,MAAM,eAAe,CAC1B,MAAgC,EAChC,UAA+B,EAAE,EAAA;AAEjC,QAAA,IAAI;YACF,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,YAAA,MAAM,WAAW,GAAoB;gBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,gBAAA,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;YACnD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,6BAA6B,CAAC;AACrD,YAAA,MAAM,KAAK;QACb;IACF;IAEO,MAAM,iBAAiB,CAC5B,SAAiB,EACjB,QAAQ,GAAG,QAAQ,EACnB,OAAA,GAA+B,EAAE,EAAA;AAEjC,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC/E,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;QACvC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;YACrD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,6BAA6B,CAAC;AACrD,YAAA,MAAM,KAAK;QACb;IACF;IAEO,MAAM,qBAAqB,CAChC,SAAiB,EACjB,QAAQ,GAAG,QAAQ,EACnB,OAAA,GAA+B,EAAE,EAAA;AAEjC,QAAA,IAAI;YACF,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAClD,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,CAAA,WAAA,CAAa,CAAC;YAC7D;YAEA,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO;AACvD,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,gBAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;YAC/D;AAEA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAyB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACzF,YAAA,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO;AAEvC,YAAA,IAAI,aAAa,GAAG,CAAA,EAAG,QAAQ,OAAO;YACtC,IAAI,YAAY,EAAE;gBAChB,aAAa,GAAG,GAAG,QAAQ,CAAA,CAAA,EAAI,aAAa,CAAC,gBAAgB,EAAE,CAAA,KAAA,CAAO;YACxE;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC;AAEvC,YAAA,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBACtC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,CAAA,MAAA,EAAS,aAAa,CAAA,qBAAA,CAAuB,CAAC;YACzE;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;YAC/D,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,6BAA6B,CAAC;AACrD,YAAA,MAAM,KAAK;QACb;IACF;AAEO,IAAA,aAAa,iBAAiB,CAAc,MAAuB,EAAA;AACxE,QAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;AAEvD,QAAA,KAAK,MAAM,WAAW,IAAI,MAAM,EAAE;AAChC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,IAAI,QAAQ,CAAC;YACtE,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC;YAC1D,MAAM,YAAY,GAAG,aAAa,CAAC,sBAAsB,CAAC,OAAO,CAAC;YAElE,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK;gBACtC,GAAG,EAAE,GAAG,CAAC,EAAE;AACX,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE;AAC5B,gBAAA,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,oBAAoB,CAAC,OAAO;AAChD,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE;AAC7C,aAAA,CAAC,CAAC;YAEH,aAAa,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC;AAC7D,YAAA,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC;AACrC,YAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AACrC,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC;YAEpG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAW,EAAE,QAAgB,KAAI;gBACzD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAE5B,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;oBACpC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtC,oBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;AACxF,oBAAA,IAAI,CAAC,KAAK,GAAG,SAA8B;AAC7C,gBAAA,CAAC,CAAC;gBAEF,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAkB,EAAE,SAAiB,KAAI;oBACrD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AAC5C,oBAAA,MAAM,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,CAAC;AAC9C,oBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,SAAS,EAAE;AAE5C,oBAAA,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBAC5B;oBACF;oBAEA,IAAI,CAAC,IAAI,GAAG;AACV,wBAAA,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI;AACtC,wBAAA,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI;AACtC,wBAAA,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;qBACrB;AAED,oBAAA,IAAI,SAAS,CAAC,SAAS,EAAE;AACvB,wBAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;wBAC7F,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC;oBACtD;oBAEA,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;AAC5C,wBAAA,MAAM,OAAO,GAAyB;AACpC,4BAAA,GAAG,EAAE,QAAQ;4BACb,QAAQ;4BACR,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,4BAAA,IAAI,EAAE,IAA6B;yBACpC;AACD,wBAAA,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC3B;AAEA,oBAAA,IAAI,SAAS,CAAC,KAAK,EAAE;wBACnB,IAAI,CAAC,SAAS,GAAG;4BACf,UAAU,EAAE,SAAS,CAAC,KAAK;AAC3B,4BAAA,QAAQ,EAAE,QAAQ;AAClB,4BAAA,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;yBAC1B;oBACH;AAEA,oBAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAClB,wBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;wBACrE,IAAI,QAAQ,EAAE;AACZ,4BAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;wBACtB;oBACF;AAEA,oBAAA,IAAI,CAAC,MAAM,GAAG,mBAAmB;AACnC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AAEF,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,IAAG;AAC5B,gBAAA,IAAI;AACF,oBAAA,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;AAEhF,oBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAClE,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;wBACzB,UAAU,CAAC,SAAS,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;oBAC/C;AAEA,oBAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,wBAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACrD,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;wBAC9B;oBACF;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;gBAC/C;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,aAAa,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC;QACtD;QAEA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;QAChD,OAAO,EAAE,MAAM,EAAE,MAAqB,EAAE,QAAQ,EAAE,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAO,EAAE;IACxE;IAEO,aAAa,uBAAuB,CAAC,SAAiB,EAAE,QAAQ,GAAG,QAAQ,EAAA;AAChF,QAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;QAElD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,CAAA,WAAA,CAAa,CAAC;QAC7D;QAEA,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO;AAEvD,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AAEA,QAAA,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAyB,CAAC;AACpE,QAAA,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;QAChD,OAAO,EAAE,MAAM,EAAE,MAAqB,EAAE,QAAQ,EAAE,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAO,EAAE;IACxE;AAEQ,IAAA,MAAM,SAAS,CAAC,MAA0B,EAAE,OAA4B,EAAA;QAC9E,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE,GAAG,OAAO;AAEhE,QAAA,IAAI,aAAa,GAAG,MAAM,CAAC,QAAQ;QACnC,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,EAAE;AAClD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAClD,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,KAAA,CAAO,CAAC;YACtE;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,EAAE,mEAAmE;AAC1E,SAAA,CAAC;AACF,QAAA,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;QAE3B,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,CAAA,MAAA,EAAS,aAAa,CAAA,qBAAA,CAAuB,CAAC;QACzE;IACF;AAEQ,IAAA,2BAA2B,CAAI,MAAgC,EAAA;AACrE,QAAA,MAAM,EAAE,YAAY,EAAE,cAAc,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,MAAM;AAEzF,QAAA,MAAM,aAAa,GAAG,CAAC,GAA+B,KAAkC;YACtF,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACnC,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpD,gBAAA,OAAO,IAAI;YACb;YAEA,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACxD,YAAA,IAAI,UAAU,GAAG,GAAG,CAAC,EAAE;YAEvB,IAAI,cAAc,EAAE;AAClB,gBAAA,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC;YAClC;YAEA,IAAI,CAAC,cAAc,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC/D,gBAAA,UAAU,GAAG,YAAY,CAAC,OAAO;YACnC;YAEA,IAAI,CAAC,cAAc,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE;AACjE,gBAAA,MAAM,MAAM,GAAI,YAAY,CAAC,OAAwB,EAAE;AACvD,gBAAA,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE;YAC3D;AAEA,YAAA,MAAM,QAAQ,GAA0B;gBACtC,EAAE,EAAE,GAAG,CAAC,EAAE;AACV,gBAAA,MAAM,EAAE,UAAU;gBAClB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,GAAM,KAAK,GAAG,CAAC,UAAW,CAAC,GAAG,CAAC,GAAG,SAAS;AACzE,gBAAA,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,YAAY,CAAC,KAAoB;AACxC,gBAAA,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI;aAC/D;YAED,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACnC;AAEA,YAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAA,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;qBACpB,GAAG,CAAC,CAAC,QAAoC,KAAK,aAAa,CAAC,QAAQ,CAAC;qBACrE,MAAM,CAAC,CAAC,CAA+B,KAAiC,CAAC,KAAK,IAAI,CAAC;AAEtF,gBAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnD,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxE;YACF;AAEA,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC;AAED,QAAA,OAAO;aACJ,GAAG,CAAC,CAAC,GAA+B,KAAK,aAAa,CAAC,GAAG,CAAC;aAC3D,MAAM,CAAC,CAAC,CAA+B,KAAiC,CAAC,KAAK,IAAI,CAAC;IACxF;IAEQ,OAAO,eAAe,CAAI,OAAgC,EAAA;QAChE,MAAM,MAAM,GAA4B,EAAE;AAE1C,QAAA,MAAM,OAAO,GAAG,CAAC,IAA6B,KAAI;AAChD,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,gBAAA,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE;oBACzB;gBACF;AAEA,gBAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBACpB;gBACF;AAEA,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAClB;AACF,QAAA,CAAC;QAED,OAAO,CAAC,OAAO,CAAC;AAChB,QAAA,OAAO,MAAM;IACf;IAEQ,OAAO,sBAAsB,CAAI,OAAgC,EAAA;QACvE,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAE,YAAY,GAAG,CAAC,KAAY;YAC3E,IAAI,QAAQ,GAAG,YAAY;AAE3B,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,eAAe,GAAG,YAAY;gBAElC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE;oBAC9C,eAAe,GAAG,YAAY,GAAG,GAAG,CAAC,aAAa,GAAG,CAAC;gBACxD;AAEA,gBAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,IAAI,CAAC,EAAE;AAChD,wBAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC;wBAC1D,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC;oBACzD;gBACF;gBAEA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC;YAChD;AAEA,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC;AAED,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B;AAEQ,IAAA,OAAO,iBAAiB,CAC9B,KAAwB,EACxB,OAAgC,EAChC,SAAiB,EAAA;QAajB,MAAM,eAAe,GAAkC,EAAE;AAEzD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE;QACzB;QAEA,aAAa,CAAC,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,CAAC;AAE3E,QAAA,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU;QAE/C,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5C,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AAE3E,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,UAA2B,KAAI;gBAChD,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,OAAO,EAAE;oBAChD;gBACF;gBAEA,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC;gBAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;AACxC,gBAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM;AAE9B,gBAAA,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE;AACpD,oBAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;oBAC7B,MAAM,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC;oBAChD,MAAM,QAAQ,GAAG,QAAQ;oBACzB,MAAM,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC;oBAChD,MAAM,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;oBAE9D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxC,wBAAA,IAAI;4BACF,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;AACpD,4BAAA,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnC,4BAAA,UAAU,CAAC,WAAW,GAAG,IAAI;wBAC/B;wBAAE,OAAO,KAAK,EAAE;AACd,4BAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC;wBACtD;oBACF;gBACF;gBAEA,MAAM,YAAY,GAChB,QAAQ,KAAK,CAAC,GAAG,sBAAsB,CAAC,YAAY,CAAC,MAAM,GAAG,sBAAsB,CAAC,YAAY,CAAC,MAAM;gBAE1G,IAAI,CAAC,IAAI,GAAG;AACV,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;iBAChC;AAED,gBAAA,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,UAAU;AAC7C,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC7D,gBAAA,IAAI,CAAC,MAAM,GAAG,mBAAmB;AAEjC,gBAAA,IAAI,UAAU,CAAC,YAAY,EAAE;AAC3B,oBAAA,UAAU,CAAC,YAAY,CAAC,IAA6B,CAAC;gBACxD;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,OAAO,qBAAqB,CAClC,OAAgC,EAChC,eASC,EACD,KAAa,EACb,SAAiB,EACjB,QAAQ,GAAG,CAAC,EAAA;QAEZ,IAAI,UAAU,GAAG,QAAQ;AAEzB,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE;gBACzB;YACF;AAEA,YAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,MAAM,iBAAiB,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAClE,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,IAAI,iBAAiB;AACtD,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC;AAEtC,gBAAA,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC1B,oBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE;oBAC5B,OAAO;oBACP,OAAO;oBACP,YAAY,EAAE,GAAG,CAAC,YAAY;AAC9B,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,CAAC;AACjC,iBAAA,CAAC;gBAEF,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE;oBAC9C,UAAU,IAAI,OAAO;oBACrB;gBACF;AAEA,gBAAA,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC;gBAEnG,UAAU,IAAI,OAAO;gBACrB;YACF;AAEA,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC;YACtC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,IAAI,SAAS,GAAG,KAAK;AAEtD,YAAA,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC1B,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE;gBAC5B,OAAO;gBACP,OAAO;gBACP,YAAY,EAAE,GAAG,CAAC,YAAY;AAC9B,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,CAAC;AACjC,aAAA,CAAC;YAEF,UAAU,IAAI,OAAO;QACvB;AAEA,QAAA,OAAO,UAAU;IACnB;IAEQ,OAAO,aAAa,CAAI,OAAgC,EAAA;QAC9D,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE;gBACzB;YACF;AAEA,YAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,KAAK,IAAI,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;gBACjD;YACF;AACA,YAAA,KAAK,EAAE;QACT;AACA,QAAA,OAAO,KAAK;IACd;IAEQ,OAAO,aAAa,CAAI,GAA0B,EAAE,GAAM,EAAE,QAAgB,EAAE,IAAS,EAAA;AAC7F,QAAA,IAAI,GAAG,CAAC,UAAU,EAAE;YAClB,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC5C;AACA,QAAA,IAAI,GAAG,CAAC,WAAW,EAAE;AACnB,YAAA,OAAQ,GAA+B,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1D;AACA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,OAAO,oBAAoB,CACjC,WAAoC,EACpC,IAAS,EACT,YAAoB,EAAA;QAQpB,MAAM,YAAY,GAMb,EAAE;AACP,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;QAE9B,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,KAAI;AAC1C,YAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC;YAE9B,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE;gBAC1C,IAAI,iBAAiB,GAAG,CAAC;AAEzB,gBAAA,OAAO,iBAAiB,GAAG,UAAU,EAAE;AACrC,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAE3C,oBAAA,MAAM,OAAO,GACX,OAAO,SAAS,CAAC,OAAO,KAAK;0BACzB,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI;AACxD,0BAAE,SAAS,CAAC,OAAO,IAAI,CAAC;AAC5B,oBAAA,MAAM,OAAO,GACX,OAAO,SAAS,CAAC,OAAO,KAAK;0BACzB,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI;AACxD,0BAAE,SAAS,CAAC,OAAO,IAAI,CAAC;AAE5B,oBAAA,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC;AAC9B,oBAAA,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC;AAE9B,oBAAA,IAAI,UAAU,IAAI,UAAU,EAAE;AAC5B,wBAAA,MAAM,QAAQ,GAAG,YAAY,GAAG,iBAAiB;wBACjD,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ;wBACtG,MAAM,QAAQ,GAAG,SAAS;AAC1B,wBAAA,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,CAAC,GAAG,SAAS;AAE/D,wBAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,IAAI,MAAM,GAAG,QAAQ,KAAK,MAAM,GAAG,YAAY,GAAG,UAAU,EAAE;4BAClF,YAAY,CAAC,IAAI,CAAC;gCAChB,QAAQ;gCACR,QAAQ;gCACR,MAAM;gCACN,MAAM;AACN,gCAAA,cAAc,EAAE,iBAAiB;AAClC,6BAAA,CAAC;wBACJ;oBACF;oBAEA,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;gBAC3C;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,YAAY;IACrB;AAEQ,IAAA,OAAO,kBAAkB,CAAI,KAAwB,EAAE,WAAoC,EAAA;QACjG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AACjC,YAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;YAEzC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC7B,IAAI,QAAQ,GAAG,CAAC;AAEhB,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,GAAgB,KAAI;oBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AACnC,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,wBAAA,MAAM,SAAS,GACb,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC3D,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;wBACtD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;oBAC1C;AACF,gBAAA,CAAC,CAAC;gBAEF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC5G,gBAAA,MAAM,CAAC,KAAK,GAAG,eAAe;YAChC;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,0BAA0B,CAAC,KAAwB,EAAA;AAChE,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK;AAE7B,QAAA,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,WAAW,EAAE,SAAS,EAAE,EAAE;YAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;YACzC,IAAI,QAAQ,GAAG,CAAC;AAEhB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,GAAgB,KAAI;gBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AACnC,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,oBAAA,MAAM,SAAS,GACb,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3D,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;oBACtD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAC1C;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC9B,oBAAoB,CAAC,QAAQ,EAC7B,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,CAC5D;AACD,YAAA,MAAM,CAAC,KAAK,GAAG,eAAe;QAChC;IACF;AAEQ,IAAA,OAAO,oBAAoB,CAAC,KAAwB,EAAE,GAAgB,EAAE,IAAkB,EAAA;AAChG,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,CAAC;QACV;QAEA,IAAI,OAAO,GAAG,CAAC;AACf,QAAA,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE;YACnE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACpF,gBAAA,OAAO,EAAE;YACX;QACF;QAEA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;IAC7B;AAEQ,IAAA,OAAO,mBAAmB,CAAC,IAAkB,EAAE,IAAY,EAAA;AACjE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI;AAChE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK;AAErC,QAAA,MAAM,kBAAkB,GAAG,QAAQ,GAAG,EAAE;QACxC,MAAM,cAAc,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,GAAG;QAElE,IAAI,aAAa,GAAG,CAAC;AACrB,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;YACvB,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,GAAG;YACrD,aAAa,IAAI,SAAS;QAC5B;AAEA,QAAA,aAAa,IAAI,kBAAkB,GAAG,cAAc;QAEpD,IAAI,MAAM,EAAE;YACV,aAAa,IAAI,GAAG;QACtB;QACA,IAAI,QAAQ,EAAE;YACZ,aAAa,IAAI,IAAI;QACvB;QAEA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IACvC;AAEQ,IAAA,OAAO,oBAAoB,CAAC,KAAwB,EAAE,KAAuB,EAAA;QACnF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;QAErC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACnC,IAAI,SAAS,GAAG,CAAC;YAEjB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;gBAChC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACnD,gBAAA,IAAI,aAAa,CAAC,OAAO,KAAK,MAAM,IAAI,aAAa,CAAC,UAAU,KAAK,QAAQ,EAAE;oBAC7E;gBACF;AAEA,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACzC,gBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzC;gBACF;AAEA,gBAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,QAAQ,GAAG,CAAC,CAAA,CAAA,EAAI,SAAS,GAAG,SAAS,GAAG,CAAC,CAAA,CAAE,CAAC,EAAE;AACtE,oBAAA,SAAS,EAAE;gBACb;gBAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC3C,gBAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS;gBACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAEhD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;gBAClD,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAE/D,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACnB,oBAAA,SAAS,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI;gBAC9C;AAEA,gBAAA,aAAa,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC;AAEvD,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;AAC7D,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;gBAE7D,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;AAC9B,oBAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;AAC7B,oBAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;AAC7B,oBAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC;AACrC,oBAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC;oBAErC,MAAM,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;oBAC9D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC9B,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;AACpD,wBAAA,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEzB,wBAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,4BAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;gCACvC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;4BAC9B;wBACF;oBACF;gBACF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,kBAAkB,CAAC,OAAe,EAAA;QAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACrC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE;AAErC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC1C,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACtC,gBAAA,OAAO,MAAM;YACf;QACF;AAEA,QAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAClD,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACtC,OAAO,MAAM,GAAG,GAAG;YACrB;QACF;AAEA,QAAA,OAAO,cAAc;IACvB;AAEQ,IAAA,OAAO,wBAAwB,CAAC,SAAuB,EAAE,QAA8B,EAAA;QAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAEvD,SAAS,CAAC,IAAI,GAAG;AACf,YAAA,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI;AACtC,YAAA,IAAI,EAAE,aAAa,CAAC,UAAU,KAAK,MAAM,IAAI,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,GAAG;AACtF,YAAA,MAAM,EAAE,aAAa,CAAC,SAAS,KAAK,QAAQ;AAC5C,YAAA,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI;YAC1E,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;SAC1D;QAED,IAAI,aAAa,CAAC,eAAe,IAAI,aAAa,CAAC,eAAe,KAAK,kBAAkB,EAAE;YACzF,SAAS,CAAC,IAAI,GAAG;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;aACtE;QACH;QAEA,SAAS,CAAC,SAAS,GAAG;YACpB,UAAU,EAAE,aAAa,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC;YACrE,QAAQ,EAAE,aAAa,CAAC,0BAA0B,CAAC,aAAa,CAAC,aAAa,CAAC;SAChF;AAED,QAAA,SAAS,CAAC,MAAM,GAAG,mBAAmB;IACxC;IAEQ,OAAO,kBAAkB,CAAC,SAAiB,EAAA;QACjD,QAAQ,SAAS;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;AACf,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;IAEQ,OAAO,0BAA0B,CAAC,aAAqB,EAAA;QAC7D,QAAQ,aAAa;AACnB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,QAAQ;;IAErB;AAEQ,IAAA,OAAO,gBAAgB,GAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACrD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,KAAK,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,EAAG,OAAO,CAAA,EAAG,OAAO,EAAE;IAC7D;uGAv1BW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;AC3BD;;AAEG;;"}
@@ -1,299 +0,0 @@
1
- import * as _tanstack_angular_virtual from '@tanstack/angular-virtual';
2
- import * as _angular_core from '@angular/core';
3
- import { TemplateRef, Signal, OnInit, ElementRef } from '@angular/core';
4
- import { ControlValueAccessor } from '@angular/forms';
5
- import { ZIcon } from '@shival99/z-ui/components/z-icon';
6
- import { ZPopoverPosition, ZPopoverControl } from '@shival99/z-ui/components/z-popover';
7
- import { ZAsyncOptionsConfig, ZEvent } from '@shival99/z-ui/utils';
8
- import { ClassValue } from 'clsx';
9
- import * as class_variance_authority_types from 'class-variance-authority/types';
10
- import { VariantProps } from 'class-variance-authority';
11
-
12
- declare class ZAutocompleteOptionDirective<T = unknown> {
13
- readonly templateRef: TemplateRef<any>;
14
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZAutocompleteOptionDirective<any>, never>;
15
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZAutocompleteOptionDirective<any>, "[z-autocomplete-option], [zAutocompleteOption]", never, {}, {}, never, never, true, never>;
16
- }
17
-
18
- interface ZAutocompleteOption<T = unknown> {
19
- label: string;
20
- value: T;
21
- disabled?: boolean;
22
- description?: string;
23
- icon?: ZIcon;
24
- }
25
- interface ZAutocompleteConfig<T = unknown> {
26
- /** Số ký tự tối thiểu trước khi bắt đầu search hoặc gọi async.load. */
27
- minLength: number;
28
- /** Thời gian chờ sau khi người dùng ngừng nhập rồi mới phát zOnSearch/call async.load, tính bằng mili giây. */
29
- debounceTime: number;
30
- /** Giới hạn số option hiển thị sau khi filter; đặt 0 để không giới hạn. */
31
- maxDisplayed: number;
32
- /** Bật highlight phần text khớp với keyword trong label của option. */
33
- highlightMatch: boolean;
34
- /** i18n key hoặc text hiển thị khi đã nhập keyword nhưng không có kết quả. */
35
- emptyMessage: string;
36
- /** i18n key hoặc text hiển thị khi chưa có dữ liệu ban đầu. */
37
- noDataMessage: string;
38
- /** Tự đóng dropdown sau khi chọn option. */
39
- closeOnSelect: boolean;
40
- /** Chiều cao mặc định của một option, dùng cho virtual scroll và layout dropdown. */
41
- optionHeight: number;
42
- /** Chiều cao tối đa của dropdown, tính bằng pixel. */
43
- dropdownMaxHeight: number;
44
- /** Bỏ filter local khi options đã được xử lý từ server qua zOnSearch. */
45
- serverSearch: boolean;
46
- /** Config để component tự search, load-more, loading và append options. */
47
- async?: ZAsyncOptionsConfig<ZAutocompleteOption<T>>;
48
- }
49
- declare const Z_AUTOCOMPLETE_DEFAULT_CONFIG: Omit<ZAutocompleteConfig, 'async'>;
50
- type ZAutocompleteSize = 'sm' | 'default' | 'lg';
51
- type ZAutocompleteType = 'default' | 'address_bar';
52
- interface ZAutocompleteState {
53
- focused: boolean;
54
- touched: boolean;
55
- dirty: boolean;
56
- disabled: boolean;
57
- readonly: boolean;
58
- open: boolean;
59
- }
60
- interface ZAutocompleteCommitEvent {
61
- value: string;
62
- source: 'enter' | 'blur';
63
- }
64
- interface ZAutocompleteLoadMoreEvent {
65
- currentCount: number;
66
- scrollTop: number;
67
- }
68
- interface ZAutocompleteOptionContext<T = unknown> {
69
- $implicit: ZAutocompleteOption<T>;
70
- active: boolean;
71
- }
72
- interface ZAutocompleteControl<T = unknown> {
73
- focus: () => void;
74
- blur: () => void;
75
- clear: () => void;
76
- reset: () => void;
77
- open: () => void;
78
- close: () => void;
79
- setValue: (value: string) => void;
80
- value: Signal<string>;
81
- /** Signal with selected options. Autocomplete returns an empty or one-item array. */
82
- selected: Signal<ZAutocompleteOption<T>[]>;
83
- /**
84
- * @deprecated Use individual event outputs (zOnFocus, zOnBlur, etc.) instead.
85
- * Will be removed in a future version.
86
- */
87
- state: Signal<ZAutocompleteState>;
88
- }
89
- type ZAutocompleteOptionTemplate<T = unknown> = TemplateRef<ZAutocompleteOptionContext<T>>;
90
-
91
- declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValueAccessor {
92
- private readonly _injector;
93
- private readonly _destroyRef;
94
- private readonly _query$;
95
- protected readonly triggerRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
96
- protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
97
- protected readonly dropdownTpl: _angular_core.Signal<TemplateRef<unknown> | undefined>;
98
- protected readonly virtualScrollRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
99
- protected readonly optionsContainerRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
100
- protected readonly loadMoreSentinelRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
101
- protected readonly virtualOptionElements: _angular_core.Signal<readonly ElementRef<HTMLDivElement>[]>;
102
- protected readonly customOptionDirective: _angular_core.Signal<ZAutocompleteOptionDirective<any> | undefined>;
103
- readonly class: _angular_core.InputSignal<ClassValue>;
104
- readonly zOptions: _angular_core.InputSignal<ZAutocompleteOption<T>[]>;
105
- readonly zConfig: _angular_core.InputSignal<Partial<ZAutocompleteConfig<T>>>;
106
- readonly zSize: _angular_core.InputSignal<ZAutocompleteSize>;
107
- readonly zType: _angular_core.InputSignal<ZAutocompleteType>;
108
- readonly zLabel: _angular_core.InputSignal<string>;
109
- readonly zLabelClass: _angular_core.InputSignal<string>;
110
- readonly zPlaceholder: _angular_core.InputSignal<string>;
111
- readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
112
- readonly zReadonly: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
113
- readonly zLoading: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
114
- readonly zLoadingOutline: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
115
- readonly zRequired: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
116
- readonly zPrefix: _angular_core.InputSignal<"" | ZIcon>;
117
- readonly zSuffix: _angular_core.InputSignal<"" | ZIcon>;
118
- readonly zAllowClear: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
119
- readonly zVirtualScroll: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
120
- readonly zDynamicSize: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
121
- readonly zOptionHeight: _angular_core.InputSignal<number>;
122
- readonly zDropdownMaxHeight: _angular_core.InputSignal<number | null>;
123
- /** @deprecated Dùng zDropdownMaxHeight để đồng nhất với z-select. */
124
- readonly zHeightExpand: _angular_core.InputSignal<number | null>;
125
- readonly zMaxVisible: _angular_core.InputSignal<number | null>;
126
- readonly zResetOnSelect: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
127
- readonly zEmptyText: _angular_core.InputSignal<string>;
128
- readonly zEmptyIcon: _angular_core.InputSignal<ZIcon>;
129
- readonly zNoDataText: _angular_core.InputSignal<string>;
130
- readonly zNoDataIcon: _angular_core.InputSignal<ZIcon>;
131
- readonly zAllowCustomValue: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
132
- readonly zOpenOnFocus: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
133
- readonly zDebounceTime: _angular_core.InputSignal<number>;
134
- readonly zLoadingMore: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
135
- readonly zEnableLoadMore: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
136
- readonly zScrollDistance: _angular_core.InputSignal<number>;
137
- readonly zKey: _angular_core.InputSignal<string>;
138
- readonly zOptionTemplate: _angular_core.InputSignal<ZAutocompleteOptionTemplate<T> | null>;
139
- readonly zOnSearch: _angular_core.OutputEmitterRef<string>;
140
- readonly zOnLoadMore: _angular_core.OutputEmitterRef<ZAutocompleteLoadMoreEvent>;
141
- readonly zOnSelect: _angular_core.OutputEmitterRef<ZAutocompleteOption<T>>;
142
- readonly zOnEnter: _angular_core.OutputEmitterRef<string>;
143
- readonly zOnCommit: _angular_core.OutputEmitterRef<ZAutocompleteCommitEvent>;
144
- readonly zValueChange: _angular_core.OutputEmitterRef<string>;
145
- readonly zOnBlur: _angular_core.OutputEmitterRef<FocusEvent>;
146
- readonly zOnFocus: _angular_core.OutputEmitterRef<FocusEvent>;
147
- readonly zControl: _angular_core.OutputEmitterRef<ZAutocompleteControl<T>>;
148
- readonly zEvent: _angular_core.OutputEmitterRef<ZEvent>;
149
- private readonly _value;
150
- private readonly _disabled;
151
- private readonly _formControl;
152
- private readonly _popoverControl;
153
- private readonly _selectedOption;
154
- private readonly _asyncOptions;
155
- private readonly _asyncKeyword;
156
- private readonly _asyncPage;
157
- private readonly _asyncHasMore;
158
- private readonly _asyncLoading;
159
- private readonly _asyncLoadingMore;
160
- protected readonly uiState: _angular_core.WritableSignal<{
161
- isOpen: boolean;
162
- isFocused: boolean;
163
- touched: boolean;
164
- dirty: boolean;
165
- }>;
166
- protected readonly actualPosition: _angular_core.WritableSignal<ZPopoverPosition>;
167
- protected readonly autocompleteId: string;
168
- protected readonly dropdownId: string;
169
- protected readonly inputValue: _angular_core.WritableSignal<string>;
170
- protected readonly debouncedQuery: _angular_core.WritableSignal<string>;
171
- protected readonly searchQuery: _angular_core.WritableSignal<string>;
172
- protected readonly activeIndex: _angular_core.WritableSignal<number>;
173
- protected readonly dropdownWidth: _angular_core.WritableSignal<number>;
174
- private readonly _pendingSearch;
175
- private _localLoadingTimeout;
176
- private _loadMoreObserver;
177
- private _virtualScrollListener;
178
- private _asyncLoadSubscription;
179
- private _asyncRequestId;
180
- private _lastFilteredOptionsLength;
181
- private _shouldScrollActiveOption;
182
- private _pendingServerSearchScrollReset;
183
- /** Guards against focus+click both requesting an open on the same gesture, which doubled CD cycles. */
184
- private _openRequested;
185
- /** Stores input value before keyboard navigation for ESC revert */
186
- private _valueBeforeNavigation;
187
- protected readonly virtualizer: _tanstack_angular_virtual.AngularVirtualizer<HTMLDivElement, Element>;
188
- private readonly _measureVirtualItems;
189
- protected readonly config: _angular_core.Signal<ZAutocompleteConfig<T>>;
190
- protected readonly hasAsyncOptions: _angular_core.Signal<boolean>;
191
- protected readonly asyncSelectedOptions: _angular_core.Signal<ZAutocompleteOption<T>[]>;
192
- protected readonly sourceOptions: _angular_core.Signal<ZAutocompleteOption<T>[]>;
193
- protected readonly isLoading: _angular_core.Signal<boolean>;
194
- protected readonly isLoadingMore: _angular_core.Signal<boolean>;
195
- protected readonly canLoadMore: _angular_core.Signal<boolean>;
196
- protected readonly isDisabled: _angular_core.Signal<boolean>;
197
- protected readonly isReadonly: _angular_core.Signal<boolean>;
198
- protected readonly isInteractionDisabled: _angular_core.Signal<boolean>;
199
- protected readonly effectiveOptionHeight: _angular_core.Signal<number>;
200
- protected readonly effectiveHeightExpand: _angular_core.Signal<number>;
201
- protected readonly effectiveEmptyText: _angular_core.Signal<string>;
202
- protected readonly effectiveNoDataText: _angular_core.Signal<string>;
203
- protected readonly effectiveDebounceTime: _angular_core.Signal<number>;
204
- protected readonly effectiveOptionTemplate: _angular_core.Signal<TemplateRef<any> | null>;
205
- protected readonly hasCustomOptionTemplate: _angular_core.Signal<boolean>;
206
- protected readonly selected: _angular_core.Signal<ZAutocompleteOption<T>[]>;
207
- protected readonly highlightQuery: _angular_core.Signal<string>;
208
- /**
209
- * Local-mode loading state after debounce to avoid quick flicker.
210
- * Server mode relies only on zLoading from parent.
211
- */
212
- protected readonly isLoadingState: _angular_core.Signal<boolean>;
213
- protected readonly isPositionTop: _angular_core.Signal<boolean>;
214
- protected readonly shouldUseVirtualScroll: _angular_core.Signal<boolean>;
215
- protected readonly filteredOptions: _angular_core.Signal<ZAutocompleteOption<T>[]>;
216
- protected readonly optionViews: _angular_core.Signal<{
217
- option: ZAutocompleteOption<T>;
218
- index: number;
219
- trackKey: string;
220
- }[]>;
221
- protected readonly hasValue: _angular_core.Signal<boolean>;
222
- protected readonly currentStatus: _angular_core.Signal<"default" | "disabled" | "readonly" | "open">;
223
- protected readonly inputClasses: _angular_core.Signal<string>;
224
- readonly state: _angular_core.Signal<ZAutocompleteState>;
225
- private _onChange;
226
- private _onTouched;
227
- private _ngControl;
228
- private _isNavigationFilling;
229
- private _hasPendingInput;
230
- constructor();
231
- ngOnInit(): void;
232
- writeValue(value: string): void;
233
- registerOnChange(fn: (value: string) => void): void;
234
- registerOnTouched(fn: () => void): void;
235
- setDisabledState(isDisabled: boolean): void;
236
- protected onInput(event: Event): void;
237
- protected onFocus(event: FocusEvent): void;
238
- protected onInputMousedown(event: MouseEvent): void;
239
- protected onInputClick(): void;
240
- protected onBlur(event: FocusEvent): void;
241
- protected onKeydown(event: KeyboardEvent): void;
242
- private _handleEnterKey;
243
- private _fillInputFromActiveOption;
244
- private _revertToValueBeforeNavigation;
245
- private _resetInput;
246
- protected onPopoverControl(control: ZPopoverControl): void;
247
- protected onPopoverShow(): void;
248
- protected onPopoverHideStart(): void;
249
- protected onPopoverHideEnd(): void;
250
- protected onPositionChange(position: ZPopoverPosition): void;
251
- protected selectOption(option: ZAutocompleteOption<T>): void;
252
- protected clearInput(event: MouseEvent): void;
253
- protected getOptionClasses(option: ZAutocompleteOption<T>, index: number): string;
254
- protected trackByValue: (index: number, option: ZAutocompleteOption<T>) => unknown;
255
- focus(): void;
256
- blur(): void;
257
- clear(): void;
258
- reset(): void;
259
- open(): void;
260
- close(): void;
261
- setValue(value: string): void;
262
- private _openPanel;
263
- private _closePanel;
264
- private _cancelPendingInput;
265
- private _setupDebounce;
266
- private _loadAsyncOptionsOnFocus;
267
- private _loadAsyncOptions;
268
- private _handleAsyncOptionsError;
269
- private _getAsyncOptionsScrollTop;
270
- private _restoreAsyncOptionsScrollTop;
271
- private _resetOptionsScrollTop;
272
- private _getOptionsScrollElement;
273
- private _resetAsyncOptions;
274
- private _clearLocalLoadingTimer;
275
- private _setupLoadMoreObserver;
276
- private _cleanupLoadMoreObserver;
277
- private _setupVirtualScrollLoadMore;
278
- private _cleanupVirtualScrollListener;
279
- private _handleLoadMore;
280
- private _emitControl;
281
- private _getOptionKey;
282
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZAutocompleteComponent<any>, never>;
283
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZAutocompleteComponent<any>, "z-autocomplete", ["zAutocomplete"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zOptions": { "alias": "zOptions"; "required": false; "isSignal": true; }; "zConfig": { "alias": "zConfig"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zLabel": { "alias": "zLabel"; "required": false; "isSignal": true; }; "zLabelClass": { "alias": "zLabelClass"; "required": false; "isSignal": true; }; "zPlaceholder": { "alias": "zPlaceholder"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zReadonly": { "alias": "zReadonly"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zLoadingOutline": { "alias": "zLoadingOutline"; "required": false; "isSignal": true; }; "zRequired": { "alias": "zRequired"; "required": false; "isSignal": true; }; "zPrefix": { "alias": "zPrefix"; "required": false; "isSignal": true; }; "zSuffix": { "alias": "zSuffix"; "required": false; "isSignal": true; }; "zAllowClear": { "alias": "zAllowClear"; "required": false; "isSignal": true; }; "zVirtualScroll": { "alias": "zVirtualScroll"; "required": false; "isSignal": true; }; "zDynamicSize": { "alias": "zDynamicSize"; "required": false; "isSignal": true; }; "zOptionHeight": { "alias": "zOptionHeight"; "required": false; "isSignal": true; }; "zDropdownMaxHeight": { "alias": "zDropdownMaxHeight"; "required": false; "isSignal": true; }; "zHeightExpand": { "alias": "zHeightExpand"; "required": false; "isSignal": true; }; "zMaxVisible": { "alias": "zMaxVisible"; "required": false; "isSignal": true; }; "zResetOnSelect": { "alias": "zResetOnSelect"; "required": false; "isSignal": true; }; "zEmptyText": { "alias": "zEmptyText"; "required": false; "isSignal": true; }; "zEmptyIcon": { "alias": "zEmptyIcon"; "required": false; "isSignal": true; }; "zNoDataText": { "alias": "zNoDataText"; "required": false; "isSignal": true; }; "zNoDataIcon": { "alias": "zNoDataIcon"; "required": false; "isSignal": true; }; "zAllowCustomValue": { "alias": "zAllowCustomValue"; "required": false; "isSignal": true; }; "zOpenOnFocus": { "alias": "zOpenOnFocus"; "required": false; "isSignal": true; }; "zDebounceTime": { "alias": "zDebounceTime"; "required": false; "isSignal": true; }; "zLoadingMore": { "alias": "zLoadingMore"; "required": false; "isSignal": true; }; "zEnableLoadMore": { "alias": "zEnableLoadMore"; "required": false; "isSignal": true; }; "zScrollDistance": { "alias": "zScrollDistance"; "required": false; "isSignal": true; }; "zKey": { "alias": "zKey"; "required": false; "isSignal": true; }; "zOptionTemplate": { "alias": "zOptionTemplate"; "required": false; "isSignal": true; }; }, { "zOnSearch": "zOnSearch"; "zOnLoadMore": "zOnLoadMore"; "zOnSelect": "zOnSelect"; "zOnEnter": "zOnEnter"; "zOnCommit": "zOnCommit"; "zValueChange": "zValueChange"; "zOnBlur": "zOnBlur"; "zOnFocus": "zOnFocus"; "zControl": "zControl"; "zEvent": "zEvent"; }, ["customOptionDirective"], never, true, never>;
284
- }
285
-
286
- declare const zAutocompleteInputVariants: (props?: ({
287
- zSize?: "sm" | "default" | "lg" | null | undefined;
288
- zStatus?: "default" | "open" | "error" | "disabled" | "readonly" | null | undefined;
289
- } & class_variance_authority_types.ClassProp) | undefined) => string;
290
- type ZAutocompleteInputVariants = VariantProps<typeof zAutocompleteInputVariants>;
291
- declare const zAutocompleteOptionVariants: (props?: ({
292
- customTemplate?: boolean | null | undefined;
293
- active?: boolean | null | undefined;
294
- disabled?: boolean | null | undefined;
295
- } & class_variance_authority_types.ClassProp) | undefined) => string;
296
- type ZAutocompleteOptionVariants = VariantProps<typeof zAutocompleteOptionVariants>;
297
-
298
- export { ZAutocompleteComponent, ZAutocompleteOptionDirective, Z_AUTOCOMPLETE_DEFAULT_CONFIG, zAutocompleteInputVariants, zAutocompleteOptionVariants };
299
- export type { ZAutocompleteCommitEvent, ZAutocompleteConfig, ZAutocompleteControl, ZAutocompleteInputVariants, ZAutocompleteLoadMoreEvent, ZAutocompleteOption, ZAutocompleteOptionContext, ZAutocompleteOptionTemplate, ZAutocompleteOptionVariants, ZAutocompleteSize, ZAutocompleteState, ZAutocompleteType };