@visactor/vtable-plugins 1.22.8-alpha.12 → 1.22.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/cjs/excel-edit-cell-keyboard.js +1 -0
  2. package/cjs/excel-edit-cell-keyboard.js.map +1 -1
  3. package/cjs/excel-import/excel.d.ts +23 -0
  4. package/cjs/excel-import/excel.js +204 -0
  5. package/cjs/excel-import/excel.js.map +1 -0
  6. package/cjs/excel-import/index.d.ts +3 -0
  7. package/cjs/excel-import/index.js +39 -0
  8. package/cjs/excel-import/index.js.map +1 -0
  9. package/cjs/excel-import/types.d.ts +44 -0
  10. package/cjs/excel-import/types.js +6 -0
  11. package/cjs/excel-import/types.js.map +1 -0
  12. package/cjs/excel-import/vtable-sheet.d.ts +2 -0
  13. package/cjs/excel-import/vtable-sheet.js +31 -0
  14. package/cjs/excel-import/vtable-sheet.js.map +1 -0
  15. package/cjs/excel-import.d.ts +12 -22
  16. package/cjs/excel-import.js +107 -40
  17. package/cjs/excel-import.js.map +1 -1
  18. package/cjs/filter/index.js +1 -2
  19. package/cjs/master-detail-plugin/checkbox.js +1 -0
  20. package/cjs/master-detail-plugin/index.js +1 -1
  21. package/cjs/master-detail-plugin/subtable.js +1 -1
  22. package/cjs/master-detail-plugin/table-api-extensions.js +1 -1
  23. package/cjs/master-detail-plugin/types.js +1 -1
  24. package/cjs/table-export/excel/index.d.ts +4 -0
  25. package/cjs/table-export/excel/index.js +72 -36
  26. package/cjs/table-export/excel/index.js.map +1 -1
  27. package/cjs/table-export/index.d.ts +2 -2
  28. package/cjs/table-export/index.js +6 -1
  29. package/cjs/table-export/index.js.map +1 -1
  30. package/cjs/table-export.js +4 -1
  31. package/cjs/table-export.js.map +1 -1
  32. package/cjs/table-series-number.js +2 -0
  33. package/cjs/table-series-number.js.map +1 -1
  34. package/dist/vtable-plugins.js +591 -120
  35. package/dist/vtable-plugins.min.js +3 -3
  36. package/es/excel-edit-cell-keyboard.js +1 -0
  37. package/es/excel-edit-cell-keyboard.js.map +1 -1
  38. package/es/excel-import/excel.d.ts +23 -0
  39. package/es/excel-import/excel.js +190 -0
  40. package/es/excel-import/excel.js.map +1 -0
  41. package/es/excel-import/index.d.ts +3 -0
  42. package/es/excel-import/index.js +4 -0
  43. package/es/excel-import/index.js.map +1 -0
  44. package/es/excel-import/types.d.ts +44 -0
  45. package/es/excel-import/types.js +2 -0
  46. package/es/excel-import/types.js.map +1 -0
  47. package/es/excel-import/vtable-sheet.d.ts +2 -0
  48. package/es/excel-import/vtable-sheet.js +25 -0
  49. package/es/excel-import/vtable-sheet.js.map +1 -0
  50. package/es/excel-import.d.ts +12 -22
  51. package/es/excel-import.js +110 -40
  52. package/es/excel-import.js.map +1 -1
  53. package/es/filter/index.js +1 -2
  54. package/es/master-detail-plugin/checkbox.js +2 -1
  55. package/es/master-detail-plugin/index.js +1 -1
  56. package/es/master-detail-plugin/subtable.js +1 -1
  57. package/es/master-detail-plugin/table-api-extensions.js +1 -1
  58. package/es/master-detail-plugin/types.js +1 -1
  59. package/es/table-export/excel/index.d.ts +4 -0
  60. package/es/table-export/excel/index.js +69 -33
  61. package/es/table-export/excel/index.js.map +1 -1
  62. package/es/table-export/index.d.ts +2 -2
  63. package/es/table-export/index.js +2 -2
  64. package/es/table-export/index.js.map +1 -1
  65. package/es/table-export.js +5 -2
  66. package/es/table-export.js.map +1 -1
  67. package/es/table-series-number.js +2 -0
  68. package/es/table-series-number.js.map +1 -1
  69. package/package.json +7 -7
