@shival99/z-ui 1.4.3 → 1.4.5
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.
|
@@ -1486,6 +1486,7 @@ const Z_HTTP_DEFAULT_CONFIG = {
|
|
|
1486
1486
|
lastUrlKey: 'Z_LAST_URL',
|
|
1487
1487
|
loginRoute: '/login',
|
|
1488
1488
|
homeRoute: '/',
|
|
1489
|
+
unauthorizedRoute: '/401',
|
|
1489
1490
|
};
|
|
1490
1491
|
class ZHttpAbstractService {
|
|
1491
1492
|
http = inject(HttpClient);
|
|
@@ -1493,7 +1494,7 @@ class ZHttpAbstractService {
|
|
|
1493
1494
|
cacheService = ZCacheService;
|
|
1494
1495
|
translateService = inject(ZTranslateService);
|
|
1495
1496
|
indexDbService;
|
|
1496
|
-
|
|
1497
|
+
_config = null;
|
|
1497
1498
|
_networkCache = null;
|
|
1498
1499
|
constructor() {
|
|
1499
1500
|
this.indexDbService = new ZIndexDbService({
|
|
@@ -1502,6 +1503,27 @@ class ZHttpAbstractService {
|
|
|
1502
1503
|
stores: [{ name: 'zHttpCache', encrypt: true }],
|
|
1503
1504
|
});
|
|
1504
1505
|
}
|
|
1506
|
+
/**
|
|
1507
|
+
* Returns the HTTP configuration. Override this method in subclasses to customize.
|
|
1508
|
+
* @example
|
|
1509
|
+
* ```typescript
|
|
1510
|
+
* protected override setHttpConfig(): Partial<ZHttpConfig> {
|
|
1511
|
+
* return {
|
|
1512
|
+
* tokenKey: 'MY_TOKEN',
|
|
1513
|
+
* loginRoute: '/auth/login',
|
|
1514
|
+
* };
|
|
1515
|
+
* }
|
|
1516
|
+
* ```
|
|
1517
|
+
*/
|
|
1518
|
+
setHttpConfig() {
|
|
1519
|
+
return {};
|
|
1520
|
+
}
|
|
1521
|
+
get config() {
|
|
1522
|
+
if (!this._config) {
|
|
1523
|
+
this._config = { ...Z_HTTP_DEFAULT_CONFIG, ...this.setHttpConfig() };
|
|
1524
|
+
}
|
|
1525
|
+
return this._config;
|
|
1526
|
+
}
|
|
1505
1527
|
get(endpoint, options) {
|
|
1506
1528
|
const httpCall = () => {
|
|
1507
1529
|
const { headers, params } = this._buildRequest(options);
|
|
@@ -1642,6 +1664,14 @@ class ZHttpAbstractService {
|
|
|
1642
1664
|
return throwError(() => error);
|
|
1643
1665
|
}
|
|
1644
1666
|
return httpCall().pipe(catchError(err => this._handleError(err, options, method, endpoint, body)), tap(data => {
|
|
1667
|
+
if (options?.log) {
|
|
1668
|
+
console.log('[ZHttp] Request succeeded:', {
|
|
1669
|
+
method,
|
|
1670
|
+
body,
|
|
1671
|
+
endpoint: `${this.resolveBaseUrl(options?.api)}${endpoint}`,
|
|
1672
|
+
data,
|
|
1673
|
+
});
|
|
1674
|
+
}
|
|
1645
1675
|
if (options?.enableCache && method && endpoint) {
|
|
1646
1676
|
const cacheKey = this._generateCacheKey(method, endpoint, options, body);
|
|
1647
1677
|
const ttl = options.timeCache ?? this.config.defaultCacheTime;
|
|
@@ -1775,9 +1805,8 @@ class ZHttpAbstractService {
|
|
|
1775
1805
|
return localizedError;
|
|
1776
1806
|
}
|
|
1777
1807
|
_get401Message() {
|
|
1778
|
-
const
|
|
1779
|
-
|
|
1780
|
-
if (isExpired) {
|
|
1808
|
+
const token = this.cacheService.get(this.config.tokenKey);
|
|
1809
|
+
if (!token) {
|
|
1781
1810
|
return this.translateService.instant('i18n_z_ui_http_error_401_expired');
|
|
1782
1811
|
}
|
|
1783
1812
|
return this.translateService.instant('i18n_z_ui_http_error_401_permission');
|
|
@@ -1786,16 +1815,26 @@ class ZHttpAbstractService {
|
|
|
1786
1815
|
if (statusCode !== 401) {
|
|
1787
1816
|
return;
|
|
1788
1817
|
}
|
|
1789
|
-
const
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
this.indexDbService.clear('HttpCache').catch(console.error);
|
|
1793
|
-
this.cacheService.deleteMultiple([this.config.tokenKey, this.config.userInfoKey]);
|
|
1794
|
-
this.router.navigate([this.config.loginRoute]).catch(console.error);
|
|
1818
|
+
const token = this.cacheService.get(this.config.tokenKey);
|
|
1819
|
+
if (!token) {
|
|
1820
|
+
this._redirectToLogin();
|
|
1795
1821
|
return;
|
|
1796
1822
|
}
|
|
1797
1823
|
this.router.navigate([this.config.homeRoute]).catch(console.error);
|
|
1798
1824
|
}
|
|
1825
|
+
_redirectToLogin() {
|
|
1826
|
+
const currentUrl = this.router.url;
|
|
1827
|
+
const shouldSaveUrl = currentUrl &&
|
|
1828
|
+
currentUrl !== '/' &&
|
|
1829
|
+
!currentUrl.includes(this.config.loginRoute) &&
|
|
1830
|
+
!currentUrl.includes(this.config.unauthorizedRoute);
|
|
1831
|
+
if (shouldSaveUrl) {
|
|
1832
|
+
this.cacheService.set(this.config.lastUrlKey, currentUrl);
|
|
1833
|
+
}
|
|
1834
|
+
this.indexDbService.clear('HttpCache').catch(console.error);
|
|
1835
|
+
this.cacheService.deleteMultiple([this.config.tokenKey, this.config.userInfoKey]);
|
|
1836
|
+
this.router.navigate([this.config.loginRoute]).catch(console.error);
|
|
1837
|
+
}
|
|
1799
1838
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ZHttpAbstractService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1800
1839
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ZHttpAbstractService });
|
|
1801
1840
|
}
|
|
@@ -1928,7 +1967,7 @@ class ZThemeService {
|
|
|
1928
1967
|
_defaultDarkMode = this._config?.defaultDarkMode ?? true;
|
|
1929
1968
|
_isDark = signal(this._getInitialDarkMode(), ...(ngDevMode ? [{ debugName: "_isDark" }] : []));
|
|
1930
1969
|
_currentTheme = signal(this._getInitialTheme(), ...(ngDevMode ? [{ debugName: "_currentTheme" }] : []));
|
|
1931
|
-
_loadedThemes = new Set([
|
|
1970
|
+
_loadedThemes = new Set(['neutral']);
|
|
1932
1971
|
isDark = this._isDark.asReadonly();
|
|
1933
1972
|
currentTheme = this._currentTheme.asReadonly();
|
|
1934
1973
|
constructor() {
|
|
@@ -2062,5 +2101,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
2062
2101
|
* Generated bundle index. Do not edit.
|
|
2063
2102
|
*/
|
|
2064
2103
|
|
|
2065
|
-
export { ZCacheService, ZExcelService, ZHttpAbstractService, ZIndexDbService, ZSubjectService, ZThemeService, ZTranslateService, Z_DARK_MODE_CACHE_KEY, Z_DEFAULT_THEME, Z_EXCEL_BORDER_THIN, Z_EXCEL_CHAR_WIDTH_MAP, Z_EXCEL_COLORS, Z_EXCEL_DEFAULT_CONFIG, Z_EXCEL_FONT_MULTIPLIERS, Z_EXCEL_WIDTH_LIMITS, Z_INDEXDB_BATCH_SIZE, Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_LANG_CACHE_KEY, Z_THEME_CACHE_KEY, Z_THEME_CONFIG, Z_THEME_CONFIG_CACHE_KEY, Z_THEME_CSS_MAP };
|
|
2104
|
+
export { ZCacheService, ZExcelService, ZHttpAbstractService, ZIndexDbService, ZSubjectService, ZThemeService, ZTranslateService, Z_DARK_MODE_CACHE_KEY, Z_DEFAULT_THEME, Z_EXCEL_BORDER_THIN, Z_EXCEL_CHAR_WIDTH_MAP, Z_EXCEL_COLORS, Z_EXCEL_DEFAULT_CONFIG, Z_EXCEL_FONT_MULTIPLIERS, Z_EXCEL_WIDTH_LIMITS, Z_HTTP_DEFAULT_CONFIG, Z_INDEXDB_BATCH_SIZE, Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_LANG_CACHE_KEY, Z_THEME_CACHE_KEY, Z_THEME_CONFIG, Z_THEME_CONFIG_CACHE_KEY, Z_THEME_CSS_MAP };
|
|
2066
2105
|
//# sourceMappingURL=shival99-z-ui-services.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-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-ui-services.ts"],"sourcesContent":["import type { ZCacheConfig } from './types/z-cache.types';\n\nconst Z_CACHE_DEFAULT_PREFIX = 'z_';\nexport class ZCacheService {\n private static _prefix = Z_CACHE_DEFAULT_PREFIX;\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 _getFullKey(key: string, encrypt: boolean): string {\n const prefixedKey = `${ZCacheService._prefix}${key}`;\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 /**\n * Get a value from cache\n * @param key - Cache key\n * @param defaultValue - Default value if not found\n * @param encrypt - Whether to use encryption (default: service config)\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 /**\n * Set a value in cache\n * @param key - Cache key\n * @param data - Data to store\n * @param encrypt - Whether to use encryption\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 /**\n * Delete a key from cache\n * @param key - Cache key\n * @param encrypt - Whether key is encrypted\n */\n public static delete(key: string, encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n localStorage.removeItem(_key);\n return true;\n }, false);\n }\n\n /**\n * Delete multiple keys from cache\n * @param keys - Array of cache keys\n * @param encrypt - Whether keys are encrypted\n */\n public static deleteMultiple(keys: string[], encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n keys.forEach(key => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n localStorage.removeItem(_key);\n });\n return true;\n }, false);\n }\n\n /**\n * Clear all cache with the configured prefix\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 /**\n * Check if a key exists in cache\n * @param key - Cache key\n * @param encrypt - Whether key is encrypted\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 /**\n * Get all keys with the configured prefix\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 } else 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-ui/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 { ZIndexDbConfig, ZIndexDbStoreConfig } 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\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\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, encrypt: true });\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, encrypt: true };\n }\n\n private _encrypt(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 _decrypt<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\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 } else if (currentVersion > this._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, defaultValue?: T, storeName?: string): Promise<T | undefined> {\n const storeConfig = this._getStoreConfig(storeName);\n\n return this._withRetry(async () => {\n await this._dbReady;\n\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 _key = storeConfig.encrypt !== false ? this._encrypt(key) : key;\n\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 = storeConfig.encrypt !== false ? this._decrypt<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, storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n\n return this._withRetry(async () => {\n await this._dbReady;\n\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 _key = storeConfig.encrypt !== false ? this._encrypt(key) : key;\n const _value = storeConfig.encrypt !== false ? this._encrypt(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 public async delete(key: string | string[], storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n\n return this._withRetry(async () => {\n await this._dbReady;\n\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\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\n keys.forEach(k => {\n const _key = storeConfig.encrypt !== false ? this._encrypt(k) : k;\n store.delete(_key);\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\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 keyRequest.onsuccess = () => {\n const allKeys = keyRequest.result as string[];\n const encryptedProtected = protectedKeys.map(k => this._encrypt(k));\n\n allKeys.forEach(k => {\n if (!encryptedProtected.includes(k) && !protectedKeys.includes(k)) {\n try {\n const decrypted = this._decrypt<string>(k);\n if (!protectedKeys.includes(decrypted ?? '')) {\n store.delete(k);\n }\n } catch {\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\n return this._withRetry(async () => {\n await this._dbReady;\n\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 = storeConfig.encrypt !== false ? this._decrypt<string>(key) : key;\n const _value = storeConfig.encrypt !== false ? this._decrypt<T>(values[index]) : values[index];\n if (_key && _value !== null) {\n results[_key] = _value;\n }\n } catch {\n // Skip\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>, storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\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\n await this._withRetry(async () => {\n await this._dbReady;\n\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 _key = storeConfig.encrypt !== false ? this._encrypt(key) : key;\n const _value = storeConfig.encrypt !== false ? this._encrypt(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","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';\nexport const Z_THEME_CACHE_KEY = 'Z_THEME';\nexport const Z_DARK_MODE_CACHE_KEY = 'Z_DARK_MODE';\nexport const Z_THEME_CONFIG_CACHE_KEY = 'Z_THEME_CONFIG';\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\nconst Z_HTTP_DEFAULT_CONFIG: Required<ZHttpConfig> = {\n defaultCacheTime: 3 * 60 * 1000,\n networkCheckCacheTime: 10000,\n tokenKey: 'Z_TOKEN',\n userInfoKey: 'Z_USER_INFO',\n lastUrlKey: 'Z_LAST_URL',\n loginRoute: '/login',\n homeRoute: '/',\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 protected readonly config: Required<ZHttpConfig> = Z_HTTP_DEFAULT_CONFIG;\n\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 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?.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, '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, undefined, '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 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 userInfo = this.cacheService.get<{ timeExpired?: number }>(this.config.userInfoKey);\n const isExpired = userInfo?.timeExpired ? Date.now() >= userInfo.timeExpired : false;\n\n if (isExpired) {\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 _handleStatusCode(statusCode: number): void {\n if (statusCode !== 401) {\n return;\n }\n\n const userInfo = this.cacheService.get<{ timeExpired?: number }>(this.config.userInfoKey);\n const isExpired = userInfo?.timeExpired ? Date.now() >= userInfo.timeExpired : false;\n\n if (isExpired) {\n this.indexDbService.clear('HttpCache').catch(console.error);\n this.cacheService.deleteMultiple([this.config.tokenKey, this.config.userInfoKey]);\n this.router.navigate([this.config.loginRoute]).catch(console.error);\n return;\n }\n\n this.router.navigate([this.config.homeRoute]).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 Z_DARK_MODE_CACHE_KEY,\n Z_DEFAULT_THEME,\n Z_THEME_CACHE_KEY,\n Z_THEME_CONFIG,\n Z_THEME_CSS_MAP,\n Z_THEME_CONFIG_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._getInitialDarkMode());\n private readonly _currentTheme = signal<ZThemeName>(this._getInitialTheme());\n private readonly _loadedThemes = new Set<ZThemeName>([this._defaultTheme]);\n\n public readonly isDark = this._isDark.asReadonly();\n public readonly currentTheme = this._currentTheme.asReadonly();\n\n constructor() {\n if (this._isBrowser) {\n this._syncConfigToCache();\n this._initializeTheme();\n }\n\n effect(() => {\n const isDark = this._isDark();\n if (this._isBrowser) {\n ZCacheService.set(Z_DARK_MODE_CACHE_KEY, isDark, true);\n }\n });\n\n effect(() => {\n const theme = this._currentTheme();\n if (this._isBrowser) {\n ZCacheService.set(Z_THEME_CACHE_KEY, theme, true);\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 savedTheme = this._currentTheme();\n const savedDarkMode = this._isDark();\n\n this.setTheme(savedTheme);\n if (savedDarkMode) {\n this.toggleDarkMode(savedDarkMode);\n }\n }\n\n private _getInitialTheme(): ZThemeName {\n if (!this._isBrowser) {\n return this._defaultTheme;\n }\n\n if (this._hasConfigChanged()) {\n return this._defaultTheme;\n }\n\n return ZCacheService.get<ZThemeName>(Z_THEME_CACHE_KEY, undefined, true) ?? this._defaultTheme;\n }\n\n private _getInitialDarkMode(): boolean {\n if (!this._isBrowser) {\n return this._defaultDarkMode;\n }\n\n if (this._hasConfigChanged()) {\n return this._defaultDarkMode;\n }\n\n return ZCacheService.get<boolean>(Z_DARK_MODE_CACHE_KEY, undefined, true) ?? this._defaultDarkMode;\n }\n\n private _hasConfigChanged(): boolean {\n const cachedConfig = ZCacheService.get<ZThemeConfig>(Z_THEME_CONFIG_CACHE_KEY, undefined, true);\n if (!cachedConfig) {\n return true;\n }\n\n const currentConfig: ZThemeConfig = {\n defaultTheme: this._defaultTheme,\n defaultDarkMode: this._defaultDarkMode,\n };\n\n return (\n cachedConfig.defaultTheme !== currentConfig.defaultTheme ||\n cachedConfig.defaultDarkMode !== currentConfig.defaultDarkMode\n );\n }\n\n private _syncConfigToCache(): void {\n const currentConfig: ZThemeConfig = {\n defaultTheme: this._defaultTheme,\n defaultDarkMode: this._defaultDarkMode,\n };\n ZCacheService.set(Z_THEME_CONFIG_CACHE_KEY, currentConfig, true);\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\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-ui-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-ui-services.ts"],"sourcesContent":["import type { ZCacheConfig } from './types/z-cache.types';\n\nconst Z_CACHE_DEFAULT_PREFIX = 'z_';\nexport class ZCacheService {\n private static _prefix = Z_CACHE_DEFAULT_PREFIX;\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 _getFullKey(key: string, encrypt: boolean): string {\n const prefixedKey = `${ZCacheService._prefix}${key}`;\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 /**\n * Get a value from cache\n * @param key - Cache key\n * @param defaultValue - Default value if not found\n * @param encrypt - Whether to use encryption (default: service config)\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 /**\n * Set a value in cache\n * @param key - Cache key\n * @param data - Data to store\n * @param encrypt - Whether to use encryption\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 /**\n * Delete a key from cache\n * @param key - Cache key\n * @param encrypt - Whether key is encrypted\n */\n public static delete(key: string, encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n localStorage.removeItem(_key);\n return true;\n }, false);\n }\n\n /**\n * Delete multiple keys from cache\n * @param keys - Array of cache keys\n * @param encrypt - Whether keys are encrypted\n */\n public static deleteMultiple(keys: string[], encrypt = ZCacheService._encrypt): boolean {\n return ZCacheService._safeOperation(() => {\n keys.forEach(key => {\n const _key = ZCacheService._getFullKey(key, encrypt);\n localStorage.removeItem(_key);\n });\n return true;\n }, false);\n }\n\n /**\n * Clear all cache with the configured prefix\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 /**\n * Check if a key exists in cache\n * @param key - Cache key\n * @param encrypt - Whether key is encrypted\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 /**\n * Get all keys with the configured prefix\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 } else 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-ui/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 { ZIndexDbConfig, ZIndexDbStoreConfig } 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\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\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, encrypt: true });\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, encrypt: true };\n }\n\n private _encrypt(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 _decrypt<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\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 } else if (currentVersion > this._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, defaultValue?: T, storeName?: string): Promise<T | undefined> {\n const storeConfig = this._getStoreConfig(storeName);\n\n return this._withRetry(async () => {\n await this._dbReady;\n\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 _key = storeConfig.encrypt !== false ? this._encrypt(key) : key;\n\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 = storeConfig.encrypt !== false ? this._decrypt<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, storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n\n return this._withRetry(async () => {\n await this._dbReady;\n\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 _key = storeConfig.encrypt !== false ? this._encrypt(key) : key;\n const _value = storeConfig.encrypt !== false ? this._encrypt(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 public async delete(key: string | string[], storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\n\n return this._withRetry(async () => {\n await this._dbReady;\n\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\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\n keys.forEach(k => {\n const _key = storeConfig.encrypt !== false ? this._encrypt(k) : k;\n store.delete(_key);\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\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 keyRequest.onsuccess = () => {\n const allKeys = keyRequest.result as string[];\n const encryptedProtected = protectedKeys.map(k => this._encrypt(k));\n\n allKeys.forEach(k => {\n if (!encryptedProtected.includes(k) && !protectedKeys.includes(k)) {\n try {\n const decrypted = this._decrypt<string>(k);\n if (!protectedKeys.includes(decrypted ?? '')) {\n store.delete(k);\n }\n } catch {\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\n return this._withRetry(async () => {\n await this._dbReady;\n\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 = storeConfig.encrypt !== false ? this._decrypt<string>(key) : key;\n const _value = storeConfig.encrypt !== false ? this._decrypt<T>(values[index]) : values[index];\n if (_key && _value !== null) {\n results[_key] = _value;\n }\n } catch {\n // Skip\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>, storeName?: string): Promise<void> {\n const storeConfig = this._getStoreConfig(storeName);\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\n await this._withRetry(async () => {\n await this._dbReady;\n\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 _key = storeConfig.encrypt !== false ? this._encrypt(key) : key;\n const _value = storeConfig.encrypt !== false ? this._encrypt(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","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';\nexport const Z_THEME_CACHE_KEY = 'Z_THEME';\nexport const Z_DARK_MODE_CACHE_KEY = 'Z_DARK_MODE';\nexport const Z_THEME_CONFIG_CACHE_KEY = 'Z_THEME_CONFIG';\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: 10000,\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 _config: 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._config) {\n this._config = { ...Z_HTTP_DEFAULT_CONFIG, ...this.setHttpConfig() };\n }\n return this._config;\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, '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, undefined, '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 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 _handleStatusCode(statusCode: number): void {\n if (statusCode !== 401) {\n return;\n }\n\n const token = this.cacheService.get<string>(this.config.tokenKey);\n if (!token) {\n this._redirectToLogin();\n return;\n }\n\n this.router.navigate([this.config.homeRoute]).catch(console.error);\n }\n\n private _redirectToLogin(): 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 }\n\n this.indexDbService.clear('HttpCache').catch(console.error);\n this.cacheService.deleteMultiple([this.config.tokenKey, this.config.userInfoKey]);\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 Z_DARK_MODE_CACHE_KEY,\n Z_DEFAULT_THEME,\n Z_THEME_CACHE_KEY,\n Z_THEME_CONFIG,\n Z_THEME_CSS_MAP,\n Z_THEME_CONFIG_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._getInitialDarkMode());\n private readonly _currentTheme = signal<ZThemeName>(this._getInitialTheme());\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._syncConfigToCache();\n this._initializeTheme();\n }\n\n effect(() => {\n const isDark = this._isDark();\n if (this._isBrowser) {\n ZCacheService.set(Z_DARK_MODE_CACHE_KEY, isDark, true);\n }\n });\n\n effect(() => {\n const theme = this._currentTheme();\n if (this._isBrowser) {\n ZCacheService.set(Z_THEME_CACHE_KEY, theme, true);\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 savedTheme = this._currentTheme();\n const savedDarkMode = this._isDark();\n\n this.setTheme(savedTheme);\n if (savedDarkMode) {\n this.toggleDarkMode(savedDarkMode);\n }\n }\n\n private _getInitialTheme(): ZThemeName {\n if (!this._isBrowser) {\n return this._defaultTheme;\n }\n\n if (this._hasConfigChanged()) {\n return this._defaultTheme;\n }\n\n return ZCacheService.get<ZThemeName>(Z_THEME_CACHE_KEY, undefined, true) ?? this._defaultTheme;\n }\n\n private _getInitialDarkMode(): boolean {\n if (!this._isBrowser) {\n return this._defaultDarkMode;\n }\n\n if (this._hasConfigChanged()) {\n return this._defaultDarkMode;\n }\n\n return ZCacheService.get<boolean>(Z_DARK_MODE_CACHE_KEY, undefined, true) ?? this._defaultDarkMode;\n }\n\n private _hasConfigChanged(): boolean {\n const cachedConfig = ZCacheService.get<ZThemeConfig>(Z_THEME_CONFIG_CACHE_KEY, undefined, true);\n if (!cachedConfig) {\n return true;\n }\n\n const currentConfig: ZThemeConfig = {\n defaultTheme: this._defaultTheme,\n defaultDarkMode: this._defaultDarkMode,\n };\n\n return (\n cachedConfig.defaultTheme !== currentConfig.defaultTheme ||\n cachedConfig.defaultDarkMode !== currentConfig.defaultDarkMode\n );\n }\n\n private _syncConfigToCache(): void {\n const currentConfig: ZThemeConfig = {\n defaultTheme: this._defaultTheme,\n defaultDarkMode: this._defaultDarkMode,\n };\n ZCacheService.set(Z_THEME_CONFIG_CACHE_KEY, currentConfig, true);\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\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shival99/z-ui",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 20+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -32,7 +32,7 @@ declare class ZTimelineComponent {
|
|
|
32
32
|
readonly class: _angular_core.InputSignal<ClassValue>;
|
|
33
33
|
readonly zItems: _angular_core.InputSignal<ZTimelineItem[]>;
|
|
34
34
|
readonly zSize: _angular_core.InputSignal<ZTimelineSize>;
|
|
35
|
-
readonly zTimeVariant: _angular_core.InputSignal<"default" | "
|
|
35
|
+
readonly zTimeVariant: _angular_core.InputSignal<"default" | "outline" | "secondary" | "muted">;
|
|
36
36
|
readonly zLineStyle: _angular_core.InputSignal<ZTimelineLineStyle>;
|
|
37
37
|
readonly zIconStyle: _angular_core.InputSignal<ZTimelineIconStyle>;
|
|
38
38
|
readonly zLayout: _angular_core.InputSignal<ZTimelineLayout>;
|
|
@@ -57,7 +57,7 @@ declare class ZTimelineClassPipe implements PipeTransform {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
declare const zTimelineVariants: (props?: ({
|
|
60
|
-
zSize?: "
|
|
60
|
+
zSize?: "default" | "sm" | "lg" | null | undefined;
|
|
61
61
|
zLayout?: "default" | "reversed" | "alternate" | null | undefined;
|
|
62
62
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
63
63
|
declare const zTimelineItemVariants: (props?: ({
|
|
@@ -71,18 +71,18 @@ declare const zTimelineHeaderVariants: (props?: ({
|
|
|
71
71
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
72
72
|
declare const zTimelineIconVariants: (props?: ({
|
|
73
73
|
zColor?: "default" | "primary" | "success" | "warning" | "error" | "info" | null | undefined;
|
|
74
|
-
zIconStyle?: "
|
|
74
|
+
zIconStyle?: "filled" | "outline" | null | undefined;
|
|
75
75
|
zLayout?: "default" | "reversed" | "alternate" | null | undefined;
|
|
76
76
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
77
77
|
declare const zTimelineTitleVariants: (props?: ({
|
|
78
|
-
zSize?: "
|
|
78
|
+
zSize?: "default" | "sm" | "lg" | null | undefined;
|
|
79
79
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
80
80
|
declare const zTimelineTimeVariants: (props?: ({
|
|
81
|
-
zVariant?: "default" | "
|
|
81
|
+
zVariant?: "default" | "outline" | "secondary" | "muted" | null | undefined;
|
|
82
82
|
zLayout?: "default" | "reversed" | "alternate" | null | undefined;
|
|
83
83
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
84
84
|
declare const zTimelineDescriptionVariants: (props?: ({
|
|
85
|
-
zSize?: "
|
|
85
|
+
zSize?: "default" | "sm" | "lg" | null | undefined;
|
|
86
86
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
87
87
|
declare const zTimelineContentVariants: (props?: ({
|
|
88
88
|
zContentStyle?: "simple" | "card" | null | undefined;
|
|
@@ -266,6 +266,7 @@ interface ZHttpBaseOptions {
|
|
|
266
266
|
includeHeaders?: string[];
|
|
267
267
|
} | boolean;
|
|
268
268
|
body?: unknown;
|
|
269
|
+
log?: boolean;
|
|
269
270
|
}
|
|
270
271
|
interface ZHttpOptions<TParams extends object = object, TApiType extends string = string> extends ZHttpBaseOptions {
|
|
271
272
|
contentType?: ZHttpContentType;
|
|
@@ -298,6 +299,7 @@ interface ZHttpConfig {
|
|
|
298
299
|
lastUrlKey?: string;
|
|
299
300
|
loginRoute?: string;
|
|
300
301
|
homeRoute?: string;
|
|
302
|
+
unauthorizedRoute?: string;
|
|
301
303
|
}
|
|
302
304
|
interface ZHttpNetworkCheck {
|
|
303
305
|
time: number;
|
|
@@ -396,15 +398,30 @@ declare class ZTranslateService {
|
|
|
396
398
|
static ɵprov: i0.ɵɵInjectableDeclaration<ZTranslateService>;
|
|
397
399
|
}
|
|
398
400
|
|
|
401
|
+
declare const Z_HTTP_DEFAULT_CONFIG: Required<ZHttpConfig>;
|
|
399
402
|
declare abstract class ZHttpAbstractService<TApiType extends string = string> {
|
|
400
403
|
protected readonly http: HttpClient;
|
|
401
404
|
protected readonly router: Router;
|
|
402
405
|
protected readonly cacheService: typeof ZCacheService;
|
|
403
406
|
protected readonly translateService: ZTranslateService;
|
|
404
407
|
protected readonly indexDbService: ZIndexDbService;
|
|
405
|
-
|
|
408
|
+
private _config;
|
|
406
409
|
private _networkCache;
|
|
407
410
|
constructor();
|
|
411
|
+
/**
|
|
412
|
+
* Returns the HTTP configuration. Override this method in subclasses to customize.
|
|
413
|
+
* @example
|
|
414
|
+
* ```typescript
|
|
415
|
+
* protected override setHttpConfig(): Partial<ZHttpConfig> {
|
|
416
|
+
* return {
|
|
417
|
+
* tokenKey: 'MY_TOKEN',
|
|
418
|
+
* loginRoute: '/auth/login',
|
|
419
|
+
* };
|
|
420
|
+
* }
|
|
421
|
+
* ```
|
|
422
|
+
*/
|
|
423
|
+
protected setHttpConfig(): Partial<ZHttpConfig>;
|
|
424
|
+
protected get config(): Required<ZHttpConfig>;
|
|
408
425
|
protected abstract resolveBaseUrl(apiType?: TApiType): string;
|
|
409
426
|
protected get<T, TParams extends object = object>(endpoint: string, options?: ZHttpOptions<TParams, TApiType>): Observable<T>;
|
|
410
427
|
protected post<T, TParams extends object = object>(endpoint: string, body: unknown, options?: ZHttpOptions<TParams, TApiType>): Observable<T>;
|
|
@@ -426,6 +443,7 @@ declare abstract class ZHttpAbstractService<TApiType extends string = string> {
|
|
|
426
443
|
private _localizeError;
|
|
427
444
|
private _get401Message;
|
|
428
445
|
private _handleStatusCode;
|
|
446
|
+
private _redirectToLogin;
|
|
429
447
|
static ɵfac: i0.ɵɵFactoryDeclaration<ZHttpAbstractService<any>, never>;
|
|
430
448
|
static ɵprov: i0.ɵɵInjectableDeclaration<ZHttpAbstractService<any>>;
|
|
431
449
|
}
|
|
@@ -588,5 +606,5 @@ interface ZTranslateI18nConfig {
|
|
|
588
606
|
}
|
|
589
607
|
declare const Z_LANG_CACHE_KEY = "Z_LANGUAGE";
|
|
590
608
|
|
|
591
|
-
export { ZCacheService, ZExcelService, ZHttpAbstractService, ZIndexDbService, ZSubjectService, ZThemeService, ZTranslateService, Z_DARK_MODE_CACHE_KEY, Z_DEFAULT_THEME, Z_EXCEL_BORDER_THIN, Z_EXCEL_CHAR_WIDTH_MAP, Z_EXCEL_COLORS, Z_EXCEL_DEFAULT_CONFIG, Z_EXCEL_FONT_MULTIPLIERS, Z_EXCEL_WIDTH_LIMITS, Z_INDEXDB_BATCH_SIZE, Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_LANG_CACHE_KEY, Z_THEME_CACHE_KEY, Z_THEME_CONFIG, Z_THEME_CONFIG_CACHE_KEY, Z_THEME_CSS_MAP };
|
|
609
|
+
export { ZCacheService, ZExcelService, ZHttpAbstractService, ZIndexDbService, ZSubjectService, ZThemeService, ZTranslateService, Z_DARK_MODE_CACHE_KEY, Z_DEFAULT_THEME, Z_EXCEL_BORDER_THIN, Z_EXCEL_CHAR_WIDTH_MAP, Z_EXCEL_COLORS, Z_EXCEL_DEFAULT_CONFIG, Z_EXCEL_FONT_MULTIPLIERS, Z_EXCEL_WIDTH_LIMITS, Z_HTTP_DEFAULT_CONFIG, Z_INDEXDB_BATCH_SIZE, Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_LANG_CACHE_KEY, Z_THEME_CACHE_KEY, Z_THEME_CONFIG, Z_THEME_CONFIG_CACHE_KEY, Z_THEME_CSS_MAP };
|
|
592
610
|
export type { ZCacheConfig, ZCacheEntry, ZExcelAlign, ZExcelCell, ZExcelCellContext, ZExcelColumnConfig, ZExcelConfig, ZExcelDefaultConfig, ZExcelExportOptions, ZExcelExportResult, ZExcelFontConfig, ZExcelFromTableConfig, ZExcelHeaderColors, ZExcelHeaderContext, ZExcelSheetSource, ZExcelTableColumnConfig, ZExcelTableHeaderConfig, ZExcelToastHandler, ZHttpBaseOptions, ZHttpCacheEntry, ZHttpConfig, ZHttpContentType, ZHttpError, ZHttpNetworkCheck, ZHttpOptions, ZHttpParamsType, ZIndexDbConfig, ZIndexDbStoreConfig, ZTableToExcelColumn, ZThemeConfig, ZThemeName, ZTranslateConfig, ZTranslateI18nConfig };
|