@shival99/z-vnetcity 1.4.13 → 1.4.17

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":"shival99-z-vnetcity-services.mjs","sources":["../../../../libs/core-ui/services/z-cache.service.ts","../../../../libs/core-ui/services/defines/z-excel.define.ts","../../../../libs/core-ui/services/z-excel.service.ts","../../../../libs/core-ui/services/defines/z-indexdb.define.ts","../../../../libs/core-ui/services/z-indexdb.service.ts","../../../../libs/core-ui/services/defines/z-translate.define.ts","../../../../libs/core-ui/services/types/z-theme.types.ts","../../../../libs/core-ui/services/types/z-translate.types.ts","../../../../libs/core-ui/services/z-translate.service.ts","../../../../libs/core-ui/services/z-http-abstract.service.ts","../../../../libs/core-ui/services/z-subject.service.ts","../../../../libs/core-ui/services/z-theme.service.ts","../../../../libs/core-ui/services/shival99-z-vnetcity-services.ts"],"sourcesContent":["import type { ZCacheConfig } from './types/z-cache.types';\n\nexport class ZCacheService {\n private static _prefix = 'z_';\n private static _encrypt = true;\n\n public static configure(config: ZCacheConfig): void {\n if (config.prefix) {\n ZCacheService._prefix = config.prefix;\n }\n if (config.encrypt !== undefined) {\n ZCacheService._encrypt = config.encrypt;\n }\n }\n\n private static _encode(data: unknown): string {\n const payload = { __z: true, __d: data };\n return btoa(encodeURIComponent(JSON.stringify(payload)));\n }\n\n private static _decode<T>(data: string): T | null {\n try {\n const decoded = JSON.parse(decodeURIComponent(atob(data)));\n if (!decoded.__z) {\n return null;\n }\n return decoded.__d as T;\n } catch {\n return null;\n }\n }\n\n private static _normalizeKey(key: string): string {\n return key.toLowerCase();\n }\n\n private static _getFullKey(key: string, encrypt: boolean): string {\n const normalizedKey = ZCacheService._normalizeKey(key);\n const prefixedKey = `${ZCacheService._prefix}${normalizedKey}`;\n return encrypt ? ZCacheService._encode(prefixedKey) : prefixedKey;\n }\n\n private static _safeOperation<T>(operation: () => T, fallback: T): T {\n try {\n return operation();\n } catch (error) {\n console.error('[ZCache] Operation error:', error);\n return fallback;\n }\n }\n\n public static get<T>(key: string, defaultValue?: T, encrypt = ZCacheService._encrypt): T | undefined {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n const result = localStorage.getItem(_key);\n\n if (!result) {\n return defaultValue;\n }\n\n const data = encrypt ? ZCacheService._decode<T>(result) : (JSON.parse(result) as T);\n return data ?? defaultValue;\n }, defaultValue);\n }\n\n public static set<T>(key: string, data: T, encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n const _value = encrypt ? ZCacheService._encode(data) : JSON.stringify(data);\n localStorage.setItem(_key, _value);\n return true;\n }, false);\n }\n\n public static delete(key: string): boolean {\n return ZCacheService._safeOperation(() => {\n const encryptedKey = ZCacheService._getFullKey(key, true);\n const plainKey = ZCacheService._getFullKey(key, false);\n localStorage.removeItem(encryptedKey);\n localStorage.removeItem(plainKey);\n return true;\n }, false);\n }\n\n public static deleteMultiple(keys: string[]): boolean {\n return ZCacheService._safeOperation(() => {\n keys.forEach(key => {\n const encryptedKey = ZCacheService._getFullKey(key, true);\n const plainKey = ZCacheService._getFullKey(key, false);\n localStorage.removeItem(encryptedKey);\n localStorage.removeItem(plainKey);\n });\n return true;\n }, false);\n }\n\n public static clear(): boolean {\n return ZCacheService._safeOperation(() => {\n const keysToRemove: string[] = [];\n const prefixEncoded = ZCacheService._encode(ZCacheService._prefix);\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(ZCacheService._prefix) || key?.startsWith(prefixEncoded)) {\n keysToRemove.push(key);\n }\n }\n\n keysToRemove.forEach(key => localStorage.removeItem(key));\n return true;\n }, false);\n }\n\n public static has(key: string, encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n return localStorage.getItem(_key) !== null;\n }, false);\n }\n\n public static keys(): string[] {\n return ZCacheService._safeOperation(() => {\n const result: string[] = [];\n const prefixEncoded = ZCacheService._encode(ZCacheService._prefix);\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(ZCacheService._prefix)) {\n result.push(key.slice(ZCacheService._prefix.length));\n continue;\n }\n if (key?.startsWith(prefixEncoded)) {\n const decoded = ZCacheService._decode<string>(key);\n if (decoded) {\n result.push(decoded.slice(ZCacheService._prefix.length));\n }\n }\n }\n\n return result;\n }, []);\n }\n}\n","import type { ZExcelDefaultConfig } from '../types/z-excel.types';\n\nexport const Z_EXCEL_COLORS = {\n 'green-50': 'FFF0FDF4',\n 'green-100': 'FFDCFCE7',\n 'green-200': 'FFBBF7D0',\n 'green-300': 'FF86EFAC',\n 'green-400': 'FF4ADE80',\n 'green-500': 'FF22C55E',\n\n 'blue-50': 'FFEFF6FF',\n 'blue-100': 'FFDBEAFE',\n 'blue-200': 'FFBFDBFE',\n 'blue-300': 'FF93C5FD',\n 'blue-400': 'FF60A5FA',\n 'blue-500': 'FF3B82F6',\n\n 'gray-50': 'FFF9FAFB',\n 'gray-100': 'FFF3F4F6',\n 'gray-200': 'FFE5E7EB',\n 'gray-300': 'FFD1D5DB',\n 'gray-400': 'FF9CA3AF',\n 'gray-500': 'FF6B7280',\n\n 'yellow-50': 'FFFFFBEB',\n 'yellow-100': 'FFFEF3C7',\n 'yellow-200': 'FFFDE68A',\n 'yellow-300': 'FFFCD34D',\n\n 'red-50': 'FFFEF2F2',\n 'red-100': 'FFFEE2E2',\n 'red-200': 'FFFECACA',\n 'red-300': 'FFFCA5A5',\n\n white: 'FFFFFFFF',\n black: 'FF000000',\n transparent: '00000000',\n} as const;\n\nexport const Z_EXCEL_DEFAULT_CONFIG: ZExcelDefaultConfig = {\n font: {\n name: 'Calibri',\n size: 11,\n },\n headerFont: {\n name: 'Calibri',\n size: 11,\n bold: true,\n },\n headerColors: {\n level0: Z_EXCEL_COLORS['green-300'],\n level1: Z_EXCEL_COLORS['blue-200'],\n },\n};\n\nexport const Z_EXCEL_BORDER_THIN = {\n top: { style: 'thin' as const },\n left: { style: 'thin' as const },\n bottom: { style: 'thin' as const },\n right: { style: 'thin' as const },\n};\n\nexport const Z_EXCEL_CHAR_WIDTH_MAP: Record<string, number> = {\n W: 1.4,\n M: 1.4,\n D: 1.2,\n O: 1.2,\n Q: 1.2,\n A: 1.1,\n B: 1.1,\n C: 1.1,\n G: 1.1,\n H: 1.1,\n N: 1.1,\n R: 1.1,\n S: 1.1,\n U: 1.1,\n V: 1.1,\n X: 1.1,\n Y: 1.1,\n Z: 1.1,\n E: 1.0,\n F: 1.0,\n K: 1.0,\n P: 1.0,\n T: 1.0,\n J: 0.9,\n L: 0.9,\n I: 0.6,\n i: 0.5,\n l: 0.5,\n t: 0.6,\n f: 0.6,\n j: 0.5,\n '1': 0.8,\n '!': 0.5,\n '.': 0.5,\n ',': 0.5,\n ':': 0.5,\n ';': 0.5,\n '|': 0.5,\n ' ': 0.5,\n};\n\nexport const Z_EXCEL_FONT_MULTIPLIERS: Record<string, number> = {\n 'Times New Roman': 1.0,\n Arial: 0.95,\n Calibri: 0.95,\n 'Courier New': 1.2,\n 'Comic Sans MS': 1.15,\n Verdana: 1.05,\n Tahoma: 0.9,\n Georgia: 1.05,\n Impact: 0.85,\n 'Trebuchet MS': 0.95,\n};\n\nexport const Z_EXCEL_WIDTH_LIMITS = {\n min: 5,\n max: 50,\n tableMin: 8,\n tableMax: 30,\n default: 20,\n};\n","import { Injectable } from '@angular/core';\nimport { zConvertColorToArgb, zFormatNumExcel } from '@shival99/z-vnetcity/utils';\nimport * as ExcelJS from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport * as XLSX from 'xlsx';\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 './defines/z-excel.define';\nimport type {\n ZExcelConfig,\n ZExcelColumnConfig,\n ZExcelExportOptions,\n ZExcelExportResult,\n ZExcelFromTableConfig,\n ZExcelCell,\n ZExcelCellContext,\n ZExcelAlign,\n ZExcelTableColumnConfig,\n ZExcelTableHeaderConfig,\n} from './types/z-excel.types';\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 = '';\n\n 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 width: col.size,\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 = ZExcelService._calculateCellWidth(cell, String(cell.value));\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 = ZExcelService._calculateCellWidth(cell, String(cell.value));\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 _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","import { type ZIndexDbConfig } from '../types/z-indexdb.types';\n\nexport const Z_INDEXDB_DEFAULT_CONFIG: Required<Pick<ZIndexDbConfig, 'dbName' | 'version' | 'mode' | 'defaultStore'>> =\n {\n dbName: 'ZDatabase',\n version: 1,\n mode: 'readwrite',\n defaultStore: 'ZStore',\n };\n\nexport const Z_INDEXDB_BATCH_SIZE = 100;\nexport const Z_INDEXDB_MAX_VERSION = 1000;\n","import { Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_INDEXDB_BATCH_SIZE } from './defines';\nimport type {\n ZIndexDbConfig,\n ZIndexDbGetOptions,\n ZIndexDbSetOptions,\n ZIndexDbStoreConfig,\n} from './types/z-indexdb.types';\n\nexport class ZIndexDbService {\n private _db: IDBDatabase | null = null;\n private _dbName: string;\n private _version: number;\n private _mode: IDBTransactionMode;\n private _dbReady: Promise<void>;\n private _stores: Map<string, ZIndexDbStoreConfig> = new Map();\n private _defaultStoreName: string;\n private _globalProtectedKeys: string[];\n private _encrypt = true;\n\n public constructor(config: ZIndexDbConfig = {}) {\n this._dbName = config.dbName ?? Z_INDEXDB_DEFAULT_CONFIG.dbName;\n this._version = config.version ?? Z_INDEXDB_DEFAULT_CONFIG.version;\n this._mode = config.mode ?? Z_INDEXDB_DEFAULT_CONFIG.mode;\n this._defaultStoreName = config.defaultStore ?? Z_INDEXDB_DEFAULT_CONFIG.defaultStore;\n this._globalProtectedKeys = config.protectedKeys ?? [];\n this._encrypt = config.encrypt ?? true;\n\n if (config.stores?.length) {\n config.stores.forEach(store => this._stores.set(store.name, store));\n }\n if (!this._stores.has(this._defaultStoreName)) {\n this._stores.set(this._defaultStoreName, { name: this._defaultStoreName });\n }\n\n this._dbReady = this._initDb();\n }\n\n private _getStoreConfig(storeName?: string): ZIndexDbStoreConfig {\n const name = storeName ?? this._defaultStoreName;\n return this._stores.get(name) ?? { name };\n }\n\n /**\n * Determines if encryption should be used.\n * Priority: per-call > store-level > global\n * @param storeConfig - Store configuration\n * @param perCallEncrypt - Per-call encrypt override (highest priority)\n */\n private _shouldEncrypt(storeConfig: ZIndexDbStoreConfig, perCallEncrypt?: boolean): boolean {\n if (perCallEncrypt !== undefined) {\n return perCallEncrypt;\n }\n return storeConfig.encrypt ?? this._encrypt;\n }\n\n private _normalizeKey(key: string): string {\n return key.toLowerCase();\n }\n\n private _encryptData(data: unknown): string {\n const payload = {\n __z: true,\n __t: typeof data,\n __d: data,\n };\n return btoa(encodeURIComponent(JSON.stringify(payload)));\n }\n\n private _decryptData<T>(data: string): T | null {\n try {\n const decoded = JSON.parse(decodeURIComponent(atob(data)));\n if (!decoded.__z) {\n return null;\n }\n return decoded.__d as T;\n } catch {\n return null;\n }\n }\n\n private _closeConnection(): void {\n if (this._db) {\n this._db.close();\n this._db = null;\n }\n }\n\n private async _reconnect(): Promise<void> {\n this._closeConnection();\n this._dbReady = this._initDb();\n await this._dbReady;\n }\n\n private async _withRetry<T>(operation: () => Promise<T>, retries = 3): Promise<T> {\n let lastError: unknown;\n for (let i = 0; i < retries; i++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error;\n if (error instanceof Error && error.name === 'InvalidStateError') {\n await this._reconnect();\n }\n await new Promise(resolve => setTimeout(resolve, Math.pow(2, i) * 100));\n }\n }\n\n throw lastError;\n }\n\n private async _initDb(): Promise<void> {\n if (this._db) {\n return;\n }\n\n const currentVersion = await this._getCurrentDbVersion();\n if (currentVersion >= Z_INDEXDB_MAX_VERSION) {\n await this._resetDatabase();\n this._version = 1;\n }\n if (currentVersion > this._version && currentVersion < Z_INDEXDB_MAX_VERSION) {\n this._version = currentVersion;\n }\n\n return new Promise((resolve, reject) => {\n try {\n const request = indexedDB.open(this._dbName, this._version);\n\n request.onupgradeneeded = event => {\n const db = (event.target as IDBOpenDBRequest).result;\n const existingStores = Array.from(db.objectStoreNames);\n existingStores.forEach(storeName => {\n if (!this._stores.has(storeName)) {\n db.deleteObjectStore(storeName);\n }\n });\n this._stores.forEach((_, storeName) => {\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n });\n };\n\n request.onsuccess = event => {\n this._db = (event.target as IDBOpenDBRequest).result;\n this._version = this._db.version;\n this._db.onerror = e => console.error('[ZIndexDb] Error:', (e.target as IDBRequest).error);\n this._db.onclose = () => {\n this._db = null;\n };\n\n const missingStores = this._getMissingStores();\n if (missingStores.length > 0) {\n this._triggerUpgrade().then(resolve).catch(reject);\n return;\n }\n\n resolve();\n };\n\n request.onerror = event => {\n console.error('[ZIndexDb] Open error:', (event.target as IDBOpenDBRequest).error);\n reject((event.target as IDBOpenDBRequest).error);\n };\n } catch (error) {\n reject(error);\n }\n });\n }\n\n private _getCurrentDbVersion(): Promise<number> {\n return new Promise(resolve => {\n const request = indexedDB.open(this._dbName);\n request.onsuccess = event => {\n const db = (event.target as IDBOpenDBRequest).result;\n const { version } = db;\n db.close();\n resolve(version);\n };\n request.onerror = () => {\n resolve(1);\n };\n });\n }\n\n private async _triggerUpgrade(): Promise<void> {\n this._closeConnection();\n const isVersionLimitReached = this._version >= Z_INDEXDB_MAX_VERSION;\n if (isVersionLimitReached) {\n await this._resetDatabase();\n }\n\n this._version = isVersionLimitReached ? 1 : this._version + 1;\n this._dbReady = this._initDb();\n await this._dbReady;\n }\n\n private async _resetDatabase(): Promise<void> {\n this._closeConnection();\n return new Promise((resolve, reject) => {\n const deleteRequest = indexedDB.deleteDatabase(this._dbName);\n deleteRequest.onsuccess = () => resolve();\n deleteRequest.onerror = () => reject(deleteRequest.error);\n deleteRequest.onblocked = () => {\n setTimeout(() => this._resetDatabase().then(resolve).catch(reject), 100);\n };\n });\n }\n\n private _getMissingStores(): string[] {\n if (!this._db) {\n return [];\n }\n const existingStores = Array.from(this._db.objectStoreNames);\n const requiredStores = Array.from(this._stores.keys());\n return requiredStores.filter(store => !existingStores.includes(store));\n }\n\n private _ensureStoreExists(storeName: string): boolean {\n if (!this._db) {\n return false;\n }\n return this._db.objectStoreNames.contains(storeName);\n }\n\n public async get<T>(key: string, options?: ZIndexDbGetOptions<T>): Promise<T | undefined> {\n const storeConfig = this._getStoreConfig(options?.storeName);\n const shouldEncrypt = this._shouldEncrypt(storeConfig, options?.encrypt);\n const defaultValue = options?.defaultValue;\n\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n return defaultValue;\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n await this._triggerUpgrade();\n if (!this._ensureStoreExists(storeConfig.name)) {\n return defaultValue;\n }\n }\n\n const normalizedKey = this._normalizeKey(key);\n const _key = shouldEncrypt ? this._encryptData(normalizedKey) : normalizedKey;\n return new Promise<T | undefined>(resolve => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], this._mode);\n const store = transaction.objectStore(storeConfig.name);\n const request = store.get(_key);\n\n request.onsuccess = () => {\n try {\n const { result } = request;\n if (!result) {\n resolve(defaultValue);\n return;\n }\n const decrypted = shouldEncrypt ? this._decryptData<T>(result) : result;\n resolve(decrypted ?? defaultValue);\n } catch {\n resolve(defaultValue);\n }\n };\n\n request.onerror = () => resolve(defaultValue);\n transaction.onerror = () => resolve(defaultValue);\n } catch {\n resolve(defaultValue);\n }\n });\n });\n }\n\n public async set<T>(key: string, value: T, options?: ZIndexDbSetOptions): Promise<void> {\n const storeConfig = this._getStoreConfig(options?.storeName);\n const shouldEncrypt = this._shouldEncrypt(storeConfig, options?.encrypt);\n\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n await this._triggerUpgrade();\n if (!this._ensureStoreExists(storeConfig.name)) {\n throw new Error(`Failed to create store \"${storeConfig.name}\"`);\n }\n }\n\n const normalizedKey = this._normalizeKey(key);\n const _key = shouldEncrypt ? this._encryptData(normalizedKey) : normalizedKey;\n const _value = shouldEncrypt ? this._encryptData(value) : value;\n\n return new Promise<void>((resolve, reject) => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n const request = store.put(_value, _key);\n\n request.onerror = () => reject(request.error);\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n } catch (error) {\n reject(error);\n }\n });\n });\n }\n\n /**\n * Delete key(s) from IndexDB. If storeName not provided, deletes from all stores.\n * Tries both encrypted and non-encrypted versions of the key.\n */\n public async delete(key: string | string[], storeName?: string): Promise<void> {\n if (storeName === undefined) {\n await Promise.all(this.getStoreNames().map(name => this._deleteFromStore(key, name)));\n return;\n }\n await this._deleteFromStore(key, storeName);\n }\n\n private async _deleteFromStore(key: string | string[], storeName: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n return;\n }\n\n const keys = Array.isArray(key) ? key : [key];\n return new Promise<void>((resolve, reject) => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n keys.forEach(k => {\n const normalizedKey = this._normalizeKey(k);\n store.delete(normalizedKey);\n store.delete(this._encryptData(normalizedKey));\n });\n\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n } catch (error) {\n reject(error);\n }\n });\n });\n }\n\n public async clear(storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n const protectedKeys = [...this._globalProtectedKeys, ...(storeConfig.protectedKeys ?? [])];\n\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n return;\n }\n\n if (protectedKeys.length === 0) {\n return new Promise<void>((resolve, reject) => {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n const request = store.clear();\n\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n return new Promise<void>((resolve, reject) => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n const keyRequest = store.getAllKeys();\n\n const protectedSet = new Set<string>();\n protectedKeys.forEach(k => {\n const normalizedKey = this._normalizeKey(k);\n protectedSet.add(normalizedKey);\n protectedSet.add(this._encryptData(normalizedKey));\n });\n\n keyRequest.onsuccess = () => {\n const allKeys = keyRequest.result as string[];\n allKeys.forEach(k => {\n if (!protectedSet.has(k)) {\n const decrypted = this._decryptData<string>(k);\n if (!decrypted || !protectedKeys.includes(decrypted)) {\n store.delete(k);\n }\n }\n });\n };\n\n keyRequest.onerror = () => reject(keyRequest.error);\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n } catch (error) {\n reject(error);\n }\n });\n });\n }\n\n public async getAll<T = unknown>(storeName?: string): Promise<Record<string, T>> {\n const storeConfig = this._getStoreConfig(storeName);\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n return {};\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n return {};\n }\n\n return new Promise<Record<string, T>>(resolve => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], this._mode);\n const store = transaction.objectStore(storeConfig.name);\n const keysRequest = store.getAllKeys();\n const valuesRequest = store.getAll();\n const results: Record<string, T> = {};\n\n keysRequest.onsuccess = () => {\n const keys = keysRequest.result;\n const values = valuesRequest.result;\n\n keys.forEach((key, index) => {\n if (typeof key === 'string') {\n try {\n const _key = this._shouldEncrypt(storeConfig) ? this._decryptData<string>(key) : key;\n const _value = this._shouldEncrypt(storeConfig) ? this._decryptData<T>(values[index]) : values[index];\n if (_key && _value !== null) {\n results[_key] = _value;\n }\n } catch {\n console.warn(`[ZIndexDb] Failed to decrypt entry for key: ${key}`);\n }\n }\n });\n\n resolve(results);\n };\n\n keysRequest.onerror = () => resolve({});\n transaction.onerror = () => resolve({});\n } catch {\n resolve({});\n }\n });\n });\n }\n\n public async setMultiple<T>(items: Record<string, T>, options?: ZIndexDbSetOptions): Promise<void> {\n const storeConfig = this._getStoreConfig(options?.storeName);\n const shouldEncrypt = this._shouldEncrypt(storeConfig, options?.encrypt);\n const entries = Object.entries(items);\n\n await this._dbReady;\n if (this._db && !this._ensureStoreExists(storeConfig.name)) {\n await this._triggerUpgrade();\n }\n\n for (let i = 0; i < entries.length; i += Z_INDEXDB_BATCH_SIZE) {\n const batch = entries.slice(i, i + Z_INDEXDB_BATCH_SIZE);\n await this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n throw new Error(`Store \"${storeConfig.name}\" does not exist`);\n }\n\n return new Promise<void>((resolve, reject) => {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n\n batch.forEach(([key, value]) => {\n const normalizedKey = this._normalizeKey(key);\n const _key = shouldEncrypt ? this._encryptData(normalizedKey) : normalizedKey;\n const _value = shouldEncrypt ? this._encryptData(value) : value;\n store.put(_value, _key);\n });\n\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n });\n });\n }\n }\n\n public getStoreNames(): string[] {\n return Array.from(this._stores.keys());\n }\n\n public hasStore(storeName: string): boolean {\n return this._stores.has(storeName);\n }\n\n public async addStore(config: ZIndexDbStoreConfig): Promise<void> {\n if (this._stores.has(config.name)) {\n return;\n }\n\n this._stores.set(config.name, config);\n await this._triggerUpgrade();\n }\n\n public async clearAll(): Promise<void> {\n const storeNames = this.getStoreNames();\n await Promise.all(storeNames.map(storeName => this.clear(storeName)));\n }\n}\n","export const Z_LANG_TO_LOCALE: Record<string, string> = {\n vi: 'vi-VN',\n en: 'en-US',\n};\n","import { InjectionToken } from '@angular/core';\n\nexport type ZThemeName = 'green' | 'orange' | 'violet' | 'neutral' | 'stone' | 'zinc' | 'gray' | 'slate' | 'hospital';\n\nexport interface ZThemeConfig {\n defaultTheme?: ZThemeName;\n defaultDarkMode?: boolean;\n}\n\nexport const Z_THEME_CONFIG = new InjectionToken<ZThemeConfig>('Z_THEME_CONFIG');\nexport const Z_DEFAULT_THEME: ZThemeName = 'neutral';\n\n/** Single cache key for all theme preferences */\nexport const Z_THEME_PREFERENCES_CACHE_KEY = 'Z_THEME_PREFERENCES';\n\n/** Cached theme preferences structure */\nexport interface ZThemePreferences {\n theme: ZThemeName;\n isDark: boolean;\n}\n\nexport const Z_THEME_CSS_MAP: Record<ZThemeName, string> = {\n neutral: '',\n green: 'assets/css/themes/green.css',\n orange: 'assets/css/themes/orange.css',\n violet: 'assets/css/themes/violet.css',\n stone: 'assets/css/themes/stone.css',\n zinc: 'assets/css/themes/zinc.css',\n gray: 'assets/css/themes/gray.css',\n slate: 'assets/css/themes/slate.css',\n hospital: 'assets/css/themes/hospital.css',\n};\n","export interface ZTranslateConfig {\n /** Default language */\n defaultLang?: string;\n /** Available languages */\n availableLangs?: string[];\n /** Path to translation files */\n translationPath?: string;\n /** Translation file extension */\n fileExtension?: string;\n}\n\nexport interface ZTranslateI18nConfig {\n defaultLang?: string;\n availableLangs?: string[];\n}\n\nexport const Z_LANG_CACHE_KEY = 'Z_LANGUAGE';\n","import { computed, inject, Injectable, signal, type Signal } from '@angular/core';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { Z_LANG_TO_LOCALE } from './defines/z-translate.define';\nimport { Z_LANG_CACHE_KEY } from './types';\nimport { ZCacheService } from './z-cache.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZTranslateService {\n private readonly _translate = inject(TranslateService);\n\n public readonly currentLang = signal<string>('vi');\n public readonly availableLangs = signal<string[]>(['vi', 'en']);\n\n public constructor() {\n this._initialize();\n }\n\n private _initialize(): void {\n const currentLang = this._translate.getCurrentLang() || ZCacheService.get<string>(Z_LANG_CACHE_KEY) || 'vi';\n this.currentLang.set(currentLang);\n document.documentElement.lang = currentLang;\n }\n\n public use(lang: string): void {\n this._translate.use(lang);\n ZCacheService.set(Z_LANG_CACHE_KEY, lang);\n this.currentLang.set(lang);\n document.documentElement.lang = lang;\n }\n\n public getLang(): string {\n return this._translate.getCurrentLang() ?? 'vi';\n }\n\n public getLocale(): string {\n return Z_LANG_TO_LOCALE[this.currentLang()] ?? 'vi-VN';\n }\n\n public locale(): Signal<string> {\n return computed(() => Z_LANG_TO_LOCALE[this.currentLang()] ?? 'vi-VN');\n }\n\n public instant(key: string, params?: Record<string, unknown>): string {\n if (!key) {\n return '';\n }\n\n return this._translate.instant(key, params);\n }\n\n /**\n * Returns a computed signal that automatically updates when language changes.\n * Use this instead of instant() when you need reactive translations.\n *\n * @example\n * ```typescript\n * // In component\n * protected readonly title = this._zTranslate.translate('my_title_key');\n *\n * // In template\n * <h1>{{ title() }}</h1>\n * ```\n */\n public translate(key: string, params?: Record<string, unknown>): Signal<string> {\n return computed(() => {\n this.currentLang();\n return this.instant(key, params);\n });\n }\n\n public async get(key: string, params?: Record<string, unknown>): Promise<string> {\n if (!key) {\n return '';\n }\n\n return firstValueFrom(this._translate.get(key, params));\n }\n\n public get$(key: string, params?: Record<string, unknown>): Observable<string> {\n return this._translate.get(key, params);\n }\n\n public stream$(key: string, params?: Record<string, unknown>): Observable<string> {\n return this._translate.stream(key, params);\n }\n\n public async getMany(keys: string[], params?: Record<string, unknown>): Promise<Record<string, string>> {\n const results: Record<string, string> = {};\n await Promise.all(\n keys.map(async key => {\n results[key] = await this.get(key, params);\n })\n );\n\n return results;\n }\n\n public has(key: string): boolean {\n const translation = this._translate.instant(key);\n return translation !== key;\n }\n\n public setTranslation(lang: string, translations: TranslationObject, shouldMerge = true): void {\n this._translate.setTranslation(lang, translations, shouldMerge);\n }\n\n public getNgxTranslate(): TranslateService {\n return this._translate;\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { catchError, defer, from, map, Observable, of, switchMap, tap, throwError } from 'rxjs';\nimport type {\n ZHttpCacheEntry,\n ZHttpConfig,\n ZHttpContentType,\n ZHttpError,\n ZHttpNetworkCheck,\n ZHttpOptions,\n} from './types/z-http.types';\nimport { ZCacheService } from './z-cache.service';\nimport { ZIndexDbService } from './z-indexdb.service';\nimport { ZTranslateService } from './z-translate.service';\n\nexport const Z_HTTP_DEFAULT_CONFIG: Required<ZHttpConfig> = {\n defaultCacheTime: 3 * 60 * 1000,\n networkCheckCacheTime: 5000,\n tokenKey: 'Z_TOKEN',\n userInfoKey: 'Z_USER_INFO',\n lastUrlKey: 'Z_LAST_URL',\n loginRoute: '/login',\n homeRoute: '/',\n unauthorizedRoute: '/401',\n};\n\n@Injectable()\nexport abstract class ZHttpAbstractService<TApiType extends string = string> {\n protected readonly http = inject(HttpClient);\n protected readonly router = inject(Router);\n protected readonly cacheService = ZCacheService;\n protected readonly translateService = inject(ZTranslateService);\n protected readonly indexDbService: ZIndexDbService;\n\n private _httpConfig: Required<ZHttpConfig> | null = null;\n private _networkCache: ZHttpNetworkCheck | null = null;\n\n public constructor() {\n this.indexDbService = new ZIndexDbService({\n dbName: 'ZHttpCache',\n defaultStore: 'zHttpCache',\n stores: [{ name: 'zHttpCache', encrypt: true }],\n });\n }\n\n /**\n * Returns the HTTP configuration. Override this method in subclasses to customize.\n * @example\n * ```typescript\n * protected override setHttpConfig(): Partial<ZHttpConfig> {\n * return {\n * tokenKey: 'MY_TOKEN',\n * loginRoute: '/auth/login',\n * };\n * }\n * ```\n */\n protected setHttpConfig(): Partial<ZHttpConfig> {\n return {};\n }\n\n protected get config(): Required<ZHttpConfig> {\n if (!this._httpConfig) {\n this._httpConfig = { ...Z_HTTP_DEFAULT_CONFIG, ...this.setHttpConfig() };\n }\n\n return this._httpConfig;\n }\n\n protected abstract resolveBaseUrl(apiType?: TApiType): string;\n\n protected get<T, TParams extends object = object>(\n endpoint: string,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, params } = this._buildRequest(options);\n const httpOptions = this._buildHttpOptions({ ...options, headers, params });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.get<T>(url, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('GET', endpoint, httpCall, options);\n }\n\n protected post<T, TParams extends object = object>(\n endpoint: string,\n body: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({ ...options, headers });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.post<T>(url, transformedBody, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('POST', endpoint, httpCall, options, body);\n }\n\n protected put<T, TParams extends object = object>(\n endpoint: string,\n body: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({ ...options, headers });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.put<T>(url, transformedBody, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('PUT', endpoint, httpCall, options, body);\n }\n\n protected patch<T, TParams extends object = object>(\n endpoint: string,\n body: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({ ...options, headers });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.patch<T>(url, transformedBody, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('PATCH', endpoint, httpCall, options, body);\n }\n\n protected delete<T, TParams extends object = object>(\n endpoint: string,\n body?: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({\n ...options,\n headers,\n body: transformedBody,\n });\n if ('transferCache' in httpOptions) {\n delete httpOptions['transferCache'];\n }\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.delete<T>(url, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('DELETE', endpoint, httpCall, options, body);\n }\n\n private _buildRequest(\n options?: ZHttpOptions<object, TApiType>,\n body?: unknown\n ): { headers: HttpHeaders; body?: unknown; params?: Record<string, string> } {\n let headers = new HttpHeaders().set('Accept', 'application/json');\n const contentType: ZHttpContentType = options?.contentType ?? 'json';\n let finalBody = body;\n let params: Record<string, string> | undefined;\n\n if (contentType === 'json') {\n headers = headers.set('Content-Type', 'application/json');\n if (body !== undefined && body !== null) {\n finalBody = JSON.stringify(body);\n }\n }\n\n if (contentType === 'urlencoded') {\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\n if (body && typeof body === 'object') {\n const urlParams = new URLSearchParams();\n Object.entries(body).forEach(([key, value]) => {\n urlParams.set(key, String(value));\n });\n finalBody = urlParams.toString();\n }\n }\n\n if (contentType === 'form-data') {\n if (body instanceof FormData) {\n finalBody = body;\n }\n if (!(body instanceof FormData) && body && typeof body === 'object') {\n const formData = new FormData();\n Object.entries(body).forEach(([key, value]) => {\n formData.append(key, value as string | Blob);\n });\n finalBody = formData;\n }\n }\n\n if (options?.headers && !(options.headers instanceof HttpHeaders)) {\n const headersObj = options.headers as Record<string, string | string[]>;\n Object.keys(headersObj).forEach(key => {\n const value = headersObj[key];\n headers = headers.set(key, Array.isArray(value) ? value.join(',') : value);\n });\n }\n\n const token = this.cacheService.get<string>(this.config.tokenKey);\n if (token && !options?.skipToken) {\n headers = headers.set('Authorization', `Bearer ${token}`);\n }\n\n if (options?.params && !(options.params instanceof Object.getPrototypeOf(URLSearchParams).constructor)) {\n const paramsObj = options.params as Record<string, unknown>;\n params = {};\n Object.keys(paramsObj).forEach(key => {\n const value = paramsObj[key];\n if (value !== undefined && value !== null) {\n params![key] = String(value);\n }\n });\n }\n\n return { headers, body: finalBody, params };\n }\n\n private _buildHttpOptions(options?: ZHttpOptions<object, TApiType>): Record<string, unknown> {\n const httpOptions: Record<string, unknown> = { ...options };\n delete httpOptions['enableCache'];\n delete httpOptions['timeCache'];\n delete httpOptions['contentType'];\n delete httpOptions['api'];\n delete httpOptions['skipToken'];\n delete httpOptions['skipErrorToast'];\n return httpOptions;\n }\n\n private _handleCacheAndRequest<T>(\n method: string,\n endpoint: string,\n httpCall: () => Observable<T>,\n options?: ZHttpOptions<object, TApiType>,\n body?: unknown\n ): Observable<T> {\n if (!options?.enableCache) {\n return this._executeHttpCall(httpCall, options, method, endpoint, body);\n }\n\n const cacheKey = this._generateCacheKey(method, endpoint, options, body);\n\n return from(this._getCachedData<T>(cacheKey)).pipe(\n switchMap(cachedData => {\n if (cachedData !== null) {\n return of(cachedData);\n }\n return this._executeHttpCall(httpCall, options, method, endpoint, body);\n }),\n catchError(() => this._executeHttpCall(httpCall, options, method, endpoint, body))\n );\n }\n\n private _executeHttpCall<T>(\n httpCall: () => Observable<T>,\n options?: ZHttpOptions<object, TApiType>,\n method?: string,\n endpoint?: string,\n body?: unknown\n ): Observable<T> {\n return this._detectNetworkStatus().pipe(\n switchMap(isOnline => {\n if (!isOnline) {\n const error: ZHttpError<TApiType> = {\n message: this.translateService.instant('i18n_z_ui_http_network_offline'),\n status: 0,\n };\n return throwError(() => error);\n }\n\n return httpCall().pipe(\n catchError(err => this._handleError(err, options, method, endpoint, body)),\n tap(data => {\n if (options?.log) {\n console.log('[ZHttp] Request succeeded:', {\n method,\n body,\n endpoint: `${this.resolveBaseUrl(options?.api)}${endpoint}`,\n data,\n });\n }\n\n if (options?.enableCache && method && endpoint) {\n const cacheKey = this._generateCacheKey(method, endpoint, options, body);\n const ttl = options.timeCache ?? this.config.defaultCacheTime;\n this._cacheData(cacheKey, data, ttl).catch(console.warn);\n }\n })\n );\n })\n );\n }\n\n private _generateCacheKey(\n method: string,\n endpoint: string,\n options?: ZHttpOptions<object, TApiType>,\n body?: unknown\n ): string {\n const api = options?.api ?? 'default';\n const params = options?.params ? JSON.stringify(options.params) : '';\n const bodyStr = body ? JSON.stringify(body) : '';\n return `${method}_${api}_${endpoint}_${params}_${bodyStr}`;\n }\n\n private async _cacheData<T>(key: string, data: T, ttl: number): Promise<void> {\n const cacheEntry: ZHttpCacheEntry<T> = { data, timestamp: Date.now(), ttl };\n await this.indexDbService.set(key, cacheEntry, { storeName: 'HttpCache' });\n }\n\n private async _getCachedData<T>(key: string): Promise<T | null> {\n try {\n const cached = await this.indexDbService.get<ZHttpCacheEntry<T>>(key, { storeName: 'HttpCache' });\n if (!cached) {\n return null;\n }\n\n if (Date.now() - cached.timestamp > cached.ttl) {\n await this.indexDbService.delete(key, 'HttpCache');\n return null;\n }\n return cached.data;\n } catch {\n return null;\n }\n }\n\n private _detectNetworkStatus(): Observable<boolean> {\n const now = Date.now();\n if (this._networkCache && now - this._networkCache.time < this.config.networkCheckCacheTime) {\n return of(this._networkCache.isOnline);\n }\n\n if (!navigator.onLine) {\n this._networkCache = { time: now, isOnline: false };\n return of(false);\n }\n\n return this._checkNetworkWithRetry().pipe(\n map(isOnline => {\n this._networkCache = { time: Date.now(), isOnline };\n return isOnline;\n }),\n catchError(() => {\n this._networkCache = { time: Date.now(), isOnline: false };\n return of(false);\n })\n );\n }\n\n private _checkNetworkWithRetry(retries = 2): Observable<boolean> {\n return defer(() => this._performNetworkCheck()).pipe(\n catchError(() => {\n if (retries > 0) {\n return this._checkNetworkWithRetry(retries - 1);\n }\n return of(false);\n })\n );\n }\n\n private _performNetworkCheck(): Observable<boolean> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 3000);\n\n return from(fetch('data:,', { method: 'HEAD', signal: controller.signal })).pipe(\n tap(() => clearTimeout(timeoutId)),\n map(() => true),\n catchError(() => {\n clearTimeout(timeoutId);\n throw new Error('Network check failed');\n })\n );\n }\n\n private _handleError(\n error: Error,\n options?: ZHttpOptions<object, TApiType>,\n method?: string,\n endpoint?: string,\n body?: unknown\n ): Observable<never> {\n const statusCode = error instanceof HttpErrorResponse ? error.status : 500;\n const fullEndpoint = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n\n const httpError = this._buildErrorObject(error, statusCode, fullEndpoint, method, body, options);\n const localizedError = this._localizeError(httpError, statusCode);\n\n console.error('[ZHttp] Request failed:', {\n method,\n endpoint: fullEndpoint,\n status: statusCode,\n error: localizedError,\n });\n\n void this._handleStatusCode(statusCode);\n return throwError(() => localizedError);\n }\n\n private _buildErrorObject(\n error: Error,\n statusCode: number,\n endpoint: string,\n method?: string,\n body?: unknown,\n options?: ZHttpOptions<object, TApiType>\n ): ZHttpError<TApiType> {\n const baseError: ZHttpError<TApiType> = { message: '', status: statusCode, endpoint, method, body, options };\n\n if (!(error instanceof HttpErrorResponse)) {\n return {\n ...baseError,\n error: error.message,\n message: error.message || this.translateService.instant('i18n_z_ui_http_error_default'),\n };\n }\n\n const errorBody = error.error;\n\n if (typeof errorBody?.message === 'string') {\n const message =\n errorBody.message === 'Failed to fetch'\n ? this.translateService.instant('i18n_z_ui_http_error_failed_to_fetch', { url: endpoint })\n : errorBody.message;\n return { ...baseError, error: errorBody, message };\n }\n\n if (Array.isArray(errorBody?.errors) && errorBody.errors.length > 0) {\n const message = errorBody.errors\n .map((err: unknown) => (typeof err === 'string' ? err : JSON.stringify(err)))\n .join(', ');\n return { ...baseError, error: errorBody, message };\n }\n\n if (\n typeof errorBody === 'object' &&\n errorBody !== null &&\n !Array.isArray(errorBody) &&\n Object.keys(errorBody).length > 0\n ) {\n return { ...baseError, error: errorBody, message: JSON.stringify(errorBody) };\n }\n\n if (typeof errorBody === 'string') {\n return { ...baseError, error: errorBody, message: errorBody };\n }\n\n return {\n ...baseError,\n error: error.message,\n message: error.message || this.translateService.instant('i18n_z_ui_http_error_default'),\n };\n }\n\n private _localizeError(error: ZHttpError<TApiType>, statusCode: number): ZHttpError<TApiType> {\n const localizedError = { ...error };\n const errorMessages: Record<number, string> = {\n 400: error.message || this.translateService.instant('i18n_z_ui_http_error_400'),\n 401: this._get401Message(),\n 403: this.translateService.instant('i18n_z_ui_http_error_403'),\n 404: this.translateService.instant('i18n_z_ui_http_error_404'),\n 500: this.translateService.instant('i18n_z_ui_http_error_500'),\n };\n\n if (errorMessages[statusCode]) {\n localizedError.message = errorMessages[statusCode];\n }\n\n return localizedError;\n }\n\n private _get401Message(): string {\n const token = this.cacheService.get<string>(this.config.tokenKey);\n\n if (!token) {\n return this.translateService.instant('i18n_z_ui_http_error_401_expired');\n }\n\n return this.translateService.instant('i18n_z_ui_http_error_401_permission');\n }\n\n private async _handleStatusCode(statusCode: number): Promise<void> {\n if (statusCode !== 401) {\n return;\n }\n\n await this._redirectToLogin();\n }\n\n private async _redirectToLogin(): Promise<void> {\n const currentUrl = this.router.url;\n const shouldSaveUrl =\n currentUrl &&\n currentUrl !== '/' &&\n !currentUrl.includes(this.config.loginRoute) &&\n !currentUrl.includes(this.config.unauthorizedRoute);\n\n if (shouldSaveUrl) {\n this.cacheService.set(this.config.lastUrlKey, currentUrl);\n await this.indexDbService.set(this.config.lastUrlKey, currentUrl).catch(console.error);\n }\n\n this.cacheService.deleteMultiple([this.config.tokenKey, this.config.userInfoKey]);\n await this.indexDbService.clear('HttpCache').catch(console.error);\n this.router.navigate([this.config.loginRoute]).catch(console.error);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ZSubjectType } from './types/z-subject.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZSubjectService {\n private readonly _subjects = new Map<string, Subject<unknown>>();\n private readonly _behaviorSubjects = new Map<string, BehaviorSubject<unknown>>();\n\n /**\n * Emit a value to a subject\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n * @param value - Value to emit\n */\n public emit<T>(key: string, type: ZSubjectType, value: T): void {\n if (type === 'behavior') {\n const existingSubject = this._behaviorSubjects.get(key) as BehaviorSubject<T> | undefined;\n if (existingSubject) {\n existingSubject.next(value);\n return;\n }\n\n const newSubject = new BehaviorSubject<T>(value);\n this._behaviorSubjects.set(key, newSubject as BehaviorSubject<unknown>);\n return;\n }\n\n const existingSubject = this._subjects.get(key) as Subject<T> | undefined;\n if (existingSubject) {\n existingSubject.next(value);\n return;\n }\n\n const newSubject = new Subject<T>();\n this._subjects.set(key, newSubject as Subject<unknown>);\n newSubject.next(value);\n }\n\n /**\n * Get an observable for a subject\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n * @param initialValue - Initial value for BehaviorSubject (required for new behavior subjects)\n */\n public on$<T>(key: string, type: ZSubjectType, initialValue?: T): Observable<T> {\n if (type === 'behavior') {\n const existingSubject = this._behaviorSubjects.get(key) as BehaviorSubject<T> | undefined;\n if (existingSubject) {\n return existingSubject.asObservable();\n }\n\n const newSubject = new BehaviorSubject<T>(initialValue as T);\n this._behaviorSubjects.set(key, newSubject as BehaviorSubject<unknown>);\n return newSubject.asObservable();\n }\n\n const existingSubject = this._subjects.get(key) as Subject<T> | undefined;\n if (existingSubject) {\n return existingSubject.asObservable();\n }\n\n const newSubject = new Subject<T>();\n this._subjects.set(key, newSubject as Subject<unknown>);\n return newSubject.asObservable();\n }\n\n /**\n * Get the current value of a BehaviorSubject\n * @param key - Subject identifier\n */\n public getValue<T>(key: string): T | undefined {\n const subject = this._behaviorSubjects.get(key);\n if (!subject) {\n return undefined;\n }\n return subject.getValue() as T;\n }\n\n /**\n * Complete and remove a subject\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n */\n public complete(key: string, type: ZSubjectType): void {\n if (type === 'behavior') {\n const subject = this._behaviorSubjects.get(key);\n if (!subject) {\n return;\n }\n subject.complete();\n this._behaviorSubjects.delete(key);\n return;\n }\n\n const subject = this._subjects.get(key);\n if (!subject) {\n return;\n }\n subject.complete();\n this._subjects.delete(key);\n }\n\n /**\n * Complete all subjects\n */\n public completeAll(): void {\n this._subjects.forEach(subject => subject.complete());\n this._behaviorSubjects.forEach(subject => subject.complete());\n this._subjects.clear();\n this._behaviorSubjects.clear();\n }\n\n /**\n * Check if a subject exists\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n */\n public has(key: string, type: ZSubjectType): boolean {\n if (type === 'behavior') {\n return this._behaviorSubjects.has(key);\n }\n return this._subjects.has(key);\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { effect, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport {\n type ZThemeConfig,\n type ZThemeName,\n type ZThemePreferences,\n Z_DEFAULT_THEME,\n Z_THEME_CONFIG,\n Z_THEME_CSS_MAP,\n Z_THEME_PREFERENCES_CACHE_KEY,\n} from './types/z-theme.types';\nimport { ZCacheService } from './z-cache.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZThemeService {\n private readonly _document = inject(DOCUMENT);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _config = inject(Z_THEME_CONFIG, { optional: true }) as ZThemeConfig | null;\n private readonly _isBrowser = isPlatformBrowser(this._platformId);\n\n private readonly _defaultTheme = this._config?.defaultTheme ?? Z_DEFAULT_THEME;\n private readonly _defaultDarkMode = this._config?.defaultDarkMode ?? true;\n\n private readonly _isDark = signal(this._getInitialPreferences().isDark);\n private readonly _currentTheme = signal<ZThemeName>(this._getInitialPreferences().theme);\n private readonly _loadedThemes = new Set<ZThemeName>(['neutral']);\n\n public readonly isDark = this._isDark.asReadonly();\n public readonly currentTheme = this._currentTheme.asReadonly();\n\n constructor() {\n if (this._isBrowser) {\n this._initializeTheme();\n }\n\n effect(() => {\n const theme = this._currentTheme();\n const isDark = this._isDark();\n\n if (this._isBrowser) {\n this._savePreferences({ theme, isDark });\n }\n });\n }\n\n public setTheme(theme: ZThemeName): void {\n this._currentTheme.set(theme);\n if (this._loadedThemes.has(theme)) {\n this._document.documentElement.setAttribute('z-theme', theme);\n return;\n }\n\n if (!Z_THEME_CSS_MAP[theme]) {\n this._document.documentElement.setAttribute('z-theme', theme);\n return;\n }\n\n this._loadThemeCSS(theme, () => {\n this._document.documentElement.setAttribute('z-theme', theme);\n });\n }\n\n public toggleDarkMode(isDark: boolean): void {\n this._isDark.set(isDark);\n if (isDark) {\n this._document.documentElement.classList.add('dark');\n return;\n }\n\n this._document.documentElement.classList.remove('dark');\n }\n\n public preloadTheme(theme: ZThemeName): void {\n if (this._loadedThemes.has(theme) || !Z_THEME_CSS_MAP[theme]) {\n return;\n }\n\n this._loadThemeCSS(theme);\n }\n\n private _initializeTheme(): void {\n const { theme, isDark } = this._getInitialPreferences();\n this.setTheme(theme);\n this.toggleDarkMode(isDark);\n }\n\n private _getInitialPreferences(): ZThemePreferences {\n const defaultPreferences: ZThemePreferences = {\n theme: this._defaultTheme,\n isDark: this._defaultDarkMode,\n };\n\n if (!this._isBrowser) {\n return defaultPreferences;\n }\n\n const cached = ZCacheService.get<ZThemePreferences>(Z_THEME_PREFERENCES_CACHE_KEY);\n if (!cached) {\n return defaultPreferences;\n }\n\n return {\n theme: this._isValidTheme(cached.theme) ? cached.theme : defaultPreferences.theme,\n isDark: typeof cached.isDark === 'boolean' ? cached.isDark : defaultPreferences.isDark,\n };\n }\n\n private _savePreferences(preferences: ZThemePreferences): void {\n ZCacheService.set(Z_THEME_PREFERENCES_CACHE_KEY, preferences);\n }\n\n private _isValidTheme(theme: unknown): theme is ZThemeName {\n const validThemes: ZThemeName[] = [\n 'green',\n 'orange',\n 'violet',\n 'neutral',\n 'stone',\n 'zinc',\n 'gray',\n 'slate',\n 'hospital',\n ];\n return typeof theme === 'string' && validThemes.includes(theme as ZThemeName);\n }\n\n private _loadThemeCSS(theme: ZThemeName, onLoad?: () => void): void {\n const cssPath = Z_THEME_CSS_MAP[theme];\n if (!cssPath) {\n onLoad?.();\n return;\n }\n\n const existingLink = this._document.querySelector(`link[data-theme=\"${theme}\"]`);\n if (existingLink) {\n this._loadedThemes.add(theme);\n onLoad?.();\n return;\n }\n\n const link = this._document.createElement('link');\n link.rel = 'stylesheet';\n link.href = cssPath;\n link.setAttribute('data-theme', theme);\n link.onload = (): void => {\n this._loadedThemes.add(theme);\n onLoad?.();\n };\n\n link.onerror = (): void => {\n console.error(`Failed to load theme \"${theme}\" from ${cssPath}`);\n onLoad?.();\n };\n\n this._document.head.appendChild(link);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-vnetcity-services.mjs","sources":["../../../../libs/core-ui/services/z-cache.service.ts","../../../../libs/core-ui/services/defines/z-excel.define.ts","../../../../libs/core-ui/services/z-excel.service.ts","../../../../libs/core-ui/services/defines/z-indexdb.define.ts","../../../../libs/core-ui/services/z-indexdb.service.ts","../../../../libs/core-ui/services/defines/z-translate.define.ts","../../../../libs/core-ui/services/types/z-theme.types.ts","../../../../libs/core-ui/services/types/z-translate.types.ts","../../../../libs/core-ui/services/z-translate.service.ts","../../../../libs/core-ui/services/z-http-abstract.service.ts","../../../../libs/core-ui/services/z-subject.service.ts","../../../../libs/core-ui/services/z-theme.service.ts","../../../../libs/core-ui/services/shival99-z-vnetcity-services.ts"],"sourcesContent":["import type { ZCacheConfig } from './types/z-cache.types';\n\nexport class ZCacheService {\n private static _prefix = 'z_';\n private static _encrypt = true;\n\n public static configure(config: ZCacheConfig): void {\n if (config.prefix) {\n ZCacheService._prefix = config.prefix;\n }\n if (config.encrypt !== undefined) {\n ZCacheService._encrypt = config.encrypt;\n }\n }\n\n private static _encode(data: unknown): string {\n const payload = { __z: true, __d: data };\n return btoa(encodeURIComponent(JSON.stringify(payload)));\n }\n\n private static _decode<T>(data: string): T | null {\n try {\n const decoded = JSON.parse(decodeURIComponent(atob(data)));\n if (!decoded.__z) {\n return null;\n }\n return decoded.__d as T;\n } catch {\n return null;\n }\n }\n\n private static _normalizeKey(key: string): string {\n return key.toLowerCase();\n }\n\n private static _getFullKey(key: string, encrypt: boolean): string {\n const normalizedKey = ZCacheService._normalizeKey(key);\n const prefixedKey = `${ZCacheService._prefix}${normalizedKey}`;\n return encrypt ? ZCacheService._encode(prefixedKey) : prefixedKey;\n }\n\n private static _safeOperation<T>(operation: () => T, fallback: T): T {\n try {\n return operation();\n } catch (error) {\n console.error('[ZCache] Operation error:', error);\n return fallback;\n }\n }\n\n public static get<T>(key: string, defaultValue?: T, encrypt = ZCacheService._encrypt): T | undefined {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n const result = localStorage.getItem(_key);\n\n if (!result) {\n return defaultValue;\n }\n\n const data = encrypt ? ZCacheService._decode<T>(result) : (JSON.parse(result) as T);\n return data ?? defaultValue;\n }, defaultValue);\n }\n\n public static set<T>(key: string, data: T, encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n const _value = encrypt ? ZCacheService._encode(data) : JSON.stringify(data);\n localStorage.setItem(_key, _value);\n return true;\n }, false);\n }\n\n public static delete(key: string): boolean {\n return ZCacheService._safeOperation(() => {\n const encryptedKey = ZCacheService._getFullKey(key, true);\n const plainKey = ZCacheService._getFullKey(key, false);\n localStorage.removeItem(encryptedKey);\n localStorage.removeItem(plainKey);\n return true;\n }, false);\n }\n\n public static deleteMultiple(keys: string[]): boolean {\n return ZCacheService._safeOperation(() => {\n keys.forEach(key => {\n const encryptedKey = ZCacheService._getFullKey(key, true);\n const plainKey = ZCacheService._getFullKey(key, false);\n localStorage.removeItem(encryptedKey);\n localStorage.removeItem(plainKey);\n });\n return true;\n }, false);\n }\n\n public static clear(): boolean {\n return ZCacheService._safeOperation(() => {\n const keysToRemove: string[] = [];\n const prefixEncoded = ZCacheService._encode(ZCacheService._prefix);\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(ZCacheService._prefix) || key?.startsWith(prefixEncoded)) {\n keysToRemove.push(key);\n }\n }\n\n keysToRemove.forEach(key => localStorage.removeItem(key));\n return true;\n }, false);\n }\n\n public static has(key: string, encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n return localStorage.getItem(_key) !== null;\n }, false);\n }\n\n public static keys(): string[] {\n return ZCacheService._safeOperation(() => {\n const result: string[] = [];\n const prefixEncoded = ZCacheService._encode(ZCacheService._prefix);\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(ZCacheService._prefix)) {\n result.push(key.slice(ZCacheService._prefix.length));\n continue;\n }\n if (key?.startsWith(prefixEncoded)) {\n const decoded = ZCacheService._decode<string>(key);\n if (decoded) {\n result.push(decoded.slice(ZCacheService._prefix.length));\n }\n }\n }\n\n return result;\n }, []);\n }\n}\n","import type { ZExcelDefaultConfig } from '../types/z-excel.types';\n\nexport const Z_EXCEL_COLORS = {\n 'green-50': 'FFF0FDF4',\n 'green-100': 'FFDCFCE7',\n 'green-200': 'FFBBF7D0',\n 'green-300': 'FF86EFAC',\n 'green-400': 'FF4ADE80',\n 'green-500': 'FF22C55E',\n\n 'blue-50': 'FFEFF6FF',\n 'blue-100': 'FFDBEAFE',\n 'blue-200': 'FFBFDBFE',\n 'blue-300': 'FF93C5FD',\n 'blue-400': 'FF60A5FA',\n 'blue-500': 'FF3B82F6',\n\n 'gray-50': 'FFF9FAFB',\n 'gray-100': 'FFF3F4F6',\n 'gray-200': 'FFE5E7EB',\n 'gray-300': 'FFD1D5DB',\n 'gray-400': 'FF9CA3AF',\n 'gray-500': 'FF6B7280',\n\n 'yellow-50': 'FFFFFBEB',\n 'yellow-100': 'FFFEF3C7',\n 'yellow-200': 'FFFDE68A',\n 'yellow-300': 'FFFCD34D',\n\n 'red-50': 'FFFEF2F2',\n 'red-100': 'FFFEE2E2',\n 'red-200': 'FFFECACA',\n 'red-300': 'FFFCA5A5',\n\n white: 'FFFFFFFF',\n black: 'FF000000',\n transparent: '00000000',\n} as const;\n\nexport const Z_EXCEL_DEFAULT_CONFIG: ZExcelDefaultConfig = {\n font: {\n name: 'Calibri',\n size: 11,\n },\n headerFont: {\n name: 'Calibri',\n size: 11,\n bold: true,\n },\n headerColors: {\n level0: Z_EXCEL_COLORS['green-300'],\n level1: Z_EXCEL_COLORS['blue-200'],\n },\n};\n\nexport const Z_EXCEL_BORDER_THIN = {\n top: { style: 'thin' as const },\n left: { style: 'thin' as const },\n bottom: { style: 'thin' as const },\n right: { style: 'thin' as const },\n};\n\nexport const Z_EXCEL_CHAR_WIDTH_MAP: Record<string, number> = {\n W: 1.4,\n M: 1.4,\n D: 1.2,\n O: 1.2,\n Q: 1.2,\n A: 1.1,\n B: 1.1,\n C: 1.1,\n G: 1.1,\n H: 1.1,\n N: 1.1,\n R: 1.1,\n S: 1.1,\n U: 1.1,\n V: 1.1,\n X: 1.1,\n Y: 1.1,\n Z: 1.1,\n E: 1.0,\n F: 1.0,\n K: 1.0,\n P: 1.0,\n T: 1.0,\n J: 0.9,\n L: 0.9,\n I: 0.6,\n i: 0.5,\n l: 0.5,\n t: 0.6,\n f: 0.6,\n j: 0.5,\n '1': 0.8,\n '!': 0.5,\n '.': 0.5,\n ',': 0.5,\n ':': 0.5,\n ';': 0.5,\n '|': 0.5,\n ' ': 0.5,\n};\n\nexport const Z_EXCEL_FONT_MULTIPLIERS: Record<string, number> = {\n 'Times New Roman': 1.0,\n Arial: 0.95,\n Calibri: 0.95,\n 'Courier New': 1.2,\n 'Comic Sans MS': 1.15,\n Verdana: 1.05,\n Tahoma: 0.9,\n Georgia: 1.05,\n Impact: 0.85,\n 'Trebuchet MS': 0.95,\n};\n\nexport const Z_EXCEL_WIDTH_LIMITS = {\n min: 5,\n max: 50,\n tableMin: 8,\n tableMax: 30,\n default: 20,\n};\n","import { Injectable } from '@angular/core';\nimport { zConvertColorToArgb, zFormatNumExcel } from '@shival99/z-vnetcity/utils';\nimport * as ExcelJS from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport * as XLSX from 'xlsx';\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 './defines/z-excel.define';\nimport type {\n ZExcelConfig,\n ZExcelColumnConfig,\n ZExcelExportOptions,\n ZExcelExportResult,\n ZExcelFromTableConfig,\n ZExcelCell,\n ZExcelCellContext,\n ZExcelAlign,\n ZExcelTableColumnConfig,\n ZExcelTableHeaderConfig,\n} from './types/z-excel.types';\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 = '';\n\n 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 width: col.size,\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 = ZExcelService._calculateCellWidth(cell, String(cell.value));\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 = ZExcelService._calculateCellWidth(cell, String(cell.value));\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 _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","import { type ZIndexDbConfig } from '../types/z-indexdb.types';\n\nexport const Z_INDEXDB_DEFAULT_CONFIG: Required<Pick<ZIndexDbConfig, 'dbName' | 'version' | 'mode' | 'defaultStore'>> =\n {\n dbName: 'ZDatabase',\n version: 1,\n mode: 'readwrite',\n defaultStore: 'ZStore',\n };\n\nexport const Z_INDEXDB_BATCH_SIZE = 100;\nexport const Z_INDEXDB_MAX_VERSION = 1000;\n","import { Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_INDEXDB_BATCH_SIZE } from './defines';\nimport type {\n ZIndexDbConfig,\n ZIndexDbGetOptions,\n ZIndexDbSetOptions,\n ZIndexDbStoreConfig,\n} from './types/z-indexdb.types';\n\nexport class ZIndexDbService {\n private _db: IDBDatabase | null = null;\n private _dbName: string;\n private _version: number;\n private _mode: IDBTransactionMode;\n private _dbReady: Promise<void>;\n private _stores: Map<string, ZIndexDbStoreConfig> = new Map();\n private _defaultStoreName: string;\n private _globalProtectedKeys: string[];\n private _encrypt = true;\n\n public constructor(config: ZIndexDbConfig = {}) {\n this._dbName = config.dbName ?? Z_INDEXDB_DEFAULT_CONFIG.dbName;\n this._version = config.version ?? Z_INDEXDB_DEFAULT_CONFIG.version;\n this._mode = config.mode ?? Z_INDEXDB_DEFAULT_CONFIG.mode;\n this._defaultStoreName = config.defaultStore ?? Z_INDEXDB_DEFAULT_CONFIG.defaultStore;\n this._globalProtectedKeys = config.protectedKeys ?? [];\n this._encrypt = config.encrypt ?? true;\n\n if (config.stores?.length) {\n config.stores.forEach(store => this._stores.set(store.name, store));\n }\n if (!this._stores.has(this._defaultStoreName)) {\n this._stores.set(this._defaultStoreName, { name: this._defaultStoreName });\n }\n\n this._dbReady = this._initDb();\n }\n\n private _getStoreConfig(storeName?: string): ZIndexDbStoreConfig {\n const name = storeName ?? this._defaultStoreName;\n return this._stores.get(name) ?? { name };\n }\n\n /**\n * Determines if encryption should be used.\n * Priority: per-call > store-level > global\n * @param storeConfig - Store configuration\n * @param perCallEncrypt - Per-call encrypt override (highest priority)\n */\n private _shouldEncrypt(storeConfig: ZIndexDbStoreConfig, perCallEncrypt?: boolean): boolean {\n if (perCallEncrypt !== undefined) {\n return perCallEncrypt;\n }\n return storeConfig.encrypt ?? this._encrypt;\n }\n\n private _normalizeKey(key: string): string {\n return key.toLowerCase();\n }\n\n private _encryptData(data: unknown): string {\n const payload = {\n __z: true,\n __t: typeof data,\n __d: data,\n };\n return btoa(encodeURIComponent(JSON.stringify(payload)));\n }\n\n private _decryptData<T>(data: string): T | null {\n try {\n const decoded = JSON.parse(decodeURIComponent(atob(data)));\n if (!decoded.__z) {\n return null;\n }\n return decoded.__d as T;\n } catch {\n return null;\n }\n }\n\n private _closeConnection(): void {\n if (this._db) {\n this._db.close();\n this._db = null;\n }\n }\n\n private async _reconnect(): Promise<void> {\n this._closeConnection();\n this._dbReady = this._initDb();\n await this._dbReady;\n }\n\n private async _withRetry<T>(operation: () => Promise<T>, retries = 3): Promise<T> {\n let lastError: unknown;\n for (let i = 0; i < retries; i++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error;\n if (error instanceof Error && error.name === 'InvalidStateError') {\n await this._reconnect();\n }\n await new Promise(resolve => setTimeout(resolve, Math.pow(2, i) * 100));\n }\n }\n\n throw lastError;\n }\n\n private async _initDb(): Promise<void> {\n if (this._db) {\n return;\n }\n\n const currentVersion = await this._getCurrentDbVersion();\n if (currentVersion >= Z_INDEXDB_MAX_VERSION) {\n await this._resetDatabase();\n this._version = 1;\n }\n if (currentVersion > this._version && currentVersion < Z_INDEXDB_MAX_VERSION) {\n this._version = currentVersion;\n }\n\n return new Promise((resolve, reject) => {\n try {\n const request = indexedDB.open(this._dbName, this._version);\n\n request.onupgradeneeded = event => {\n const db = (event.target as IDBOpenDBRequest).result;\n const existingStores = Array.from(db.objectStoreNames);\n existingStores.forEach(storeName => {\n if (!this._stores.has(storeName)) {\n db.deleteObjectStore(storeName);\n }\n });\n this._stores.forEach((_, storeName) => {\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n });\n };\n\n request.onsuccess = event => {\n this._db = (event.target as IDBOpenDBRequest).result;\n this._version = this._db.version;\n this._db.onerror = e => console.error('[ZIndexDb] Error:', (e.target as IDBRequest).error);\n this._db.onclose = () => {\n this._db = null;\n };\n\n const missingStores = this._getMissingStores();\n if (missingStores.length > 0) {\n this._triggerUpgrade().then(resolve).catch(reject);\n return;\n }\n\n resolve();\n };\n\n request.onerror = event => {\n console.error('[ZIndexDb] Open error:', (event.target as IDBOpenDBRequest).error);\n reject((event.target as IDBOpenDBRequest).error);\n };\n } catch (error) {\n reject(error);\n }\n });\n }\n\n private _getCurrentDbVersion(): Promise<number> {\n return new Promise(resolve => {\n const request = indexedDB.open(this._dbName);\n request.onsuccess = event => {\n const db = (event.target as IDBOpenDBRequest).result;\n const { version } = db;\n db.close();\n resolve(version);\n };\n request.onerror = () => {\n resolve(1);\n };\n });\n }\n\n private async _triggerUpgrade(): Promise<void> {\n this._closeConnection();\n const isVersionLimitReached = this._version >= Z_INDEXDB_MAX_VERSION;\n if (isVersionLimitReached) {\n await this._resetDatabase();\n }\n\n this._version = isVersionLimitReached ? 1 : this._version + 1;\n this._dbReady = this._initDb();\n await this._dbReady;\n }\n\n private async _resetDatabase(): Promise<void> {\n this._closeConnection();\n return new Promise((resolve, reject) => {\n const deleteRequest = indexedDB.deleteDatabase(this._dbName);\n deleteRequest.onsuccess = () => resolve();\n deleteRequest.onerror = () => reject(deleteRequest.error);\n deleteRequest.onblocked = () => {\n setTimeout(() => this._resetDatabase().then(resolve).catch(reject), 100);\n };\n });\n }\n\n private _getMissingStores(): string[] {\n if (!this._db) {\n return [];\n }\n const existingStores = Array.from(this._db.objectStoreNames);\n const requiredStores = Array.from(this._stores.keys());\n return requiredStores.filter(store => !existingStores.includes(store));\n }\n\n private _ensureStoreExists(storeName: string): boolean {\n if (!this._db) {\n return false;\n }\n return this._db.objectStoreNames.contains(storeName);\n }\n\n public async get<T>(key: string, options?: ZIndexDbGetOptions<T>): Promise<T | undefined> {\n const storeConfig = this._getStoreConfig(options?.storeName);\n const shouldEncrypt = this._shouldEncrypt(storeConfig, options?.encrypt);\n const defaultValue = options?.defaultValue;\n\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n return defaultValue;\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n await this._triggerUpgrade();\n if (!this._ensureStoreExists(storeConfig.name)) {\n return defaultValue;\n }\n }\n\n const normalizedKey = this._normalizeKey(key);\n const _key = shouldEncrypt ? this._encryptData(normalizedKey) : normalizedKey;\n return new Promise<T | undefined>(resolve => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], this._mode);\n const store = transaction.objectStore(storeConfig.name);\n const request = store.get(_key);\n\n request.onsuccess = () => {\n try {\n const { result } = request;\n if (!result) {\n resolve(defaultValue);\n return;\n }\n const decrypted = shouldEncrypt ? this._decryptData<T>(result) : result;\n resolve(decrypted ?? defaultValue);\n } catch {\n resolve(defaultValue);\n }\n };\n\n request.onerror = () => resolve(defaultValue);\n transaction.onerror = () => resolve(defaultValue);\n } catch {\n resolve(defaultValue);\n }\n });\n });\n }\n\n public async set<T>(key: string, value: T, options?: ZIndexDbSetOptions): Promise<void> {\n const storeConfig = this._getStoreConfig(options?.storeName);\n const shouldEncrypt = this._shouldEncrypt(storeConfig, options?.encrypt);\n\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n await this._triggerUpgrade();\n if (!this._ensureStoreExists(storeConfig.name)) {\n throw new Error(`Failed to create store \"${storeConfig.name}\"`);\n }\n }\n\n const normalizedKey = this._normalizeKey(key);\n const _key = shouldEncrypt ? this._encryptData(normalizedKey) : normalizedKey;\n const _value = shouldEncrypt ? this._encryptData(value) : value;\n\n return new Promise<void>((resolve, reject) => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n const request = store.put(_value, _key);\n\n request.onerror = () => reject(request.error);\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n } catch (error) {\n reject(error);\n }\n });\n });\n }\n\n /**\n * Delete key(s) from IndexDB. If storeName not provided, deletes from all stores.\n * Tries both encrypted and non-encrypted versions of the key.\n */\n public async delete(key: string | string[], storeName?: string): Promise<void> {\n if (storeName === undefined) {\n await Promise.all(this.getStoreNames().map(name => this._deleteFromStore(key, name)));\n return;\n }\n await this._deleteFromStore(key, storeName);\n }\n\n private async _deleteFromStore(key: string | string[], storeName: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n return;\n }\n\n const keys = Array.isArray(key) ? key : [key];\n return new Promise<void>((resolve, reject) => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n keys.forEach(k => {\n const normalizedKey = this._normalizeKey(k);\n store.delete(normalizedKey);\n store.delete(this._encryptData(normalizedKey));\n });\n\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n } catch (error) {\n reject(error);\n }\n });\n });\n }\n\n public async clear(storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n const protectedKeys = [...this._globalProtectedKeys, ...(storeConfig.protectedKeys ?? [])];\n\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n return;\n }\n\n if (protectedKeys.length === 0) {\n return new Promise<void>((resolve, reject) => {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n const request = store.clear();\n\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n return new Promise<void>((resolve, reject) => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n const keyRequest = store.getAllKeys();\n\n const protectedSet = new Set<string>();\n protectedKeys.forEach(k => {\n const normalizedKey = this._normalizeKey(k);\n protectedSet.add(normalizedKey);\n protectedSet.add(this._encryptData(normalizedKey));\n });\n\n keyRequest.onsuccess = () => {\n const allKeys = keyRequest.result as string[];\n allKeys.forEach(k => {\n if (!protectedSet.has(k)) {\n const decrypted = this._decryptData<string>(k);\n if (!decrypted || !protectedKeys.includes(decrypted)) {\n store.delete(k);\n }\n }\n });\n };\n\n keyRequest.onerror = () => reject(keyRequest.error);\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n } catch (error) {\n reject(error);\n }\n });\n });\n }\n\n public async getAll<T = unknown>(storeName?: string): Promise<Record<string, T>> {\n const storeConfig = this._getStoreConfig(storeName);\n return this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n return {};\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n return {};\n }\n\n return new Promise<Record<string, T>>(resolve => {\n try {\n const transaction = this._db!.transaction([storeConfig.name], this._mode);\n const store = transaction.objectStore(storeConfig.name);\n const keysRequest = store.getAllKeys();\n const valuesRequest = store.getAll();\n const results: Record<string, T> = {};\n\n keysRequest.onsuccess = () => {\n const keys = keysRequest.result;\n const values = valuesRequest.result;\n\n keys.forEach((key, index) => {\n if (typeof key === 'string') {\n try {\n const _key = this._shouldEncrypt(storeConfig) ? this._decryptData<string>(key) : key;\n const _value = this._shouldEncrypt(storeConfig) ? this._decryptData<T>(values[index]) : values[index];\n if (_key && _value !== null) {\n results[_key] = _value;\n }\n } catch {\n console.warn(`[ZIndexDb] Failed to decrypt entry for key: ${key}`);\n }\n }\n });\n\n resolve(results);\n };\n\n keysRequest.onerror = () => resolve({});\n transaction.onerror = () => resolve({});\n } catch {\n resolve({});\n }\n });\n });\n }\n\n public async setMultiple<T>(items: Record<string, T>, options?: ZIndexDbSetOptions): Promise<void> {\n const storeConfig = this._getStoreConfig(options?.storeName);\n const shouldEncrypt = this._shouldEncrypt(storeConfig, options?.encrypt);\n const entries = Object.entries(items);\n\n await this._dbReady;\n if (this._db && !this._ensureStoreExists(storeConfig.name)) {\n await this._triggerUpgrade();\n }\n\n for (let i = 0; i < entries.length; i += Z_INDEXDB_BATCH_SIZE) {\n const batch = entries.slice(i, i + Z_INDEXDB_BATCH_SIZE);\n await this._withRetry(async () => {\n await this._dbReady;\n if (!this._db) {\n await this._reconnect();\n if (!this._db) {\n throw new Error('Database not initialized');\n }\n }\n\n if (!this._ensureStoreExists(storeConfig.name)) {\n throw new Error(`Store \"${storeConfig.name}\" does not exist`);\n }\n\n return new Promise<void>((resolve, reject) => {\n const transaction = this._db!.transaction([storeConfig.name], 'readwrite');\n const store = transaction.objectStore(storeConfig.name);\n\n batch.forEach(([key, value]) => {\n const normalizedKey = this._normalizeKey(key);\n const _key = shouldEncrypt ? this._encryptData(normalizedKey) : normalizedKey;\n const _value = shouldEncrypt ? this._encryptData(value) : value;\n store.put(_value, _key);\n });\n\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n });\n });\n }\n }\n\n public getStoreNames(): string[] {\n return Array.from(this._stores.keys());\n }\n\n public hasStore(storeName: string): boolean {\n return this._stores.has(storeName);\n }\n\n public async addStore(config: ZIndexDbStoreConfig): Promise<void> {\n if (this._stores.has(config.name)) {\n return;\n }\n\n this._stores.set(config.name, config);\n await this._triggerUpgrade();\n }\n\n public async clearAll(): Promise<void> {\n const storeNames = this.getStoreNames();\n await Promise.all(storeNames.map(storeName => this.clear(storeName)));\n }\n}\n","export const Z_LANG_TO_LOCALE: Record<string, string> = {\n vi: 'vi-VN',\n en: 'en-US',\n};\n","import { InjectionToken } from '@angular/core';\n\nexport type ZThemeName =\n | 'green'\n | 'orange'\n | 'violet'\n | 'neutral'\n | 'stone'\n | 'zinc'\n | 'gray'\n | 'slate'\n | 'hospital'\n | 'homy';\n\nexport interface ZThemeConfig {\n defaultTheme?: ZThemeName;\n defaultDarkMode?: boolean;\n}\n\nexport const Z_THEME_CONFIG = new InjectionToken<ZThemeConfig>('Z_THEME_CONFIG');\nexport const Z_DEFAULT_THEME: ZThemeName = 'neutral';\n\n/** Single cache key for all theme preferences */\nexport const Z_THEME_PREFERENCES_CACHE_KEY = 'Z_THEME_PREFERENCES';\n\n/** Cached theme preferences structure */\nexport interface ZThemePreferences {\n theme: ZThemeName;\n isDark: boolean;\n}\n\nexport const Z_THEME_CSS_MAP: Record<ZThemeName, string> = {\n neutral: '',\n green: 'assets/css/themes/green.css',\n orange: 'assets/css/themes/orange.css',\n violet: 'assets/css/themes/violet.css',\n stone: 'assets/css/themes/stone.css',\n zinc: 'assets/css/themes/zinc.css',\n gray: 'assets/css/themes/gray.css',\n slate: 'assets/css/themes/slate.css',\n hospital: 'assets/css/themes/hospital.css',\n homy: 'assets/css/themes/homy.css',\n};\n","export interface ZTranslateConfig {\n /** Default language */\n defaultLang?: string;\n /** Available languages */\n availableLangs?: string[];\n /** Path to translation files */\n translationPath?: string;\n /** Translation file extension */\n fileExtension?: string;\n}\n\nexport interface ZTranslateI18nConfig {\n defaultLang?: string;\n availableLangs?: string[];\n}\n\nexport const Z_LANG_CACHE_KEY = 'Z_LANGUAGE';\n","import { computed, inject, Injectable, signal, type Signal } from '@angular/core';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { Z_LANG_TO_LOCALE } from './defines/z-translate.define';\nimport { Z_LANG_CACHE_KEY } from './types';\nimport { ZCacheService } from './z-cache.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZTranslateService {\n private readonly _translate = inject(TranslateService);\n\n public readonly currentLang = signal<string>('vi');\n public readonly availableLangs = signal<string[]>(['vi', 'en']);\n\n public constructor() {\n this._initialize();\n }\n\n private _initialize(): void {\n const currentLang = this._translate.getCurrentLang() || ZCacheService.get<string>(Z_LANG_CACHE_KEY) || 'vi';\n this.currentLang.set(currentLang);\n document.documentElement.lang = currentLang;\n }\n\n public use(lang: string): void {\n this._translate.use(lang);\n ZCacheService.set(Z_LANG_CACHE_KEY, lang);\n this.currentLang.set(lang);\n document.documentElement.lang = lang;\n }\n\n public getLang(): string {\n return this._translate.getCurrentLang() ?? 'vi';\n }\n\n public getLocale(): string {\n return Z_LANG_TO_LOCALE[this.currentLang()] ?? 'vi-VN';\n }\n\n public locale(): Signal<string> {\n return computed(() => Z_LANG_TO_LOCALE[this.currentLang()] ?? 'vi-VN');\n }\n\n public instant(key: string, params?: Record<string, unknown>): string {\n if (!key) {\n return '';\n }\n\n return this._translate.instant(key, params);\n }\n\n /**\n * Returns a computed signal that automatically updates when language changes.\n * Use this instead of instant() when you need reactive translations.\n *\n * @example\n * ```typescript\n * // In component\n * protected readonly title = this._zTranslate.translate('my_title_key');\n *\n * // In template\n * <h1>{{ title() }}</h1>\n * ```\n */\n public translate(key: string, params?: Record<string, unknown>): Signal<string> {\n return computed(() => {\n this.currentLang();\n return this.instant(key, params);\n });\n }\n\n public async get(key: string, params?: Record<string, unknown>): Promise<string> {\n if (!key) {\n return '';\n }\n\n return firstValueFrom(this._translate.get(key, params));\n }\n\n public get$(key: string, params?: Record<string, unknown>): Observable<string> {\n return this._translate.get(key, params);\n }\n\n public stream$(key: string, params?: Record<string, unknown>): Observable<string> {\n return this._translate.stream(key, params);\n }\n\n public async getMany(keys: string[], params?: Record<string, unknown>): Promise<Record<string, string>> {\n const results: Record<string, string> = {};\n await Promise.all(\n keys.map(async key => {\n results[key] = await this.get(key, params);\n })\n );\n\n return results;\n }\n\n public has(key: string): boolean {\n const translation = this._translate.instant(key);\n return translation !== key;\n }\n\n public setTranslation(lang: string, translations: TranslationObject, shouldMerge = true): void {\n this._translate.setTranslation(lang, translations, shouldMerge);\n }\n\n public getNgxTranslate(): TranslateService {\n return this._translate;\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { catchError, defer, from, map, Observable, of, switchMap, tap, throwError } from 'rxjs';\nimport type {\n ZHttpCacheEntry,\n ZHttpConfig,\n ZHttpContentType,\n ZHttpError,\n ZHttpNetworkCheck,\n ZHttpOptions,\n} from './types/z-http.types';\nimport { ZCacheService } from './z-cache.service';\nimport { ZIndexDbService } from './z-indexdb.service';\nimport { ZTranslateService } from './z-translate.service';\n\nexport const Z_HTTP_DEFAULT_CONFIG: Required<ZHttpConfig> = {\n defaultCacheTime: 3 * 60 * 1000,\n networkCheckCacheTime: 5000,\n tokenKey: 'Z_TOKEN',\n userInfoKey: 'Z_USER_INFO',\n lastUrlKey: 'Z_LAST_URL',\n loginRoute: '/login',\n homeRoute: '/',\n unauthorizedRoute: '/401',\n};\n\n@Injectable()\nexport abstract class ZHttpAbstractService<TApiType extends string = string> {\n protected readonly http = inject(HttpClient);\n protected readonly router = inject(Router);\n protected readonly cacheService = ZCacheService;\n protected readonly translateService = inject(ZTranslateService);\n protected readonly indexDbService: ZIndexDbService;\n\n private _httpConfig: Required<ZHttpConfig> | null = null;\n private _networkCache: ZHttpNetworkCheck | null = null;\n\n public constructor() {\n this.indexDbService = new ZIndexDbService({\n dbName: 'ZHttpCache',\n defaultStore: 'zHttpCache',\n stores: [{ name: 'zHttpCache', encrypt: true }],\n });\n }\n\n /**\n * Returns the HTTP configuration. Override this method in subclasses to customize.\n * @example\n * ```typescript\n * protected override setHttpConfig(): Partial<ZHttpConfig> {\n * return {\n * tokenKey: 'MY_TOKEN',\n * loginRoute: '/auth/login',\n * };\n * }\n * ```\n */\n protected setHttpConfig(): Partial<ZHttpConfig> {\n return {};\n }\n\n protected get config(): Required<ZHttpConfig> {\n if (!this._httpConfig) {\n this._httpConfig = { ...Z_HTTP_DEFAULT_CONFIG, ...this.setHttpConfig() };\n }\n\n return this._httpConfig;\n }\n\n protected abstract resolveBaseUrl(apiType?: TApiType): string;\n\n protected get<T, TParams extends object = object>(\n endpoint: string,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, params } = this._buildRequest(options);\n const httpOptions = this._buildHttpOptions({ ...options, headers, params });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.get<T>(url, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('GET', endpoint, httpCall, options);\n }\n\n protected post<T, TParams extends object = object>(\n endpoint: string,\n body: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({ ...options, headers });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.post<T>(url, transformedBody, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('POST', endpoint, httpCall, options, body);\n }\n\n protected put<T, TParams extends object = object>(\n endpoint: string,\n body: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({ ...options, headers });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.put<T>(url, transformedBody, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('PUT', endpoint, httpCall, options, body);\n }\n\n protected patch<T, TParams extends object = object>(\n endpoint: string,\n body: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({ ...options, headers });\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.patch<T>(url, transformedBody, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('PATCH', endpoint, httpCall, options, body);\n }\n\n protected delete<T, TParams extends object = object>(\n endpoint: string,\n body?: unknown,\n options?: ZHttpOptions<TParams, TApiType>\n ): Observable<T> {\n const httpCall = (): Observable<T> => {\n const { headers, body: transformedBody } = this._buildRequest(options, body);\n const httpOptions = this._buildHttpOptions({\n ...options,\n headers,\n body: transformedBody,\n });\n if ('transferCache' in httpOptions) {\n delete httpOptions['transferCache'];\n }\n const url = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n return this.http.delete<T>(url, httpOptions) as Observable<T>;\n };\n\n return this._handleCacheAndRequest('DELETE', endpoint, httpCall, options, body);\n }\n\n private _buildRequest(\n options?: ZHttpOptions<object, TApiType>,\n body?: unknown\n ): { headers: HttpHeaders; body?: unknown; params?: Record<string, string> } {\n let headers = new HttpHeaders().set('Accept', 'application/json');\n const contentType: ZHttpContentType = options?.contentType ?? 'json';\n let finalBody = body;\n let params: Record<string, string> | undefined;\n\n if (contentType === 'json') {\n headers = headers.set('Content-Type', 'application/json');\n if (body !== undefined && body !== null) {\n finalBody = JSON.stringify(body);\n }\n }\n\n if (contentType === 'urlencoded') {\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\n if (body && typeof body === 'object') {\n const urlParams = new URLSearchParams();\n Object.entries(body).forEach(([key, value]) => {\n urlParams.set(key, String(value));\n });\n finalBody = urlParams.toString();\n }\n }\n\n if (contentType === 'form-data') {\n if (body instanceof FormData) {\n finalBody = body;\n }\n if (!(body instanceof FormData) && body && typeof body === 'object') {\n const formData = new FormData();\n Object.entries(body).forEach(([key, value]) => {\n formData.append(key, value as string | Blob);\n });\n finalBody = formData;\n }\n }\n\n if (options?.headers && !(options.headers instanceof HttpHeaders)) {\n const headersObj = options.headers as Record<string, string | string[]>;\n Object.keys(headersObj).forEach(key => {\n const value = headersObj[key];\n headers = headers.set(key, Array.isArray(value) ? value.join(',') : value);\n });\n }\n\n const token = this.cacheService.get<string>(this.config.tokenKey);\n if (token && !options?.skipToken) {\n headers = headers.set('Authorization', `Bearer ${token}`);\n }\n\n if (options?.params && !(options.params instanceof Object.getPrototypeOf(URLSearchParams).constructor)) {\n const paramsObj = options.params as Record<string, unknown>;\n params = {};\n Object.keys(paramsObj).forEach(key => {\n const value = paramsObj[key];\n if (value !== undefined && value !== null) {\n params![key] = String(value);\n }\n });\n }\n\n return { headers, body: finalBody, params };\n }\n\n private _buildHttpOptions(options?: ZHttpOptions<object, TApiType>): Record<string, unknown> {\n const httpOptions: Record<string, unknown> = { ...options };\n delete httpOptions['enableCache'];\n delete httpOptions['timeCache'];\n delete httpOptions['contentType'];\n delete httpOptions['api'];\n delete httpOptions['skipToken'];\n delete httpOptions['skipErrorToast'];\n return httpOptions;\n }\n\n private _handleCacheAndRequest<T>(\n method: string,\n endpoint: string,\n httpCall: () => Observable<T>,\n options?: ZHttpOptions<object, TApiType>,\n body?: unknown\n ): Observable<T> {\n if (!options?.enableCache) {\n return this._executeHttpCall(httpCall, options, method, endpoint, body);\n }\n\n const cacheKey = this._generateCacheKey(method, endpoint, options, body);\n\n return from(this._getCachedData<T>(cacheKey)).pipe(\n switchMap(cachedData => {\n if (cachedData !== null) {\n return of(cachedData);\n }\n return this._executeHttpCall(httpCall, options, method, endpoint, body);\n }),\n catchError(() => this._executeHttpCall(httpCall, options, method, endpoint, body))\n );\n }\n\n private _executeHttpCall<T>(\n httpCall: () => Observable<T>,\n options?: ZHttpOptions<object, TApiType>,\n method?: string,\n endpoint?: string,\n body?: unknown\n ): Observable<T> {\n return this._detectNetworkStatus().pipe(\n switchMap(isOnline => {\n if (!isOnline) {\n const error: ZHttpError<TApiType> = {\n message: this.translateService.instant('i18n_z_ui_http_network_offline'),\n status: 0,\n };\n return throwError(() => error);\n }\n\n return httpCall().pipe(\n catchError(err => this._handleError(err, options, method, endpoint, body)),\n tap(data => {\n if (options?.log) {\n console.log('[ZHttp] Request succeeded:', {\n method,\n body,\n endpoint: `${this.resolveBaseUrl(options?.api)}${endpoint}`,\n data,\n });\n }\n\n if (options?.enableCache && method && endpoint) {\n const cacheKey = this._generateCacheKey(method, endpoint, options, body);\n const ttl = options.timeCache ?? this.config.defaultCacheTime;\n this._cacheData(cacheKey, data, ttl).catch(console.warn);\n }\n })\n );\n })\n );\n }\n\n private _generateCacheKey(\n method: string,\n endpoint: string,\n options?: ZHttpOptions<object, TApiType>,\n body?: unknown\n ): string {\n const api = options?.api ?? 'default';\n const params = options?.params ? JSON.stringify(options.params) : '';\n const bodyStr = body ? JSON.stringify(body) : '';\n return `${method}_${api}_${endpoint}_${params}_${bodyStr}`;\n }\n\n private async _cacheData<T>(key: string, data: T, ttl: number): Promise<void> {\n const cacheEntry: ZHttpCacheEntry<T> = { data, timestamp: Date.now(), ttl };\n await this.indexDbService.set(key, cacheEntry, { storeName: 'HttpCache' });\n }\n\n private async _getCachedData<T>(key: string): Promise<T | null> {\n try {\n const cached = await this.indexDbService.get<ZHttpCacheEntry<T>>(key, { storeName: 'HttpCache' });\n if (!cached) {\n return null;\n }\n\n if (Date.now() - cached.timestamp > cached.ttl) {\n await this.indexDbService.delete(key, 'HttpCache');\n return null;\n }\n return cached.data;\n } catch {\n return null;\n }\n }\n\n private _detectNetworkStatus(): Observable<boolean> {\n const now = Date.now();\n if (this._networkCache && now - this._networkCache.time < this.config.networkCheckCacheTime) {\n return of(this._networkCache.isOnline);\n }\n\n if (!navigator.onLine) {\n this._networkCache = { time: now, isOnline: false };\n return of(false);\n }\n\n return this._checkNetworkWithRetry().pipe(\n map(isOnline => {\n this._networkCache = { time: Date.now(), isOnline };\n return isOnline;\n }),\n catchError(() => {\n this._networkCache = { time: Date.now(), isOnline: false };\n return of(false);\n })\n );\n }\n\n private _checkNetworkWithRetry(retries = 2): Observable<boolean> {\n return defer(() => this._performNetworkCheck()).pipe(\n catchError(() => {\n if (retries > 0) {\n return this._checkNetworkWithRetry(retries - 1);\n }\n return of(false);\n })\n );\n }\n\n private _performNetworkCheck(): Observable<boolean> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 3000);\n\n return from(fetch('data:,', { method: 'HEAD', signal: controller.signal })).pipe(\n tap(() => clearTimeout(timeoutId)),\n map(() => true),\n catchError(() => {\n clearTimeout(timeoutId);\n throw new Error('Network check failed');\n })\n );\n }\n\n private _handleError(\n error: Error,\n options?: ZHttpOptions<object, TApiType>,\n method?: string,\n endpoint?: string,\n body?: unknown\n ): Observable<never> {\n const statusCode = error instanceof HttpErrorResponse ? error.status : 500;\n const fullEndpoint = `${this.resolveBaseUrl(options?.api)}${endpoint}`;\n\n const httpError = this._buildErrorObject(error, statusCode, fullEndpoint, method, body, options);\n const localizedError = this._localizeError(httpError, statusCode);\n\n console.error('[ZHttp] Request failed:', {\n method,\n endpoint: fullEndpoint,\n status: statusCode,\n error: localizedError,\n });\n\n void this._handleStatusCode(statusCode);\n return throwError(() => localizedError);\n }\n\n private _buildErrorObject(\n error: Error,\n statusCode: number,\n endpoint: string,\n method?: string,\n body?: unknown,\n options?: ZHttpOptions<object, TApiType>\n ): ZHttpError<TApiType> {\n const baseError: ZHttpError<TApiType> = { message: '', status: statusCode, endpoint, method, body, options };\n\n if (!(error instanceof HttpErrorResponse)) {\n return {\n ...baseError,\n error: error.message,\n message: error.message || this.translateService.instant('i18n_z_ui_http_error_default'),\n };\n }\n\n const errorBody = error.error;\n\n if (typeof errorBody?.message === 'string') {\n const message =\n errorBody.message === 'Failed to fetch'\n ? this.translateService.instant('i18n_z_ui_http_error_failed_to_fetch', { url: endpoint })\n : errorBody.message;\n return { ...baseError, error: errorBody, message };\n }\n\n if (Array.isArray(errorBody?.errors) && errorBody.errors.length > 0) {\n const message = errorBody.errors\n .map((err: unknown) => (typeof err === 'string' ? err : JSON.stringify(err)))\n .join(', ');\n return { ...baseError, error: errorBody, message };\n }\n\n if (\n typeof errorBody === 'object' &&\n errorBody !== null &&\n !Array.isArray(errorBody) &&\n Object.keys(errorBody).length > 0\n ) {\n return { ...baseError, error: errorBody, message: JSON.stringify(errorBody) };\n }\n\n if (typeof errorBody === 'string') {\n return { ...baseError, error: errorBody, message: errorBody };\n }\n\n return {\n ...baseError,\n error: error.message,\n message: error.message || this.translateService.instant('i18n_z_ui_http_error_default'),\n };\n }\n\n private _localizeError(error: ZHttpError<TApiType>, statusCode: number): ZHttpError<TApiType> {\n const localizedError = { ...error };\n const errorMessages: Record<number, string> = {\n 400: error.message || this.translateService.instant('i18n_z_ui_http_error_400'),\n 401: this._get401Message(),\n 403: this.translateService.instant('i18n_z_ui_http_error_403'),\n 404: this.translateService.instant('i18n_z_ui_http_error_404'),\n 500: this.translateService.instant('i18n_z_ui_http_error_500'),\n };\n\n if (errorMessages[statusCode]) {\n localizedError.message = errorMessages[statusCode];\n }\n\n return localizedError;\n }\n\n private _get401Message(): string {\n const token = this.cacheService.get<string>(this.config.tokenKey);\n\n if (!token) {\n return this.translateService.instant('i18n_z_ui_http_error_401_expired');\n }\n\n return this.translateService.instant('i18n_z_ui_http_error_401_permission');\n }\n\n private async _handleStatusCode(statusCode: number): Promise<void> {\n if (statusCode !== 401) {\n return;\n }\n\n await this._redirectToLogin();\n }\n\n private async _redirectToLogin(): Promise<void> {\n const currentUrl = this.router.url;\n const shouldSaveUrl =\n currentUrl &&\n currentUrl !== '/' &&\n !currentUrl.includes(this.config.loginRoute) &&\n !currentUrl.includes(this.config.unauthorizedRoute);\n\n if (shouldSaveUrl) {\n this.cacheService.set(this.config.lastUrlKey, currentUrl);\n await this.indexDbService.set(this.config.lastUrlKey, currentUrl).catch(console.error);\n }\n\n this.cacheService.deleteMultiple([this.config.tokenKey, this.config.userInfoKey]);\n await this.indexDbService.clear('HttpCache').catch(console.error);\n this.router.navigate([this.config.loginRoute]).catch(console.error);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ZSubjectType } from './types/z-subject.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZSubjectService {\n private readonly _subjects = new Map<string, Subject<unknown>>();\n private readonly _behaviorSubjects = new Map<string, BehaviorSubject<unknown>>();\n\n /**\n * Emit a value to a subject\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n * @param value - Value to emit\n */\n public emit<T>(key: string, type: ZSubjectType, value: T): void {\n if (type === 'behavior') {\n const existingSubject = this._behaviorSubjects.get(key) as BehaviorSubject<T> | undefined;\n if (existingSubject) {\n existingSubject.next(value);\n return;\n }\n\n const newSubject = new BehaviorSubject<T>(value);\n this._behaviorSubjects.set(key, newSubject as BehaviorSubject<unknown>);\n return;\n }\n\n const existingSubject = this._subjects.get(key) as Subject<T> | undefined;\n if (existingSubject) {\n existingSubject.next(value);\n return;\n }\n\n const newSubject = new Subject<T>();\n this._subjects.set(key, newSubject as Subject<unknown>);\n newSubject.next(value);\n }\n\n /**\n * Get an observable for a subject\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n * @param initialValue - Initial value for BehaviorSubject (required for new behavior subjects)\n */\n public on$<T>(key: string, type: ZSubjectType, initialValue?: T): Observable<T> {\n if (type === 'behavior') {\n const existingSubject = this._behaviorSubjects.get(key) as BehaviorSubject<T> | undefined;\n if (existingSubject) {\n return existingSubject.asObservable();\n }\n\n const newSubject = new BehaviorSubject<T>(initialValue as T);\n this._behaviorSubjects.set(key, newSubject as BehaviorSubject<unknown>);\n return newSubject.asObservable();\n }\n\n const existingSubject = this._subjects.get(key) as Subject<T> | undefined;\n if (existingSubject) {\n return existingSubject.asObservable();\n }\n\n const newSubject = new Subject<T>();\n this._subjects.set(key, newSubject as Subject<unknown>);\n return newSubject.asObservable();\n }\n\n /**\n * Get the current value of a BehaviorSubject\n * @param key - Subject identifier\n */\n public getValue<T>(key: string): T | undefined {\n const subject = this._behaviorSubjects.get(key);\n if (!subject) {\n return undefined;\n }\n return subject.getValue() as T;\n }\n\n /**\n * Complete and remove a subject\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n */\n public complete(key: string, type: ZSubjectType): void {\n if (type === 'behavior') {\n const subject = this._behaviorSubjects.get(key);\n if (!subject) {\n return;\n }\n subject.complete();\n this._behaviorSubjects.delete(key);\n return;\n }\n\n const subject = this._subjects.get(key);\n if (!subject) {\n return;\n }\n subject.complete();\n this._subjects.delete(key);\n }\n\n /**\n * Complete all subjects\n */\n public completeAll(): void {\n this._subjects.forEach(subject => subject.complete());\n this._behaviorSubjects.forEach(subject => subject.complete());\n this._subjects.clear();\n this._behaviorSubjects.clear();\n }\n\n /**\n * Check if a subject exists\n * @param key - Subject identifier\n * @param type - 'subject' for Subject, 'behavior' for BehaviorSubject\n */\n public has(key: string, type: ZSubjectType): boolean {\n if (type === 'behavior') {\n return this._behaviorSubjects.has(key);\n }\n return this._subjects.has(key);\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { effect, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport {\n type ZThemeConfig,\n type ZThemeName,\n type ZThemePreferences,\n Z_DEFAULT_THEME,\n Z_THEME_CONFIG,\n Z_THEME_CSS_MAP,\n Z_THEME_PREFERENCES_CACHE_KEY,\n} from './types/z-theme.types';\nimport { ZCacheService } from './z-cache.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZThemeService {\n private readonly _document = inject(DOCUMENT);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _config = inject(Z_THEME_CONFIG, { optional: true }) as ZThemeConfig | null;\n private readonly _isBrowser = isPlatformBrowser(this._platformId);\n\n private readonly _defaultTheme = this._config?.defaultTheme ?? Z_DEFAULT_THEME;\n private readonly _defaultDarkMode = this._config?.defaultDarkMode ?? true;\n\n private readonly _isDark = signal(this._getInitialPreferences().isDark);\n private readonly _currentTheme = signal<ZThemeName>(this._getInitialPreferences().theme);\n private readonly _loadedThemes = new Set<ZThemeName>(['neutral']);\n\n public readonly isDark = this._isDark.asReadonly();\n public readonly currentTheme = this._currentTheme.asReadonly();\n\n constructor() {\n if (this._isBrowser) {\n this._initializeTheme();\n }\n\n effect(() => {\n const theme = this._currentTheme();\n const isDark = this._isDark();\n\n if (this._isBrowser) {\n this._savePreferences({ theme, isDark });\n }\n });\n }\n\n public setTheme(theme: ZThemeName): void {\n this._currentTheme.set(theme);\n if (this._loadedThemes.has(theme)) {\n this._document.documentElement.setAttribute('z-theme', theme);\n return;\n }\n\n if (!Z_THEME_CSS_MAP[theme]) {\n this._document.documentElement.setAttribute('z-theme', theme);\n return;\n }\n\n this._loadThemeCSS(theme, () => {\n this._document.documentElement.setAttribute('z-theme', theme);\n });\n }\n\n public toggleDarkMode(isDark: boolean): void {\n this._isDark.set(isDark);\n if (isDark) {\n this._document.documentElement.classList.add('dark');\n return;\n }\n\n this._document.documentElement.classList.remove('dark');\n }\n\n public preloadTheme(theme: ZThemeName): void {\n if (this._loadedThemes.has(theme) || !Z_THEME_CSS_MAP[theme]) {\n return;\n }\n\n this._loadThemeCSS(theme);\n }\n\n private _initializeTheme(): void {\n const { theme, isDark } = this._getInitialPreferences();\n this.setTheme(theme);\n this.toggleDarkMode(isDark);\n }\n\n private _getInitialPreferences(): ZThemePreferences {\n const defaultPreferences: ZThemePreferences = {\n theme: this._defaultTheme,\n isDark: this._defaultDarkMode,\n };\n\n if (!this._isBrowser) {\n return defaultPreferences;\n }\n\n const cached = ZCacheService.get<ZThemePreferences>(Z_THEME_PREFERENCES_CACHE_KEY);\n if (!cached) {\n return defaultPreferences;\n }\n\n return {\n theme: this._isValidTheme(cached.theme) ? cached.theme : defaultPreferences.theme,\n isDark: typeof cached.isDark === 'boolean' ? cached.isDark : defaultPreferences.isDark,\n };\n }\n\n private _savePreferences(preferences: ZThemePreferences): void {\n ZCacheService.set(Z_THEME_PREFERENCES_CACHE_KEY, preferences);\n }\n\n private _isValidTheme(theme: unknown): theme is ZThemeName {\n const validThemes: ZThemeName[] = [\n 'green',\n 'orange',\n 'violet',\n 'neutral',\n 'stone',\n 'zinc',\n 'gray',\n 'slate',\n 'hospital',\n ];\n return typeof theme === 'string' && validThemes.includes(theme as ZThemeName);\n }\n\n private _loadThemeCSS(theme: ZThemeName, onLoad?: () => void): void {\n const cssPath = Z_THEME_CSS_MAP[theme];\n if (!cssPath) {\n onLoad?.();\n return;\n }\n\n const existingLink = this._document.querySelector(`link[data-theme=\"${theme}\"]`);\n if (existingLink) {\n this._loadedThemes.add(theme);\n onLoad?.();\n return;\n }\n\n const link = this._document.createElement('link');\n link.rel = 'stylesheet';\n link.href = cssPath;\n link.setAttribute('data-theme', theme);\n link.onload = (): void => {\n this._loadedThemes.add(theme);\n onLoad?.();\n };\n\n link.onerror = (): void => {\n console.error(`Failed to load theme \"${theme}\" from ${cssPath}`);\n onLoad?.();\n };\n\n this._document.head.appendChild(link);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}