@shival99/z-ui 2.5.2 → 2.5.4
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.
- package/assets/css/features/media.css +14 -0
- package/assets/css/features/office.css +11 -0
- package/assets/css/global.css +5 -9
- package/assets/css/overlay.css +28 -3
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +16 -2
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-command.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +4 -3
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-overlay.mjs +32 -29
- package/fesm2022/shival99-z-ui-components-z-overlay.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +20 -2
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +7 -7
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-services-excel.mjs +672 -0
- package/fesm2022/shival99-z-ui-services-excel.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-services-office.mjs +123 -0
- package/fesm2022/shival99-z-ui-services-office.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-services.mjs +2 -778
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/package.json +22 -6
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +2 -1
- package/types/shival99-z-ui-components-z-calendar.d.ts +4 -4
- package/types/shival99-z-ui-components-z-overlay.d.ts +11 -12
- package/types/shival99-z-ui-components-z-select.d.ts +4 -2
- package/types/shival99-z-ui-components-z-table.d.ts +2 -2
- package/types/shival99-z-ui-services-excel.d.ts +36 -0
- package/types/shival99-z-ui-services-office.d.ts +15 -0
- package/types/shival99-z-ui-services.d.ts +151 -194
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-services-excel.mjs","sources":["../../../../libs/core-ui/services/excel/z-excel.service.ts","../../../../libs/core-ui/services/excel/shival99-z-ui-services-excel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n Z_EXCEL_DEFAULT_CONFIG,\n Z_EXCEL_BORDER_THIN,\n Z_EXCEL_CHAR_WIDTH_MAP,\n Z_EXCEL_FONT_MULTIPLIERS,\n Z_EXCEL_WIDTH_LIMITS,\n} from '@shival99/z-ui/services';\nimport type {\n ZExcelConfig,\n ZExcelColumnConfig,\n ZExcelExportOptions,\n ZExcelExportResult,\n ZExcelFromTableConfig,\n ZExcelCell,\n ZExcelCellContext,\n ZExcelAlign,\n ZExcelTableColumnConfig,\n ZExcelTableHeaderConfig,\n} from '@shival99/z-ui/services';\nimport { zConvertColorToArgb, zFormatNumExcel } from '@shival99/z-ui/utils';\nimport * as ExcelJS from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport * as XLSX from 'xlsx';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZExcelService {\n private static _isHeaderConfig<T>(\n config: ZExcelTableColumnConfig<T>['header']\n ): config is { content?: string | (() => string); align?: ZExcelAlign } {\n if (!config || typeof config !== 'object') {\n return false;\n }\n return config.constructor === Object;\n }\n\n private static _getHeaderConfig<T>(col: ZExcelTableColumnConfig<T> | undefined): ZExcelTableHeaderConfig {\n const empty: ZExcelTableHeaderConfig = {\n content: undefined,\n class: undefined,\n style: undefined,\n align: undefined,\n tooltip: undefined,\n rowSpan: undefined,\n colSpan: undefined,\n };\n\n if (!col) {\n return empty;\n }\n\n if (!ZExcelService._isHeaderConfig(col.header)) {\n return { ...empty, content: col.header as string | (() => string) | undefined };\n }\n\n return {\n content: col.header.content,\n class: undefined,\n style: undefined,\n align: col.header.align,\n tooltip: undefined,\n rowSpan: undefined,\n colSpan: undefined,\n };\n }\n\n public async exportExcel<T = unknown>(config: ZExcelConfig<T>, options: ZExcelExportOptions = {}): Promise<void> {\n try {\n const result = await ZExcelService.exportExcelStatic(config);\n await this._saveFile(result, options);\n } catch (error) {\n console.error('Error exporting Excel:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public async exportFromTable<T = unknown>(\n config: ZExcelFromTableConfig<T>,\n options: ZExcelExportOptions = {}\n ): Promise<void> {\n try {\n const excelColumns = this._convertTableColumnsToExcel(config);\n const excelConfig: ZExcelConfig<T> = {\n fileName: config.fileName,\n columns: excelColumns,\n source: config.source,\n };\n await this.exportExcel(excelConfig, options);\n } catch (error) {\n console.error('Error exporting from table:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public async exportFromElement(\n elementId: string,\n fileName = 'export',\n options: ZExcelExportOptions = {}\n ): Promise<void> {\n try {\n const result = await ZExcelService.exportFromElementStatic(elementId, fileName);\n await this._saveFile(result, options);\n } catch (error) {\n console.error('Error exporting from element:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public async exportFromElementXlsx(\n elementId: string,\n fileName = 'export',\n options: ZExcelExportOptions = {}\n ): Promise<void> {\n try {\n const element = document.getElementById(elementId);\n if (!element) {\n throw new Error(`Element with id \"${elementId}\" not found`);\n }\n\n const table = element.querySelector('table') || element;\n if (table.tagName !== 'TABLE') {\n throw new Error('Element must be a table or contain a table');\n }\n\n const workbook = XLSX.utils.table_to_book(table as HTMLTableElement, { sheet: 'Sheet1' });\n const { addTimestamp = true } = options;\n\n let finalFileName = `${fileName}.xlsx`;\n if (addTimestamp) {\n finalFileName = `${fileName}_${ZExcelService._formatTimestamp()}.xlsx`;\n }\n\n XLSX.writeFile(workbook, finalFileName);\n\n if (options.showNotification !== false) {\n options.toast?.success?.(`File \"${finalFileName}\" has been downloaded`);\n }\n } catch (error) {\n console.error('Error exporting from element with XLSX:', error);\n options.toast?.error?.('Failed to export Excel file');\n throw error;\n }\n }\n\n public static async exportExcelStatic<T = unknown>(config: ZExcelConfig<T>): Promise<ZExcelExportResult> {\n const workbook = new ExcelJS.Workbook();\n const { fileName = 'export', columns, source } = config;\n\n for (const sheetSource of source) {\n const sheet = workbook.addWorksheet(sheetSource.sheetName || 'Sheet1');\n const flatColumns = ZExcelService._flattenColumns(columns);\n const headerLevels = ZExcelService._calculateHeaderLevels(columns);\n\n sheet.columns = flatColumns.map(col => ({\n key: col.id,\n header: col.header || col.id,\n width: col.width || Z_EXCEL_WIDTH_LIMITS.default,\n style: { font: Z_EXCEL_DEFAULT_CONFIG.font },\n }));\n\n ZExcelService._createHeaderRows(sheet, columns, headerLevels);\n const dataStartRow = headerLevels + 1;\n const mergedCells = new Set<string>();\n const mergeRegions = ZExcelService._processMergeRegions(flatColumns, sheetSource.data, dataStartRow);\n\n sheetSource.data.forEach((dataItem: T, rowIndex: number) => {\n const row = sheet.addRow([]);\n\n flatColumns.forEach((col, colIndex) => {\n const cell = row.getCell(colIndex + 1);\n const cellValue = ZExcelService._getCellValue(col, dataItem, rowIndex, sheetSource.data);\n cell.value = cellValue as ExcelJS.CellValue;\n });\n\n row.eachCell((cell: ExcelJS.Cell, colNumber: number) => {\n const colConfig = flatColumns[colNumber - 1];\n const currentRow = dataStartRow + rowIndex + 1;\n const cellKey = `${currentRow}:${colNumber}`;\n\n if (mergedCells.has(cellKey)) {\n return;\n }\n\n cell.font = {\n name: Z_EXCEL_DEFAULT_CONFIG.font.name,\n size: Z_EXCEL_DEFAULT_CONFIG.font.size,\n ...(cell.font || {}),\n };\n\n if (colConfig.formatNum) {\n const rawValue = ZExcelService._getCellValue(colConfig, dataItem, rowIndex, sheetSource.data);\n zFormatNumExcel(cell, rawValue, colConfig.formatNum);\n }\n\n if (!colConfig.formatNum && colConfig.format) {\n const context: ZExcelCellContext<T> = {\n row: dataItem,\n rowIndex,\n data: sheetSource.data,\n cell: cell as unknown as ZExcelCell,\n };\n colConfig.format(context);\n }\n\n if (colConfig.align) {\n cell.alignment = {\n horizontal: colConfig.align,\n vertical: 'middle',\n ...(cell.alignment || {}),\n };\n }\n\n if (colConfig.note) {\n const noteText = colConfig.note(dataItem, rowIndex, sheetSource.data);\n if (noteText) {\n cell.note = noteText;\n }\n }\n\n cell.border = Z_EXCEL_BORDER_THIN;\n });\n });\n\n mergeRegions.forEach(region => {\n try {\n sheet.mergeCells(region.startRow, region.startCol, region.endRow, region.endCol);\n\n const mergedCell = sheet.getCell(region.startRow, region.startCol);\n if (!mergedCell.alignment) {\n mergedCell.alignment = { vertical: 'middle' };\n }\n\n for (let r = region.startRow; r <= region.endRow; r++) {\n for (let c = region.startCol; c <= region.endCol; c++) {\n mergedCells.add(`${r}:${c}`);\n }\n }\n } catch (error) {\n console.warn(`Failed to merge cells:`, error);\n }\n });\n\n ZExcelService._applyAutoFitWidth(sheet, flatColumns);\n }\n\n const buffer = await workbook.xlsx.writeBuffer();\n return { buffer: buffer as ArrayBuffer, fileName: `${fileName}.xlsx` };\n }\n\n public static async exportFromElementStatic(elementId: string, fileName = 'export'): Promise<ZExcelExportResult> {\n const workbook = new ExcelJS.Workbook();\n const element = document.getElementById(elementId);\n\n if (!element) {\n throw new Error(`Element with id \"${elementId}\" not found`);\n }\n\n const sheet = workbook.addWorksheet('Sheet1');\n const table = element.querySelector('table') || element;\n\n if (table.tagName !== 'TABLE') {\n throw new Error('Element must be a table or contain a table');\n }\n\n ZExcelService._processTableElement(sheet, table as HTMLTableElement);\n ZExcelService._applyAutoFitWidthForTable(sheet);\n\n const buffer = await workbook.xlsx.writeBuffer();\n return { buffer: buffer as ArrayBuffer, fileName: `${fileName}.xlsx` };\n }\n\n private async _saveFile(result: ZExcelExportResult, options: ZExcelExportOptions): Promise<void> {\n const { addTimestamp = true, showNotification = true } = options;\n\n let finalFileName = result.fileName;\n if (addTimestamp) {\n const timestamp = ZExcelService._formatTimestamp();\n if (!finalFileName.includes(timestamp.slice(0, 8))) {\n finalFileName = finalFileName.replace('.xlsx', `_${timestamp}.xlsx`);\n }\n }\n\n const blob = new Blob([result.buffer], {\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n });\n saveAs(blob, finalFileName);\n\n if (showNotification) {\n options.toast?.success?.(`File \"${finalFileName}\" has been downloaded`);\n }\n }\n\n private _convertTableColumnsToExcel<T>(config: ZExcelFromTableConfig<T>): ZExcelColumnConfig<T>[] {\n const { tableColumns, excelOverrides = {}, excludeColumns = [], headerResolver } = config;\n\n const convertColumn = (col: ZExcelTableColumnConfig<T>): ZExcelColumnConfig<T> | null => {\n if (excludeColumns.includes(col.id)) {\n return null;\n }\n\n if (['select', 'expand', 'actions'].includes(col.id)) {\n return null;\n }\n\n const headerConfig = ZExcelService._getHeaderConfig(col);\n let headerText = col.id;\n\n if (headerResolver) {\n headerText = headerResolver(col);\n }\n\n if (!headerResolver && typeof headerConfig.content === 'string') {\n headerText = headerConfig.content;\n }\n\n if (!headerResolver && typeof headerConfig.content === 'function') {\n const result = (headerConfig.content as () => string)();\n headerText = typeof result === 'string' ? result : col.id;\n }\n\n const excelCol: ZExcelColumnConfig<T> = {\n id: col.id,\n header: headerText,\n accessorKey: col.accessorKey,\n accessorFn: col.accessorFn ? (row: T) => col.accessorFn!(row) : undefined,\n autoFit: true,\n align: headerConfig.align as ZExcelAlign,\n visible: typeof col.visible === 'boolean' ? col.visible : true,\n };\n\n const override = excelOverrides[col.id];\n if (override) {\n Object.assign(excelCol, override);\n }\n\n if (col.columns && col.columns.length > 0) {\n excelCol.columns = col.columns\n .map((childCol: ZExcelTableColumnConfig<T>) => convertColumn(childCol))\n .filter((c: ZExcelColumnConfig<T> | null): c is ZExcelColumnConfig<T> => c !== null);\n\n if (excelCol.columns && excelCol.columns.length > 0) {\n excelCol.headerColSpan = ZExcelService._getLeafCount(excelCol.columns);\n }\n }\n\n return excelCol;\n };\n\n return tableColumns\n .map((col: ZExcelTableColumnConfig<T>) => convertColumn(col))\n .filter((c: ZExcelColumnConfig<T> | null): c is ZExcelColumnConfig<T> => c !== null);\n }\n\n private static _flattenColumns<T>(columns: ZExcelColumnConfig<T>[]): ZExcelColumnConfig<T>[] {\n const result: ZExcelColumnConfig<T>[] = [];\n\n const flatten = (cols: ZExcelColumnConfig<T>[]) => {\n for (const col of cols) {\n if (col.visible === false) {\n continue;\n }\n\n if (col.columns && col.columns.length > 0) {\n flatten(col.columns);\n continue;\n }\n\n result.push(col);\n }\n };\n\n flatten(columns);\n return result;\n }\n\n private static _calculateHeaderLevels<T>(columns: ZExcelColumnConfig<T>[]): number {\n const getLevel = (cols: ZExcelColumnConfig<T>[], currentLevel = 1): number => {\n let maxLevel = currentLevel;\n\n for (const col of cols) {\n let currentColLevel = currentLevel;\n\n if (col.headerRowSpan && col.headerRowSpan > 1) {\n currentColLevel = currentLevel + col.headerRowSpan - 1;\n }\n\n if (col.columns && col.columns.length > 0) {\n if (!col.headerRowSpan || col.headerRowSpan <= 1) {\n const childLevel = getLevel(col.columns, currentLevel + 1);\n currentColLevel = Math.max(currentColLevel, childLevel);\n }\n }\n\n maxLevel = Math.max(maxLevel, currentColLevel);\n }\n\n return maxLevel;\n };\n\n return getLevel(columns);\n }\n\n private static _createHeaderRows<T>(\n sheet: ExcelJS.Worksheet,\n columns: ZExcelColumnConfig<T>[],\n maxLevels: number\n ): void {\n interface ZHeaderCellInfo {\n header: string;\n colSpan: number;\n rowSpan: number;\n formatHeader?: (cell: ZExcelCell) => void;\n startCol: number;\n endCol: number;\n isProcessed?: boolean;\n isEmpty?: boolean;\n }\n\n const headerStructure: Array<Array<ZHeaderCellInfo>> = [];\n\n for (let i = 0; i < maxLevels; i++) {\n headerStructure[i] = [];\n }\n\n ZExcelService._buildHeaderStructure(columns, headerStructure, 0, maxLevels);\n\n const processedMergeRegions = new Set<string>();\n\n headerStructure.forEach((row, rowIndex) => {\n const headerRow = sheet.getRow(rowIndex + 1);\n const sortedRow = row.sort((a, b) => (a.startCol || 0) - (b.startCol || 0));\n\n sortedRow.forEach((headerCell: ZHeaderCellInfo) => {\n if (headerCell.isProcessed || headerCell.isEmpty) {\n return;\n }\n\n const colIndex = (headerCell.startCol || 0) + 1;\n const cell = headerRow.getCell(colIndex);\n cell.value = headerCell.header;\n\n if (headerCell.colSpan > 1 || headerCell.rowSpan > 1) {\n const startRow = rowIndex + 1;\n const endRow = startRow + headerCell.rowSpan - 1;\n const startCol = colIndex;\n const endCol = colIndex + headerCell.colSpan - 1;\n const mergeKey = `${startRow}:${startCol}-${endRow}:${endCol}`;\n\n if (!processedMergeRegions.has(mergeKey)) {\n try {\n sheet.mergeCells(startRow, startCol, endRow, endCol);\n processedMergeRegions.add(mergeKey);\n headerCell.isProcessed = true;\n } catch (error) {\n console.warn(`Failed to merge header cells:`, error);\n }\n }\n }\n\n const defaultColor =\n rowIndex === 0 ? Z_EXCEL_DEFAULT_CONFIG.headerColors.level0 : Z_EXCEL_DEFAULT_CONFIG.headerColors.level1;\n\n cell.fill = {\n type: 'pattern',\n pattern: 'solid',\n fgColor: { argb: defaultColor },\n };\n\n cell.font = Z_EXCEL_DEFAULT_CONFIG.headerFont;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.border = Z_EXCEL_BORDER_THIN;\n\n if (headerCell.formatHeader) {\n headerCell.formatHeader(cell as unknown as ZExcelCell);\n }\n });\n });\n }\n\n private static _buildHeaderStructure<T>(\n columns: ZExcelColumnConfig<T>[],\n headerStructure: Array<\n Array<{\n header: string;\n colSpan: number;\n rowSpan: number;\n formatHeader?: (cell: ZExcelCell) => void;\n startCol: number;\n endCol: number;\n }>\n >,\n level: number,\n maxLevels: number,\n startCol = 0\n ): number {\n let currentCol = startCol;\n\n for (const col of columns) {\n if (col.visible === false) {\n continue;\n }\n\n if (col.columns && col.columns.length > 0) {\n const childrenLeafCount = ZExcelService._getLeafCount(col.columns);\n const colSpan = col.headerColSpan || childrenLeafCount;\n const rowSpan = col.headerRowSpan || 1;\n\n headerStructure[level].push({\n header: col.header || col.id,\n colSpan,\n rowSpan,\n formatHeader: col.formatHeader,\n startCol: currentCol,\n endCol: currentCol + colSpan - 1,\n });\n\n if (col.headerRowSpan && col.headerRowSpan > 1) {\n currentCol += colSpan;\n continue;\n }\n\n ZExcelService._buildHeaderStructure(col.columns, headerStructure, level + 1, maxLevels, currentCol);\n\n currentCol += colSpan;\n continue;\n }\n\n const colSpan = col.headerColSpan || 1;\n const rowSpan = col.headerRowSpan || maxLevels - level;\n\n headerStructure[level].push({\n header: col.header || col.id,\n colSpan,\n rowSpan,\n formatHeader: col.formatHeader,\n startCol: currentCol,\n endCol: currentCol + colSpan - 1,\n });\n\n currentCol += colSpan;\n }\n\n return currentCol;\n }\n\n private static _getLeafCount<T>(columns: ZExcelColumnConfig<T>[]): number {\n let count = 0;\n for (const col of columns) {\n if (col.visible === false) {\n continue;\n }\n\n if (col.columns && col.columns.length > 0) {\n count += ZExcelService._getLeafCount(col.columns);\n continue;\n }\n count++;\n }\n return count;\n }\n\n private static _getCellValue<T>(col: ZExcelColumnConfig<T>, row: T, rowIndex: number, data: T[]): unknown {\n if (col.accessorFn) {\n return col.accessorFn(row, rowIndex, data);\n }\n if (col.accessorKey) {\n return (row as Record<string, unknown>)[col.accessorKey];\n }\n return '';\n }\n\n private static _processMergeRegions<T>(\n flatColumns: ZExcelColumnConfig<T>[],\n data: T[],\n dataStartRow: number\n ): Array<{\n startRow: number;\n startCol: number;\n endRow: number;\n endCol: number;\n firstItemIndex: number;\n }> {\n const mergeRegions: Array<{\n startRow: number;\n startCol: number;\n endRow: number;\n endCol: number;\n firstItemIndex: number;\n }> = [];\n const dataLength = data.length;\n\n flatColumns.forEach((colConfig, colIndex) => {\n const colNumber = colIndex + 1;\n\n if (colConfig.rowSpan || colConfig.colSpan) {\n let currentGroupStart = 0;\n\n while (currentGroupStart < dataLength) {\n const currentItem = data[currentGroupStart];\n\n const rowSpan =\n typeof colConfig.rowSpan === 'function'\n ? colConfig.rowSpan(currentItem, currentGroupStart, data)\n : colConfig.rowSpan || 1;\n const colSpan =\n typeof colConfig.colSpan === 'function'\n ? colConfig.colSpan(currentItem, currentGroupStart, data)\n : colConfig.colSpan || 1;\n\n const hasRowSpan = rowSpan > 1;\n const hasColSpan = colSpan > 1;\n\n if (hasRowSpan || hasColSpan) {\n const startRow = dataStartRow + currentGroupStart;\n const endRow = hasRowSpan ? Math.min(startRow + rowSpan - 1, dataStartRow + dataLength - 1) : startRow;\n const startCol = colNumber;\n const endCol = hasColSpan ? colNumber + colSpan - 1 : colNumber;\n\n if ((endRow > startRow || endCol > startCol) && endRow < dataStartRow + dataLength) {\n mergeRegions.push({\n startRow,\n startCol,\n endRow,\n endCol,\n firstItemIndex: currentGroupStart,\n });\n }\n }\n\n currentGroupStart += Math.max(1, rowSpan);\n }\n }\n });\n\n return mergeRegions;\n }\n\n private static _applyAutoFitWidth<T>(sheet: ExcelJS.Worksheet, flatColumns: ZExcelColumnConfig<T>[]): void {\n flatColumns.forEach((col, index) => {\n const colNumber = index + 1;\n const column = sheet.getColumn(colNumber);\n\n if (col.autoFit && !col.width) {\n let maxWidth = 0;\n\n sheet.eachRow((row: ExcelJS.Row) => {\n const cell = row.getCell(colNumber);\n if (cell.value) {\n const cellWidth =\n ZExcelService._calculateCellWidth(cell, String(cell.value)) /\n ZExcelService._getMergedColumnSpan(sheet, row, cell);\n maxWidth = Math.max(maxWidth, cellWidth);\n }\n });\n\n const calculatedWidth = Math.max(Z_EXCEL_WIDTH_LIMITS.min, Math.min(Z_EXCEL_WIDTH_LIMITS.max, maxWidth + 1));\n column.width = calculatedWidth;\n }\n });\n }\n\n private static _applyAutoFitWidthForTable(sheet: ExcelJS.Worksheet): void {\n const { columnCount } = sheet;\n\n for (let colNumber = 1; colNumber <= columnCount; colNumber++) {\n const column = sheet.getColumn(colNumber);\n let maxWidth = 0;\n\n sheet.eachRow((row: ExcelJS.Row) => {\n const cell = row.getCell(colNumber);\n if (cell.value) {\n const cellWidth =\n ZExcelService._calculateCellWidth(cell, String(cell.value)) /\n ZExcelService._getMergedColumnSpan(sheet, row, cell);\n maxWidth = Math.max(maxWidth, cellWidth);\n }\n });\n\n const calculatedWidth = Math.max(\n Z_EXCEL_WIDTH_LIMITS.tableMin,\n Math.min(Z_EXCEL_WIDTH_LIMITS.tableMax, maxWidth * 0.8 + 2)\n );\n column.width = calculatedWidth;\n }\n }\n\n private static _getMergedColumnSpan(sheet: ExcelJS.Worksheet, row: ExcelJS.Row, cell: ExcelJS.Cell): number {\n if (!cell.isMerged) {\n return 1;\n }\n\n let colSpan = 0;\n for (let colNumber = 1; colNumber <= sheet.columnCount; colNumber++) {\n const mergedCell = row.getCell(colNumber);\n if (mergedCell.address === cell.master.address || mergedCell.isMergedTo(cell.master)) {\n colSpan++;\n }\n }\n\n return Math.max(1, colSpan);\n }\n\n private static _calculateCellWidth(cell: ExcelJS.Cell, text: string): number {\n const font = cell.font || {};\n const fontSize = font.size || Z_EXCEL_DEFAULT_CONFIG.font.size;\n const fontFamily = font.name || Z_EXCEL_DEFAULT_CONFIG.font.name;\n const isBold = font.bold || false;\n const isItalic = font.italic || false;\n\n const fontSizeMultiplier = fontSize / 11;\n const fontMultiplier = Z_EXCEL_FONT_MULTIPLIERS[fontFamily] || 1.0;\n\n let adjustedWidth = 0;\n for (const char of text) {\n const charWidth = Z_EXCEL_CHAR_WIDTH_MAP[char] || 1.0;\n adjustedWidth += charWidth;\n }\n\n adjustedWidth *= fontSizeMultiplier * fontMultiplier;\n\n if (isBold) {\n adjustedWidth *= 1.1;\n }\n if (isItalic) {\n adjustedWidth *= 1.05;\n }\n\n return Math.ceil(adjustedWidth * 1.2);\n }\n\n private static _processTableElement(sheet: ExcelJS.Worksheet, table: HTMLTableElement): void {\n const rows = Array.from(table.rows);\n const mergedCells = new Set<string>();\n\n rows.forEach((row, rowIndex) => {\n const cells = Array.from(row.cells);\n let colOffset = 0;\n\n cells.forEach((cell, cellIndex) => {\n const computedStyle = window.getComputedStyle(cell);\n if (computedStyle.display === 'none' || computedStyle.visibility === 'hidden') {\n return;\n }\n\n const rect = cell.getBoundingClientRect();\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n\n while (mergedCells.has(`${rowIndex + 1}:${cellIndex + colOffset + 1}`)) {\n colOffset++;\n }\n\n const excelRow = sheet.getRow(rowIndex + 1);\n const colIndex = cellIndex + colOffset;\n const excelCell = excelRow.getCell(colIndex + 1);\n\n const cellContent = cell.textContent?.trim() || '';\n excelCell.value = ZExcelService._parseContentValue(cellContent);\n\n if (!excelCell.font) {\n excelCell.font = Z_EXCEL_DEFAULT_CONFIG.font;\n }\n\n ZExcelService._applyCellFormatFromHTML(excelCell, cell);\n\n const rowSpan = parseInt(cell.getAttribute('rowspan') || '1');\n const colSpan = parseInt(cell.getAttribute('colspan') || '1');\n\n if (rowSpan > 1 || colSpan > 1) {\n const startRow = rowIndex + 1;\n const startCol = colIndex + 1;\n const endRow = startRow + rowSpan - 1;\n const endCol = startCol + colSpan - 1;\n\n const mergeKey = `${startRow}:${startCol}-${endRow}:${endCol}`;\n if (!mergedCells.has(mergeKey)) {\n sheet.mergeCells(startRow, startCol, endRow, endCol);\n mergedCells.add(mergeKey);\n\n for (let r = startRow; r <= endRow; r++) {\n for (let c = startCol; c <= endCol; c++) {\n mergedCells.add(`${r}:${c}`);\n }\n }\n }\n }\n });\n });\n }\n\n private static _parseContentValue(content: string): string | number {\n if (!content || content.trim() === '') {\n return '';\n }\n\n const trimmedContent = content.trim();\n\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmedContent)) {\n const parsed = parseFloat(trimmedContent);\n if (!isNaN(parsed) && isFinite(parsed)) {\n return parsed;\n }\n }\n\n if (/^-?\\d+(\\.\\d+)?%$/.test(trimmedContent)) {\n const numberPart = trimmedContent.replace('%', '');\n const parsed = parseFloat(numberPart);\n if (!isNaN(parsed) && isFinite(parsed)) {\n return parsed / 100;\n }\n }\n\n return trimmedContent;\n }\n\n private static _applyCellFormatFromHTML(excelCell: ExcelJS.Cell, htmlCell: HTMLTableCellElement): void {\n const computedStyle = window.getComputedStyle(htmlCell);\n\n excelCell.font = {\n name: Z_EXCEL_DEFAULT_CONFIG.font.name,\n bold: computedStyle.fontWeight === 'bold' || parseInt(computedStyle.fontWeight) >= 600,\n italic: computedStyle.fontStyle === 'italic',\n size: parseInt(computedStyle.fontSize) || Z_EXCEL_DEFAULT_CONFIG.font.size,\n color: { argb: zConvertColorToArgb(computedStyle.color) },\n };\n\n if (computedStyle.backgroundColor && computedStyle.backgroundColor !== 'rgba(0, 0, 0, 0)') {\n excelCell.fill = {\n type: 'pattern',\n pattern: 'solid',\n fgColor: { argb: zConvertColorToArgb(computedStyle.backgroundColor) },\n };\n }\n\n excelCell.alignment = {\n horizontal: ZExcelService._getExcelAlignment(computedStyle.textAlign),\n vertical: ZExcelService._getExcelVerticalAlignment(computedStyle.verticalAlign),\n };\n\n excelCell.border = Z_EXCEL_BORDER_THIN;\n }\n\n private static _getExcelAlignment(textAlign: string): 'left' | 'center' | 'right' | undefined {\n switch (textAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'right';\n case 'left':\n return 'left';\n default:\n return undefined;\n }\n }\n\n private static _getExcelVerticalAlignment(verticalAlign: string): 'top' | 'middle' | 'bottom' | undefined {\n switch (verticalAlign) {\n case 'middle':\n return 'middle';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n default:\n return 'middle';\n }\n }\n\n private static _formatTimestamp(): string {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const day = String(now.getDate()).padStart(2, '0');\n const hours = String(now.getHours()).padStart(2, '0');\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n return `${year}${month}${day}_${hours}${minutes}${seconds}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class ZGalleryOfficeRenderService {
|
|
5
|
+
async renderDoc(container, blob) {
|
|
6
|
+
const { renderAsync } = await import('docx-preview');
|
|
7
|
+
await renderAsync(blob, container, undefined, {
|
|
8
|
+
className: 'z-gallery-docx',
|
|
9
|
+
inWrapper: true,
|
|
10
|
+
breakPages: true,
|
|
11
|
+
});
|
|
12
|
+
const observer = this._observeDocxZoom(container);
|
|
13
|
+
return { dispose: () => observer?.disconnect() };
|
|
14
|
+
}
|
|
15
|
+
async renderSheet(container, blob) {
|
|
16
|
+
const [{ read, utils }, { createUniver, LocaleType, mergeLocales }, sheetsCore, viVN] = await Promise.all([
|
|
17
|
+
import('xlsx'),
|
|
18
|
+
import('@univerjs/presets'),
|
|
19
|
+
import('@univerjs/preset-sheets-core'),
|
|
20
|
+
import('@univerjs/preset-sheets-core/locales/vi-VN'),
|
|
21
|
+
]);
|
|
22
|
+
const workbook = read(await blob.arrayBuffer(), { type: 'array' });
|
|
23
|
+
const { univerAPI } = createUniver({
|
|
24
|
+
locale: LocaleType.VI_VN,
|
|
25
|
+
locales: { [LocaleType.VI_VN]: mergeLocales(viVN.default ?? viVN) },
|
|
26
|
+
presets: [
|
|
27
|
+
sheetsCore.UniverSheetsCorePreset({
|
|
28
|
+
container,
|
|
29
|
+
header: true,
|
|
30
|
+
toolbar: false,
|
|
31
|
+
contextMenu: false,
|
|
32
|
+
formulaBar: true,
|
|
33
|
+
}),
|
|
34
|
+
],
|
|
35
|
+
});
|
|
36
|
+
univerAPI.createWorkbook(this._toUniverWorkbook(workbook, utils)).setEditable(false);
|
|
37
|
+
return { dispose: () => univerAPI.dispose() };
|
|
38
|
+
}
|
|
39
|
+
async renderSlide(container, blob) {
|
|
40
|
+
const { PptxViewer, RECOMMENDED_ZIP_LIMITS } = await import('@aiden0z/pptx-renderer');
|
|
41
|
+
const viewer = new PptxViewer(container, {
|
|
42
|
+
fitMode: 'contain',
|
|
43
|
+
zipLimits: RECOMMENDED_ZIP_LIMITS,
|
|
44
|
+
pdfjs: {
|
|
45
|
+
moduleUrl: '/assets/pdfjs/build/pdf.mjs',
|
|
46
|
+
workerUrl: '/assets/pdfjs/build/pdf.worker.mjs',
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
await viewer.open(blob, { renderMode: 'slide' });
|
|
50
|
+
return { dispose: () => viewer.destroy() };
|
|
51
|
+
}
|
|
52
|
+
_toUniverWorkbook(workbook, utils) {
|
|
53
|
+
const sheets = {};
|
|
54
|
+
const sheetOrder = [];
|
|
55
|
+
workbook.SheetNames.forEach((sheetName, index) => {
|
|
56
|
+
const sheet = workbook.Sheets[sheetName];
|
|
57
|
+
if (!sheet) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const rows = utils.sheet_to_json(sheet, { header: 1, raw: true, defval: null });
|
|
61
|
+
const sheetId = `sheet-${index}`;
|
|
62
|
+
sheetOrder.push(sheetId);
|
|
63
|
+
sheets[sheetId] = {
|
|
64
|
+
id: sheetId,
|
|
65
|
+
name: sheetName,
|
|
66
|
+
rowCount: Math.max(rows.length + 10, 50),
|
|
67
|
+
columnCount: Math.max(...rows.map(row => row.length), 10) + 5,
|
|
68
|
+
cellData: this._toUniverCellData(rows),
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
id: 'z-gallery-preview',
|
|
73
|
+
appVersion: '0.25.1',
|
|
74
|
+
name: workbook.Props?.Title ?? '',
|
|
75
|
+
sheetOrder,
|
|
76
|
+
sheets,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
_toUniverCellData(rows) {
|
|
80
|
+
const cellData = {};
|
|
81
|
+
rows.forEach((row, rowIndex) => {
|
|
82
|
+
row.forEach((value, columnIndex) => {
|
|
83
|
+
if (value === null || value === undefined || value === '') {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
cellData[rowIndex] ??= {};
|
|
87
|
+
cellData[rowIndex][columnIndex] = typeof value === 'number' ? { v: value } : { v: String(value) };
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
return cellData;
|
|
91
|
+
}
|
|
92
|
+
_observeDocxZoom(container) {
|
|
93
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const observer = new ResizeObserver(() => {
|
|
97
|
+
const wrapper = container.querySelector('.docx-wrapper');
|
|
98
|
+
const page = wrapper?.querySelector('.docx');
|
|
99
|
+
if (!wrapper || !page) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const availableWidth = container.clientWidth;
|
|
103
|
+
const pageWidth = page.offsetWidth;
|
|
104
|
+
const scale = pageWidth > 0 && availableWidth < pageWidth ? availableWidth / pageWidth : 1;
|
|
105
|
+
wrapper.style.zoom = `${scale}`;
|
|
106
|
+
});
|
|
107
|
+
observer.observe(container);
|
|
108
|
+
return observer;
|
|
109
|
+
}
|
|
110
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZGalleryOfficeRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
111
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZGalleryOfficeRenderService, providedIn: 'root' });
|
|
112
|
+
}
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZGalleryOfficeRenderService, decorators: [{
|
|
114
|
+
type: Injectable,
|
|
115
|
+
args: [{ providedIn: 'root' }]
|
|
116
|
+
}] });
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Generated bundle index. Do not edit.
|
|
120
|
+
*/
|
|
121
|
+
|
|
122
|
+
export { ZGalleryOfficeRenderService };
|
|
123
|
+
//# sourceMappingURL=shival99-z-ui-services-office.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-services-office.mjs","sources":["../../../../libs/core-ui/services/office/z-gallery-office-render.service.ts","../../../../libs/core-ui/services/office/shival99-z-ui-services-office.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { ZGalleryOfficeRenderResult } from '@shival99/z-ui/services';\nimport type { ICellData, IWorkbookData, IWorksheetData } from '@univerjs/presets';\nimport type * as XLSX from 'xlsx';\n\n@Injectable({ providedIn: 'root' })\nexport class ZGalleryOfficeRenderService {\n public async renderDoc(container: HTMLElement, blob: Blob): Promise<ZGalleryOfficeRenderResult> {\n const { renderAsync } = await import('docx-preview');\n await renderAsync(blob, container, undefined, {\n className: 'z-gallery-docx',\n inWrapper: true,\n breakPages: true,\n });\n\n const observer = this._observeDocxZoom(container);\n return { dispose: () => observer?.disconnect() };\n }\n\n public async renderSheet(container: HTMLElement, blob: Blob): Promise<ZGalleryOfficeRenderResult> {\n const [{ read, utils }, { createUniver, LocaleType, mergeLocales }, sheetsCore, viVN] = await Promise.all([\n import('xlsx'),\n import('@univerjs/presets'),\n import('@univerjs/preset-sheets-core'),\n import('@univerjs/preset-sheets-core/locales/vi-VN'),\n ]);\n\n const workbook = read(await blob.arrayBuffer(), { type: 'array' });\n const { univerAPI } = createUniver({\n locale: LocaleType.VI_VN,\n locales: { [LocaleType.VI_VN]: mergeLocales(viVN.default ?? viVN) },\n presets: [\n sheetsCore.UniverSheetsCorePreset({\n container,\n header: true,\n toolbar: false,\n contextMenu: false,\n formulaBar: true,\n }),\n ],\n });\n\n univerAPI.createWorkbook(this._toUniverWorkbook(workbook, utils)).setEditable(false);\n return { dispose: () => univerAPI.dispose() };\n }\n\n public async renderSlide(container: HTMLElement, blob: Blob): Promise<ZGalleryOfficeRenderResult> {\n const { PptxViewer, RECOMMENDED_ZIP_LIMITS } = await import('@aiden0z/pptx-renderer');\n const viewer = new PptxViewer(container, {\n fitMode: 'contain',\n zipLimits: RECOMMENDED_ZIP_LIMITS,\n pdfjs: {\n moduleUrl: '/assets/pdfjs/build/pdf.mjs',\n workerUrl: '/assets/pdfjs/build/pdf.worker.mjs',\n },\n });\n\n await viewer.open(blob, { renderMode: 'slide' });\n return { dispose: () => viewer.destroy() };\n }\n\n private _toUniverWorkbook(workbook: ReturnType<typeof XLSX.read>, utils: typeof XLSX.utils): Partial<IWorkbookData> {\n const sheets: Record<string, Partial<IWorksheetData>> = {};\n const sheetOrder: string[] = [];\n\n workbook.SheetNames.forEach((sheetName, index) => {\n const sheet = workbook.Sheets[sheetName];\n if (!sheet) {\n return;\n }\n\n const rows = utils.sheet_to_json<unknown[]>(sheet, { header: 1, raw: true, defval: null });\n const sheetId = `sheet-${index}`;\n sheetOrder.push(sheetId);\n sheets[sheetId] = {\n id: sheetId,\n name: sheetName,\n rowCount: Math.max(rows.length + 10, 50),\n columnCount: Math.max(...rows.map(row => row.length), 10) + 5,\n cellData: this._toUniverCellData(rows),\n };\n });\n\n return {\n id: 'z-gallery-preview',\n appVersion: '0.25.1',\n name: workbook.Props?.Title ?? '',\n sheetOrder,\n sheets,\n };\n }\n\n private _toUniverCellData(rows: readonly unknown[][]): IWorksheetData['cellData'] {\n const cellData: Record<number, Record<number, ICellData>> = {};\n\n rows.forEach((row, rowIndex) => {\n row.forEach((value, columnIndex) => {\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n cellData[rowIndex] ??= {};\n cellData[rowIndex][columnIndex] = typeof value === 'number' ? { v: value } : { v: String(value) };\n });\n });\n\n return cellData;\n }\n\n private _observeDocxZoom(container: HTMLElement): ResizeObserver | null {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n\n const observer = new ResizeObserver(() => {\n const wrapper = container.querySelector<HTMLElement>('.docx-wrapper');\n const page = wrapper?.querySelector<HTMLElement>('.docx');\n if (!wrapper || !page) {\n return;\n }\n\n const availableWidth = container.clientWidth;\n const pageWidth = page.offsetWidth;\n const scale = pageWidth > 0 && availableWidth < pageWidth ? availableWidth / pageWidth : 1;\n wrapper.style.zoom = `${scale}`;\n });\n\n observer.observe(container);\n return observer;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|