@visactor/vtable-plugins 1.21.1 → 1.22.0

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 (117) hide show
  1. package/cjs/add-row-column.js +2 -2
  2. package/cjs/add-row-column.js.map +1 -1
  3. package/cjs/auto-fill/utils/date.js +1 -1
  4. package/cjs/auto-fill/utils/fill.js +1 -1
  5. package/cjs/column-series.js +1 -1
  6. package/cjs/column-series.js.map +1 -1
  7. package/cjs/contextmenu/handle-menu-helper.js +16 -9
  8. package/cjs/contextmenu/handle-menu-helper.js.map +1 -1
  9. package/cjs/contextmenu/menu-manager.js +1 -2
  10. package/cjs/contextmenu/styles.js +2 -1
  11. package/cjs/highlight-header-when-select-cell.js +1 -1
  12. package/cjs/highlight-header-when-select-cell.js.map +1 -1
  13. package/cjs/index.d.ts +1 -0
  14. package/cjs/index.js +4 -4
  15. package/cjs/index.js.map +1 -1
  16. package/cjs/master-detail-plugin/checkbox.d.ts +5 -0
  17. package/cjs/master-detail-plugin/checkbox.js +105 -0
  18. package/cjs/master-detail-plugin/checkbox.js.map +1 -0
  19. package/cjs/master-detail-plugin/config.d.ts +17 -0
  20. package/cjs/master-detail-plugin/config.js +113 -0
  21. package/cjs/master-detail-plugin/config.js.map +1 -0
  22. package/cjs/master-detail-plugin/core.d.ts +50 -0
  23. package/cjs/master-detail-plugin/core.js +310 -0
  24. package/cjs/master-detail-plugin/core.js.map +1 -0
  25. package/cjs/master-detail-plugin/events.d.ts +59 -0
  26. package/cjs/master-detail-plugin/events.js +265 -0
  27. package/cjs/master-detail-plugin/events.js.map +1 -0
  28. package/cjs/master-detail-plugin/index.d.ts +4 -0
  29. package/cjs/master-detail-plugin/index.js +15 -0
  30. package/cjs/master-detail-plugin/index.js.map +1 -0
  31. package/cjs/master-detail-plugin/subtable.d.ts +39 -0
  32. package/cjs/master-detail-plugin/subtable.js +457 -0
  33. package/cjs/master-detail-plugin/subtable.js.map +1 -0
  34. package/cjs/master-detail-plugin/table-api-extensions.d.ts +59 -0
  35. package/cjs/master-detail-plugin/table-api-extensions.js +462 -0
  36. package/cjs/master-detail-plugin/table-api-extensions.js.map +1 -0
  37. package/cjs/master-detail-plugin/types.d.ts +61 -0
  38. package/cjs/master-detail-plugin/types.js +20 -0
  39. package/cjs/master-detail-plugin/types.js.map +1 -0
  40. package/cjs/master-detail-plugin/utils.d.ts +8 -0
  41. package/cjs/master-detail-plugin/utils.js +62 -0
  42. package/cjs/master-detail-plugin/utils.js.map +1 -0
  43. package/cjs/master-detail-plugin.d.ts +1 -0
  44. package/cjs/master-detail-plugin.js +15 -0
  45. package/cjs/master-detail-plugin.js.map +1 -0
  46. package/cjs/paste-add-row-column.js +2 -2
  47. package/cjs/paste-add-row-column.js.map +1 -1
  48. package/cjs/row-series.js +1 -2
  49. package/cjs/table-carousel-animation.js +2 -1
  50. package/cjs/table-export/csv/index.js +1 -1
  51. package/cjs/table-export/util/color.js +2 -1
  52. package/cjs/table-export/util/download.js +1 -1
  53. package/cjs/table-export/util/encode.js +1 -1
  54. package/cjs/table-export/util/indent.js +1 -1
  55. package/cjs/table-export/util/pagination.js +1 -1
  56. package/cjs/table-export/util/promise.js +1 -1
  57. package/cjs/table-export/util/type.js +1 -1
  58. package/dist/vtable-plugins.js +2885 -240
  59. package/dist/vtable-plugins.min.js +3 -3
  60. package/es/add-row-column.js +2 -2
  61. package/es/add-row-column.js.map +1 -1
  62. package/es/auto-fill/utils/date.js +1 -1
  63. package/es/auto-fill/utils/fill.js +1 -1
  64. package/es/column-series.js +1 -1
  65. package/es/column-series.js.map +1 -1
  66. package/es/contextmenu/handle-menu-helper.js +16 -9
  67. package/es/contextmenu/handle-menu-helper.js.map +1 -1
  68. package/es/contextmenu/menu-manager.js +1 -2
  69. package/es/contextmenu/styles.js +2 -1
  70. package/es/highlight-header-when-select-cell.js +1 -1
  71. package/es/highlight-header-when-select-cell.js.map +1 -1
  72. package/es/index.d.ts +1 -0
  73. package/es/index.js +2 -0
  74. package/es/index.js.map +1 -1
  75. package/es/master-detail-plugin/checkbox.d.ts +5 -0
  76. package/es/master-detail-plugin/checkbox.js +94 -0
  77. package/es/master-detail-plugin/checkbox.js.map +1 -0
  78. package/es/master-detail-plugin/config.d.ts +17 -0
  79. package/es/master-detail-plugin/config.js +80 -0
  80. package/es/master-detail-plugin/config.js.map +1 -0
  81. package/es/master-detail-plugin/core.d.ts +50 -0
  82. package/es/master-detail-plugin/core.js +285 -0
  83. package/es/master-detail-plugin/core.js.map +1 -0
  84. package/es/master-detail-plugin/events.d.ts +59 -0
  85. package/es/master-detail-plugin/events.js +232 -0
  86. package/es/master-detail-plugin/events.js.map +1 -0
  87. package/es/master-detail-plugin/index.d.ts +4 -0
  88. package/es/master-detail-plugin/index.js +4 -0
  89. package/es/master-detail-plugin/index.js.map +1 -0
  90. package/es/master-detail-plugin/subtable.d.ts +39 -0
  91. package/es/master-detail-plugin/subtable.js +426 -0
  92. package/es/master-detail-plugin/subtable.js.map +1 -0
  93. package/es/master-detail-plugin/table-api-extensions.d.ts +59 -0
  94. package/es/master-detail-plugin/table-api-extensions.js +445 -0
  95. package/es/master-detail-plugin/table-api-extensions.js.map +1 -0
  96. package/es/master-detail-plugin/types.d.ts +61 -0
  97. package/es/master-detail-plugin/types.js +12 -0
  98. package/es/master-detail-plugin/types.js.map +1 -0
  99. package/es/master-detail-plugin/utils.d.ts +8 -0
  100. package/es/master-detail-plugin/utils.js +52 -0
  101. package/es/master-detail-plugin/utils.js.map +1 -0
  102. package/es/master-detail-plugin.d.ts +1 -0
  103. package/es/master-detail-plugin.js +2 -0
  104. package/es/master-detail-plugin.js.map +1 -0
  105. package/es/paste-add-row-column.js +2 -2
  106. package/es/paste-add-row-column.js.map +1 -1
  107. package/es/row-series.js +1 -2
  108. package/es/table-carousel-animation.js +2 -1
  109. package/es/table-export/csv/index.js +1 -1
  110. package/es/table-export/util/color.js +2 -1
  111. package/es/table-export/util/download.js +1 -1
  112. package/es/table-export/util/encode.js +1 -1
  113. package/es/table-export/util/indent.js +1 -1
  114. package/es/table-export/util/pagination.js +1 -1
  115. package/es/table-export/util/promise.js +1 -1
  116. package/es/table-export/util/type.js +1 -1
  117. package/package.json +6 -6
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/master-detail-plugin/table-api-extensions.ts"],"names":[],"mappings":"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","file":"table-api-extensions.js","sourcesContent":["import type * as VTable from '@visactor/vtable';\r\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\r\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\r\nimport { getOriginalRowHeight } from './utils';\r\nimport type { ConfigManager } from './config';\r\nimport type { EventManager } from './events';\r\n\r\n/**\r\n * 表格 API 扩展类\r\n * 负责拦截和增强 VTable 的各种方法\r\n */\r\nexport class TableAPIExtensions {\r\n private table: VTable.ListTable;\r\n private configManager: ConfigManager;\r\n private eventManager: EventManager;\r\n // 原始方法的引用\r\n private originalUpdateCellContent?: (col: number, row: number, forceFastUpdate?: boolean) => Group;\r\n private originalUpdateResizeRow?: (xInTable: number, yInTable: number) => void;\r\n private originalDealHeightMode?: () => void;\r\n private originalUpdatePagination?: (pagination: VTable.TYPES.IPagination) => void;\r\n private originalToggleHierarchyState?: (col: number, row: number, recalculateColWidths?: boolean) => void;\r\n private originalUpdateFilterRules?: (filterRules: VTable.TYPES.FilterRules) => void;\r\n private originalUpdateChartSizeForResizeColWidth?: (col: number) => void;\r\n private originalUpdateChartSizeForResizeRowHeight?: (row: number) => void;\r\n private originalUpdateRowHeight?: (row: number, detaY: number, skipTableHeightMap?: boolean) => void;\r\n private originalGetResizeColAt?: (\r\n abstractX: number,\r\n abstractY: number,\r\n cellGroup?: Group\r\n ) => { col: number; row: number; x?: number; rightFrozen?: boolean };\r\n\r\n // 鼠标位置跟踪\r\n private currentMouseX: number = 0;\r\n private currentMouseY: number = 0;\r\n private mouseEventListener?: (event: MouseEvent) => void;\r\n\r\n // 拖拽状态跟踪\r\n private isDragging: boolean = false; // 表示是否在拖拽中\r\n private dragStartIsPluginUnderline: boolean = false; // 表示拖拽的是否是我主从表插件加入的下划线\r\n\r\n // 回调函数\r\n private callbacks: {\r\n addUnderlineToCell: (cellGroup: Group, originalHeight: number) => void;\r\n updateOriginalHeightsAfterAdaptive: (\r\n expandedRowsInfo: Map<number, { baseHeight: number; detailHeight: number }>\r\n ) => void;\r\n collapseRowToNoRealRecordIndex: (rowIndex: number) => void;\r\n expandRow: (rowIndex: number) => void;\r\n restoreExpandedStatesAfter: () => void;\r\n collapseRow: (rowIndex: number) => void;\r\n updateSubTablePositions: () => void;\r\n updateRowHeightForExpand: (rowIndex: number, deltaHeight: number) => void;\r\n };\r\n\r\n constructor(\r\n table: VTable.ListTable,\r\n configManager: ConfigManager,\r\n eventManager: EventManager,\r\n callbacks: {\r\n addUnderlineToCell: (cellGroup: Group, originalHeight: number) => void;\r\n updateOriginalHeightsAfterAdaptive: (\r\n expandedRowsInfo: Map<number, { baseHeight: number; detailHeight: number }>\r\n ) => void;\r\n collapseRowToNoRealRecordIndex: (rowIndex: number) => void;\r\n expandRow: (rowIndex: number) => void;\r\n restoreExpandedStatesAfter: () => void;\r\n collapseRow: (rowIndex: number) => void;\r\n updateSubTablePositions: () => void;\r\n updateRowHeightForExpand: (rowIndex: number, deltaHeight: number) => void;\r\n }\r\n ) {\r\n this.table = table;\r\n this.configManager = configManager;\r\n this.eventManager = eventManager;\r\n this.callbacks = callbacks;\r\n\r\n // 初始化鼠标位置跟踪\r\n this.initMouseTracking();\r\n }\r\n\r\n /**\r\n * 初始化鼠标位置跟踪\r\n */\r\n private initMouseTracking(): void {\r\n this.mouseEventListener = (event: MouseEvent) => {\r\n try {\r\n const table = this.table;\r\n if (table && table.internalProps && table.internalProps.canvas) {\r\n const rect = table.internalProps.canvas.getBoundingClientRect();\r\n this.currentMouseX = event.clientX - rect.left;\r\n this.currentMouseY = event.clientY - rect.top;\r\n }\r\n } catch (error) {\r\n // 忽略鼠标位置计算错误\r\n }\r\n // 在鼠标释放时重置拖拽状态\r\n if (event.type === 'mouseup') {\r\n this.isDragging = false;\r\n this.dragStartIsPluginUnderline = false;\r\n }\r\n };\r\n\r\n // 添加鼠标移动监听\r\n try {\r\n const table = this.table;\r\n if (table && table.internalProps && table.internalProps.canvas) {\r\n const canvas = table.internalProps.canvas;\r\n canvas.addEventListener('mousemove', this.mouseEventListener);\r\n canvas.addEventListener('mousedown', this.mouseEventListener);\r\n canvas.addEventListener('mouseup', this.mouseEventListener);\r\n }\r\n } catch (error) {\r\n console.warn('Error setting up mouse tracking:', error);\r\n }\r\n }\r\n\r\n /**\r\n * 扩展表格 API\r\n */\r\n extendTableAPI(): void {\r\n // 处理展开行单元格高度,还有下划线问题\r\n this.extendUpdateCellContent();\r\n // 处理展开行高更改时候的limitMinHeight\r\n this.extendUpdateResizeRow();\r\n // 处理主从表的adaptive的高度计算\r\n this.extendDealHeightMode();\r\n // 处理页面切换的时候的主从表处理\r\n this.extendUpdatePagination();\r\n // 处理表头分组和折叠的主从表处理\r\n this.extendToggleHierarchyState();\r\n // 处理过滤的主从表处理\r\n this.extendUpdateFilterRules();\r\n // 处理改变展开行的宽度的时候CellType为Chart的高度的处理\r\n this.extendUpdateChartSizeForResizeColWidth();\r\n // 处理改变展开行的高度的时候CellType为Chart的高度的处理\r\n this.extendUpdateChartSizeForResizeRowHeight();\r\n // 处理主从表展开行的改变行高的基准线的处理\r\n this.extendGetRowY();\r\n // 处理主从表展开行的改变行高的改变行高来方法来处理展开行的两个下划线(主从表加的CellGroup的下滑线,还有原本的行高的下划线)的不同处理\r\n this.extendUpdateRowHeight();\r\n // 处理展开行的列宽调整检测\r\n this.extendGetResizeColAt();\r\n }\r\n\r\n /**\r\n * 扩展 updateCellContent 方法\r\n */\r\n private extendUpdateCellContent(): void {\r\n const table = this.table;\r\n this.originalUpdateCellContent = table.scenegraph.updateCellContent.bind(table.scenegraph);\r\n table.scenegraph.updateCellContent = (col: number, row: number, forceFastUpdate: boolean = false) => {\r\n const isExpandedRow = this.eventManager.isRowExpanded(row);\r\n if (isExpandedRow) {\r\n // 对于展开行,我们需要临时恢复到原始高度来创建cellGroup\r\n const bodyRowIndex = row - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n const currentHeight = this.table.getRowHeight(row);\r\n if (originalHeight > 0 && currentHeight !== originalHeight) {\r\n // 临时设置为原始高度\r\n this.table._setRowHeight(row, originalHeight, false);\r\n // 保存原始位置信息\r\n const oldCellGroup = this.table.scenegraph.getCell(col, row);\r\n const originalY = oldCellGroup?.attribute?.y;\r\n // 调用原始方法,此时内容会按照原始高度创建\r\n const result = this.originalUpdateCellContent?.(col, row, forceFastUpdate);\r\n // 恢复展开后的高度\r\n this.table._setRowHeight(row, currentHeight, false);\r\n // 如果位置发生了变化,恢复到原始位置\r\n if (originalY !== undefined) {\r\n const newCellGroup = this.table.scenegraph.getCell(col, row);\r\n if (newCellGroup && newCellGroup.attribute.y !== originalY) {\r\n newCellGroup.setAttribute('y', originalY);\r\n }\r\n }\r\n // 为展开行添加下划线\r\n const cellGroup = this.table.scenegraph.getCell(col, row);\r\n if (cellGroup) {\r\n if (row !== this.table.rowCount - 1) {\r\n this.callbacks.addUnderlineToCell(cellGroup, originalHeight);\r\n }\r\n // 触发事件处理\r\n this.eventManager.handleAfterUpdateCellContentWidth({\r\n col,\r\n row,\r\n cellHeight: cellGroup.attribute?.height || 0,\r\n cellGroup,\r\n padding: [0, 0, 0, 0],\r\n textBaseline: 'middle' as CanvasTextBaseline\r\n });\r\n }\r\n return result;\r\n }\r\n }\r\n // 非展开行或其他情况,直接调用原始方法\r\n const result = this.originalUpdateCellContent?.(col, row, forceFastUpdate);\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * 扩展 updateResizeRow 方法\r\n */\r\n private extendUpdateResizeRow(): void {\r\n const table = this.table;\r\n this.originalUpdateResizeRow = table.stateManager.updateResizeRow.bind(table.stateManager);\r\n table.stateManager.updateResizeRow = (xInTable: number, yInTable: number) => {\r\n const state = table.stateManager;\r\n xInTable = Math.ceil(xInTable);\r\n yInTable = Math.ceil(yInTable);\r\n let detaY = state.rowResize.isBottomFrozen ? state.rowResize.y - yInTable : yInTable - state.rowResize.y;\r\n // table.getColWidth会使用Math.round,因此这里直接跳过小于1px的修改\r\n if (Math.abs(detaY) < 1) {\r\n return;\r\n }\r\n // 获取当前调整的行索引\r\n const resizeRowIndex = state.rowResize.row;\r\n const isExpandedRow = this.eventManager.isRowExpanded(resizeRowIndex);\r\n // 保存原始的 limitMinHeight\r\n const originalLimitMinHeight = state.table.internalProps.limitMinHeight;\r\n // 计算当前行的动态最小高度\r\n let currentRowMinHeight = originalLimitMinHeight;\r\n if (isExpandedRow) {\r\n const bodyRowIndex = resizeRowIndex - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n const currentRowHeight = this.table.getRowHeight(resizeRowIndex);\r\n const detailHeight = currentRowHeight - originalHeight;\r\n if (this.dragStartIsPluginUnderline) {\r\n // 拖拽插件下划线时:原始最小高度 + 子表高度\r\n currentRowMinHeight = originalLimitMinHeight + detailHeight;\r\n } else {\r\n // 拖拽原始下划线时:CellGroup高度 + 原始最小高度\r\n currentRowMinHeight = originalHeight + originalLimitMinHeight;\r\n }\r\n }\r\n\r\n // limitMinHeight限制\r\n let afterSize = state.table.getRowHeight(state.rowResize.row) + detaY;\r\n if (afterSize < currentRowMinHeight) {\r\n afterSize = currentRowMinHeight;\r\n detaY = afterSize - state.table.getRowHeight(state.rowResize.row);\r\n }\r\n // adaptive 模式下检查下一行的最小高度\r\n if (state.table.heightMode === 'adaptive' && state.rowResize.row < state.table.rowCount - 1) {\r\n const bottomRowHeightCache = state.table.getRowHeight(state.rowResize.row + 1);\r\n let bottomRowHeight = bottomRowHeightCache;\r\n bottomRowHeight -= detaY;\r\n // 计算下一行的最小高度\r\n let nextRowMinHeight = originalLimitMinHeight; // 默认使用原始值\r\n const nextRowIndex = state.rowResize.row + 1;\r\n const isNextRowExpanded = this.eventManager.isRowExpanded(nextRowIndex);\r\n if (isNextRowExpanded) {\r\n // 如果下一行也是展开行,计算其动态最小高度\r\n const nextBodyRowIndex = nextRowIndex - this.table.columnHeaderLevelCount;\r\n const nextOriginalHeight = getOriginalRowHeight(this.table, nextBodyRowIndex);\r\n const nextCurrentRowHeight = this.table.getRowHeight(nextRowIndex);\r\n const nextDetailHeight = nextCurrentRowHeight - nextOriginalHeight;\r\n // 对下一行,使用 originalLimitMinHeight + detailHeight 作为最小高度\r\n nextRowMinHeight = originalLimitMinHeight + nextDetailHeight;\r\n }\r\n if (bottomRowHeight - detaY < nextRowMinHeight) {\r\n detaY = bottomRowHeight - nextRowMinHeight;\r\n }\r\n }\r\n detaY = Math.ceil(detaY);\r\n\r\n // 调用对应的行高更新函数\r\n if (\r\n state.rowResize.row < state.table.columnHeaderLevelCount ||\r\n state.rowResize.row >= state.table.rowCount - state.table.bottomFrozenRowCount\r\n ) {\r\n this.updateResizeColForRow(detaY, state);\r\n } else if (state.table.internalProps.rowResizeType === 'all') {\r\n this.updateResizeColForAll(detaY, state);\r\n } else {\r\n this.updateResizeColForRow(detaY, state);\r\n }\r\n\r\n state.rowResize.y = yInTable;\r\n state.table.scenegraph.component.updateResizeRow(state.rowResize.row, xInTable, state.rowResize.isBottomFrozen);\r\n state.table.scenegraph.updateNextFrame();\r\n };\r\n }\r\n\r\n /**\r\n * 简单的行高调整(用于 row 类型)\r\n */\r\n private updateResizeColForRow(detaY: number, state: VTable.ListTable['stateManager']): void {\r\n if (state.table.heightMode === 'adaptive' && state.rowResize.row < state.table.rowCount - 1) {\r\n state.table.scenegraph.updateRowHeight(state.rowResize.row, detaY);\r\n state.table.scenegraph.updateRowHeight(state.rowResize.row + 1, -detaY);\r\n\r\n state.table.internalProps._heightResizedRowMap.add(state.rowResize.row);\r\n state.table.internalProps._heightResizedRowMap.add(state.rowResize.row + 1);\r\n } else {\r\n state.table.scenegraph.updateRowHeight(state.rowResize.row, detaY);\r\n state.table.internalProps._heightResizedRowMap.add(state.rowResize.row);\r\n }\r\n }\r\n\r\n /**\r\n * 全部行高调整(用于 all 类型)\r\n */\r\n private updateResizeColForAll(detaY: number, state: VTable.ListTable['stateManager']): void {\r\n for (let row = state.table.frozenRowCount; row < state.table.rowCount - state.table.bottomFrozenRowCount; row++) {\r\n state.table.scenegraph.updateRowHeight(row, detaY);\r\n state.table.internalProps._heightResizedRowMap.add(row);\r\n }\r\n }\r\n\r\n /**\r\n * 扩展 dealHeightMode 方法\r\n */\r\n private extendDealHeightMode(): void {\r\n // 拦截并增强 dealHeightMode 方法\r\n const scenegraph = this.table.scenegraph;\r\n this.originalDealHeightMode = scenegraph.dealHeightMode.bind(scenegraph);\r\n\r\n scenegraph.dealHeightMode = () => {\r\n if (this.table.heightMode !== 'adaptive') {\r\n // 非 adaptive 模式,使用原始逻辑\r\n return this.originalDealHeightMode();\r\n }\r\n\r\n // adaptive 模式下的智能处理\r\n const expandedRowIndices = this.eventManager.getExpandedRows();\r\n\r\n // 清除行高缓存,准备重新计算\r\n const table = this.table;\r\n const tableAny = table;\r\n table._clearRowRangeHeightsMap();\r\n\r\n // 根据 heightAdaptiveMode 配置决定处理范围\r\n const heightAdaptiveMode = tableAny.heightAdaptiveMode || 'only-body';\r\n let startRow: number;\r\n let totalDrawHeight: number;\r\n if (heightAdaptiveMode === 'all') {\r\n // 'all' 模式:包含表头在内的所有行都参与高度适应计算\r\n startRow = 0;\r\n totalDrawHeight = table.tableNoFrameHeight;\r\n } else {\r\n // 'only-body' 模式(默认):只有 body 部分参与高度适应计算\r\n const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\r\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\r\n startRow = table.columnHeaderLevelCount;\r\n totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\r\n }\r\n\r\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\r\n\r\n // 如果没有展开行,使用原始逻辑处理所有行\r\n if (expandedRowIndices.length === 0) {\r\n // 计算所有行的基础高度总和\r\n let normalRowsBaseHeight = 0;\r\n for (let row = startRow; row < endRow; row++) {\r\n normalRowsBaseHeight += table.getRowHeight(row);\r\n }\r\n\r\n if (normalRowsBaseHeight > 0) {\r\n // 计算缩放因子\r\n const scaleFactor = totalDrawHeight / normalRowsBaseHeight;\r\n // 对所有行应用缩放\r\n for (let row = startRow; row < endRow; row++) {\r\n const baseHeight = table.getRowHeight(row);\r\n const newHeight = Math.max(Math.round(baseHeight * scaleFactor), 20);\r\n scenegraph.setRowHeight(row, newHeight);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n // 有展开行时,需要特殊处理\r\n // 累计所有子表高度\r\n const expandedRowsInfo = new Map<number, { baseHeight: number; detailHeight: number }>();\r\n let totalExpandedExtraHeight = 0;\r\n\r\n for (const rowIndex of expandedRowIndices) {\r\n if (rowIndex >= table.columnHeaderLevelCount && rowIndex < endRow) {\r\n const bodyRowIndex = rowIndex - table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(table, bodyRowIndex);\r\n const currentRowHeight = table.getRowHeight(rowIndex);\r\n const detailHeight = currentRowHeight - originalHeight;\r\n expandedRowsInfo.set(rowIndex, {\r\n baseHeight: originalHeight > 0 ? originalHeight : currentRowHeight,\r\n detailHeight\r\n });\r\n totalExpandedExtraHeight += detailHeight; // 所有展开行的展开空间高度和\r\n }\r\n }\r\n\r\n // 计算普通行(非展开行)的基础高度总和\r\n let normalRowsBaseHeight = 0;\r\n\r\n for (let row = startRow; row < endRow; row++) {\r\n if (!expandedRowsInfo.has(row)) {\r\n normalRowsBaseHeight += table.getRowHeight(row);\r\n } else {\r\n // 展开行也要参与基础高度计算(用于比例计算)\r\n const info = expandedRowsInfo.get(row);\r\n if (info) {\r\n normalRowsBaseHeight += info.baseHeight; // 普通行的高度和\r\n }\r\n }\r\n }\r\n\r\n // 计算可用于缩放的高度(总高度 - 展开行的额外高度)\r\n const availableHeightForScaling = totalDrawHeight - totalExpandedExtraHeight;\r\n\r\n // 计算缩放因子\r\n const scaleFactor = availableHeightForScaling / normalRowsBaseHeight;\r\n\r\n // 应用新的行高\r\n for (let row = startRow; row < endRow; row++) {\r\n let newHeight: number;\r\n\r\n if (expandedRowsInfo.has(row)) {\r\n // 展开行:基础高度按比例缩放 + 固定的子表高度\r\n const info = expandedRowsInfo.get(row);\r\n if (info) {\r\n const scaledBaseHeight = Math.round(info.baseHeight * scaleFactor);\r\n newHeight = scaledBaseHeight + info.detailHeight;\r\n // 更新展开行信息,记录新的基础高度\r\n expandedRowsInfo.set(row, {\r\n baseHeight: scaledBaseHeight,\r\n detailHeight: info.detailHeight\r\n });\r\n } else {\r\n newHeight = Math.round(table.getRowHeight(row) * scaleFactor);\r\n }\r\n } else {\r\n // 普通行:按比例缩放\r\n const baseHeight = table.getRowHeight(row);\r\n newHeight = Math.round(baseHeight * scaleFactor);\r\n }\r\n\r\n // 应用最小高度限制\r\n newHeight = newHeight;\r\n // 设置行高\r\n scenegraph.setRowHeight(row, newHeight);\r\n }\r\n\r\n // 最后一行特殊处理,确保总高度精确匹配\r\n // 构建所有行的数组\r\n const allRows: number[] = [];\r\n for (let row = startRow; row < endRow; row++) {\r\n allRows.push(row);\r\n }\r\n\r\n if (allRows.length > 0) {\r\n const currentTotalHeight = allRows.reduce((sum, row) => sum + table.getRowHeight(row), 0);\r\n if (Math.abs(currentTotalHeight - totalDrawHeight) > 1) {\r\n const lastRowIndex = allRows[allRows.length - 1];\r\n const otherRowsHeight = allRows.slice(0, -1).reduce((sum, row) => sum + table.getRowHeight(row), 0);\r\n const adjustment = totalDrawHeight - otherRowsHeight;\r\n if (expandedRowsInfo.has(lastRowIndex)) {\r\n // 最后一行是展开行,调整时要保证子表高度\r\n const info = expandedRowsInfo.get(lastRowIndex);\r\n if (info) {\r\n const minHeight = info.detailHeight; // 至少保留子表高度\r\n const finalHeight = Math.max(adjustment, minHeight);\r\n scenegraph.setRowHeight(lastRowIndex, finalHeight);\r\n // 更新展开行信息\r\n expandedRowsInfo.set(lastRowIndex, {\r\n baseHeight: finalHeight - info.detailHeight,\r\n detailHeight: info.detailHeight\r\n });\r\n }\r\n } else {\r\n // 最后一行是普通行\r\n scenegraph.setRowHeight(lastRowIndex, adjustment);\r\n }\r\n }\r\n }\r\n\r\n // 重要:更新原始高度缓存,确保后续操作使用新的基础高度\r\n this.callbacks.updateOriginalHeightsAfterAdaptive(expandedRowsInfo);\r\n this.callbacks.updateSubTablePositions();\r\n };\r\n }\r\n\r\n /**\r\n * 扩展 updatePagination 方法\r\n */\r\n private extendUpdatePagination(): void {\r\n const table = this.table;\r\n // 拦截 updatePagination 方法,在分页切换时收起所有展开的行\r\n this.originalUpdatePagination = table.updatePagination.bind(table);\r\n table.updatePagination = (pagination: VTable.TYPES.IPagination) => {\r\n const currentExpandedRows = [...this.eventManager.getExpandedRows()];\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.callbacks.collapseRowToNoRealRecordIndex(rowIndex);\r\n });\r\n const result = this.originalUpdatePagination(pagination);\r\n // 使用事件钩子替代固定延时\r\n this.waitForRenderComplete(() => {\r\n this.callbacks.restoreExpandedStatesAfter();\r\n });\r\n\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * 扩展 toggleHierarchyState 方法\r\n */\r\n private extendToggleHierarchyState(): void {\r\n const table = this.table;\r\n // 拦截 toggleHierarchy 方法\r\n this.originalToggleHierarchyState = table.toggleHierarchyState.bind(table);\r\n table.toggleHierarchyState = (col: number, row: number, recalculateColWidths: boolean = true) => {\r\n // 处理表头分组的情况\r\n if (this.table.isHeader(col, row)) {\r\n const currentExpandedRows = [...this.eventManager.getExpandedRows()];\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.callbacks.collapseRowToNoRealRecordIndex(rowIndex);\r\n });\r\n const result = this.originalToggleHierarchyState(col, row, recalculateColWidths);\r\n // 使用事件钩子替代固定延时\r\n this.waitForRenderComplete(() => {\r\n this.callbacks.restoreExpandedStatesAfter();\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return this.originalToggleHierarchyState(col, row, recalculateColWidths);\r\n };\r\n }\r\n\r\n /**\r\n * 扩展 updateFilterRules 方法\r\n */\r\n private extendUpdateFilterRules(): void {\r\n const table = this.table;\r\n // 拦截 updateFilterRules 方法,在过滤时保持展开状态\r\n this.originalUpdateFilterRules = table.updateFilterRules.bind(table);\r\n table.updateFilterRules = (filterRules: VTable.TYPES.FilterRules) => {\r\n // 保存当前展开的记录索引\r\n const currentExpandedRows = [...this.eventManager.getExpandedRows()];\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.callbacks.collapseRow(rowIndex);\r\n });\r\n const result = this.originalUpdateFilterRules(filterRules);\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * 扩展 updateChartSizeForResizeColWidth 方法\r\n */\r\n private extendUpdateChartSizeForResizeColWidth(): void {\r\n const table = this.table;\r\n this.originalUpdateChartSizeForResizeColWidth = table.scenegraph.updateChartSizeForResizeColWidth.bind(\r\n table.scenegraph\r\n );\r\n table.scenegraph.updateChartSizeForResizeColWidth = (col: number) => {\r\n // 临时保存原始的getRowHeight方法\r\n const originalGetRowHeight = table.getRowHeight.bind(table);\r\n // 创建保护版本的getRowHeight,对展开行返回原始高度\r\n table.getRowHeight = (row: number) => {\r\n const isExpandedRow = this.eventManager.isRowExpanded(row);\r\n if (isExpandedRow) {\r\n const bodyRowIndex = row - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n return originalHeight > 0 ? originalHeight : originalGetRowHeight(row);\r\n }\r\n return originalGetRowHeight(row);\r\n };\r\n // 调用原始的图表大小更新方法\r\n const result = this.originalUpdateChartSizeForResizeColWidth(col);\r\n // 恢复原始的getRowHeight方法\r\n table.getRowHeight = originalGetRowHeight;\r\n return result;\r\n };\r\n }\r\n\r\n private extendUpdateChartSizeForResizeRowHeight(): void {\r\n const table = this.table;\r\n this.originalUpdateChartSizeForResizeRowHeight = table.scenegraph.updateChartSizeForResizeRowHeight.bind(\r\n table.scenegraph\r\n );\r\n table.scenegraph.updateChartSizeForResizeRowHeight = (col: number) => {\r\n const originalGetRowHeight = table.getRowHeight.bind(table);\r\n table.getRowHeight = (row: number) => {\r\n const isExpandedRow = this.eventManager.isRowExpanded(row);\r\n if (isExpandedRow) {\r\n const bodyRowIndex = row - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n return originalHeight > 0 ? originalHeight : originalGetRowHeight(row);\r\n }\r\n return originalGetRowHeight(row);\r\n };\r\n const result = this.originalUpdateChartSizeForResizeRowHeight(col);\r\n table.getRowHeight = originalGetRowHeight;\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * 处理 getRowY 中使用getRowHeight的方法\r\n */\r\n private extendGetRowY(): void {\r\n // 直接拦截 scenegraph.component 的方法\r\n const scenegraph = this.table.scenegraph;\r\n if (scenegraph.component) {\r\n // 拦截 showResizeRow 方法\r\n const originalShowResizeRow = scenegraph.component.showResizeRow.bind(scenegraph.component);\r\n if (originalShowResizeRow) {\r\n scenegraph.component.showResizeRow = (row: number, x: number, isRightFrozen?: boolean) => {\r\n return this.protectedShowResizeRow(originalShowResizeRow, row, x, isRightFrozen);\r\n };\r\n }\r\n\r\n // 拦截 updateResizeRow 方法\r\n const originalUpdateResizeRow = scenegraph.component.updateResizeRow?.bind(scenegraph.component);\r\n if (originalUpdateResizeRow) {\r\n scenegraph.component.updateResizeRow = (row: number, x: number, isBottomFrozen?: boolean) => {\r\n return this.protectedUpdateResizeRow(originalUpdateResizeRow, row, x, isBottomFrozen);\r\n };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 扩展 updateRowHeight 方法\r\n */\r\n private extendUpdateRowHeight(): void {\r\n const scenegraph = this.table.scenegraph;\r\n this.originalUpdateRowHeight = scenegraph.updateRowHeight.bind(scenegraph);\r\n scenegraph.updateRowHeight = (row: number, detaY: number, skipTableHeightMap?: boolean) => {\r\n const isExpandedRow = this.eventManager.isRowExpanded(row);\r\n if (isExpandedRow && this.isDragging && !this.dragStartIsPluginUnderline) {\r\n detaY = Math.round(detaY);\r\n this.callbacks.updateRowHeightForExpand(row, detaY);\r\n scenegraph.updateContainerHeight(row, detaY);\r\n } else {\r\n return this.originalUpdateRowHeight(row, detaY, skipTableHeightMap);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * 扩展 getResizeColAt 方法\r\n * 在展开行情况下提供正确的列宽调整检测\r\n */\r\n private extendGetResizeColAt(): void {\r\n const scenegraph = this.table.scenegraph;\r\n this.originalGetResizeColAt = scenegraph.getResizeColAt.bind(scenegraph);\r\n scenegraph.getResizeColAt = (abstractX: number, abstractY: number, cellGroup?: Group) => {\r\n if (!cellGroup) {\r\n // 检查当前位置是否在展开行中\r\n const cell = this.table.getCellAtRelativePosition(abstractX, abstractY);\r\n if (cell && cell.row >= 0) {\r\n const isExpandedRow = this.eventManager.isRowExpanded(cell.row);\r\n if (isExpandedRow) {\r\n return { col: -1, row: -1 };\r\n }\r\n }\r\n }\r\n\r\n // 调用原始的 getResizeColAt 方法\r\n return this.originalGetResizeColAt(abstractX, abstractY, cellGroup);\r\n };\r\n }\r\n\r\n /**\r\n * 检测鼠标是否在插件绘制的下划线区域\r\n */\r\n private isMouseInPluginUnderlineArea(row: number): boolean {\r\n try {\r\n // 获取表格的滚动偏移量\r\n const tableAny = this.table;\r\n const scrollTop = tableAny.stateManager?.scroll?.verticalBarPos || 0;\r\n // 计算当前行在视口中的位置信息\r\n const rowY = this.table.getRowsHeight(0, row - 1);\r\n const rowHeight = this.table.getRowHeight(row);\r\n const rowBottomY = rowY + rowHeight;\r\n const shadowBlur = this.table.theme?.frameStyle?.shadowBlur || 0;\r\n const viewportRowBottomY = rowBottomY - scrollTop + shadowBlur;\r\n const isNearRowBottom =\r\n this.currentMouseY >= viewportRowBottomY - (this.table.internalProps.limitMinHeight - 1) &&\r\n this.currentMouseY <= viewportRowBottomY + (this.table.internalProps.limitMinHeight - 1);\r\n // 如果是展开行且鼠标在行底部,认为是插件绘制的下划线\r\n const isExpandedRow = this.eventManager.isRowExpanded(row);\r\n const isRowBottomUnderline = isNearRowBottom && isExpandedRow;\r\n // console.log('Mouse underline detection:', {\r\n // row,\r\n // mouseX: this.currentMouseX,\r\n // mouseY: this.currentMouseY,\r\n // scrollTop,\r\n // rowY,\r\n // rowHeight,\r\n // rowBottomY,\r\n // viewportRowBottomY,\r\n // isNearRowBottom,\r\n // isExpandedRow,\r\n // isPluginUnderline,\r\n // 'distance from bottom': Math.abs(this.currentMouseY - viewportRowBottomY)\r\n // });\r\n\r\n return !isRowBottomUnderline;\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * 保护的 showResizeRow 方法\r\n */\r\n private protectedShowResizeRow(\r\n originalMethod: (row: number, x: number, isRightFrozen?: boolean) => void,\r\n row: number,\r\n x: number,\r\n isRightFrozen?: boolean\r\n ): void {\r\n if (!this.isDragging) {\r\n this.isDragging = true;\r\n this.dragStartIsPluginUnderline = this.isMouseInPluginUnderlineArea(row);\r\n }\r\n if (this.dragStartIsPluginUnderline) {\r\n // 临时替换 getRowsHeight 方法\r\n const originalGetRowsHeight = this.table.getRowsHeight.bind(this.table);\r\n this.table.getRowsHeight = (startRow: number, endRow: number) => {\r\n return this.getRowsHeightWithOriginalHeight(startRow, endRow);\r\n };\r\n // 临时替换 getRowHeight 方法\r\n const originalGetRowHeight = this.table.getRowHeight.bind(this.table);\r\n this.table.getRowHeight = (targetRow: number) => {\r\n if (targetRow === row && this.eventManager.isRowExpanded(targetRow)) {\r\n // 如果是当前操作的展开行,返回原始高度\r\n const bodyRowIndex = targetRow - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n return originalHeight > 0 ? originalHeight : originalGetRowHeight(targetRow);\r\n }\r\n // 其他行使用原始方法\r\n return originalGetRowHeight(targetRow);\r\n };\r\n try {\r\n const result = originalMethod(row, x, isRightFrozen);\r\n return result;\r\n } finally {\r\n // 恢复原始的方法\r\n this.table.getRowsHeight = originalGetRowsHeight;\r\n this.table.getRowHeight = originalGetRowHeight;\r\n }\r\n } else {\r\n // 原始下划线,临时替换 getRowHeight 方法处理展开行\r\n const originalGetRowHeight = this.table.getRowHeight.bind(this.table);\r\n this.table.getRowHeight = (targetRow: number) => {\r\n if (targetRow === row && this.eventManager.isRowExpanded(targetRow)) {\r\n // 如果是当前操作的展开行,返回减去原始高度的值\r\n const bodyRowIndex = targetRow - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n return originalGetRowHeight(targetRow) - originalHeight;\r\n }\r\n // 其他行使用原始方法\r\n return originalGetRowHeight(targetRow);\r\n };\r\n try {\r\n const result = originalMethod(row, x, isRightFrozen);\r\n return result;\r\n } finally {\r\n // 恢复原始的 getRowHeight 方法\r\n this.table.getRowHeight = originalGetRowHeight;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 保护的 updateResizeRow 方法\r\n */\r\n private protectedUpdateResizeRow(\r\n originalMethod: (row: number, x: number, isBottomFrozen?: boolean) => void,\r\n row: number,\r\n x: number,\r\n isBottomFrozen?: boolean\r\n ): void {\r\n if (this.dragStartIsPluginUnderline) {\r\n // 临时替换 getRowsHeight 方法\r\n const originalGetRowsHeight = this.table.getRowsHeight.bind(this.table);\r\n this.table.getRowsHeight = (startRow: number, endRow: number) => {\r\n return this.getRowsHeightWithOriginalHeight(startRow, endRow);\r\n };\r\n // 临时替换 getRowHeight 方法\r\n const originalGetRowHeight = this.table.getRowHeight.bind(this.table);\r\n this.table.getRowHeight = (targetRow: number) => {\r\n if (targetRow === row && this.eventManager.isRowExpanded(targetRow)) {\r\n // 如果是当前操作的展开行,返回原始高度\r\n const bodyRowIndex = targetRow - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n return originalHeight > 0 ? originalHeight : originalGetRowHeight(targetRow);\r\n }\r\n // 其他行使用原始方法\r\n return originalGetRowHeight(targetRow);\r\n };\r\n try {\r\n const result = originalMethod(row, x, isBottomFrozen);\r\n return result;\r\n } finally {\r\n // 恢复原始的方法\r\n this.table.getRowsHeight = originalGetRowsHeight;\r\n this.table.getRowHeight = originalGetRowHeight;\r\n }\r\n } else {\r\n // 原始下划线,临时替换 getRowHeight 方法处理展开行\r\n const originalGetRowHeight = this.table.getRowHeight.bind(this.table);\r\n this.table.getRowHeight = (targetRow: number) => {\r\n if (targetRow === row && this.eventManager.isRowExpanded(targetRow)) {\r\n // 如果是当前操作的展开行,返回减去原始高度的值\r\n const bodyRowIndex = targetRow - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n return originalGetRowHeight(targetRow) - originalHeight;\r\n }\r\n // 其他行使用原始方法\r\n return originalGetRowHeight(targetRow);\r\n };\r\n try {\r\n const result = originalMethod(row, x, isBottomFrozen);\r\n return result;\r\n } finally {\r\n // 恢复原始的 getRowHeight 方法\r\n this.table.getRowHeight = originalGetRowHeight;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 使用原始高度计算行高累积值的方法\r\n */\r\n private getRowsHeightWithOriginalHeight(startRow: number, endRow: number): number {\r\n let totalHeight = 0;\r\n for (let row = startRow; row <= endRow; row++) {\r\n const isExpandedRow = this.eventManager.isRowExpanded(row);\r\n if (isExpandedRow && row === endRow) {\r\n // 展开行并且是最后一行使用原始高度\r\n const bodyRowIndex = row - this.table.columnHeaderLevelCount;\r\n const originalHeight = getOriginalRowHeight(this.table, bodyRowIndex);\r\n totalHeight += originalHeight > 0 ? originalHeight : this.table.getRowHeight(row);\r\n } else {\r\n // 普通行使用当前高度\r\n totalHeight += this.table.getRowHeight(row);\r\n }\r\n }\r\n return totalHeight;\r\n }\r\n /**\r\n * 等待渲染完成后执行回调\r\n */\r\n private waitForRenderComplete(callback: () => void): void {\r\n const onAfterRender = () => {\r\n this.table.off(TABLE_EVENT_TYPE.AFTER_RENDER, onAfterRender);\r\n callback();\r\n };\r\n this.table.on(TABLE_EVENT_TYPE.AFTER_RENDER, onAfterRender);\r\n }\r\n\r\n /**\r\n * 清理所有扩展的 API\r\n */\r\n cleanup(): void {\r\n // 清理鼠标事件监听器\r\n if (this.mouseEventListener) {\r\n try {\r\n const table = this.table;\r\n if (table && table.internalProps && table.internalProps.canvas) {\r\n const canvas = table.internalProps.canvas;\r\n canvas.removeEventListener('mousemove', this.mouseEventListener);\r\n canvas.removeEventListener('mousedown', this.mouseEventListener);\r\n canvas.removeEventListener('mouseup', this.mouseEventListener);\r\n }\r\n } catch (error) {\r\n console.warn('Error cleaning up mouse event listeners:', error);\r\n }\r\n this.mouseEventListener = undefined;\r\n }\r\n\r\n // 恢复原始的updateCellContent方法\r\n if (this.originalUpdateCellContent && this.table) {\r\n const table = this.table;\r\n if (table.scenegraph && table.scenegraph.updateCellContent) {\r\n table.scenegraph.updateCellContent = this.originalUpdateCellContent;\r\n }\r\n this.originalUpdateCellContent = undefined;\r\n }\r\n\r\n // 恢复原始的updateResizeRow方法\r\n if (this.originalUpdateResizeRow && this.table) {\r\n const table = this.table;\r\n if (table.stateManager && table.stateManager.updateResizeRow) {\r\n table.stateManager.updateResizeRow = this.originalUpdateResizeRow;\r\n }\r\n this.originalUpdateResizeRow = undefined;\r\n }\r\n\r\n // 恢复原始的dealHeightMode方法\r\n if (this.originalDealHeightMode && this.table) {\r\n const table = this.table;\r\n if (table.scenegraph && table.scenegraph.dealHeightMode) {\r\n table.scenegraph.dealHeightMode = this.originalDealHeightMode;\r\n }\r\n this.originalDealHeightMode = undefined;\r\n }\r\n\r\n // 恢复其他原始方法\r\n if (this.originalUpdatePagination && this.table) {\r\n const table = this.table;\r\n if (table.updatePagination) {\r\n table.updatePagination = this.originalUpdatePagination;\r\n }\r\n this.originalUpdatePagination = undefined;\r\n }\r\n\r\n if (this.originalToggleHierarchyState && this.table) {\r\n const table = this.table;\r\n if (table.toggleHierarchyState) {\r\n table.toggleHierarchyState = this.originalToggleHierarchyState;\r\n }\r\n this.originalToggleHierarchyState = undefined;\r\n }\r\n\r\n if (this.originalUpdateFilterRules && this.table) {\r\n const table = this.table;\r\n if (table.updateFilterRules) {\r\n table.updateFilterRules = this.originalUpdateFilterRules;\r\n }\r\n this.originalUpdateFilterRules = undefined;\r\n }\r\n\r\n if (this.originalUpdateChartSizeForResizeColWidth && this.table) {\r\n const table = this.table;\r\n if (table.scenegraph && table.scenegraph.updateChartSizeForResizeColWidth) {\r\n table.scenegraph.updateChartSizeForResizeColWidth = this.originalUpdateChartSizeForResizeColWidth;\r\n }\r\n this.originalUpdateChartSizeForResizeColWidth = undefined;\r\n }\r\n\r\n if (this.originalUpdateChartSizeForResizeRowHeight && this.table) {\r\n const table = this.table;\r\n if (table.scenegraph && table.scenegraph.updateChartSizeForResizeRowHeight) {\r\n table.scenegraph.updateChartSizeForResizeRowHeight = this.originalUpdateChartSizeForResizeRowHeight;\r\n }\r\n this.originalUpdateChartSizeForResizeRowHeight = undefined;\r\n }\r\n\r\n // 恢复原始的updateRowHeight方法\r\n if (this.originalUpdateRowHeight && this.table) {\r\n const table = this.table;\r\n if (table.scenegraph && table.scenegraph.updateRowHeight) {\r\n table.scenegraph.updateRowHeight = this.originalUpdateRowHeight;\r\n }\r\n this.originalUpdateRowHeight = undefined;\r\n }\r\n\r\n // 恢复原始的getResizeColAt方法\r\n if (this.originalGetResizeColAt && this.table) {\r\n const scenegraph = this.table.scenegraph;\r\n if (scenegraph && scenegraph.getResizeColAt) {\r\n scenegraph.getResizeColAt = this.originalGetResizeColAt;\r\n }\r\n this.originalGetResizeColAt = undefined;\r\n }\r\n\r\n // 清理状态和引用,避免循环引用\r\n this.isDragging = false;\r\n this.dragStartIsPluginUnderline = false;\r\n this.currentMouseX = 0;\r\n this.currentMouseY = 0;\r\n // 清理回调函数引用\r\n (this as unknown as { callbacks: unknown }).callbacks = null;\r\n (this as unknown as { table: unknown }).table = null;\r\n (this as unknown as { configManager: unknown }).configManager = null;\r\n (this as unknown as { eventManager: unknown }).eventManager = null;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,61 @@
1
+ import type * as VTable from '@visactor/vtable';
2
+ import type { Group } from '@visactor/vtable/src/vrender';
3
+ export interface DetailTableOptions extends VTable.ListTableConstructorOptions {
4
+ style?: {
5
+ margin?: number | [number, number] | [number, number, number, number];
6
+ height?: number;
7
+ };
8
+ }
9
+ export interface MasterDetailPluginOptions {
10
+ enableCheckboxCascade?: boolean;
11
+ detailTableOptions?: DetailTableOptions | ((params: {
12
+ data: unknown;
13
+ bodyRowIndex: number;
14
+ }) => DetailTableOptions);
15
+ }
16
+ export interface SubTableCheckboxState {
17
+ checkedState: Record<string, Record<string | number, boolean | 'indeterminate'>>;
18
+ headerCheckedState: Record<string | number, boolean | 'indeterminate'>;
19
+ }
20
+ export interface InternalProps {
21
+ expandedRecordIndices: (number | number[])[];
22
+ subTableInstances: Map<number, VTable.ListTable>;
23
+ originalRowHeights: Map<number, number>;
24
+ _tempExpandedRecordIndices?: (number | number[])[];
25
+ subTableCheckboxStates?: Map<number, SubTableCheckboxState>;
26
+ }
27
+ export interface CellContentWidthEventData {
28
+ col: number;
29
+ row: number;
30
+ distWidth: number;
31
+ cellHeight: number;
32
+ detaX: number;
33
+ autoRowHeight: boolean;
34
+ needUpdateRowHeight: boolean;
35
+ cellGroup: Group;
36
+ padding: [number, number, number, number];
37
+ textAlign: CanvasTextAlign;
38
+ textBaseline: CanvasTextBaseline;
39
+ }
40
+ export interface SelectBorderHeightEventData {
41
+ startRow: number;
42
+ endRow: number;
43
+ currentHeight: number;
44
+ selectComp: {
45
+ rect: unknown;
46
+ fillhandle?: unknown;
47
+ role: string;
48
+ };
49
+ }
50
+ export type LazyLoadState = 'loading' | 'loaded' | 'error';
51
+ export type RecordIndexType = number | number[];
52
+ export declare function recordIndexEquals(a: RecordIndexType, b: RecordIndexType): boolean;
53
+ export declare function includesRecordIndex(array: (number | number[])[], target: RecordIndexType): boolean;
54
+ export declare function findRecordIndexPosition(array: (number | number[])[], target: RecordIndexType): number;
55
+ export interface SubTableEventInfo {
56
+ eventType: keyof typeof VTable.TABLE_EVENT_TYPE;
57
+ masterBodyRowIndex: number;
58
+ masterRowIndex: number;
59
+ subTable: unknown;
60
+ originalEventArgs?: unknown;
61
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ function recordIndexEquals(a, b) {
4
+ return "number" == typeof a && "number" == typeof b ? a === b : Array.isArray(a) && Array.isArray(b) ? a.length === b.length && a.every(((val, index) => val === b[index])) : "number" == typeof a && Array.isArray(b) ? 1 === b.length && b[0] === a : !(!Array.isArray(a) || "number" != typeof b) && (1 === a.length && a[0] === b);
5
+ }
6
+
7
+ function includesRecordIndex(array, target) {
8
+ return array.some((item => recordIndexEquals(item, target)));
9
+ }
10
+
11
+ function findRecordIndexPosition(array, target) {
12
+ return array.findIndex((item => recordIndexEquals(item, target)));
13
+ }
14
+
15
+ Object.defineProperty(exports, "__esModule", {
16
+ value: !0
17
+ }), exports.findRecordIndexPosition = exports.includesRecordIndex = exports.recordIndexEquals = void 0,
18
+ exports.recordIndexEquals = recordIndexEquals, exports.includesRecordIndex = includesRecordIndex,
19
+ exports.findRecordIndexPosition = findRecordIndexPosition;
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/master-detail-plugin/types.ts"],"names":[],"mappings":";;;AA6EA,SAAgB,iBAAiB,CAAC,CAAkB,EAAE,CAAkB;IACtE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAClD,OAAO,CAAC,KAAK,CAAC,CAAC;KAChB;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACxC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3E;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC7C,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACrC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAC7C,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACrC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,8CAeC;AAKD,SAAgB,mBAAmB,CAAC,KAA4B,EAAE,MAAuB;IACvF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,kDAEC;AAKD,SAAgB,uBAAuB,CAAC,KAA4B,EAAE,MAAuB;IAC3F,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC;AAFD,0DAEC","file":"types.js","sourcesContent":["import type * as VTable from '@visactor/vtable';\r\nimport type { Group } from '@visactor/vtable/src/vrender';\r\n\r\n/** 子表配置接口 - 继承 ListTableConstructorOptions */\r\nexport interface DetailTableOptions extends VTable.ListTableConstructorOptions {\r\n style?: {\r\n margin?: number | [number, number] | [number, number, number, number];\r\n height?: number;\r\n };\r\n}\r\n\r\n/**\r\n * 主从表插件配置选项\r\n */\r\nexport interface MasterDetailPluginOptions {\r\n /** 是否启用checkbox级联功能 - 控制主从表之间的复选框联动,默认为 true */\r\n enableCheckboxCascade?: boolean;\r\n /** 子表配置 - 可以是静态配置对象或动态配置函数 */\r\n detailTableOptions?: DetailTableOptions | ((params: { data: unknown; bodyRowIndex: number }) => DetailTableOptions);\r\n}\r\n\r\n/**\r\n * 子表checkbox状态接口\r\n */\r\nexport interface SubTableCheckboxState {\r\n checkedState: Record<string, Record<string | number, boolean | 'indeterminate'>>;\r\n headerCheckedState: Record<string | number, boolean | 'indeterminate'>;\r\n}\r\n\r\n/**\r\n * 内部属性扩展接口\r\n */\r\nexport interface InternalProps {\r\n expandedRecordIndices: (number | number[])[];\r\n subTableInstances: Map<number, VTable.ListTable>;\r\n originalRowHeights: Map<number, number>;\r\n _tempExpandedRecordIndices?: (number | number[])[];\r\n subTableCheckboxStates?: Map<number, SubTableCheckboxState>;\r\n}\r\n\r\n/**\r\n * 事件数据接口\r\n */\r\nexport interface CellContentWidthEventData {\r\n col: number;\r\n row: number;\r\n distWidth: number;\r\n cellHeight: number;\r\n detaX: number;\r\n autoRowHeight: boolean;\r\n needUpdateRowHeight: boolean;\r\n cellGroup: Group;\r\n padding: [number, number, number, number];\r\n textAlign: CanvasTextAlign;\r\n textBaseline: CanvasTextBaseline;\r\n}\r\n\r\nexport interface SelectBorderHeightEventData {\r\n startRow: number;\r\n endRow: number;\r\n currentHeight: number;\r\n selectComp: { rect: unknown; fillhandle?: unknown; role: string };\r\n}\r\n\r\n/**\r\n * 懒加载状态枚举\r\n */\r\nexport type LazyLoadState = 'loading' | 'loaded' | 'error';\r\n\r\n/**\r\n * 记录索引类型 - 支持单个数字或数字数组\r\n */\r\nexport type RecordIndexType = number | number[];\r\n\r\n/**\r\n * 工具函数:比较两个记录索引是否相等\r\n */\r\nexport function recordIndexEquals(a: RecordIndexType, b: RecordIndexType): boolean {\r\n if (typeof a === 'number' && typeof b === 'number') {\r\n return a === b;\r\n }\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n return a.length === b.length && a.every((val, index) => val === b[index]);\r\n }\r\n // 一个是数字,一个是数组的情况\r\n if (typeof a === 'number' && Array.isArray(b)) {\r\n return b.length === 1 && b[0] === a;\r\n }\r\n if (Array.isArray(a) && typeof b === 'number') {\r\n return a.length === 1 && a[0] === b;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 工具函数:检查记录索引数组中是否包含指定索引\r\n */\r\nexport function includesRecordIndex(array: (number | number[])[], target: RecordIndexType): boolean {\r\n return array.some(item => recordIndexEquals(item, target));\r\n}\r\n\r\n/**\r\n * 工具函数:在记录索引数组中查找指定索引的位置\r\n */\r\nexport function findRecordIndexPosition(array: (number | number[])[], target: RecordIndexType): number {\r\n return array.findIndex(item => recordIndexEquals(item, target));\r\n}\r\n\r\n/**\r\n * 子表事件信息接口\r\n */\r\nexport interface SubTableEventInfo {\r\n /** 子表事件类型 */\r\n eventType: keyof typeof VTable.TABLE_EVENT_TYPE;\r\n /** 主表行索引(不包含表头) */\r\n masterBodyRowIndex: number;\r\n /** 主表行索引(包含表头) */\r\n masterRowIndex: number;\r\n /** 子表实例 */\r\n subTable: unknown;\r\n /** 原始事件数据 */\r\n originalEventArgs?: unknown;\r\n}\r\n"]}
@@ -0,0 +1,8 @@
1
+ import type * as VTable from '@visactor/vtable';
2
+ import type { InternalProps } from './types';
3
+ export declare function parseMargin(margin?: number | [number, number] | [number, number, number, number]): [number, number, number, number];
4
+ export declare function getInternalProps(table: VTable.ListTable): VTable.TYPES.ListTableProtected & InternalProps;
5
+ export declare function getRecordByRowIndex(table: VTable.ListTable, bodyRowIndex: number): Record<string, unknown>;
6
+ export declare function getOriginalRowHeight(table: VTable.ListTable, bodyRowIndex: number): number;
7
+ export declare function findCheckboxColumnIndex(table: VTable.ListTable, field: string | number): number;
8
+ export declare function setCellCheckboxStateByAttribute(col: number, row: number, checked: boolean | 'indeterminate', table: VTable.ListTable): void;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ function parseMargin(margin) {
4
+ if (null == margin) return [ 10, 10, 10, 10 ];
5
+ if ("number" == typeof margin) return [ margin, margin, margin, margin ];
6
+ if (Array.isArray(margin)) {
7
+ if (2 === margin.length) {
8
+ const [vertical, horizontal] = margin;
9
+ return [ vertical, horizontal, vertical, horizontal ];
10
+ }
11
+ if (4 === margin.length) return margin;
12
+ }
13
+ return [ 10, 10, 10, 10 ];
14
+ }
15
+
16
+ function getInternalProps(table) {
17
+ return table.internalProps;
18
+ }
19
+
20
+ function getRecordByRowIndex(table, bodyRowIndex) {
21
+ return table.dataSource.getRaw(bodyRowIndex);
22
+ }
23
+
24
+ function getOriginalRowHeight(table, bodyRowIndex) {
25
+ var _a;
26
+ return (null === (_a = getInternalProps(table).originalRowHeights) || void 0 === _a ? void 0 : _a.get(bodyRowIndex)) || 0;
27
+ }
28
+
29
+ Object.defineProperty(exports, "__esModule", {
30
+ value: !0
31
+ }), exports.setCellCheckboxStateByAttribute = exports.findCheckboxColumnIndex = exports.getOriginalRowHeight = exports.getRecordByRowIndex = exports.getInternalProps = exports.parseMargin = void 0,
32
+ exports.parseMargin = parseMargin, exports.getInternalProps = getInternalProps,
33
+ exports.getRecordByRowIndex = getRecordByRowIndex, exports.getOriginalRowHeight = getOriginalRowHeight;
34
+
35
+ const columnIndexCache = new WeakMap;
36
+
37
+ function findCheckboxColumnIndex(table, field) {
38
+ let tableCache = columnIndexCache.get(table);
39
+ if (tableCache || (tableCache = new Map, columnIndexCache.set(table, tableCache)),
40
+ tableCache.has(field)) return tableCache.get(field);
41
+ for (let col = 0; col < table.colCount; col++) {
42
+ if (table.getHeaderField(col, 0) === field) return tableCache.set(field, col), col;
43
+ }
44
+ return tableCache.set(field, -1), -1;
45
+ }
46
+
47
+ function setCellCheckboxStateByAttribute(col, row, checked, table) {
48
+ const cellGroup = table.scenegraph.getCell(col, row);
49
+ cellGroup && cellGroup.forEachChildren((child => {
50
+ const childNode = child;
51
+ ("checkbox-icon" === childNode.name || "checkbox" === childNode.name || "checkbox" === childNode.type || childNode.attribute && "checkbox" === childNode.attribute.type) && childNode.setAttributes && ("indeterminate" === checked ? childNode.setAttributes({
52
+ checked: !1,
53
+ indeterminate: !0
54
+ }) : childNode.setAttributes({
55
+ checked: checked,
56
+ indeterminate: !1
57
+ }));
58
+ }));
59
+ }
60
+
61
+ exports.findCheckboxColumnIndex = findCheckboxColumnIndex, exports.setCellCheckboxStateByAttribute = setCellCheckboxStateByAttribute;
62
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/master-detail-plugin/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type * as VTable from '@visactor/vtable';\r\nimport type { InternalProps } from './types';\r\n\r\n/**\r\n * 解析 margin 配置,返回 [上, 右, 下, 左] 格式\r\n */\r\nexport function parseMargin(\r\n margin?: number | [number, number] | [number, number, number, number]\r\n): [number, number, number, number] {\r\n if (margin === undefined || margin === null) {\r\n return [10, 10, 10, 10];\r\n }\r\n if (typeof margin === 'number') {\r\n return [margin, margin, margin, margin];\r\n }\r\n if (Array.isArray(margin)) {\r\n if (margin.length === 2) {\r\n // [上下, 左右]\r\n const [vertical, horizontal] = margin;\r\n return [vertical, horizontal, vertical, horizontal];\r\n } else if (margin.length === 4) {\r\n // [上, 右, 下, 左]\r\n return margin;\r\n }\r\n }\r\n return [10, 10, 10, 10];\r\n}\r\n\r\n/**\r\n * 获取内部属性\r\n */\r\nexport function getInternalProps(table: VTable.ListTable): VTable.TYPES.ListTableProtected & InternalProps {\r\n return table.internalProps as VTable.TYPES.ListTableProtected & InternalProps;\r\n}\r\n\r\n/**\r\n * 根据行索引获取记录\r\n */\r\nexport function getRecordByRowIndex(table: VTable.ListTable, bodyRowIndex: number): Record<string, unknown> {\r\n return table.dataSource.getRaw(bodyRowIndex) as Record<string, unknown>;\r\n}\r\n\r\n/**\r\n * 获取原始行高\r\n */\r\nexport function getOriginalRowHeight(table: VTable.ListTable, bodyRowIndex: number): number {\r\n const internalProps = getInternalProps(table);\r\n return internalProps.originalRowHeights?.get(bodyRowIndex) || 0;\r\n}\r\n\r\n// 缓存列索引\r\nconst columnIndexCache = new WeakMap<VTable.ListTable, Map<string | number, number>>();\r\n\r\n/**\r\n * 查找checkbox列的索引\r\n */\r\nexport function findCheckboxColumnIndex(table: VTable.ListTable, field: string | number): number {\r\n // 获取或创建表格的缓存\r\n let tableCache = columnIndexCache.get(table);\r\n if (!tableCache) {\r\n tableCache = new Map();\r\n columnIndexCache.set(table, tableCache);\r\n }\r\n\r\n // 检查缓存\r\n if (tableCache.has(field)) {\r\n return tableCache.get(field);\r\n }\r\n\r\n // 查找列索引\r\n for (let col = 0; col < table.colCount; col++) {\r\n const cellField = table.getHeaderField(col, 0);\r\n if (cellField === field) {\r\n tableCache.set(field, col);\r\n return col;\r\n }\r\n }\r\n\r\n // 未找到时也缓存结果\r\n tableCache.set(field, -1);\r\n return -1;\r\n}\r\n\r\n/**\r\n * 设置单元格checkbox状态并更新属性\r\n */\r\nexport function setCellCheckboxStateByAttribute(\r\n col: number,\r\n row: number,\r\n checked: boolean | 'indeterminate',\r\n table: VTable.ListTable\r\n): void {\r\n const cellGroup = table.scenegraph.getCell(col, row);\r\n if (cellGroup) {\r\n cellGroup.forEachChildren((child: unknown) => {\r\n const childNode = child as {\r\n name?: string;\r\n type?: string;\r\n attribute?: { type?: string };\r\n setAttributes?: (attrs: { checked?: boolean; indeterminate?: boolean }) => void;\r\n };\r\n if (\r\n childNode.name === 'checkbox-icon' ||\r\n childNode.name === 'checkbox' ||\r\n childNode.type === 'checkbox' ||\r\n (childNode.attribute && childNode.attribute.type === 'checkbox')\r\n ) {\r\n if (childNode.setAttributes) {\r\n if (checked === 'indeterminate') {\r\n childNode.setAttributes({\r\n checked: false,\r\n indeterminate: true\r\n });\r\n } else {\r\n childNode.setAttributes({\r\n checked: checked,\r\n indeterminate: false\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n"]}
@@ -0,0 +1 @@
1
+ export { MasterDetailPlugin, type MasterDetailPluginOptions, type DetailTableOptions } from './master-detail-plugin/index';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.MasterDetailPlugin = void 0;
6
+
7
+ var index_1 = require("./master-detail-plugin/index");
8
+
9
+ Object.defineProperty(exports, "MasterDetailPlugin", {
10
+ enumerable: !0,
11
+ get: function() {
12
+ return index_1.MasterDetailPlugin;
13
+ }
14
+ });
15
+ //# sourceMappingURL=master-detail-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/master-detail-plugin.ts"],"names":[],"mappings":";;;AAAA,sDAIsC;AAHpC,2GAAA,kBAAkB,OAAA","file":"master-detail-plugin.js","sourcesContent":["export {\r\n MasterDetailPlugin,\r\n type MasterDetailPluginOptions,\r\n type DetailTableOptions\r\n} from './master-detail-plugin/index';\r\n"]}
@@ -23,11 +23,11 @@ class PasteAddRowColumnPlugin {
23
23
  if (rowsNeeded > 0) for (let i = 0; i < rowsNeeded; i++) (null === (_b = this.pluginOptions) || void 0 === _b ? void 0 : _b.addRowCallback) ? this.pluginOptions.addRowCallback(rowCount + i, this.table) : this.table.addRecord([]);
24
24
  if (colsNeeded > 0) for (let i = 0; i < colsNeeded; i++) {
25
25
  const newColIndex = colCount + i;
26
- (null === (_c = this.pluginOptions) || void 0 === _c ? void 0 : _c.addColumnCallback) ? this.pluginOptions.addColumnCallback(newColIndex, this.table) : this.table.addColumn({
26
+ (null === (_c = this.pluginOptions) || void 0 === _c ? void 0 : _c.addColumnCallback) ? this.pluginOptions.addColumnCallback(newColIndex, this.table) : this.table.addColumns([ {
27
27
  field: `field_${newColIndex}`,
28
28
  title: `New Column ${newColIndex}`,
29
29
  width: 100
30
- });
30
+ } ]);
31
31
  }
32
32
  this.table.changeCellValues(col, row, pasteData, !0);
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/paste-add-row-column.ts"],"names":[],"mappings":";;;AACA,6CAAoD;AAOpD,MAAa,uBAAuB;IAOlC,YAAY,aAA+C;;QAN3D,OAAE,GAAG,sBAAsB,CAAC;QAC5B,SAAI,GAAG,eAAe,CAAC;QACvB,YAAO,GAAG,CAAC,yBAAgB,CAAC,WAAW,EAAE,yBAAgB,CAAC,WAAW,CAAC,CAAC;QAKrE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,mCAAI,IAAI,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,GAAG,IAAW;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAiB,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAkB,CAAC;QAChC,IAAI,OAAO,KAAK,yBAAgB,CAAC,WAAW,EAAE;YAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,WAAW;;QACT,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAErC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;QACxC,MAAM,cAAc,GAAG,CAAA,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC;QACnD,MAAM,UAAU,GAAG,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC;QAGnD,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,cAAc,EAAE;oBACtC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC7D;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;iBAC1B;aACF;SACF;QAGD,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC;gBACjC,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,iBAAiB,EAAE;oBACzC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/D;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;wBACnB,KAAK,EAAE,SAAS,WAAW,EAAE;wBAC7B,KAAK,EAAE,cAAc,WAAW,EAAE;wBAClC,KAAK,EAAE,GAAG;qBACX,CAAC,CAAC;iBACJ;aACF;SACF;QAGD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;CACF;AAlED,0DAkEC","file":"paste-add-row-column.js","sourcesContent":["import type { ListTable, BaseTableAPI, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nexport type IPasteAddRowColumnPluginOptions = {\n id?: string;\n addRowCallback?: (addedRow: number, table: ListTable) => void;\n addColumnCallback?: (addedCount: number, table: ListTable) => void;\n};\n\nexport class PasteAddRowColumnPlugin implements pluginsDefinition.IVTablePlugin {\n id = `paste-add-row-column`;\n name = 'Paste Add row';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.PASTED_DATA];\n table: ListTable;\n pluginOptions: IPasteAddRowColumnPluginOptions;\n pastedData: any;\n constructor(pluginOptions?: IPasteAddRowColumnPluginOptions) {\n this.pluginOptions = pluginOptions;\n this.id = pluginOptions?.id ?? this.id;\n }\n run(...args: any[]) {\n const runtime = args[1];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n if (runtime === TABLE_EVENT_TYPE.PASTED_DATA) {\n this.pastedData = args[0];\n this.handlePaste();\n }\n }\n\n handlePaste() {\n const { pasteData, row, col } = this.pastedData;\n const rowCount = this.table.rowCount;\n const colCount = this.table.colCount;\n\n const pastedRowCount = pasteData.length;\n const pastedColCount = pasteData[0]?.length || 0;\n\n const rowsNeeded = row + pastedRowCount - rowCount;\n const colsNeeded = col + pastedColCount - colCount;\n\n // 扩展行\n if (rowsNeeded > 0) {\n for (let i = 0; i < rowsNeeded; i++) {\n if (this.pluginOptions?.addRowCallback) {\n this.pluginOptions.addRowCallback(rowCount + i, this.table);\n } else {\n this.table.addRecord([]);\n }\n }\n }\n\n // 扩展列\n if (colsNeeded > 0) {\n for (let i = 0; i < colsNeeded; i++) {\n const newColIndex = colCount + i;\n if (this.pluginOptions?.addColumnCallback) {\n this.pluginOptions.addColumnCallback(newColIndex, this.table);\n } else {\n this.table.addColumn({\n field: `field_${newColIndex}`,\n title: `New Column ${newColIndex}`,\n width: 100\n });\n }\n }\n }\n\n // 最后统一写入数据\n this.table.changeCellValues(col, row, pasteData, true);\n }\n\n release() {\n this.table.internalProps.handler.clear();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/paste-add-row-column.ts"],"names":[],"mappings":";;;AACA,6CAAoD;AAOpD,MAAa,uBAAuB;IAOlC,YAAY,aAA+C;;QAN3D,OAAE,GAAG,sBAAsB,CAAC;QAC5B,SAAI,GAAG,eAAe,CAAC;QACvB,YAAO,GAAG,CAAC,yBAAgB,CAAC,WAAW,EAAE,yBAAgB,CAAC,WAAW,CAAC,CAAC;QAKrE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,mCAAI,IAAI,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,GAAG,IAAW;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAiB,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAkB,CAAC;QAChC,IAAI,OAAO,KAAK,yBAAgB,CAAC,WAAW,EAAE;YAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,WAAW;;QACT,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAErC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;QACxC,MAAM,cAAc,GAAG,CAAA,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC;QACnD,MAAM,UAAU,GAAG,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC;QAGnD,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,cAAc,EAAE;oBACtC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC7D;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;iBAC1B;aACF;SACF;QAGD,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC;gBACjC,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,iBAAiB,EAAE;oBACzC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/D;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;wBACpB;4BACE,KAAK,EAAE,SAAS,WAAW,EAAE;4BAC7B,KAAK,EAAE,cAAc,WAAW,EAAE;4BAClC,KAAK,EAAE,GAAG;yBACX;qBACF,CAAC,CAAC;iBACJ;aACF;SACF;QAGD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;CACF;AApED,0DAoEC","file":"paste-add-row-column.js","sourcesContent":["import type { ListTable, BaseTableAPI, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nexport type IPasteAddRowColumnPluginOptions = {\n id?: string;\n addRowCallback?: (addedRow: number, table: ListTable) => void;\n addColumnCallback?: (addedCount: number, table: ListTable) => void;\n};\n\nexport class PasteAddRowColumnPlugin implements pluginsDefinition.IVTablePlugin {\n id = `paste-add-row-column`;\n name = 'Paste Add row';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.PASTED_DATA];\n table: ListTable;\n pluginOptions: IPasteAddRowColumnPluginOptions;\n pastedData: any;\n constructor(pluginOptions?: IPasteAddRowColumnPluginOptions) {\n this.pluginOptions = pluginOptions;\n this.id = pluginOptions?.id ?? this.id;\n }\n run(...args: any[]) {\n const runtime = args[1];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n if (runtime === TABLE_EVENT_TYPE.PASTED_DATA) {\n this.pastedData = args[0];\n this.handlePaste();\n }\n }\n\n handlePaste() {\n const { pasteData, row, col } = this.pastedData;\n const rowCount = this.table.rowCount;\n const colCount = this.table.colCount;\n\n const pastedRowCount = pasteData.length;\n const pastedColCount = pasteData[0]?.length || 0;\n\n const rowsNeeded = row + pastedRowCount - rowCount;\n const colsNeeded = col + pastedColCount - colCount;\n\n // 扩展行\n if (rowsNeeded > 0) {\n for (let i = 0; i < rowsNeeded; i++) {\n if (this.pluginOptions?.addRowCallback) {\n this.pluginOptions.addRowCallback(rowCount + i, this.table);\n } else {\n this.table.addRecord([]);\n }\n }\n }\n\n // 扩展列\n if (colsNeeded > 0) {\n for (let i = 0; i < colsNeeded; i++) {\n const newColIndex = colCount + i;\n if (this.pluginOptions?.addColumnCallback) {\n this.pluginOptions.addColumnCallback(newColIndex, this.table);\n } else {\n this.table.addColumns([\n {\n field: `field_${newColIndex}`,\n title: `New Column ${newColIndex}`,\n width: 100\n }\n ]);\n }\n }\n }\n\n // 最后统一写入数据\n this.table.changeCellValues(col, row, pasteData, true);\n }\n\n release() {\n this.table.internalProps.handler.clear();\n }\n}\n"]}
package/cjs/row-series.js CHANGED
@@ -32,5 +32,4 @@ class RowSeriesPlugin {
32
32
  }
33
33
  }
34
34
 
35
- exports.RowSeriesPlugin = RowSeriesPlugin;
36
- //# sourceMappingURL=row-series.js.map
35
+ exports.RowSeriesPlugin = RowSeriesPlugin;
@@ -70,4 +70,5 @@ class TableCarouselAnimationPlugin {
70
70
  release() {}
71
71
  }
72
72
 
73
- exports.TableCarouselAnimationPlugin = TableCarouselAnimationPlugin;
73
+ exports.TableCarouselAnimationPlugin = TableCarouselAnimationPlugin;
74
+ //# sourceMappingURL=table-carousel-animation.js.map
@@ -50,5 +50,5 @@ function escapeForCSV(str) {
50
50
  return /[,"\r\n]/.test(escapedStr) && (escapedStr = `"${escapedStr}"`), escapedStr;
51
51
  }
52
52
 
53
+ exports.exportVTableToCsv = exportVTableToCsv;
53
54
  //# sourceMappingURL=index.js.map
54
- exports.exportVTableToCsv = exportVTableToCsv;
@@ -193,4 +193,5 @@ exports.DEFAULT_COLORS = {
193
193
  whitesmoke: 16119285,
194
194
  yellow: 16776960,
195
195
  yellowgreen: 10145074
196
- };
196
+ };
197
+ //# sourceMappingURL=color.js.map
@@ -56,5 +56,5 @@ function workSheetStr2ArrayBuffer(workSheetStr) {
56
56
  return buffer;
57
57
  }
58
58
 
59
+ exports.downloadCsv = downloadCsv, exports.downloadExcel = downloadExcel;
59
60
  //# sourceMappingURL=download.js.map
60
- exports.downloadCsv = downloadCsv, exports.downloadExcel = downloadExcel;
@@ -14,4 +14,4 @@ Object.defineProperty(exports, "__esModule", {
14
14
  value: !0
15
15
  }), exports.encodeCellAddress = exports.encodeCellRange = void 0, exports.encodeCellRange = encodeCellRange,
16
16
  exports.encodeCellAddress = encodeCellAddress;
17
- //# sourceMappingURL=encode.js.map
17
+ //# sourceMappingURL=encode.js.map
@@ -24,4 +24,4 @@ function getHierarchyOffset(col, row, table) {
24
24
  }
25
25
 
26
26
  exports.getHierarchyOffset = getHierarchyOffset;
27
- //# sourceMappingURL=indent.js.map
27
+ //# sourceMappingURL=indent.js.map
@@ -21,4 +21,4 @@ function handlePaginationExport(table, exportAllData) {
21
21
  }
22
22
 
23
23
  exports.handlePaginationExport = handlePaginationExport;
24
- //# sourceMappingURL=pagination.js.map
24
+ //# sourceMappingURL=pagination.js.map
@@ -7,4 +7,4 @@ function isPromise(obj) {
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: !0
9
9
  }), exports.isPromise = void 0, exports.isPromise = isPromise;
10
- //# sourceMappingURL=promise.js.map
10
+ //# sourceMappingURL=promise.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map