@@ -50,21 +50,43 @@ function requestIdleCallbackPromise(options) {
50
50
 
51
51
  export function exportVTableToExcel(tableInstance, options, optimization = !1) {
52
52
  return __awaiter(this, void 0, void 0, (function*() {
53
- const workbook = new ExcelJS.Workbook, worksheet = workbook.addWorksheet("sheet1"), exportAllData = !!(null == options ? void 0 : options.exportAllData), {handleRowCount: handleRowCount, reset: reset} = handlePaginationExport(tableInstance, exportAllData), maxRow = handleRowCount(), maxCol = tableInstance.colCount - 1;
54
- worksheet.properties.defaultRowHeight = 40;
55
- const columns = [], mergeCells = [], mergeCellSet = new Set;
56
- let currentRow = 0;
57
- function processSlice(deadline) {
58
- return new Promise((resolve => __awaiter(this, void 0, void 0, (function*() {
53
+ const workbook = new ExcelJS.Workbook, worksheet = workbook.addWorksheet("sheet1");
54
+ yield renderTableToWorksheet(tableInstance, worksheet, workbook, options, optimization);
55
+ return yield workbook.xlsx.writeBuffer();
56
+ }));
57
+ }
58
+
59
+ export function exportMultipleVTablesToExcel(tables, options, optimization = !1) {
60
+ return __awaiter(this, void 0, void 0, (function*() {
61
+ const workbook = new ExcelJS.Workbook, usedWorksheetNames = new Set;
62
+ for (let i = 0; i < tables.length; i++) {
63
+ const {table: table, name: name} = tables[i], safeName = getUniqueWorksheetName(name || `sheet${i + 1}`, usedWorksheetNames);
64
+ usedWorksheetNames.add(safeName);
65
+ const worksheet = workbook.addWorksheet(safeName);
66
+ yield renderTableToWorksheet(table, worksheet, workbook, options, optimization);
67
+ }
68
+ return yield workbook.xlsx.writeBuffer();
69
+ }));
70
+ }
71
+
72
+ function renderTableToWorksheet(tableInstance, worksheet, workbook, options, optimization = !1) {
73
+ return __awaiter(this, void 0, void 0, (function*() {
74
+ const exportAllData = !!(null == options ? void 0 : options.exportAllData), {handleRowCount: handleRowCount, reset: reset} = handlePaginationExport(tableInstance, exportAllData);
75
+ try {
76
+ const minRow = 0, maxRow = handleRowCount(), minCol = 0, maxCol = tableInstance.colCount - 1;
77
+ worksheet.properties.defaultRowHeight = 40;
78
+ const columns = [], mergeCells = [], mergeCellSet = new Set, SLICE_SIZE = 100;
79
+ let currentRow = minRow;
80
+ const processSlice = deadline => __awaiter(this, void 0, void 0, (function*() {
59
81
  for (;currentRow <= maxRow && (!optimization || (null == deadline ? void 0 : deadline.timeRemaining()) > 0); ) {
60
- const endRow = Math.min(currentRow + 100 - 1, maxRow);
61
- for (let col = 0; col <= maxCol; col++) {
82
+ const endRow = Math.min(currentRow + SLICE_SIZE - 1, maxRow);
83
+ for (let col = minCol; col <= maxCol; col++) {
62
84
  const colWidth = tableInstance.getColWidth(col);
63
85
  void 0 === columns[col] && (columns[col] = {
64
86
  width: colWidth / 6
65
87
  });
66
88
  for (let row = currentRow; row <= endRow; row++) {
67
- if (0 === col) {
89
+ if (col === minCol) {
68
90
  const rowHeight = tableInstance.getRowHeight(row);
69
91
  worksheet.getRow(row + 1).height = rowHeight;
70
92
  }
@@ -78,35 +100,49 @@ export function exportVTableToExcel(tableInstance, options, optimization = !1) {
78
100
  }
79
101
  currentRow = endRow + 1;
80
102
  }
81
- if (currentRow > maxRow) resolve(); else {
82
- let nextDeadline;
83
- optimization && (nextDeadline = yield requestIdleCallbackPromise()), yield processSlice(nextDeadline),
84
- resolve();
103
+ if (currentRow <= maxRow) {
104
+ const nextDeadline = optimization ? yield requestIdleCallbackPromise() : void 0;
105
+ yield processSlice(nextDeadline);
85
106
  }
86
- }))));
107
+ }));
108
+ if (optimization) {
109
+ const deadline = yield requestIdleCallbackPromise();
110
+ yield processSlice(deadline);
111
+ } else yield processSlice();
112
+ worksheet.columns = columns, mergeCells.forEach((mergeCell => {
113
+ worksheet.mergeCells(mergeCell.start.row + 1, mergeCell.start.col + 1, mergeCell.end.row + 1, mergeCell.end.col + 1);
114
+ }));
115
+ const frozenView = [];
116
+ tableInstance.frozenRowCount > 0 && frozenView.push({
117
+ state: "frozen",
118
+ ySplit: tableInstance.frozenRowCount,
119
+ topLeftCell: encodeCellAddress(0, tableInstance.frozenRowCount)
120
+ }), tableInstance.frozenColCount > 0 && frozenView.push({
121
+ state: "frozen",
122
+ xSplit: tableInstance.frozenColCount,
123
+ topLeftCell: encodeCellAddress(tableInstance.frozenColCount, 0)
124
+ }), worksheet.views = frozenView, (null == options ? void 0 : options.excelJSWorksheetCallback) && options.excelJSWorksheetCallback(worksheet);
125
+ } finally {
126
+ reset();
87
127
  }
88
- yield new Promise((resolve => __awaiter(this, void 0, void 0, (function*() {
89
- let deadline;
90
- optimization && (deadline = yield requestIdleCallbackPromise()), yield processSlice(deadline),
91
- resolve();
92
- })))), worksheet.columns = columns, mergeCells.forEach((mergeCell => {
93
- worksheet.mergeCells(mergeCell.start.row + 1, mergeCell.start.col + 1, mergeCell.end.row + 1, mergeCell.end.col + 1);
94
- }));
95
- const frozenView = [];
96
- tableInstance.frozenRowCount > 0 && frozenView.push({
97
- state: "frozen",
98
- ySplit: tableInstance.frozenRowCount,
99
- topLeftCell: encodeCellAddress(0, tableInstance.frozenRowCount)
100
- }), tableInstance.frozenColCount > 0 && frozenView.push({
101
- state: "frozen",
102
- xSplit: tableInstance.frozenColCount,
103
- topLeftCell: encodeCellAddress(tableInstance.frozenColCount, 0)
104
- }), worksheet.views = frozenView, (null == options ? void 0 : options.excelJSWorksheetCallback) && options.excelJSWorksheetCallback(worksheet);
105
- const buffer = yield workbook.xlsx.writeBuffer();
106
- return reset(), buffer;
107
128
  }));
108
129
  }
109
130
 
131
+ function getUniqueWorksheetName(rawName, used) {
132
+ const cleanedBase = sanitizeWorksheetName(rawName) || "sheet";
133
+ if (!used.has(cleanedBase)) return cleanedBase;
134
+ for (let n = 2; n < 1e4; n++) {
135
+ const suffix = `-${n}`, baseMax = 31 - suffix.length, candidate = `${cleanedBase.length > baseMax ? cleanedBase.slice(0, baseMax) : cleanedBase}${suffix}`;
136
+ if (!used.has(candidate)) return candidate;
137
+ }
138
+ return `${cleanedBase.slice(0, 25)}-${Date.now().toString().slice(-5)}`;
139
+ }
140
+
141
+ function sanitizeWorksheetName(name) {
142
+ const nonEmpty = (null != name ? name : "").toString().trim().replace(/[:\\\/\?\*\[\]]/g, " ").replace(/\s+/g, " ").trim() || "sheet";
143
+ return nonEmpty.length > 31 ? nonEmpty.slice(0, 31) : nonEmpty;
144
+ }
145
+
110
146
  function addCell(col, row, tableInstance, worksheet, workbook, options) {
111
147
  var _a;
112
148
  return __awaiter(this, void 0, void 0, (function*() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/table-export/excel/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import ExcelJS from 'exceljs';\nimport { encodeCellAddress } from '../util/encode';\nimport type { CellType, IVTable } from '../util/type';\nimport { getCellAlignment, getCellBorder, getCellFill, getCellFont } from './style';\nimport { updateCell, renderChart, graphicUtil } from '@visactor/vtable';\nimport { isArray, isFunction } from '@visactor/vutils';\nimport type {\n BaseTableAPI,\n CellRange,\n ColumnDefine,\n IRowSeriesNumber,\n LinkColumnDefine\n} from '@visactor/vtable/es/ts-types';\nimport { getHierarchyOffset } from '../util/indent';\nimport { isPromise } from '../util/promise';\nimport { handlePaginationExport } from '../util/pagination';\n\nexport type CellInfo = {\n cellType: string;\n cellValue: string;\n table: IVTable;\n col: number;\n row: number;\n};\n\nexport type SkipImageExportCellType =\n | 'image'\n | 'video'\n | 'progressbar'\n | 'sparkline'\n | 'chart'\n | 'custom'\n | 'textWithIcon';\n\nexport type ExportVTableToExcelOptions = {\n ignoreIcon?: boolean;\n exportAllData?: boolean;\n formatExportOutput?: (cellInfo: CellInfo) => string | undefined;\n formatExcelJSCell?: (cellInfo: CellInfo, cellInExcelJS: ExcelJS.Cell) => ExcelJS.Cell;\n excelJSWorksheetCallback?: (worksheet: ExcelJS.Worksheet) => void;\n skipImageExportCellType?: SkipImageExportCellType[];\n downloadFile?: boolean;\n fileName?: string;\n};\n\nfunction requestIdleCallbackPromise(options?: IdleRequestOptions) {\n return new Promise<IdleDeadline>(resolve => {\n requestIdleCallback(deadline => {\n resolve(deadline);\n }, options);\n });\n}\n\nexport async function exportVTableToExcel(\n tableInstance: IVTable,\n options?: ExportVTableToExcelOptions,\n optimization = false\n) {\n const workbook = new ExcelJS.Workbook();\n const worksheet = workbook.addWorksheet('sheet1');\n const exportAllData = !!options?.exportAllData;\n const { handleRowCount, reset } = handlePaginationExport(tableInstance, exportAllData);\n const minRow = 0;\n const maxRow = handleRowCount();\n const minCol = 0;\n const maxCol = tableInstance.colCount - 1;\n worksheet.properties.defaultRowHeight = 40;\n const columns: { width: number }[] = [];\n const mergeCells: CellRange[] = [];\n const mergeCellSet = new Set();\n\n const SLICE_SIZE = 100;\n let currentRow = minRow;\n\n function processSlice(deadline?: IdleDeadline) {\n return new Promise<void>(async resolve => {\n while (currentRow <= maxRow && (!optimization || deadline?.timeRemaining() > 0)) {\n const endRow = Math.min(currentRow + SLICE_SIZE - 1, maxRow);\n for (let col = minCol; col <= maxCol; col++) {\n const colWidth = tableInstance.getColWidth(col);\n if (columns[col] === undefined) {\n columns[col] = { width: colWidth / 6 };\n }\n for (let row = currentRow; row <= endRow; row++) {\n if (col === minCol) {\n const rowHeight = tableInstance.getRowHeight(row);\n const worksheetRow = worksheet.getRow(row + 1);\n // worksheetRow.height = rowHeight * 0.75;\n worksheetRow.height = rowHeight;\n }\n\n await addCell(col, row, tableInstance, worksheet, workbook, options);\n\n const cellRange = tableInstance.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n const key = `${cellRange.start.col},${cellRange.start.row}:${cellRange.end.col},${cellRange.end.row}`;\n if (!mergeCellSet.has(key)) {\n mergeCellSet.add(key);\n mergeCells.push(cellRange);\n }\n }\n }\n }\n currentRow = endRow + 1;\n }\n\n if (currentRow > maxRow) {\n resolve();\n } else {\n let nextDeadline: IdleDeadline | undefined;\n if (optimization) {\n nextDeadline = await requestIdleCallbackPromise();\n }\n await processSlice(nextDeadline);\n resolve();\n }\n });\n }\n\n await new Promise<void>(async resolve => {\n let deadline: IdleDeadline | undefined;\n if (optimization) {\n deadline = await requestIdleCallbackPromise();\n }\n await processSlice(deadline);\n resolve();\n });\n\n worksheet.columns = columns;\n mergeCells.forEach(mergeCell => {\n worksheet.mergeCells(\n mergeCell.start.row + 1,\n mergeCell.start.col + 1,\n mergeCell.end.row + 1,\n mergeCell.end.col + 1\n );\n });\n\n // frozen\n const frozenView: ExcelJS.WorksheetViewFrozen[] = [];\n // top frozen\n if (tableInstance.frozenRowCount > 0) {\n frozenView.push({\n state: 'frozen',\n ySplit: tableInstance.frozenRowCount,\n // activeCell: 'A1',\n topLeftCell: encodeCellAddress(0, tableInstance.frozenRowCount)\n });\n }\n // left frozen\n if (tableInstance.frozenColCount > 0) {\n frozenView.push({\n state: 'frozen',\n xSplit: tableInstance.frozenColCount,\n // activeCell: 'A1',\n topLeftCell: encodeCellAddress(tableInstance.frozenColCount, 0)\n });\n }\n // not support bottom&right frozen\n worksheet.views = frozenView;\n\n if (options?.excelJSWorksheetCallback) {\n options.excelJSWorksheetCallback(worksheet);\n }\n\n const buffer = await workbook.xlsx.writeBuffer();\n // 恢复透视表的pagination配置\n reset();\n return buffer;\n}\n\nasync function addCell(\n col: number,\n row: number,\n tableInstance: IVTable,\n worksheet: ExcelJS.Worksheet,\n workbook: ExcelJS.Workbook,\n options?: ExportVTableToExcelOptions\n) {\n const { layoutMap } = tableInstance.internalProps;\n const cellType = tableInstance.getCellType(col, row);\n const rawRecord = tableInstance.getCellRawRecord(col, row);\n let cellValue = (rawRecord && rawRecord.vtableMergeName) ?? tableInstance.getCellValue(col, row, false);\n if (isPromise(cellValue)) {\n cellValue = await cellValue;\n }\n\n const cellStyle = tableInstance.getCellStyle(col, row);\n\n const cellLocation = tableInstance.getCellLocation(col, row);\n const define =\n cellLocation !== 'body' ? tableInstance.getHeaderDefine(col, row) : tableInstance.getBodyColumnDefine(col, row);\n const mayHaveIcon =\n cellLocation !== 'body'\n ? true\n : (define as IRowSeriesNumber)?.dragOrder || !!define?.icon || !!(define as ColumnDefine)?.tree;\n let icons;\n if (mayHaveIcon) {\n icons = tableInstance.getCellIcons(col, row);\n }\n let customRender;\n let customLayout;\n if (cellLocation !== 'body') {\n customRender = (define as ColumnDefine)?.headerCustomRender;\n customLayout = (define as ColumnDefine)?.headerCustomLayout;\n } else {\n customRender = (define as ColumnDefine)?.customRender || tableInstance.customRender;\n customLayout = (define as ColumnDefine)?.customLayout;\n }\n\n if (options?.formatExportOutput) {\n const cellInfo = { cellType, cellValue, table: tableInstance, col, row };\n const formattedValue = options.formatExportOutput(cellInfo);\n if (formattedValue !== undefined) {\n let cell = worksheet.getCell(encodeCellAddress(col, row));\n cell.value = formattedValue;\n cell.font = getCellFont(cellStyle, cellType);\n cell.fill = getCellFill(cellStyle);\n cell.border = getCellBorder(cellStyle);\n const offset = getHierarchyOffset(col, row, tableInstance as any);\n cell.alignment = getCellAlignment(cellStyle, Math.ceil(offset / cell.font.size));\n\n if (cell && options?.formatExcelJSCell) {\n const formatedCell = options.formatExcelJSCell({ cellType, cellValue, table: tableInstance, col, row }, cell);\n if (formatedCell) {\n cell = formatedCell;\n }\n }\n return cell;\n }\n }\n\n let cell;\n if (\n cellType === 'image' ||\n cellType === 'video' ||\n cellType === 'progressbar' ||\n cellType === 'sparkline' ||\n layoutMap.isAxisCell(col, row) ||\n (!options?.ignoreIcon && isArray(icons) && icons.length) ||\n customRender ||\n customLayout\n ) {\n if (\n !needCellImageExport(\n cellType,\n layoutMap.isAxisCell(col, row),\n !!customRender || !!customLayout,\n !!(!options?.ignoreIcon && isArray(icons) && icons.length),\n options\n )\n ) {\n cell = worksheet.getCell(encodeCellAddress(col, row));\n } else {\n const cellImageBase64 = exportCellImg(col, row, tableInstance);\n const imageId = workbook.addImage({\n base64: cellImageBase64,\n extension: 'png'\n });\n worksheet.addImage(imageId, {\n tl: { col: col + 1 / 80, row: row + 1 / 120 } as any, // ~1px\n br: { col: col + 1, row: row + 1 } as any,\n editAs: 'oneCell'\n // ext: { width: tableInstance.getColWidth(col), height: tableInstance.getRowHeight(row) }\n });\n }\n } else if (cellType === 'text' || cellType === 'link') {\n cell = worksheet.getCell(encodeCellAddress(col, row));\n let linkUrl: string;\n if (cellType === 'link') {\n const templateLink = (define as LinkColumnDefine).templateLink;\n if (templateLink) {\n // 如果有模板链接,使用模板\n const rowData = tableInstance.getCellOriginRecord(col, row);\n if (rowData && rowData.vtableMerge) {\n // group title\n // return;\n } else {\n const cellOriginValue = tableInstance.getCellOriginValue(col, row);\n const data = Object.assign(\n {\n __value: cellValue,\n __dataValue: cellOriginValue\n },\n rowData\n );\n if (isFunction(templateLink)) {\n linkUrl = templateLink(data, col, row, tableInstance as BaseTableAPI);\n } else {\n const re = /\\{\\s*(\\S+?)\\s*\\}/g;\n linkUrl = templateLink.replace(re, (matchs: string, key: string) => {\n matchs;\n return (data as any)[key];\n });\n }\n }\n }\n }\n cell.value = getCellValue(cellValue, cellType, linkUrl);\n cell.font = getCellFont(cellStyle, cellType);\n cell.fill = getCellFill(cellStyle);\n cell.border = getCellBorder(cellStyle);\n const offset = getHierarchyOffset(col, row, tableInstance as any);\n cell.alignment = getCellAlignment(cellStyle, Math.ceil(offset / cell.font.size));\n } else if (cellType === 'chart') {\n if (!needCellImageExport('chart', false, false, false, options)) {\n cell = worksheet.getCell(encodeCellAddress(col, row));\n } else {\n const cellGroup = tableInstance.scenegraph.getCell(col, row);\n renderChart(cellGroup.firstChild as any); // render chart first\n const cellImageBase64 = exportCellImg(col, row, tableInstance);\n const imageId = workbook.addImage({\n base64: cellImageBase64,\n extension: 'png'\n });\n worksheet.addImage(imageId, {\n tl: { col: col + 1 / 80, row: row + 1 / 120 } as any, // ~1px\n br: { col: col + 1, row: row + 1 } as any,\n editAs: 'oneCell'\n // ext: { width: tableInstance.getColWidth(col), height: tableInstance.getRowHeight(row) }\n });\n tableInstance.scenegraph.updateNextFrame(); // rerender chart to avoid display error\n }\n }\n\n if (cell && options?.formatExcelJSCell) {\n const formatedCell = options.formatExcelJSCell({ cellType, cellValue, table: tableInstance, col, row }, cell);\n if (formatedCell) {\n cell = formatedCell;\n }\n }\n return cell;\n}\n\nfunction getCellValue(cellValue: string, cellType: CellType, linkUrl?: string) {\n if (cellType === 'link') {\n return {\n text: cellValue,\n hyperlink: linkUrl || cellValue,\n tooltip: cellValue\n };\n }\n return cellValue;\n}\n\nfunction exportCellImg(col: number, row: number, tableInstance: IVTable) {\n let cellGroup = tableInstance.scenegraph.getCell(col, row);\n let needRemove = false;\n if (cellGroup.role === 'empty') {\n cellGroup = updateCell(col, row, tableInstance as any, true);\n cellGroup.setStage(tableInstance.scenegraph.stage);\n needRemove = true;\n\n // fix dirtyBounds auto update error in drawGraphicToCanvas()\n cellGroup.stage.dirtyBounds.set(-Infinity, -Infinity, Infinity, Infinity);\n }\n const oldStroke = cellGroup.attribute.stroke;\n cellGroup.attribute.stroke = false;\n const canvas = graphicUtil.drawGraphicToCanvas(cellGroup as any, tableInstance.scenegraph.stage) as HTMLCanvasElement;\n cellGroup.attribute.stroke = oldStroke;\n if (needRemove) {\n cellGroup.parent?.removeChild(cellGroup);\n }\n return canvas.toDataURL();\n}\n\nfunction needCellImageExport(\n cellType: CellType,\n isAxisCell: boolean,\n isCustomCell: boolean,\n isTextWithIcon: boolean,\n options?: ExportVTableToExcelOptions\n) {\n if (!options?.skipImageExportCellType) {\n return true;\n }\n\n if (\n cellType === 'image' ||\n cellType === 'video' ||\n cellType === 'progressbar' ||\n cellType === 'sparkline' ||\n cellType === 'chart'\n ) {\n return !options.skipImageExportCellType.includes(cellType);\n } else if (isAxisCell) {\n return !options.skipImageExportCellType.includes('chart');\n } else if (isCustomCell) {\n return !options.skipImageExportCellType.includes('custom');\n } else if (isTextWithIcon) {\n return !options.skipImageExportCellType.includes('textWithIcon');\n }\n return true;\n}\n"]}
1
+ {"version":3,"sources":["../src/table-export/excel/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import ExcelJS from 'exceljs';\nimport { encodeCellAddress } from '../util/encode';\nimport type { CellType, IVTable } from '../util/type';\nimport { getCellAlignment, getCellBorder, getCellFill, getCellFont } from './style';\nimport { updateCell, renderChart, graphicUtil } from '@visactor/vtable';\nimport { isArray, isFunction } from '@visactor/vutils';\nimport type {\n BaseTableAPI,\n CellRange,\n ColumnDefine,\n IRowSeriesNumber,\n LinkColumnDefine\n} from '@visactor/vtable/es/ts-types';\nimport { getHierarchyOffset } from '../util/indent';\nimport { isPromise } from '../util/promise';\nimport { handlePaginationExport } from '../util/pagination';\n\nexport type CellInfo = {\n cellType: string;\n cellValue: string;\n table: IVTable;\n col: number;\n row: number;\n};\n\nexport type SkipImageExportCellType =\n | 'image'\n | 'video'\n | 'progressbar'\n | 'sparkline'\n | 'chart'\n | 'custom'\n | 'textWithIcon';\n\nexport type ExportVTableToExcelOptions = {\n ignoreIcon?: boolean;\n exportAllData?: boolean;\n formatExportOutput?: (cellInfo: CellInfo) => string | undefined;\n formatExcelJSCell?: (cellInfo: CellInfo, cellInExcelJS: ExcelJS.Cell) => ExcelJS.Cell;\n excelJSWorksheetCallback?: (worksheet: ExcelJS.Worksheet) => void;\n skipImageExportCellType?: SkipImageExportCellType[];\n downloadFile?: boolean;\n fileName?: string;\n};\n\nfunction requestIdleCallbackPromise(options?: IdleRequestOptions) {\n return new Promise<IdleDeadline>(resolve => {\n requestIdleCallback(deadline => {\n resolve(deadline);\n }, options);\n });\n}\n\nexport async function exportVTableToExcel(\n tableInstance: IVTable,\n options?: ExportVTableToExcelOptions,\n optimization = false\n) {\n const workbook = new ExcelJS.Workbook();\n const worksheet = workbook.addWorksheet('sheet1');\n await renderTableToWorksheet(tableInstance, worksheet, workbook, options, optimization);\n const buffer = await workbook.xlsx.writeBuffer();\n return buffer;\n}\n\nexport async function exportMultipleVTablesToExcel(\n tables: Array<{ table: IVTable; name?: string }>,\n options?: ExportVTableToExcelOptions,\n optimization = false\n) {\n const workbook = new ExcelJS.Workbook();\n const usedWorksheetNames = new Set<string>();\n for (let i = 0; i < tables.length; i++) {\n const { table, name } = tables[i];\n const safeName = getUniqueWorksheetName(name || `sheet${i + 1}`, usedWorksheetNames);\n usedWorksheetNames.add(safeName);\n const worksheet = workbook.addWorksheet(safeName);\n await renderTableToWorksheet(table, worksheet, workbook, options, optimization);\n }\n const buffer = await workbook.xlsx.writeBuffer();\n return buffer;\n}\n\nasync function renderTableToWorksheet(\n tableInstance: IVTable,\n worksheet: ExcelJS.Worksheet,\n workbook: ExcelJS.Workbook,\n options?: ExportVTableToExcelOptions,\n optimization = false\n): Promise<void> {\n const exportAllData = !!options?.exportAllData;\n const { handleRowCount, reset } = handlePaginationExport(tableInstance, exportAllData);\n try {\n const minRow = 0;\n const maxRow = handleRowCount();\n const minCol = 0;\n const maxCol = tableInstance.colCount - 1;\n\n worksheet.properties.defaultRowHeight = 40;\n const columns: { width: number }[] = [];\n const mergeCells: CellRange[] = [];\n const mergeCellSet = new Set<string>();\n\n const SLICE_SIZE = 100;\n let currentRow = minRow;\n\n const processSlice = async (deadline?: IdleDeadline): Promise<void> => {\n while (currentRow <= maxRow && (!optimization || deadline?.timeRemaining() > 0)) {\n const endRow = Math.min(currentRow + SLICE_SIZE - 1, maxRow);\n for (let col = minCol; col <= maxCol; col++) {\n const colWidth = tableInstance.getColWidth(col);\n if (columns[col] === undefined) {\n columns[col] = { width: colWidth / 6 };\n }\n for (let row = currentRow; row <= endRow; row++) {\n if (col === minCol) {\n const rowHeight = tableInstance.getRowHeight(row);\n const worksheetRow = worksheet.getRow(row + 1);\n worksheetRow.height = rowHeight;\n }\n\n await addCell(col, row, tableInstance, worksheet, workbook, options);\n\n const cellRange = tableInstance.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n const key = `${cellRange.start.col},${cellRange.start.row}:${cellRange.end.col},${cellRange.end.row}`;\n if (!mergeCellSet.has(key)) {\n mergeCellSet.add(key);\n mergeCells.push(cellRange);\n }\n }\n }\n }\n currentRow = endRow + 1;\n }\n\n if (currentRow <= maxRow) {\n const nextDeadline = optimization ? await requestIdleCallbackPromise() : undefined;\n await processSlice(nextDeadline);\n }\n };\n\n if (optimization) {\n const deadline = await requestIdleCallbackPromise();\n await processSlice(deadline);\n } else {\n await processSlice();\n }\n\n worksheet.columns = columns;\n mergeCells.forEach(mergeCell => {\n worksheet.mergeCells(\n mergeCell.start.row + 1,\n mergeCell.start.col + 1,\n mergeCell.end.row + 1,\n mergeCell.end.col + 1\n );\n });\n\n const frozenView: ExcelJS.WorksheetViewFrozen[] = [];\n if (tableInstance.frozenRowCount > 0) {\n frozenView.push({\n state: 'frozen',\n ySplit: tableInstance.frozenRowCount,\n topLeftCell: encodeCellAddress(0, tableInstance.frozenRowCount)\n });\n }\n if (tableInstance.frozenColCount > 0) {\n frozenView.push({\n state: 'frozen',\n xSplit: tableInstance.frozenColCount,\n topLeftCell: encodeCellAddress(tableInstance.frozenColCount, 0)\n });\n }\n worksheet.views = frozenView;\n\n if (options?.excelJSWorksheetCallback) {\n options.excelJSWorksheetCallback(worksheet);\n }\n } finally {\n // 恢复透视表的pagination配置\n reset();\n }\n}\n\nfunction getUniqueWorksheetName(rawName: string, used: Set<string>) {\n // Excel sheet name constraints:\n // - max 31 chars\n // - cannot contain: : \\ / ? * [ ]\n // - cannot be empty\n // ExcelJS will throw on invalid/duplicate names, so we guard here.\n const cleanedBase = sanitizeWorksheetName(rawName) || 'sheet';\n if (!used.has(cleanedBase)) {\n return cleanedBase;\n }\n for (let n = 2; n < 10000; n++) {\n const suffix = `-${n}`;\n const baseMax = 31 - suffix.length;\n const base = cleanedBase.length > baseMax ? cleanedBase.slice(0, baseMax) : cleanedBase;\n const candidate = `${base}${suffix}`;\n if (!used.has(candidate)) {\n return candidate;\n }\n }\n // Fallback: extremely unlikely; still ensure non-empty + <=31\n return `${cleanedBase.slice(0, 31 - 6)}-${Date.now().toString().slice(-5)}`;\n}\n\nfunction sanitizeWorksheetName(name: string) {\n const trimmed = (name ?? '').toString().trim();\n // Replace invalid characters with space, then collapse spaces.\n const noInvalidChars = trimmed\n .replace(/[:\\\\\\/\\?\\*\\[\\]]/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n // Excel doesn't allow empty names\n const nonEmpty = noInvalidChars || 'sheet';\n // Excel max length is 31\n return nonEmpty.length > 31 ? nonEmpty.slice(0, 31) : nonEmpty;\n}\n\nasync function addCell(\n col: number,\n row: number,\n tableInstance: IVTable,\n worksheet: ExcelJS.Worksheet,\n workbook: ExcelJS.Workbook,\n options?: ExportVTableToExcelOptions\n) {\n const { layoutMap } = tableInstance.internalProps;\n const cellType = tableInstance.getCellType(col, row);\n const rawRecord = tableInstance.getCellRawRecord(col, row);\n let cellValue = (rawRecord && rawRecord.vtableMergeName) ?? tableInstance.getCellValue(col, row, false);\n if (isPromise(cellValue)) {\n cellValue = await cellValue;\n }\n\n const cellStyle = tableInstance.getCellStyle(col, row);\n\n const cellLocation = tableInstance.getCellLocation(col, row);\n const define =\n cellLocation !== 'body' ? tableInstance.getHeaderDefine(col, row) : tableInstance.getBodyColumnDefine(col, row);\n const mayHaveIcon =\n cellLocation !== 'body'\n ? true\n : (define as IRowSeriesNumber)?.dragOrder || !!define?.icon || !!(define as ColumnDefine)?.tree;\n let icons;\n if (mayHaveIcon) {\n icons = tableInstance.getCellIcons(col, row);\n }\n let customRender;\n let customLayout;\n if (cellLocation !== 'body') {\n customRender = (define as ColumnDefine)?.headerCustomRender;\n customLayout = (define as ColumnDefine)?.headerCustomLayout;\n } else {\n customRender = (define as ColumnDefine)?.customRender || tableInstance.customRender;\n customLayout = (define as ColumnDefine)?.customLayout;\n }\n\n if (options?.formatExportOutput) {\n const cellInfo = { cellType, cellValue, table: tableInstance, col, row };\n const formattedValue = options.formatExportOutput(cellInfo);\n if (formattedValue !== undefined) {\n let cell = worksheet.getCell(encodeCellAddress(col, row));\n cell.value = formattedValue;\n cell.font = getCellFont(cellStyle, cellType);\n cell.fill = getCellFill(cellStyle);\n cell.border = getCellBorder(cellStyle);\n const offset = getHierarchyOffset(col, row, tableInstance as any);\n cell.alignment = getCellAlignment(cellStyle, Math.ceil(offset / cell.font.size));\n\n if (cell && options?.formatExcelJSCell) {\n const formatedCell = options.formatExcelJSCell({ cellType, cellValue, table: tableInstance, col, row }, cell);\n if (formatedCell) {\n cell = formatedCell;\n }\n }\n return cell;\n }\n }\n\n let cell;\n if (\n cellType === 'image' ||\n cellType === 'video' ||\n cellType === 'progressbar' ||\n cellType === 'sparkline' ||\n layoutMap.isAxisCell(col, row) ||\n (!options?.ignoreIcon && isArray(icons) && icons.length) ||\n customRender ||\n customLayout\n ) {\n if (\n !needCellImageExport(\n cellType,\n layoutMap.isAxisCell(col, row),\n !!customRender || !!customLayout,\n !!(!options?.ignoreIcon && isArray(icons) && icons.length),\n options\n )\n ) {\n cell = worksheet.getCell(encodeCellAddress(col, row));\n } else {\n const cellImageBase64 = exportCellImg(col, row, tableInstance);\n const imageId = workbook.addImage({\n base64: cellImageBase64,\n extension: 'png'\n });\n worksheet.addImage(imageId, {\n tl: { col: col + 1 / 80, row: row + 1 / 120 } as any, // ~1px\n br: { col: col + 1, row: row + 1 } as any,\n editAs: 'oneCell'\n // ext: { width: tableInstance.getColWidth(col), height: tableInstance.getRowHeight(row) }\n });\n }\n } else if (cellType === 'text' || cellType === 'link') {\n cell = worksheet.getCell(encodeCellAddress(col, row));\n let linkUrl: string;\n if (cellType === 'link') {\n const templateLink = (define as LinkColumnDefine).templateLink;\n if (templateLink) {\n // 如果有模板链接,使用模板\n const rowData = tableInstance.getCellOriginRecord(col, row);\n if (rowData && rowData.vtableMerge) {\n // group title\n // return;\n } else {\n const cellOriginValue = tableInstance.getCellOriginValue(col, row);\n const data = Object.assign(\n {\n __value: cellValue,\n __dataValue: cellOriginValue\n },\n rowData\n );\n if (isFunction(templateLink)) {\n linkUrl = templateLink(data, col, row, tableInstance as BaseTableAPI);\n } else {\n const re = /\\{\\s*(\\S+?)\\s*\\}/g;\n linkUrl = templateLink.replace(re, (matchs: string, key: string) => {\n matchs;\n return (data as any)[key];\n });\n }\n }\n }\n }\n cell.value = getCellValue(cellValue, cellType, linkUrl);\n cell.font = getCellFont(cellStyle, cellType);\n cell.fill = getCellFill(cellStyle);\n cell.border = getCellBorder(cellStyle);\n const offset = getHierarchyOffset(col, row, tableInstance as any);\n cell.alignment = getCellAlignment(cellStyle, Math.ceil(offset / cell.font.size));\n } else if (cellType === 'chart') {\n if (!needCellImageExport('chart', false, false, false, options)) {\n cell = worksheet.getCell(encodeCellAddress(col, row));\n } else {\n const cellGroup = tableInstance.scenegraph.getCell(col, row);\n renderChart(cellGroup.firstChild as any); // render chart first\n const cellImageBase64 = exportCellImg(col, row, tableInstance);\n const imageId = workbook.addImage({\n base64: cellImageBase64,\n extension: 'png'\n });\n worksheet.addImage(imageId, {\n tl: { col: col + 1 / 80, row: row + 1 / 120 } as any, // ~1px\n br: { col: col + 1, row: row + 1 } as any,\n editAs: 'oneCell'\n // ext: { width: tableInstance.getColWidth(col), height: tableInstance.getRowHeight(row) }\n });\n tableInstance.scenegraph.updateNextFrame(); // rerender chart to avoid display error\n }\n }\n\n if (cell && options?.formatExcelJSCell) {\n const formatedCell = options.formatExcelJSCell({ cellType, cellValue, table: tableInstance, col, row }, cell);\n if (formatedCell) {\n cell = formatedCell;\n }\n }\n return cell;\n}\n\nfunction getCellValue(cellValue: string, cellType: CellType, linkUrl?: string) {\n if (cellType === 'link') {\n return {\n text: cellValue,\n hyperlink: linkUrl || cellValue,\n tooltip: cellValue\n };\n }\n return cellValue;\n}\n\nfunction exportCellImg(col: number, row: number, tableInstance: IVTable) {\n let cellGroup = tableInstance.scenegraph.getCell(col, row);\n let needRemove = false;\n if (cellGroup.role === 'empty') {\n cellGroup = updateCell(col, row, tableInstance as any, true);\n cellGroup.setStage(tableInstance.scenegraph.stage);\n needRemove = true;\n\n // fix dirtyBounds auto update error in drawGraphicToCanvas()\n cellGroup.stage.dirtyBounds.set(-Infinity, -Infinity, Infinity, Infinity);\n }\n const oldStroke = cellGroup.attribute.stroke;\n cellGroup.attribute.stroke = false;\n const canvas = graphicUtil.drawGraphicToCanvas(cellGroup as any, tableInstance.scenegraph.stage) as HTMLCanvasElement;\n cellGroup.attribute.stroke = oldStroke;\n if (needRemove) {\n cellGroup.parent?.removeChild(cellGroup);\n }\n return canvas.toDataURL();\n}\n\nfunction needCellImageExport(\n cellType: CellType,\n isAxisCell: boolean,\n isCustomCell: boolean,\n isTextWithIcon: boolean,\n options?: ExportVTableToExcelOptions\n) {\n if (!options?.skipImageExportCellType) {\n return true;\n }\n\n if (\n cellType === 'image' ||\n cellType === 'video' ||\n cellType === 'progressbar' ||\n cellType === 'sparkline' ||\n cellType === 'chart'\n ) {\n return !options.skipImageExportCellType.includes(cellType);\n } else if (isAxisCell) {\n return !options.skipImageExportCellType.includes('chart');\n } else if (isCustomCell) {\n return !options.skipImageExportCellType.includes('custom');\n } else if (isTextWithIcon) {\n return !options.skipImageExportCellType.includes('textWithIcon');\n }\n return true;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { ExportVTableToExcelOptions } from './excel';
2
- import { exportVTableToExcel } from './excel';
2
+ import { exportVTableToExcel, exportMultipleVTablesToExcel } from './excel';
3
3
  import type { ExportVTableToCsvOptions } from './csv';
4
4
  import { exportVTableToCsv } from './csv';
5
5
  import { downloadCsv, downloadExcel } from './util/download';
6
- export { exportVTableToCsv, downloadCsv, exportVTableToExcel, downloadExcel };
6
+ export { exportVTableToCsv, downloadCsv, exportVTableToExcel, exportMultipleVTablesToExcel, downloadExcel };
7
7
  export type { ExportVTableToCsvOptions, ExportVTableToExcelOptions };
@@ -1,8 +1,8 @@
1
- import { exportVTableToExcel } from "./excel";
1
+ import { exportVTableToExcel, exportMultipleVTablesToExcel } from "./excel";
2
2
 
3
3
  import { exportVTableToCsv } from "./csv";
4
4
 
5
5
  import { downloadCsv, downloadExcel } from "./util/download";
6
6
 
7
- export { exportVTableToCsv, downloadCsv, exportVTableToExcel, downloadExcel };
7
+ export { exportVTableToCsv, downloadCsv, exportVTableToExcel, exportMultipleVTablesToExcel, downloadExcel };
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/table-export/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC","file":"index.js","sourcesContent":["import type { ExportVTableToExcelOptions } from './excel';\nimport { exportVTableToExcel } from './excel';\nimport type { ExportVTableToCsvOptions } from './csv';\nimport { exportVTableToCsv } from './csv';\nimport { downloadCsv, downloadExcel } from './util/download';\n\nexport { exportVTableToCsv, downloadCsv, exportVTableToExcel, downloadExcel };\nexport type { ExportVTableToCsvOptions, ExportVTableToExcelOptions };\n"]}
1
+ {"version":3,"sources":["../src/table-export/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,aAAa,EAAE,CAAC","file":"index.js","sourcesContent":["import type { ExportVTableToExcelOptions } from './excel';\nimport { exportVTableToExcel, exportMultipleVTablesToExcel } from './excel';\nimport type { ExportVTableToCsvOptions } from './csv';\nimport { exportVTableToCsv } from './csv';\nimport { downloadCsv, downloadExcel } from './util/download';\n\nexport { exportVTableToCsv, downloadCsv, exportVTableToExcel, exportMultipleVTablesToExcel, downloadExcel };\nexport type { ExportVTableToCsvOptions, ExportVTableToExcelOptions };\n"]}
@@ -26,7 +26,7 @@ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, gener
26
26
 
27
27
  import { TABLE_EVENT_TYPE } from "@visactor/vtable";
28
28
 
29
- import { exportVTableToCsv, exportVTableToExcel, downloadCsv, downloadExcel } from "./table-export/index";
29
+ import { exportVTableToCsv, exportVTableToExcel, downloadCsv, downloadExcel, exportMultipleVTablesToExcel } from "./table-export/index";
30
30
 
31
31
  export class TableExportPlugin {
32
32
  constructor(pluginOptions) {
@@ -52,7 +52,10 @@ export class TableExportPlugin {
52
52
  }, this.table.exportToExcel = () => __awaiter(this, void 0, void 0, (function*() {
53
53
  const options = this.pluginOptions.exportExcelOptions;
54
54
  return options.downloadFile ? yield downloadExcel(yield exportVTableToExcel(this.table, options, this.pluginOptions.exportOnIdle), options.fileName || "export") : exportVTableToExcel(this.table, options, this.pluginOptions.exportOnIdle);
55
- }));
55
+ })), this.table.__vtableSheet && (this.table.__vtableSheet._exportMutipleTablesToExcel || (this.table.__vtableSheet._exportMutipleTablesToExcel = tables => __awaiter(this, void 0, void 0, (function*() {
56
+ const buffer = yield exportMultipleVTablesToExcel(tables, this.pluginOptions.exportExcelOptions);
57
+ yield downloadExcel(buffer, this.pluginOptions.exportExcelOptions.fileName || "vtable-sheet-export");
58
+ }))));
56
59
  }
57
60
  }
58
61
  release() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/table-export.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoB1G,MAAM,OAAO,iBAAiB;IAM5B,YAAY,aAAuC;QALnD,OAAE,GAAG,qBAAqB,CAAC;QAC3B,SAAI,GAAG,aAAa,CAAC;QACrB,YAAO,GAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAI9C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAChC;YACE,YAAY,EAAE,KAAK;YACnB,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC9D,gBAAgB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;SAC7D,EACD,aAAa,CACd,CAAC;IACJ,CAAC;IAKD,GAAG,CAAC,GAAG,IAAW;QAEhB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,OAAO,KAAK,gBAAgB,CAAC,WAAW,EAAE;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,CAAC,KAAa,CAAC,WAAW,GAAG,GAAG,EAAE;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;gBACpD,IAAI,OAAO,CAAC,YAAY,EAAE;oBACxB,OAAO,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;iBAC1F;gBACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC;YACD,IAAI,CAAC,KAAa,CAAC,aAAa,GAAG,GAAS,EAAE;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;gBACtD,IAAI,OAAO,CAAC,YAAY,EAAE;oBACxB,OAAO,MAAM,aAAa,CACxB,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAgB,EAChG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAC7B,CAAC;iBACH;gBACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACnF,CAAC,CAAA,CAAC;SACH;IACH,CAAC;IAMD,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAQ,IAAI,CAAC,KAAa,CAAC,WAAW,CAAC;YACvC,OAAQ,IAAI,CAAC,KAAa,CAAC,aAAa,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;IACH,CAAC;CACF","file":"table-export.js","sourcesContent":["import type { pluginsDefinition, ListTable } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { ExportVTableToCsvOptions, ExportVTableToExcelOptions } from './table-export/index';\nimport { exportVTableToCsv, exportVTableToExcel, downloadCsv, downloadExcel } from './table-export/index';\n\n// // 扩展ListTable接口以包含导出方法\n// declare module '@visactor/vtable' {\n// interface ListTableAll {\n// exportToCsv: (options?: any) => void;\n// exportToExcel: (options?: any) => void;\n// }\n// }\n\nexport type TableExportPluginOptions = {\n exportExcelOptions?: ExportVTableToExcelOptions;\n exportCsvOptions?: ExportVTableToCsvOptions;\n exportOnIdle?: boolean; //是否空闲时导出下载,默认false\n};\n\n/**\n * 表格导出插件\n * 提供CSV和Excel格式的表格数据导出功能\n */\nexport class TableExportPlugin implements pluginsDefinition.IVTablePlugin {\n id = 'table-export-plugin';\n name = 'TableExport';\n runTime: any[] = [TABLE_EVENT_TYPE.INITIALIZED];\n private table: ListTable;\n private pluginOptions: TableExportPluginOptions;\n constructor(pluginOptions: TableExportPluginOptions) {\n this.pluginOptions = Object.assign(\n {\n exportOnIdle: false,\n exportExcelOptions: { downloadFile: true, fileName: 'export' },\n exportCsvOptions: { downloadFile: true, fileName: 'export' }\n },\n pluginOptions\n );\n }\n /**\n * 插件初始化方法\n * @param tableInstance - 表格实例\n */\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n if (runTime === TABLE_EVENT_TYPE.INITIALIZED) {\n const eventArgs = args[0];\n this.table = args[2];\n // 挂载导出方法到表格实例\n (this.table as any).exportToCsv = () => {\n const options = this.pluginOptions.exportCsvOptions;\n if (options.downloadFile) {\n return downloadCsv(exportVTableToCsv(this.table, options), options.fileName || 'export');\n }\n return exportVTableToCsv(this.table, options);\n };\n (this.table as any).exportToExcel = async () => {\n const options = this.pluginOptions.exportExcelOptions;\n if (options.downloadFile) {\n return await downloadExcel(\n (await exportVTableToExcel(this.table, options, this.pluginOptions.exportOnIdle)) as ArrayBuffer,\n options.fileName || 'export'\n );\n }\n return exportVTableToExcel(this.table, options, this.pluginOptions.exportOnIdle);\n };\n }\n }\n\n /**\n * 插件销毁方法\n * 清理挂载到表格实例的方法\n */\n release() {\n if (this.table) {\n delete (this.table as any).exportToCsv;\n delete (this.table as any).exportToExcel;\n this.table = null;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/table-export.ts"],"names":[],"mappings":"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","file":"table-export.js","sourcesContent":["import type { pluginsDefinition, ListTable } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { ExportVTableToCsvOptions, ExportVTableToExcelOptions } from './table-export/index';\nimport {\n exportVTableToCsv,\n exportVTableToExcel,\n downloadCsv,\n downloadExcel,\n exportMultipleVTablesToExcel\n} from './table-export/index';\n\n// // 扩展ListTable接口以包含导出方法\n// declare module '@visactor/vtable' {\n// interface ListTableAll {\n// exportToCsv: (options?: any) => void;\n// exportToExcel: (options?: any) => void;\n// }\n// }\n\nexport type TableExportPluginOptions = {\n exportExcelOptions?: ExportVTableToExcelOptions;\n exportCsvOptions?: ExportVTableToCsvOptions;\n exportOnIdle?: boolean; //是否空闲时导出下载,默认false\n};\n\n/**\n * 表格导出插件\n * 提供CSV和Excel格式的表格数据导出功能\n */\nexport class TableExportPlugin implements pluginsDefinition.IVTablePlugin {\n id = 'table-export-plugin';\n name = 'TableExport';\n runTime: any[] = [TABLE_EVENT_TYPE.INITIALIZED];\n private table: ListTable;\n private pluginOptions: TableExportPluginOptions;\n constructor(pluginOptions: TableExportPluginOptions) {\n this.pluginOptions = Object.assign(\n {\n exportOnIdle: false,\n exportExcelOptions: { downloadFile: true, fileName: 'export' },\n exportCsvOptions: { downloadFile: true, fileName: 'export' }\n },\n pluginOptions\n );\n }\n /**\n * 插件初始化方法\n * @param tableInstance - 表格实例\n */\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n if (runTime === TABLE_EVENT_TYPE.INITIALIZED) {\n const eventArgs = args[0];\n this.table = args[2];\n // 挂载导出方法到表格实例\n (this.table as any).exportToCsv = () => {\n const options = this.pluginOptions.exportCsvOptions;\n if (options.downloadFile) {\n return downloadCsv(exportVTableToCsv(this.table, options), options.fileName || 'export');\n }\n return exportVTableToCsv(this.table, options);\n };\n (this.table as any).exportToExcel = async () => {\n const options = this.pluginOptions.exportExcelOptions;\n if (options.downloadFile) {\n return await downloadExcel(\n (await exportVTableToExcel(this.table, options, this.pluginOptions.exportOnIdle)) as ArrayBuffer,\n options.fileName || 'export'\n );\n }\n return exportVTableToExcel(this.table, options, this.pluginOptions.exportOnIdle);\n };\n if ((this.table as any).__vtableSheet) {\n // 给VTableSheet实例添加导出所有sheet到Excel的方法\n if (!((this.table as any).__vtableSheet as any)._exportMutipleTablesToExcel) {\n ((this.table as any).__vtableSheet as any)._exportMutipleTablesToExcel = async (\n tables: Array<{ table: any; name?: string }>\n ) => {\n const buffer = (await exportMultipleVTablesToExcel(\n tables,\n this.pluginOptions.exportExcelOptions\n )) as ArrayBuffer;\n await downloadExcel(buffer, this.pluginOptions.exportExcelOptions.fileName || 'vtable-sheet-export');\n };\n }\n }\n }\n }\n\n /**\n * 插件销毁方法\n * 清理挂载到表格实例的方法\n */\n release() {\n if (this.table) {\n delete (this.table as any).exportToCsv;\n delete (this.table as any).exportToExcel;\n this.table = null;\n }\n }\n}\n"]}
@@ -290,6 +290,7 @@ export class TableSeriesNumber {
290
290
  this.seriesNumberComponent = null);
291
291
  }
292
292
  syncRowHeightToComponent() {
293
+ if (!this.table.getBodyVisibleRowRange()) return;
293
294
  const {rowStart: rowStart, rowEnd: rowEnd} = this.table.getBodyVisibleRowRange(), adjustStartRowIndex = Math.max(rowStart - 2, this.table.frozenRowCount), adjustEndRowIndex = Math.min(rowEnd + 2, this.table.rowCount - 1);
294
295
  this.table.frozenRowCount !== this.seriesNumberComponent.getAttributes().frozenRowCount && this.seriesNumberComponent.setAttributes({
295
296
  frozenRowCount: this.table.frozenRowCount
@@ -310,6 +311,7 @@ export class TableSeriesNumber {
310
311
  }
311
312
  }
312
313
  syncColWidthToComponent() {
314
+ if (!this.table.getBodyVisibleColRange()) return;
313
315
  const {colStart: colStart, colEnd: colEnd} = this.table.getBodyVisibleColRange(), adjustStartColIndex = colStart, adjustEndColIndex = Math.min(colEnd, this.table.scenegraph.proxy.colEnd);
314
316
  this.table.frozenColCount !== this.seriesNumberComponent.getAttributes().frozenColCount && this.seriesNumberComponent.setAttributes({
315
317
  frozenColCount: this.table.frozenColCount
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/table-series-number.ts"],"names":[],"mappings":"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","file":"table-series-number.js","sourcesContent":["import type { BaseTableAPI, ListTable, ListTableConstructorOptions, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE, TYPES } from '@visactor/vtable';\nimport { TableSeriesNumber as VRenderTableSeriesNumber, SeriesNumberEvent } from '@visactor/vtable/es/vrender';\nimport type { ILayer, TableSeriesNumberAttributes } from '@visactor/vtable/es/vrender';\n\nexport type TableSeriesNumberOptions = {\n rowCount: number;\n colCount: number;\n dragOrder?: {\n enableDragColumnOrder?: boolean;\n enableDragRowOrder?: boolean;\n };\n // syncRowHeightFromTable?: boolean;\n // syncColWidthFromTable?: boolean;\n} & Partial<\n Pick<\n TableSeriesNumberAttributes,\n | 'rowSeriesNumberGenerate'\n | 'colSeriesNumberGenerate'\n | 'rowSeriesNumberCellStyle'\n | 'colSeriesNumberCellStyle'\n | 'cornerCellStyle'\n | 'colSeriesNumberHeight'\n | 'rowSeriesNumberWidth'\n >\n>;\nexport class TableSeriesNumber implements pluginsDefinition.IVTablePlugin {\n id = `table-series-number`;\n name = 'Table Series Number';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.BEFORE_INIT,\n TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION,\n TABLE_EVENT_TYPE.UPDATED\n ];\n pluginOptions: TableSeriesNumberOptions;\n table: ListTable;\n seriesNumberComponent: VRenderTableSeriesNumber;\n componentLayoutLayer: ILayer;\n lastCurrentRow: number = 0;\n lastCurrentCol: number = 0;\n startRowIndex: number = 0;\n scrollTimer: any;\n constructor(pluginOptions: TableSeriesNumberOptions) {\n this.pluginOptions = pluginOptions;\n this.seriesNumberComponent = new VRenderTableSeriesNumber({\n rowCount: pluginOptions.rowCount,\n colCount: pluginOptions.colCount,\n rowSeriesNumberWidth: pluginOptions.rowSeriesNumberWidth,\n colSeriesNumberHeight: pluginOptions.colSeriesNumberHeight,\n rowSeriesNumberGenerate: pluginOptions.rowSeriesNumberGenerate,\n colSeriesNumberGenerate: pluginOptions.colSeriesNumberGenerate,\n rowSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.rowSeriesNumberCellStyle\n ),\n colSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.colSeriesNumberCellStyle\n ),\n cornerCellStyle: Object.assign(\n {\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#98C8A5',\n opacity: 0.7\n },\n select: {\n fill: '#98C8A5',\n opacity: 1\n }\n }\n },\n pluginOptions.cornerCellStyle\n ),\n checkMoveColumnOrder: (colIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragColumnOrder ? this.table.isColumnSelected(colIndex) : false;\n },\n checkMoveRowOrder: (rowIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragRowOrder ? this.table.isRowSelected(rowIndex) : false;\n }\n });\n this.listenComponentEvents();\n }\n\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n if (runTime === TABLE_EVENT_TYPE.BEFORE_INIT || runTime === TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION) {\n const eventArgs = args[0];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n const options: ListTableConstructorOptions = eventArgs.options;\n const records = options.records ?? [];\n // //用空数据将records填充到pluginOptions.rowCount\n // for (let i = records.length; i < this.pluginOptions.rowCount; i++) {\n // records.push({});\n // }\n // 直接设置数组长度,不填充任何内容\n if (records.length < this.pluginOptions.rowCount) {\n records.length = this.pluginOptions.rowCount;\n }\n options.records = records;\n if (!options.columns) {\n options.columns = [];\n }\n for (let i = options.columns.length; i < this.pluginOptions.colCount; i++) {\n const columnFields = {\n field: i,\n key: i,\n title: ``\n };\n options.columns.push(columnFields);\n }\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n options.contentOffsetX = rowSeriesNumberColWidth;\n options.contentOffsetY = colSeriesNumberRowHeight;\n // if (options.columns.length < this.pluginOptions.colCount) {\n // options.columns.length = this.pluginOptions.colCount;\n // }\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED || runTime === TABLE_EVENT_TYPE.UPDATED) {\n this.table = args[2];\n if (!this.table.options.customConfig) {\n this.table.options.customConfig = {};\n }\n this.table.options.customConfig.cancelSelectCellHook = (e: any) => {\n const target = e.target;\n if (target.isDescendantsOf(this.seriesNumberComponent)) {\n return false;\n }\n return true;\n };\n\n // const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n // const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n // // this.table.scenegraph.stage.defaultLayer.setAttributes({\n // // x: rowSeriesNumberColWidth,\n // // y: colSeriesNumberRowHeight,\n // // width: 1700,\n // // height: 500,\n // // clip: true\n // // });\n // this.table.setTranslate(colSeriesNumberRowHeight, rowSeriesNumberColWidth);\n this.seriesNumberComponent.setAttributes({\n rowCount: this.table.rowCount,\n colCount: this.table.colCount,\n frozenRowCount: this.table.frozenRowCount,\n frozenColCount: this.table.frozenColCount,\n rightFrozenColCount: this.table.rightFrozenColCount,\n bottomFrozenRowCount: this.table.bottomFrozenRowCount\n });\n // add到layer上时会触发组件的render方法\n const newLayer = this.table.scenegraph.stage.createLayer();\n newLayer.appendChild(this.seriesNumberComponent);\n newLayer.setAttributes({ pickable: false });\n this.componentLayoutLayer = newLayer;\n\n // if (this.pluginOptions.syncRowHeightFromTable) {\n this.syncRowHeightToComponent();\n // }\n // if (this.pluginOptions.syncColWidthFromTable) {\n this.syncColWidthToComponent();\n // }\n\n this.listenTableEvents();\n }\n }\n private handleScroll = () => {\n //节流处理,避免滚动时频繁触发\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n this.scrollTimer = setTimeout(() => {\n this.scrollTimer = null;\n this.syncScrollToComponent();\n }, 10); // 优化: 由5ms改为10ms,减少频繁触发\n };\n\n private handleAfterSort = () => {\n this.syncScrollToComponent();\n };\n\n private handleSelectedChanged = (e: any) => {\n this.seriesNumberComponent.removeAllSelectedIndexs();\n const selectRange = this.table.stateManager.select.ranges;\n\n const rowSelectedIndexs = [];\n const colSelectedIndexs = [];\n for (const range of selectRange) {\n const { row: rowStart, col: colStart } = range.start;\n const { row: rowEnd, col: colEnd } = range.end;\n rowSelectedIndexs.push({ startIndex: Math.min(rowStart, rowEnd), endIndex: Math.max(rowStart, rowEnd) });\n colSelectedIndexs.push({ startIndex: Math.min(colStart, colEnd), endIndex: Math.max(colStart, colEnd) });\n }\n this.seriesNumberComponent.addRowSelectedRanges(rowSelectedIndexs);\n this.seriesNumberComponent.addColSelectedRanges(colSelectedIndexs);\n if (this.table.stateManager.select.isSelectAll) {\n this.seriesNumberComponent.addCornderSelected();\n }\n\n this.seriesNumberComponent.renderSelectedIndexsState();\n };\n\n private handleResizeColumnEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleResizeRowEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleChangeHeaderPosition = (e: any) => {\n // console.log('-----handleChangeHeaderPosition');\n this.syncColWidthToComponent();\n };\n\n listenTableEvents() {\n this.table.on(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.on(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n this.table.on(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, this.handleChangeHeaderPosition);\n }\n\n private handleSeriesNumberCellRightClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n const rowIndex = seriesNumberCell.id;\n //判断rowIndex整行是否被选中\n const isRowSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.row <= rowIndex &&\n rowIndex <= range.end.row &&\n range.start.col === 0 &&\n range.end.col === this.table.colCount - 1\n );\n });\n //当前右键的行号 没有整行被选中,则进行选中\n if (!isRowSelected) {\n this.table.selectCells([\n { start: { row: rowIndex, col: 0 }, end: { row: rowIndex, col: this.table.colCount - 1 } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n rowIndex: rowIndex\n }\n });\n } else if (isCol) {\n const colIndex = seriesNumberCell.id;\n //判断colIndex整列是否被选中\n const isColSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.col <= colIndex &&\n colIndex <= range.end.col &&\n range.start.row === 0 &&\n range.end.row === this.table.rowCount - 1\n );\n });\n //当前右键的列号 没有整列被选中,则进行选中\n if (!isColSelected) {\n this.table.selectCells([\n { start: { row: 0, col: colIndex }, end: { row: this.table.rowCount - 1, col: colIndex } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n colIndex: colIndex\n }\n });\n } else {\n //直接全选\n this.table.selectCells([\n { start: { row: 0, col: 0 }, end: { row: this.table.rowCount - 1, col: this.table.colCount - 1 } }\n ]);\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n isCorner: true\n }\n });\n }\n };\n\n private handleSeriesNumberCellHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellUnHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const ctrlMultiSelect = this.table.options.keyboardOptions?.ctrlMultiSelect ?? true;\n const shiftMultiSelect = (this.table.options.keyboardOptions as any)?.shiftMultiSelect ?? true;\n const enableCtrlSelectMode = (event.nativeEvent.ctrlKey || event.nativeEvent.metaKey) && ctrlMultiSelect;\n const enableShiftSelectMode = event.nativeEvent.shiftKey && shiftMultiSelect;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n this.table.stateManager.setSelectInline('row');\n const rowIndex = seriesNumberCell.id;\n\n if (isDragSelect) {\n this.table.dragSelectRow(rowIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectRow(rowIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else if (isCol) {\n this.table.stateManager.setSelectInline('col');\n const colIndex = seriesNumberCell.id;\n if (isDragSelect) {\n this.table.dragSelectCol(colIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectCol(colIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else {\n this.table.eventManager.deelTableSelectAll();\n }\n };\n\n private handleSeriesNumberCellClickUp = (e: any) => {\n this.table.stateManager.setSelectInline(false);\n this.table.endDragSelect();\n };\n\n private handleRowSeriesNumberWidthChange = (e: any) => {\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n this.table.setContentInsetXY(rowSeriesNumberColWidth, colSeriesNumberRowHeight);\n };\n\n private handleResizeColWidthStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeCol(colIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleResizeRowHeightStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeRow(rowIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleDragColumOrderStart = (e: any) => {\n // console.log('handleDragColumOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(colIndex, 0, event.viewport.x, event.viewport.y, event.nativeEvent, 'column');\n };\n private handleDragRowOrderStart = (e: any) => {\n // console.log('handleDragRowOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(0, rowIndex, event.viewport.x, event.viewport.y, event.nativeEvent, 'row');\n };\n\n listenComponentEvents() {\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellRightClick, this.handleSeriesNumberCellRightClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.on(SeriesNumberEvent.rowSeriesNumberWidthChange, this.handleRowSeriesNumberWidthChange);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n if (this.pluginOptions.dragOrder?.enableDragColumnOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragColumnOrderStart, this.handleDragColumOrderStart);\n }\n if (this.pluginOptions.dragOrder?.enableDragRowOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragRowOrderStart, this.handleDragRowOrderStart);\n }\n }\n release() {\n // 清除组件资源\n if (this.componentLayoutLayer) {\n this.table.scenegraph.stage.removeLayer(this.componentLayoutLayer._uid);\n this.componentLayoutLayer = null;\n }\n\n // 清除定时器\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n\n // 移除表格事件监听器\n if (this.table) {\n this.table.off(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.off(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.off(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n }\n // 移除组件事件监听器\n if (this.seriesNumberComponent) {\n this.seriesNumberComponent.off(\n SeriesNumberEvent.seriesNumberCellRightClick,\n this.handleSeriesNumberCellRightClick\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.off(\n SeriesNumberEvent.rowSeriesNumberWidthChange,\n this.handleRowSeriesNumberWidthChange\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n\n // 释放组件资源\n this.seriesNumberComponent.release?.();\n this.seriesNumberComponent = null;\n }\n }\n\n syncRowHeightToComponent() {\n // console.log('syncRowHeightToComponent adjust', adjustStartRowIndex, adjustEndRowIndex);\n const { rowStart, rowEnd } = this.table.getBodyVisibleRowRange();\n const adjustStartRowIndex = Math.max(rowStart - 2, this.table.frozenRowCount);\n const adjustEndRowIndex = Math.min(rowEnd + 2, this.table.rowCount - 1);\n //判断seriesNumberComponent的冻结行数是否变化\n if (this.table.frozenRowCount !== (this.seriesNumberComponent.getAttributes() as any).frozenRowCount) {\n this.seriesNumberComponent.setAttributes({ frozenRowCount: this.table.frozenRowCount } as any);\n }\n // 调用行序号重建接口\n this.seriesNumberComponent.recreateCellsToRowSeriesNumberGroup(adjustStartRowIndex, adjustEndRowIndex);\n // 更新冻结行序号单元格的y和height\n for (let i = 0; i < this.table.frozenRowCount; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n\n // 更新行序号单元格的y和height\n for (let i = adjustStartRowIndex; i <= adjustEndRowIndex; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n }\n syncColWidthToComponent() {\n const { colStart, colEnd } = this.table.getBodyVisibleColRange();\n const adjustStartColIndex = colStart;\n const adjustEndColIndex = Math.min(colEnd, this.table.scenegraph.proxy.colEnd);\n // console.log('syncColWidthToComponent adjust', adjustStartColIndex, adjustEndColIndex);\n\n //判断seriesNumberComponent的冻结列数是否变化\n if (this.table.frozenColCount !== (this.seriesNumberComponent.getAttributes() as any).frozenColCount) {\n this.seriesNumberComponent.setAttributes({ frozenColCount: this.table.frozenColCount } as any);\n }\n // 调用列序号重建接口\n this.seriesNumberComponent.recreateCellsToColSeriesNumberGroup(adjustStartColIndex, adjustEndColIndex);\n //更新冻结列序号单元格的x和width\n for (let i = 0; i < this.table.frozenColCount; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const cell_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: cell_attrs.x, width: cell_attrs.width });\n }\n // 更新列序号单元格的x和width\n for (let i = adjustStartColIndex; i <= adjustEndColIndex; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const col_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: col_attrs.x, width: col_attrs.width });\n }\n }\n\n syncScrollToComponent() {\n //TODO 根据滚动方向,同步对应的序号组件的滚动\n this.syncRowHeightToComponent();\n this.syncColWidthToComponent();\n const y = this.table.scenegraph.bodyGroup.getAttributes().y;\n const x = this.table.scenegraph.bodyGroup.getAttributes().x;\n this.seriesNumberComponent.setRowSeriesNumberGroupAttributes({\n y: y + this.seriesNumberComponent.colSeriesNumberHeight\n });\n this.seriesNumberComponent.setColSeriesNumberGroupAttributes({\n x: x + this.seriesNumberComponent.rowSeriesNumberWidth\n });\n }\n // syncFrozenToComponent() {\n // const frozenRowCount = this.table.frozenRowCount;\n // const frozenColCount = this.table.frozenColCount;\n // this.seriesNumberComponent.setFrozenTopRow(frozenRowCount);\n // this.seriesNumberComponent.setFrozenLeftCol(frozenColCount);\n // }\n}\n"]}
1
+ {"version":3,"sources":["../src/table-series-number.ts"],"names":[],"mappings":"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","file":"table-series-number.js","sourcesContent":["import type { BaseTableAPI, ListTable, ListTableConstructorOptions, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE, TYPES } from '@visactor/vtable';\nimport { TableSeriesNumber as VRenderTableSeriesNumber, SeriesNumberEvent } from '@visactor/vtable/es/vrender';\nimport type { ILayer, TableSeriesNumberAttributes } from '@visactor/vtable/es/vrender';\n\nexport type TableSeriesNumberOptions = {\n rowCount: number;\n colCount: number;\n dragOrder?: {\n enableDragColumnOrder?: boolean;\n enableDragRowOrder?: boolean;\n };\n // syncRowHeightFromTable?: boolean;\n // syncColWidthFromTable?: boolean;\n} & Partial<\n Pick<\n TableSeriesNumberAttributes,\n | 'rowSeriesNumberGenerate'\n | 'colSeriesNumberGenerate'\n | 'rowSeriesNumberCellStyle'\n | 'colSeriesNumberCellStyle'\n | 'cornerCellStyle'\n | 'colSeriesNumberHeight'\n | 'rowSeriesNumberWidth'\n >\n>;\nexport class TableSeriesNumber implements pluginsDefinition.IVTablePlugin {\n id = `table-series-number`;\n name = 'Table Series Number';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.BEFORE_INIT,\n TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION,\n TABLE_EVENT_TYPE.UPDATED\n ];\n pluginOptions: TableSeriesNumberOptions;\n table: ListTable;\n seriesNumberComponent: VRenderTableSeriesNumber;\n componentLayoutLayer: ILayer;\n lastCurrentRow: number = 0;\n lastCurrentCol: number = 0;\n startRowIndex: number = 0;\n scrollTimer: any;\n constructor(pluginOptions: TableSeriesNumberOptions) {\n this.pluginOptions = pluginOptions;\n this.seriesNumberComponent = new VRenderTableSeriesNumber({\n rowCount: pluginOptions.rowCount,\n colCount: pluginOptions.colCount,\n rowSeriesNumberWidth: pluginOptions.rowSeriesNumberWidth,\n colSeriesNumberHeight: pluginOptions.colSeriesNumberHeight,\n rowSeriesNumberGenerate: pluginOptions.rowSeriesNumberGenerate,\n colSeriesNumberGenerate: pluginOptions.colSeriesNumberGenerate,\n rowSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.rowSeriesNumberCellStyle\n ),\n colSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.colSeriesNumberCellStyle\n ),\n cornerCellStyle: Object.assign(\n {\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#98C8A5',\n opacity: 0.7\n },\n select: {\n fill: '#98C8A5',\n opacity: 1\n }\n }\n },\n pluginOptions.cornerCellStyle\n ),\n checkMoveColumnOrder: (colIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragColumnOrder ? this.table.isColumnSelected(colIndex) : false;\n },\n checkMoveRowOrder: (rowIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragRowOrder ? this.table.isRowSelected(rowIndex) : false;\n }\n });\n this.listenComponentEvents();\n }\n\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n if (runTime === TABLE_EVENT_TYPE.BEFORE_INIT || runTime === TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION) {\n const eventArgs = args[0];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n const options: ListTableConstructorOptions = eventArgs.options;\n const records = options.records ?? [];\n // //用空数据将records填充到pluginOptions.rowCount\n // for (let i = records.length; i < this.pluginOptions.rowCount; i++) {\n // records.push({});\n // }\n // 直接设置数组长度,不填充任何内容\n if (records.length < this.pluginOptions.rowCount) {\n records.length = this.pluginOptions.rowCount;\n }\n options.records = records;\n if (!options.columns) {\n options.columns = [];\n }\n for (let i = options.columns.length; i < this.pluginOptions.colCount; i++) {\n const columnFields = {\n field: i,\n key: i,\n title: ``\n };\n options.columns.push(columnFields);\n }\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n options.contentOffsetX = rowSeriesNumberColWidth;\n options.contentOffsetY = colSeriesNumberRowHeight;\n // if (options.columns.length < this.pluginOptions.colCount) {\n // options.columns.length = this.pluginOptions.colCount;\n // }\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED || runTime === TABLE_EVENT_TYPE.UPDATED) {\n this.table = args[2];\n if (!this.table.options.customConfig) {\n this.table.options.customConfig = {};\n }\n this.table.options.customConfig.cancelSelectCellHook = (e: any) => {\n const target = e.target;\n if (target.isDescendantsOf(this.seriesNumberComponent)) {\n return false;\n }\n return true;\n };\n\n // const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n // const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n // // this.table.scenegraph.stage.defaultLayer.setAttributes({\n // // x: rowSeriesNumberColWidth,\n // // y: colSeriesNumberRowHeight,\n // // width: 1700,\n // // height: 500,\n // // clip: true\n // // });\n // this.table.setTranslate(colSeriesNumberRowHeight, rowSeriesNumberColWidth);\n this.seriesNumberComponent.setAttributes({\n rowCount: this.table.rowCount,\n colCount: this.table.colCount,\n frozenRowCount: this.table.frozenRowCount,\n frozenColCount: this.table.frozenColCount,\n rightFrozenColCount: this.table.rightFrozenColCount,\n bottomFrozenRowCount: this.table.bottomFrozenRowCount\n });\n // add到layer上时会触发组件的render方法\n const newLayer = this.table.scenegraph.stage.createLayer();\n newLayer.appendChild(this.seriesNumberComponent);\n newLayer.setAttributes({ pickable: false });\n this.componentLayoutLayer = newLayer;\n\n // if (this.pluginOptions.syncRowHeightFromTable) {\n this.syncRowHeightToComponent();\n // }\n // if (this.pluginOptions.syncColWidthFromTable) {\n this.syncColWidthToComponent();\n // }\n\n this.listenTableEvents();\n }\n }\n private handleScroll = () => {\n //节流处理,避免滚动时频繁触发\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n this.scrollTimer = setTimeout(() => {\n this.scrollTimer = null;\n this.syncScrollToComponent();\n }, 10); // 优化: 由5ms改为10ms,减少频繁触发\n };\n\n private handleAfterSort = () => {\n this.syncScrollToComponent();\n };\n\n private handleSelectedChanged = (e: any) => {\n this.seriesNumberComponent.removeAllSelectedIndexs();\n const selectRange = this.table.stateManager.select.ranges;\n\n const rowSelectedIndexs = [];\n const colSelectedIndexs = [];\n for (const range of selectRange) {\n const { row: rowStart, col: colStart } = range.start;\n const { row: rowEnd, col: colEnd } = range.end;\n rowSelectedIndexs.push({ startIndex: Math.min(rowStart, rowEnd), endIndex: Math.max(rowStart, rowEnd) });\n colSelectedIndexs.push({ startIndex: Math.min(colStart, colEnd), endIndex: Math.max(colStart, colEnd) });\n }\n this.seriesNumberComponent.addRowSelectedRanges(rowSelectedIndexs);\n this.seriesNumberComponent.addColSelectedRanges(colSelectedIndexs);\n if (this.table.stateManager.select.isSelectAll) {\n this.seriesNumberComponent.addCornderSelected();\n }\n\n this.seriesNumberComponent.renderSelectedIndexsState();\n };\n\n private handleResizeColumnEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleResizeRowEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleChangeHeaderPosition = (e: any) => {\n // console.log('-----handleChangeHeaderPosition');\n this.syncColWidthToComponent();\n };\n\n listenTableEvents() {\n this.table.on(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.on(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n this.table.on(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, this.handleChangeHeaderPosition);\n }\n\n private handleSeriesNumberCellRightClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n const rowIndex = seriesNumberCell.id;\n //判断rowIndex整行是否被选中\n const isRowSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.row <= rowIndex &&\n rowIndex <= range.end.row &&\n range.start.col === 0 &&\n range.end.col === this.table.colCount - 1\n );\n });\n //当前右键的行号 没有整行被选中,则进行选中\n if (!isRowSelected) {\n this.table.selectCells([\n { start: { row: rowIndex, col: 0 }, end: { row: rowIndex, col: this.table.colCount - 1 } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n rowIndex: rowIndex\n }\n });\n } else if (isCol) {\n const colIndex = seriesNumberCell.id;\n //判断colIndex整列是否被选中\n const isColSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.col <= colIndex &&\n colIndex <= range.end.col &&\n range.start.row === 0 &&\n range.end.row === this.table.rowCount - 1\n );\n });\n //当前右键的列号 没有整列被选中,则进行选中\n if (!isColSelected) {\n this.table.selectCells([\n { start: { row: 0, col: colIndex }, end: { row: this.table.rowCount - 1, col: colIndex } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n colIndex: colIndex\n }\n });\n } else {\n //直接全选\n this.table.selectCells([\n { start: { row: 0, col: 0 }, end: { row: this.table.rowCount - 1, col: this.table.colCount - 1 } }\n ]);\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n isCorner: true\n }\n });\n }\n };\n\n private handleSeriesNumberCellHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellUnHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const ctrlMultiSelect = this.table.options.keyboardOptions?.ctrlMultiSelect ?? true;\n const shiftMultiSelect = (this.table.options.keyboardOptions as any)?.shiftMultiSelect ?? true;\n const enableCtrlSelectMode = (event.nativeEvent.ctrlKey || event.nativeEvent.metaKey) && ctrlMultiSelect;\n const enableShiftSelectMode = event.nativeEvent.shiftKey && shiftMultiSelect;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n this.table.stateManager.setSelectInline('row');\n const rowIndex = seriesNumberCell.id;\n\n if (isDragSelect) {\n this.table.dragSelectRow(rowIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectRow(rowIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else if (isCol) {\n this.table.stateManager.setSelectInline('col');\n const colIndex = seriesNumberCell.id;\n if (isDragSelect) {\n this.table.dragSelectCol(colIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectCol(colIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else {\n this.table.eventManager.deelTableSelectAll();\n }\n };\n\n private handleSeriesNumberCellClickUp = (e: any) => {\n this.table.stateManager.setSelectInline(false);\n this.table.endDragSelect();\n };\n\n private handleRowSeriesNumberWidthChange = (e: any) => {\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n this.table.setContentInsetXY(rowSeriesNumberColWidth, colSeriesNumberRowHeight);\n };\n\n private handleResizeColWidthStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeCol(colIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleResizeRowHeightStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeRow(rowIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleDragColumOrderStart = (e: any) => {\n // console.log('handleDragColumOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(colIndex, 0, event.viewport.x, event.viewport.y, event.nativeEvent, 'column');\n };\n private handleDragRowOrderStart = (e: any) => {\n // console.log('handleDragRowOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(0, rowIndex, event.viewport.x, event.viewport.y, event.nativeEvent, 'row');\n };\n\n listenComponentEvents() {\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellRightClick, this.handleSeriesNumberCellRightClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.on(SeriesNumberEvent.rowSeriesNumberWidthChange, this.handleRowSeriesNumberWidthChange);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n if (this.pluginOptions.dragOrder?.enableDragColumnOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragColumnOrderStart, this.handleDragColumOrderStart);\n }\n if (this.pluginOptions.dragOrder?.enableDragRowOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragRowOrderStart, this.handleDragRowOrderStart);\n }\n }\n release() {\n // 清除组件资源\n if (this.componentLayoutLayer) {\n this.table.scenegraph.stage.removeLayer(this.componentLayoutLayer._uid);\n this.componentLayoutLayer = null;\n }\n\n // 清除定时器\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n\n // 移除表格事件监听器\n if (this.table) {\n this.table.off(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.off(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.off(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n }\n // 移除组件事件监听器\n if (this.seriesNumberComponent) {\n this.seriesNumberComponent.off(\n SeriesNumberEvent.seriesNumberCellRightClick,\n this.handleSeriesNumberCellRightClick\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.off(\n SeriesNumberEvent.rowSeriesNumberWidthChange,\n this.handleRowSeriesNumberWidthChange\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n\n // 释放组件资源\n this.seriesNumberComponent.release?.();\n this.seriesNumberComponent = null;\n }\n }\n\n syncRowHeightToComponent() {\n // console.log('syncRowHeightToComponent adjust', adjustStartRowIndex, adjustEndRowIndex);\n const rowRange = this.table.getBodyVisibleRowRange();\n if (!rowRange) {\n return;\n }\n const { rowStart, rowEnd } = this.table.getBodyVisibleRowRange();\n const adjustStartRowIndex = Math.max(rowStart - 2, this.table.frozenRowCount);\n const adjustEndRowIndex = Math.min(rowEnd + 2, this.table.rowCount - 1);\n //判断seriesNumberComponent的冻结行数是否变化\n if (this.table.frozenRowCount !== (this.seriesNumberComponent.getAttributes() as any).frozenRowCount) {\n this.seriesNumberComponent.setAttributes({ frozenRowCount: this.table.frozenRowCount } as any);\n }\n // 调用行序号重建接口\n this.seriesNumberComponent.recreateCellsToRowSeriesNumberGroup(adjustStartRowIndex, adjustEndRowIndex);\n // 更新冻结行序号单元格的y和height\n for (let i = 0; i < this.table.frozenRowCount; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n\n // 更新行序号单元格的y和height\n for (let i = adjustStartRowIndex; i <= adjustEndRowIndex; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n }\n syncColWidthToComponent() {\n const colRange = this.table.getBodyVisibleColRange();\n if (!colRange) {\n return;\n }\n const { colStart, colEnd } = this.table.getBodyVisibleColRange();\n const adjustStartColIndex = colStart;\n const adjustEndColIndex = Math.min(colEnd, this.table.scenegraph.proxy.colEnd);\n // console.log('syncColWidthToComponent adjust', adjustStartColIndex, adjustEndColIndex);\n\n //判断seriesNumberComponent的冻结列数是否变化\n if (this.table.frozenColCount !== (this.seriesNumberComponent.getAttributes() as any).frozenColCount) {\n this.seriesNumberComponent.setAttributes({ frozenColCount: this.table.frozenColCount } as any);\n }\n // 调用列序号重建接口\n this.seriesNumberComponent.recreateCellsToColSeriesNumberGroup(adjustStartColIndex, adjustEndColIndex);\n //更新冻结列序号单元格的x和width\n for (let i = 0; i < this.table.frozenColCount; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const cell_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: cell_attrs.x, width: cell_attrs.width });\n }\n // 更新列序号单元格的x和width\n for (let i = adjustStartColIndex; i <= adjustEndColIndex; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const col_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: col_attrs.x, width: col_attrs.width });\n }\n }\n\n syncScrollToComponent() {\n //TODO 根据滚动方向,同步对应的序号组件的滚动\n this.syncRowHeightToComponent();\n this.syncColWidthToComponent();\n const y = this.table.scenegraph.bodyGroup.getAttributes().y;\n const x = this.table.scenegraph.bodyGroup.getAttributes().x;\n this.seriesNumberComponent.setRowSeriesNumberGroupAttributes({\n y: y + this.seriesNumberComponent.colSeriesNumberHeight\n });\n this.seriesNumberComponent.setColSeriesNumberGroupAttributes({\n x: x + this.seriesNumberComponent.rowSeriesNumberWidth\n });\n }\n // syncFrozenToComponent() {\n // const frozenRowCount = this.table.frozenRowCount;\n // const frozenColCount = this.table.frozenColCount;\n // this.seriesNumberComponent.setFrozenTopRow(frozenRowCount);\n // this.seriesNumberComponent.setFrozenLeftCol(frozenColCount);\n // }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vtable-plugins",
3
- "version": "1.22.8-alpha.12",
3
+ "version": "1.22.8",
4
4
  "description": "The search util of VTable",
5
5
  "author": {
6
6
  "name": "VisActor",
@@ -42,8 +42,8 @@
42
42
  "@types/file-saver": "2.0.7"
43
43
  },
44
44
  "peerDependencies": {
45
- "@visactor/vtable": "1.22.8-alpha.12",
46
- "@visactor/vtable-gantt": "1.22.8-alpha.12"
45
+ "@visactor/vtable-gantt": "1.22.8",
46
+ "@visactor/vtable": "1.22.8"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "@visactor/vtable-gantt": {
@@ -53,9 +53,6 @@
53
53
  "devDependencies": {
54
54
  "cross-env": "^7.0.3",
55
55
  "increase-memory-limit": "^1.0.7",
56
- "@visactor/vtable": "1.22.8-alpha.12",
57
- "@visactor/vtable-editors": "1.22.8-alpha.12",
58
- "@visactor/vtable-gantt": "1.22.8-alpha.12",
59
56
  "@visactor/vchart": "2.0.11-alpha.3",
60
57
  "@rushstack/eslint-patch": "~1.1.4",
61
58
  "react": "^18.0.0",
@@ -98,9 +95,12 @@
98
95
  "@types/react-is": "^17.0.3",
99
96
  "rollup-plugin-node-resolve": "5.2.0",
100
97
  "@types/lodash": "4.14.182",
98
+ "@visactor/vtable-gantt": "1.22.8",
99
+ "@visactor/vtable": "1.22.8",
101
100
  "@internal/bundler": "0.0.1",
102
101
  "@internal/eslint-config": "0.0.1",
103
- "@internal/ts-config": "0.0.1"
102
+ "@internal/ts-config": "0.0.1",
103
+ "@visactor/vtable-editors": "1.22.8"
104
104
  },
105
105
  "scripts": {
106
106
  "demo": "vite ./demo",