@visactor/vtable-sheet 1.23.1 → 1.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,8 @@
1
1
  import type * as VTable from '@visactor/vtable';
2
2
  import type { ISheetDefine, IVTableSheetOptions } from '../ts-types';
3
3
  export declare function getTablePlugins(sheetDefine?: ISheetDefine, options?: IVTableSheetOptions, vtableSheet?: any): VTable.pluginsDefinition.IVTablePlugin[];
4
+ export declare function createFormulaDetectionOptions(sheetDefine?: ISheetDefine, options?: IVTableSheetOptions, vtableSheet?: any): {
5
+ isFormulaCell: (col: number, row: number, cellData: unknown, table: VTable.ListTable) => boolean;
6
+ getCellFormula: (col: number, row: number, cellData: unknown, table: VTable.ListTable) => string | undefined;
7
+ setCellFormula: (col: number, row: number, formula: string, table: VTable.ListTable) => void;
8
+ };
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.getTablePlugins = void 0;
5
+ }), exports.createFormulaDetectionOptions = exports.getTablePlugins = void 0;
6
6
 
7
7
  const vtable_plugins_1 = require("@visactor/vtable-plugins"), vutils_1 = require("@visactor/vutils");
8
8
 
@@ -192,11 +192,14 @@ function handleDisableFirstRowAsHeader(table) {
192
192
  }
193
193
 
194
194
  function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
195
+ const getActiveSheetKey = () => {
196
+ var _a, _b, _c, _d, _e, _f;
197
+ return (null === (_c = null === (_b = null === (_a = null == vtableSheet ? void 0 : vtableSheet.getActiveSheet) || void 0 === _a ? void 0 : _a.call(vtableSheet)) || void 0 === _b ? void 0 : _b.getKey) || void 0 === _c ? void 0 : _c.call(_b)) || (null === (_f = null === (_e = null === (_d = null == vtableSheet ? void 0 : vtableSheet.sheetManager) || void 0 === _d ? void 0 : _d.getActiveSheet) || void 0 === _e ? void 0 : _e.call(_d)) || void 0 === _f ? void 0 : _f.sheetKey) || (null == sheetDefine ? void 0 : sheetDefine.sheetKey) || "Sheet1";
198
+ };
195
199
  return {
196
200
  isFormulaCell: (col, row, cellData, table) => {
197
- var _a;
198
201
  if (null == vtableSheet ? void 0 : vtableSheet.formulaManager) try {
199
- const sheetName = (null === (_a = vtableSheet.sheetManager) || void 0 === _a ? void 0 : _a._activeSheetKey) || "Sheet1";
202
+ const sheetName = getActiveSheetKey();
200
203
  return vtableSheet.formulaManager.isCellFormula({
201
204
  sheet: sheetName,
202
205
  row: row,
@@ -208,9 +211,8 @@ function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
208
211
  return "string" == typeof cellValue && cellValue.startsWith("=");
209
212
  },
210
213
  getCellFormula: (col, row, cellData, table) => {
211
- var _a;
212
214
  if (null == vtableSheet ? void 0 : vtableSheet.formulaManager) try {
213
- const sheetName = (null === (_a = vtableSheet.sheetManager) || void 0 === _a ? void 0 : _a._activeSheetKey) || "Sheet1";
215
+ const sheetName = getActiveSheetKey();
214
216
  return vtableSheet.formulaManager.getCellFormula({
215
217
  sheet: sheetName,
216
218
  row: row,
@@ -221,9 +223,8 @@ function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
221
223
  if ("string" == typeof cellValue && cellValue.startsWith("=")) return cellValue;
222
224
  },
223
225
  setCellFormula: (col, row, formula, table) => {
224
- var _a;
225
226
  if (null == vtableSheet ? void 0 : vtableSheet.formulaManager) try {
226
- const sheetName = (null === (_a = vtableSheet.sheetManager) || void 0 === _a ? void 0 : _a._activeSheetKey) || "Sheet1";
227
+ const sheetName = getActiveSheetKey();
227
228
  return void vtableSheet.formulaManager.setCellContent({
228
229
  sheet: sheetName,
229
230
  row: row,
@@ -235,5 +236,5 @@ function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
235
236
  };
236
237
  }
237
238
 
238
- //# sourceMappingURL=table-plugins.js.map
239
- exports.getTablePlugins = getTablePlugins;
239
+ exports.getTablePlugins = getTablePlugins, exports.createFormulaDetectionOptions = createFormulaDetectionOptions;
240
+ //# sourceMappingURL=table-plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/table-plugins.ts"],"names":[],"mappings":"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","file":"table-plugins.js","sourcesContent":["import type * as VTable from '@visactor/vtable';\nimport {\n FilterPlugin,\n AddRowColumnPlugin,\n TableSeriesNumber,\n HighlightHeaderWhenSelectCellPlugin,\n ContextMenuPlugin,\n ExcelEditCellKeyboardPlugin,\n AutoFillPlugin,\n DEFAULT_HEADER_MENU_ITEMS,\n DEFAULT_BODY_MENU_ITEMS,\n DEFAULT_COLUMN_SERIES_MENU_ITEMS\n} from '@visactor/vtable-plugins';\nimport type {\n FilterOptions,\n MenuItemOrSeparator,\n MenuClickEventArgs,\n AddRowColumnOptions,\n TableSeriesNumberOptions,\n IHighlightHeaderWhenSelectCellPluginOptions,\n ContextMenuOptions\n} from '@visactor/vtable-plugins';\nimport type { ISheetDefine, IColumnDefine, IVTableSheetOptions } from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\n/**\n * 获取表格插件列表\n * @param sheetDefine Sheet配置定义\n * @param options 配置选项\n * @param vtableSheet VTableSheet实例(可选,用于访问公式管理器)\n * @returns 插件数组\n */\nexport function getTablePlugins(\n sheetDefine?: ISheetDefine,\n options?: IVTableSheetOptions,\n vtableSheet?: any\n): VTable.pluginsDefinition.IVTablePlugin[] {\n const plugins: VTable.pluginsDefinition.IVTablePlugin[] = [];\n // 结合options.VTablePluginModules,来判断是否禁用插件\n const disabledPluginsUserSetted = options?.VTablePluginModules?.filter(module => module.disabled);\n let enabledPluginsUserSetted = options?.VTablePluginModules?.filter(module => !module.disabled);\n if (!disabledPluginsUserSetted?.some(module => module.module === FilterPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === FilterPlugin)\n ?.moduleOptions as FilterOptions;\n const filterPlugin = createFilterPlugin(sheetDefine, userPluginOptions);\n if (filterPlugin) {\n plugins.push(filterPlugin);\n }\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === AddRowColumnPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === AddRowColumnPlugin)\n ?.moduleOptions as AddRowColumnOptions;\n\n // Safety check for AddRowColumnPlugin availability\n if (!AddRowColumnPlugin) {\n console.warn('AddRowColumnPlugin is not available in @visactor/vtable-plugins');\n } else {\n const addRowColumnPlugin = new AddRowColumnPlugin({\n addRowCallback: (row: number, tableInstance: VTable.ListTable) => {\n tableInstance.addRecord([], row - tableInstance.columnHeaderLevelCount);\n },\n ...userPluginOptions\n });\n plugins.push(addRowColumnPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== AddRowColumnPlugin);\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === TableSeriesNumber)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === TableSeriesNumber)\n ?.moduleOptions as TableSeriesNumberOptions;\n\n // Safety check for TableSeriesNumber availability\n if (!TableSeriesNumber) {\n console.warn('TableSeriesNumber is not available in @visactor/vtable-plugins');\n } else {\n // 构建插件选项,包含dragOrder(即使类型定义中没有,插件实际支持)\n const pluginOptions: TableSeriesNumberOptions & { dragOrder?: any } = {\n rowCount: sheetDefine?.rowCount || 100,\n colCount: sheetDefine?.columnCount || 100,\n rowSeriesNumberWidth: 30,\n colSeriesNumberHeight: 30,\n rowSeriesNumberCellStyle:\n sheetDefine?.theme?.rowSeriesNumberCellStyle || options?.theme?.rowSeriesNumberCellStyle,\n colSeriesNumberCellStyle:\n sheetDefine?.theme?.colSeriesNumberCellStyle || options?.theme?.colSeriesNumberCellStyle,\n ...userPluginOptions\n };\n\n // 如果sheet定义中有dragOrder,添加到插件选项中\n if (sheetDefine?.dragOrder) {\n pluginOptions.dragOrder = sheetDefine.dragOrder;\n }\n\n const tableSeriesNumberPlugin = new TableSeriesNumber(pluginOptions);\n plugins.push(tableSeriesNumberPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== TableSeriesNumber);\n }\n // 这个插件有个bug 先不启用 #4447\n // if (!disabledPlugins?.some(module => module.module === HighlightHeaderWhenSelectCellPlugin)) {\n // const userPluginOptions = enabledPlugins?.find(module => module.module === HighlightHeaderWhenSelectCellPlugin)\n // ?.moduleOptions as IHighlightHeaderWhenSelectCellPluginOptions;\n // const highlightHeaderWhenSelectCellPlugin = new HighlightHeaderWhenSelectCellPlugin({\n // colHighlight: true,\n // rowHighlight: true,\n // ...userPluginOptions\n // });\n // plugins.push(highlightHeaderWhenSelectCellPlugin); // 这个插件有个bug 先不启用 #4447\n // }\n if (!disabledPluginsUserSetted?.some(module => module.module === ContextMenuPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(\n module => module.module === ContextMenuPlugin\n )?.moduleOptions;\n\n // Safety check for ContextMenuPlugin availability\n if (!ContextMenuPlugin) {\n console.warn('ContextMenuPlugin is not available in @visactor/vtable-plugins');\n } else {\n const contextMenuPlugin = createContextMenuItems(sheetDefine, userPluginOptions);\n plugins.push(contextMenuPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== ContextMenuPlugin);\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === ExcelEditCellKeyboardPlugin)) {\n const userPluginOptions =\n enabledPluginsUserSetted?.find(module => module.module === ExcelEditCellKeyboardPlugin)?.moduleOptions ?? {};\n\n // Safety check for ExcelEditCellKeyboardPlugin availability\n if (!ExcelEditCellKeyboardPlugin) {\n console.warn('ExcelEditCellKeyboardPlugin is not available in @visactor/vtable-plugins');\n } else {\n // let currentState_editingEditor: IEditor | null = null; //需要在keyDownBeforeCallback中保存下来,因为插件处理事件中会影响这个值(调用了completeEdit)\n // const keyDownBeforeCallback = function (this: ExcelEditCellKeyboardPlugin, event: KeyboardEvent) {\n // currentState_editingEditor = sheet.getActiveSheet()?.tableInstance?.editorManager.editingEditor;\n // };\n // // 注意:这里使用普通函数而不是箭头函数,这样才能通过 apply 正确绑定 this 为插件实例\n // const keyDownAfterCallback = function (this: ExcelEditCellKeyboardPlugin, event: KeyboardEvent) {\n // const eventKey = event.key.toLowerCase() as ExcelEditCellKeyboardResponse;\n // if (this.responseKeyboard.includes(eventKey)) {\n // if (\n // (currentState_editingEditor &&\n // eventKey !== ExcelEditCellKeyboardResponse.DELETE &&\n // eventKey !== ExcelEditCellKeyboardResponse.BACKSPACE) ||\n // (!currentState_editingEditor &&\n // (eventKey === ExcelEditCellKeyboardResponse.DELETE ||\n // eventKey === ExcelEditCellKeyboardResponse.BACKSPACE)) ||\n // sheet.formulaManager._formulaWorkingOnCell\n // ) {\n // event.stopPropagation();\n // event.preventDefault();\n // }\n // }\n // };\n // 创建插件时包含回调\n const excelEditCellKeyboardPlugin = new ExcelEditCellKeyboardPlugin(userPluginOptions);\n plugins.push(excelEditCellKeyboardPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(\n module => module.module !== ExcelEditCellKeyboardPlugin\n );\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === AutoFillPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === AutoFillPlugin)?.moduleOptions;\n\n // Safety check for AutoFillPlugin availability\n if (!AutoFillPlugin) {\n console.warn('AutoFillPlugin is not available in @visactor/vtable-plugins');\n } else {\n // Create formula detection functions that use vtable-sheet's formula engine\n const formulaDetectionOptions = createFormulaDetectionOptions(sheetDefine, options, vtableSheet);\n\n const autoFillPlugin = new AutoFillPlugin({\n ...userPluginOptions,\n ...formulaDetectionOptions\n });\n plugins.push(autoFillPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== AutoFillPlugin);\n }\n if (enabledPluginsUserSetted?.length) {\n enabledPluginsUserSetted.forEach(\n (module: {\n module: new (options: unknown) => VTable.pluginsDefinition.IVTablePlugin;\n moduleOptions: unknown;\n disabled: boolean;\n }) => {\n if (typeof module?.module === 'function') {\n // 检查是否为构造函数\n plugins.push(new module.module(module.moduleOptions));\n } else {\n console.error(`Invalid plugin: ${module.module}`);\n }\n }\n );\n }\n return plugins;\n}\n\n/**\n * 创建筛选插件(如果需要)\n * @param sheetDefine Sheet配置\n * @returns 筛选插件实例或null\n */\nfunction createFilterPlugin(sheetDefine?: ISheetDefine, userPluginOptions?: FilterOptions): FilterPlugin | null {\n // // 对象配置\n // if (typeof sheetDefine.filter === 'object') {\n // return new VTablePlugins.FilterPlugin({\n // filterIcon: sheetDefine.filter.filterIcon,\n // filteringIcon: sheetDefine.filter.filteringIcon,\n // enableFilter: createColumnFilterChecker(sheetDefine),\n // filterModes: sheetDefine.filter.filterModes\n // });\n // }\n\n // 检查 FilterPlugin 是否可用\n if (!FilterPlugin) {\n console.warn('FilterPlugin is not available in @visactor/vtable-plugins');\n return null;\n }\n\n // 构建插件选项,确保符合FilterOptions接口\n const pluginOptions: FilterOptions = {\n enableFilter: createColumnFilterChecker(sheetDefine),\n ...userPluginOptions\n };\n\n return new FilterPlugin(pluginOptions);\n}\n\n/**\n * 创建列级别筛选检查函数\n * @param sheetDefine Sheet配置\n * @returns 筛选检查函数\n */\nfunction createColumnFilterChecker(sheetDefine: ISheetDefine) {\n return (columnIndex: number, column: VTable.TYPES.ColumnDefine): boolean => {\n // 由于在 vtable-sheet,把列索引作为列的唯一标识 field,因此这里直接使用列索引\n if (columnIndex < 0 || !sheetDefine.columns || columnIndex >= sheetDefine.columns.length) {\n return false; // 默认启用,保持向后兼容\n }\n\n // 获取列定义配置\n const columnDefine = sheetDefine.columns[columnIndex] as IColumnDefine;\n const filter = !!(columnDefine?.filter ?? sheetDefine.filter);\n // 明确禁用检查\n return filter;\n };\n}\n\nfunction createContextMenuItems(sheetDefine: ISheetDefine, userPluginOptions?: ContextMenuOptions) {\n return new ContextMenuPlugin({\n headerCellMenuItems: [\n ...DEFAULT_HEADER_MENU_ITEMS,\n {\n text: '设置筛选器',\n menuKey: 'set_filter'\n },\n {\n text: '取消筛选器',\n menuKey: 'cancel_filter'\n },\n {\n text: '首行表头',\n menuKey: 'enable_first_row_as_header'\n },\n {\n text: '取消表头',\n menuKey: 'disable_first_row_as_header'\n }\n ],\n bodyCellMenuItems: [\n ...DEFAULT_BODY_MENU_ITEMS,\n {\n text: '启用首行表头',\n menuKey: 'enable_first_row_as_header'\n }\n ],\n columnSeriesNumberMenuItems: [\n ...DEFAULT_COLUMN_SERIES_MENU_ITEMS,\n {\n text: '首行表头',\n menuKey: 'enable_first_row_as_header'\n },\n {\n text: '取消表头',\n menuKey: 'disable_first_row_as_header'\n }\n ],\n beforeShowAdjustMenuItems: (\n menuItems: MenuItemOrSeparator[],\n table: VTable.ListTable,\n col: number,\n row: number\n ) => {\n let isColumnSeriesNumber = false;\n let isHeaderCell = false;\n let isBodyCell = false;\n\n if (!isValid(row)) {\n isColumnSeriesNumber = true;\n }\n if (isValid(col) && isValid(row)) {\n if (table.isHeader(col, row)) {\n isHeaderCell = true;\n } else {\n isBodyCell = true;\n }\n }\n if (isHeaderCell) {\n const column = table.options.columns[col] as IColumnDefine;\n if (column.filter ?? sheetDefine?.filter) {\n menuItems = menuItems.filter(item => typeof item === 'string' || item.menuKey !== 'set_filter');\n } else {\n menuItems = menuItems.filter(item => typeof item === 'string' || item.menuKey !== 'cancel_filter');\n }\n }\n\n if (isHeaderCell) {\n menuItems = menuItems.filter(item => typeof item === 'string' || item.menuKey !== 'enable_first_row_as_header');\n } else if (isBodyCell) {\n if (row === 0) {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'disable_first_row_as_header'\n );\n } else {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'enable_first_row_as_header'\n );\n }\n } else if (isColumnSeriesNumber) {\n if (table.isHeader(col, 0)) {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'enable_first_row_as_header'\n );\n } else {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'disable_first_row_as_header'\n );\n }\n }\n return menuItems;\n },\n menuClickCallback: {\n set_filter: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n // 更新 sheetDefine 配置\n sheetDefine.columns[args.colIndex].filter = true;\n\n // 创建新的 options 对象,确保配置变化被正确传递\n const newOptions = {\n ...table.options,\n columns: table.options.columns.map((col: VTable.ColumnDefine, index: number) => {\n if (index === args.colIndex) {\n return { ...col, filter: true };\n }\n return col;\n })\n };\n // 更新表格配置\n table.updateOption(newOptions, { clearColWidthCache: false, clearRowHeightCache: false });\n },\n cancel_filter: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n // 更新 sheetDefine 配置\n sheetDefine.columns[args.colIndex].filter = false;\n\n // 创建新的 options 对象,确保配置变化被正确传递\n const newOptions = {\n ...table.options,\n columns: table.options.columns.map((col: VTable.ColumnDefine, index: number) => {\n if (index === args.colIndex) {\n return { ...col, filter: false };\n }\n return col;\n })\n };\n\n // 更新表格配置\n table.updateOption(newOptions, { clearColWidthCache: false, clearRowHeightCache: false });\n },\n enable_first_row_as_header: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n handleEnableFirstRowAsHeader(table);\n },\n disable_first_row_as_header: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n handleDisableFirstRowAsHeader(table);\n }\n },\n ...userPluginOptions\n });\n}\n\n/**\n * 处理启用第一行作为表头\n */\nfunction handleEnableFirstRowAsHeader(table: VTable.ListTable): void {\n // 获取第一行数据\n const firstRecord = table.records[0] as string[];\n // 获取剩余数据\n const new_records = table.records.slice(1);\n //获取当前column\n const columns = table.columns;\n // 设置第一行为表头\n firstRecord.forEach((item, index) => {\n columns[index].title = item;\n });\n table.updateOption(Object.assign({}, table.options, { records: new_records, columns, showHeader: true }), {\n clearColWidthCache: false,\n clearRowHeightCache: false\n });\n // 更新渲染\n table.scenegraph.updateNextFrame();\n}\n\n/**\n * 处理禁用第一行作为表头\n */\nfunction handleDisableFirstRowAsHeader(table: VTable.ListTable): void {\n const columns = table.columns;\n const firstRecord: (string | number)[] = [];\n columns.forEach((col, index) => {\n firstRecord.push(col.title as string);\n });\n //像records中添加第一行\n const new_records = [firstRecord, ...table.records];\n table.updateOption(Object.assign({}, table.options, { records: new_records, columns, showHeader: false }), {\n clearColWidthCache: false,\n clearRowHeightCache: false\n });\n table.scenegraph.updateNextFrame();\n}\n\n/**\n * 创建公式检测选项,使用vtable-sheet的公式引擎\n */\nfunction createFormulaDetectionOptions(sheetDefine?: ISheetDefine, options?: IVTableSheetOptions, vtableSheet?: any) {\n return {\n /**\n * 自定义公式检测函数 - 使用vtable-sheet的公式引擎判断是否为公式\n */\n isFormulaCell: (col: number, row: number, cellData: unknown, table: VTable.ListTable): boolean => {\n // 首先尝试使用vtable-sheet的公式管理器\n if (vtableSheet?.formulaManager) {\n try {\n const sheetName = (vtableSheet.sheetManager as any)?._activeSheetKey || 'Sheet1';\n return vtableSheet.formulaManager.isCellFormula({\n sheet: sheetName,\n row: row,\n col: col\n });\n } catch (error) {\n // 如果公式引擎调用失败,回退到表格级别的检测\n }\n }\n\n // 回退到简单检测:检查单元格值是否以=开头\n if (typeof cellData === 'string' && cellData.startsWith('=')) {\n return true;\n }\n\n // 检查单元格原始值(可能是计算后的值)\n const cellValue = table.getCellValue(col, row);\n return typeof cellValue === 'string' && cellValue.startsWith('=');\n },\n\n /**\n * 自定义公式获取函数 - 从vtable-sheet公式引擎获取公式字符串\n */\n getCellFormula: (col: number, row: number, cellData: unknown, table: VTable.ListTable): string | undefined => {\n // 首先尝试使用vtable-sheet的公式管理器\n if (vtableSheet?.formulaManager) {\n try {\n const sheetName = (vtableSheet.sheetManager as any)?._activeSheetKey || 'Sheet1';\n return vtableSheet.formulaManager.getCellFormula({\n sheet: sheetName,\n row: row,\n col: col\n });\n } catch (error) {\n // 如果公式引擎调用失败,回退到表格级别的检测\n }\n }\n\n // 回退到简单检测:如果单元格值以=开头,返回该值作为公式\n const cellValue = table.getCellValue(col, row);\n if (typeof cellValue === 'string' && cellValue.startsWith('=')) {\n return cellValue;\n }\n\n return undefined;\n },\n\n /**\n * 自定义公式设置函数 - 使用vtable-sheet公式引擎设置公式\n */\n setCellFormula: (col: number, row: number, formula: string, table: VTable.ListTable): void => {\n // 首先尝试使用vtable-sheet的公式管理器\n if (vtableSheet?.formulaManager) {\n try {\n const sheetName = (vtableSheet.sheetManager as any)?._activeSheetKey || 'Sheet1';\n vtableSheet.formulaManager.setCellContent(\n {\n sheet: sheetName,\n row: row,\n col: col\n },\n formula\n );\n return;\n } catch (error) {\n // 如果公式引擎调用失败,回退到表格级别的设置\n }\n }\n\n // 回退到直接设置单元格值\n table.changeCellValue(col, row, formula);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/table-plugins.ts"],"names":[],"mappings":"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","file":"table-plugins.js","sourcesContent":["import type * as VTable from '@visactor/vtable';\nimport {\n FilterPlugin,\n AddRowColumnPlugin,\n TableSeriesNumber,\n HighlightHeaderWhenSelectCellPlugin,\n ContextMenuPlugin,\n ExcelEditCellKeyboardPlugin,\n AutoFillPlugin,\n DEFAULT_HEADER_MENU_ITEMS,\n DEFAULT_BODY_MENU_ITEMS,\n DEFAULT_COLUMN_SERIES_MENU_ITEMS\n} from '@visactor/vtable-plugins';\nimport type {\n FilterOptions,\n MenuItemOrSeparator,\n MenuClickEventArgs,\n AddRowColumnOptions,\n TableSeriesNumberOptions,\n IHighlightHeaderWhenSelectCellPluginOptions,\n ContextMenuOptions\n} from '@visactor/vtable-plugins';\nimport type { ISheetDefine, IColumnDefine, IVTableSheetOptions } from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\n/**\n * 获取表格插件列表\n * @param sheetDefine Sheet配置定义\n * @param options 配置选项\n * @param vtableSheet VTableSheet实例(可选,用于访问公式管理器)\n * @returns 插件数组\n */\nexport function getTablePlugins(\n sheetDefine?: ISheetDefine,\n options?: IVTableSheetOptions,\n vtableSheet?: any\n): VTable.pluginsDefinition.IVTablePlugin[] {\n const plugins: VTable.pluginsDefinition.IVTablePlugin[] = [];\n // 结合options.VTablePluginModules,来判断是否禁用插件\n const disabledPluginsUserSetted = options?.VTablePluginModules?.filter(module => module.disabled);\n let enabledPluginsUserSetted = options?.VTablePluginModules?.filter(module => !module.disabled);\n if (!disabledPluginsUserSetted?.some(module => module.module === FilterPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === FilterPlugin)\n ?.moduleOptions as FilterOptions;\n const filterPlugin = createFilterPlugin(sheetDefine, userPluginOptions);\n if (filterPlugin) {\n plugins.push(filterPlugin);\n }\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === AddRowColumnPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === AddRowColumnPlugin)\n ?.moduleOptions as AddRowColumnOptions;\n\n // Safety check for AddRowColumnPlugin availability\n if (!AddRowColumnPlugin) {\n console.warn('AddRowColumnPlugin is not available in @visactor/vtable-plugins');\n } else {\n const addRowColumnPlugin = new AddRowColumnPlugin({\n addRowCallback: (row: number, tableInstance: VTable.ListTable) => {\n tableInstance.addRecord([], row - tableInstance.columnHeaderLevelCount);\n },\n ...userPluginOptions\n });\n plugins.push(addRowColumnPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== AddRowColumnPlugin);\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === TableSeriesNumber)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === TableSeriesNumber)\n ?.moduleOptions as TableSeriesNumberOptions;\n\n // Safety check for TableSeriesNumber availability\n if (!TableSeriesNumber) {\n console.warn('TableSeriesNumber is not available in @visactor/vtable-plugins');\n } else {\n // 构建插件选项,包含dragOrder(即使类型定义中没有,插件实际支持)\n const pluginOptions: TableSeriesNumberOptions & { dragOrder?: any } = {\n rowCount: sheetDefine?.rowCount || 100,\n colCount: sheetDefine?.columnCount || 100,\n rowSeriesNumberWidth: 30,\n colSeriesNumberHeight: 30,\n rowSeriesNumberCellStyle:\n sheetDefine?.theme?.rowSeriesNumberCellStyle || options?.theme?.rowSeriesNumberCellStyle,\n colSeriesNumberCellStyle:\n sheetDefine?.theme?.colSeriesNumberCellStyle || options?.theme?.colSeriesNumberCellStyle,\n ...userPluginOptions\n };\n\n // 如果sheet定义中有dragOrder,添加到插件选项中\n if (sheetDefine?.dragOrder) {\n pluginOptions.dragOrder = sheetDefine.dragOrder;\n }\n\n const tableSeriesNumberPlugin = new TableSeriesNumber(pluginOptions);\n plugins.push(tableSeriesNumberPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== TableSeriesNumber);\n }\n // 这个插件有个bug 先不启用 #4447\n // if (!disabledPlugins?.some(module => module.module === HighlightHeaderWhenSelectCellPlugin)) {\n // const userPluginOptions = enabledPlugins?.find(module => module.module === HighlightHeaderWhenSelectCellPlugin)\n // ?.moduleOptions as IHighlightHeaderWhenSelectCellPluginOptions;\n // const highlightHeaderWhenSelectCellPlugin = new HighlightHeaderWhenSelectCellPlugin({\n // colHighlight: true,\n // rowHighlight: true,\n // ...userPluginOptions\n // });\n // plugins.push(highlightHeaderWhenSelectCellPlugin); // 这个插件有个bug 先不启用 #4447\n // }\n if (!disabledPluginsUserSetted?.some(module => module.module === ContextMenuPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(\n module => module.module === ContextMenuPlugin\n )?.moduleOptions;\n\n // Safety check for ContextMenuPlugin availability\n if (!ContextMenuPlugin) {\n console.warn('ContextMenuPlugin is not available in @visactor/vtable-plugins');\n } else {\n const contextMenuPlugin = createContextMenuItems(sheetDefine, userPluginOptions);\n plugins.push(contextMenuPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== ContextMenuPlugin);\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === ExcelEditCellKeyboardPlugin)) {\n const userPluginOptions =\n enabledPluginsUserSetted?.find(module => module.module === ExcelEditCellKeyboardPlugin)?.moduleOptions ?? {};\n\n // Safety check for ExcelEditCellKeyboardPlugin availability\n if (!ExcelEditCellKeyboardPlugin) {\n console.warn('ExcelEditCellKeyboardPlugin is not available in @visactor/vtable-plugins');\n } else {\n // let currentState_editingEditor: IEditor | null = null; //需要在keyDownBeforeCallback中保存下来,因为插件处理事件中会影响这个值(调用了completeEdit)\n // const keyDownBeforeCallback = function (this: ExcelEditCellKeyboardPlugin, event: KeyboardEvent) {\n // currentState_editingEditor = sheet.getActiveSheet()?.tableInstance?.editorManager.editingEditor;\n // };\n // // 注意:这里使用普通函数而不是箭头函数,这样才能通过 apply 正确绑定 this 为插件实例\n // const keyDownAfterCallback = function (this: ExcelEditCellKeyboardPlugin, event: KeyboardEvent) {\n // const eventKey = event.key.toLowerCase() as ExcelEditCellKeyboardResponse;\n // if (this.responseKeyboard.includes(eventKey)) {\n // if (\n // (currentState_editingEditor &&\n // eventKey !== ExcelEditCellKeyboardResponse.DELETE &&\n // eventKey !== ExcelEditCellKeyboardResponse.BACKSPACE) ||\n // (!currentState_editingEditor &&\n // (eventKey === ExcelEditCellKeyboardResponse.DELETE ||\n // eventKey === ExcelEditCellKeyboardResponse.BACKSPACE)) ||\n // sheet.formulaManager._formulaWorkingOnCell\n // ) {\n // event.stopPropagation();\n // event.preventDefault();\n // }\n // }\n // };\n // 创建插件时包含回调\n const excelEditCellKeyboardPlugin = new ExcelEditCellKeyboardPlugin(userPluginOptions);\n plugins.push(excelEditCellKeyboardPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(\n module => module.module !== ExcelEditCellKeyboardPlugin\n );\n }\n if (!disabledPluginsUserSetted?.some(module => module.module === AutoFillPlugin)) {\n const userPluginOptions = enabledPluginsUserSetted?.find(module => module.module === AutoFillPlugin)?.moduleOptions;\n\n // Safety check for AutoFillPlugin availability\n if (!AutoFillPlugin) {\n console.warn('AutoFillPlugin is not available in @visactor/vtable-plugins');\n } else {\n // Create formula detection functions that use vtable-sheet's formula engine\n const formulaDetectionOptions = createFormulaDetectionOptions(sheetDefine, options, vtableSheet);\n\n const autoFillPlugin = new AutoFillPlugin({\n ...userPluginOptions,\n ...formulaDetectionOptions\n });\n plugins.push(autoFillPlugin);\n }\n //已经初始化过的插件,从enabledPluginsUserSetted中移除\n enabledPluginsUserSetted = enabledPluginsUserSetted?.filter(module => module.module !== AutoFillPlugin);\n }\n if (enabledPluginsUserSetted?.length) {\n enabledPluginsUserSetted.forEach(\n (module: {\n module: new (options: unknown) => VTable.pluginsDefinition.IVTablePlugin;\n moduleOptions: unknown;\n disabled: boolean;\n }) => {\n if (typeof module?.module === 'function') {\n // 检查是否为构造函数\n plugins.push(new module.module(module.moduleOptions));\n } else {\n console.error(`Invalid plugin: ${module.module}`);\n }\n }\n );\n }\n return plugins;\n}\n\n/**\n * 创建筛选插件(如果需要)\n * @param sheetDefine Sheet配置\n * @returns 筛选插件实例或null\n */\nfunction createFilterPlugin(sheetDefine?: ISheetDefine, userPluginOptions?: FilterOptions): FilterPlugin | null {\n // // 对象配置\n // if (typeof sheetDefine.filter === 'object') {\n // return new VTablePlugins.FilterPlugin({\n // filterIcon: sheetDefine.filter.filterIcon,\n // filteringIcon: sheetDefine.filter.filteringIcon,\n // enableFilter: createColumnFilterChecker(sheetDefine),\n // filterModes: sheetDefine.filter.filterModes\n // });\n // }\n\n // 检查 FilterPlugin 是否可用\n if (!FilterPlugin) {\n console.warn('FilterPlugin is not available in @visactor/vtable-plugins');\n return null;\n }\n\n // 构建插件选项,确保符合FilterOptions接口\n const pluginOptions: FilterOptions = {\n enableFilter: createColumnFilterChecker(sheetDefine),\n ...userPluginOptions\n };\n\n return new FilterPlugin(pluginOptions);\n}\n\n/**\n * 创建列级别筛选检查函数\n * @param sheetDefine Sheet配置\n * @returns 筛选检查函数\n */\nfunction createColumnFilterChecker(sheetDefine: ISheetDefine) {\n return (columnIndex: number, column: VTable.TYPES.ColumnDefine): boolean => {\n // 由于在 vtable-sheet,把列索引作为列的唯一标识 field,因此这里直接使用列索引\n if (columnIndex < 0 || !sheetDefine.columns || columnIndex >= sheetDefine.columns.length) {\n return false; // 默认启用,保持向后兼容\n }\n\n // 获取列定义配置\n const columnDefine = sheetDefine.columns[columnIndex] as IColumnDefine;\n const filter = !!(columnDefine?.filter ?? sheetDefine.filter);\n // 明确禁用检查\n return filter;\n };\n}\n\nfunction createContextMenuItems(sheetDefine: ISheetDefine, userPluginOptions?: ContextMenuOptions) {\n return new ContextMenuPlugin({\n headerCellMenuItems: [\n ...DEFAULT_HEADER_MENU_ITEMS,\n {\n text: '设置筛选器',\n menuKey: 'set_filter'\n },\n {\n text: '取消筛选器',\n menuKey: 'cancel_filter'\n },\n {\n text: '首行表头',\n menuKey: 'enable_first_row_as_header'\n },\n {\n text: '取消表头',\n menuKey: 'disable_first_row_as_header'\n }\n ],\n bodyCellMenuItems: [\n ...DEFAULT_BODY_MENU_ITEMS,\n {\n text: '启用首行表头',\n menuKey: 'enable_first_row_as_header'\n }\n ],\n columnSeriesNumberMenuItems: [\n ...DEFAULT_COLUMN_SERIES_MENU_ITEMS,\n {\n text: '首行表头',\n menuKey: 'enable_first_row_as_header'\n },\n {\n text: '取消表头',\n menuKey: 'disable_first_row_as_header'\n }\n ],\n beforeShowAdjustMenuItems: (\n menuItems: MenuItemOrSeparator[],\n table: VTable.ListTable,\n col: number,\n row: number\n ) => {\n let isColumnSeriesNumber = false;\n let isHeaderCell = false;\n let isBodyCell = false;\n\n if (!isValid(row)) {\n isColumnSeriesNumber = true;\n }\n if (isValid(col) && isValid(row)) {\n if (table.isHeader(col, row)) {\n isHeaderCell = true;\n } else {\n isBodyCell = true;\n }\n }\n if (isHeaderCell) {\n const column = table.options.columns[col] as IColumnDefine;\n if (column.filter ?? sheetDefine?.filter) {\n menuItems = menuItems.filter(item => typeof item === 'string' || item.menuKey !== 'set_filter');\n } else {\n menuItems = menuItems.filter(item => typeof item === 'string' || item.menuKey !== 'cancel_filter');\n }\n }\n\n if (isHeaderCell) {\n menuItems = menuItems.filter(item => typeof item === 'string' || item.menuKey !== 'enable_first_row_as_header');\n } else if (isBodyCell) {\n if (row === 0) {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'disable_first_row_as_header'\n );\n } else {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'enable_first_row_as_header'\n );\n }\n } else if (isColumnSeriesNumber) {\n if (table.isHeader(col, 0)) {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'enable_first_row_as_header'\n );\n } else {\n menuItems = menuItems.filter(\n item => typeof item === 'string' || item.menuKey !== 'disable_first_row_as_header'\n );\n }\n }\n return menuItems;\n },\n menuClickCallback: {\n set_filter: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n // 更新 sheetDefine 配置\n sheetDefine.columns[args.colIndex].filter = true;\n\n // 创建新的 options 对象,确保配置变化被正确传递\n const newOptions = {\n ...table.options,\n columns: table.options.columns.map((col: VTable.ColumnDefine, index: number) => {\n if (index === args.colIndex) {\n return { ...col, filter: true };\n }\n return col;\n })\n };\n // 更新表格配置\n table.updateOption(newOptions, { clearColWidthCache: false, clearRowHeightCache: false });\n },\n cancel_filter: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n // 更新 sheetDefine 配置\n sheetDefine.columns[args.colIndex].filter = false;\n\n // 创建新的 options 对象,确保配置变化被正确传递\n const newOptions = {\n ...table.options,\n columns: table.options.columns.map((col: VTable.ColumnDefine, index: number) => {\n if (index === args.colIndex) {\n return { ...col, filter: false };\n }\n return col;\n })\n };\n\n // 更新表格配置\n table.updateOption(newOptions, { clearColWidthCache: false, clearRowHeightCache: false });\n },\n enable_first_row_as_header: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n handleEnableFirstRowAsHeader(table);\n },\n disable_first_row_as_header: (args: MenuClickEventArgs, table: VTable.ListTable) => {\n handleDisableFirstRowAsHeader(table);\n }\n },\n ...userPluginOptions\n });\n}\n\n/**\n * 处理启用第一行作为表头\n */\nfunction handleEnableFirstRowAsHeader(table: VTable.ListTable): void {\n // 获取第一行数据\n const firstRecord = table.records[0] as string[];\n // 获取剩余数据\n const new_records = table.records.slice(1);\n //获取当前column\n const columns = table.columns;\n // 设置第一行为表头\n firstRecord.forEach((item, index) => {\n columns[index].title = item;\n });\n table.updateOption(Object.assign({}, table.options, { records: new_records, columns, showHeader: true }), {\n clearColWidthCache: false,\n clearRowHeightCache: false\n });\n // 更新渲染\n table.scenegraph.updateNextFrame();\n}\n\n/**\n * 处理禁用第一行作为表头\n */\nfunction handleDisableFirstRowAsHeader(table: VTable.ListTable): void {\n const columns = table.columns;\n const firstRecord: (string | number)[] = [];\n columns.forEach((col, index) => {\n firstRecord.push(col.title as string);\n });\n //像records中添加第一行\n const new_records = [firstRecord, ...table.records];\n table.updateOption(Object.assign({}, table.options, { records: new_records, columns, showHeader: false }), {\n clearColWidthCache: false,\n clearRowHeightCache: false\n });\n table.scenegraph.updateNextFrame();\n}\n\n/**\n * 创建公式检测选项,使用vtable-sheet的公式引擎\n */\nexport function createFormulaDetectionOptions(\n sheetDefine?: ISheetDefine,\n options?: IVTableSheetOptions,\n vtableSheet?: any\n) {\n const getActiveSheetKey = (): string => {\n return (\n vtableSheet?.getActiveSheet?.()?.getKey?.() ||\n vtableSheet?.sheetManager?.getActiveSheet?.()?.sheetKey ||\n sheetDefine?.sheetKey ||\n 'Sheet1'\n );\n };\n\n return {\n /**\n * 自定义公式检测函数 - 使用vtable-sheet的公式引擎判断是否为公式\n */\n isFormulaCell: (col: number, row: number, cellData: unknown, table: VTable.ListTable): boolean => {\n // 首先尝试使用vtable-sheet的公式管理器\n if (vtableSheet?.formulaManager) {\n try {\n const sheetName = getActiveSheetKey();\n return vtableSheet.formulaManager.isCellFormula({\n sheet: sheetName,\n row: row,\n col: col\n });\n } catch (error) {\n // 如果公式引擎调用失败,回退到表格级别的检测\n }\n }\n\n // 回退到简单检测:检查单元格值是否以=开头\n if (typeof cellData === 'string' && cellData.startsWith('=')) {\n return true;\n }\n\n // 检查单元格原始值(可能是计算后的值)\n const cellValue = table.getCellValue(col, row);\n return typeof cellValue === 'string' && cellValue.startsWith('=');\n },\n\n /**\n * 自定义公式获取函数 - 从vtable-sheet公式引擎获取公式字符串\n */\n getCellFormula: (col: number, row: number, cellData: unknown, table: VTable.ListTable): string | undefined => {\n // 首先尝试使用vtable-sheet的公式管理器\n if (vtableSheet?.formulaManager) {\n try {\n const sheetName = getActiveSheetKey();\n return vtableSheet.formulaManager.getCellFormula({\n sheet: sheetName,\n row: row,\n col: col\n });\n } catch (error) {\n // 如果公式引擎调用失败,回退到表格级别的检测\n }\n }\n\n // 回退到简单检测:如果单元格值以=开头,返回该值作为公式\n const cellValue = table.getCellValue(col, row);\n if (typeof cellValue === 'string' && cellValue.startsWith('=')) {\n return cellValue;\n }\n\n return undefined;\n },\n\n /**\n * 自定义公式设置函数 - 使用vtable-sheet公式引擎设置公式\n */\n setCellFormula: (col: number, row: number, formula: string, table: VTable.ListTable): void => {\n // 首先尝试使用vtable-sheet的公式管理器\n if (vtableSheet?.formulaManager) {\n try {\n const sheetName = getActiveSheetKey();\n vtableSheet.formulaManager.setCellContent(\n {\n sheet: sheetName,\n row: row,\n col: col\n },\n formula\n );\n return;\n } catch (error) {\n // 如果公式引擎调用失败,回退到表格级别的设置\n }\n }\n\n // 回退到直接设置单元格值\n table.changeCellValue(col, row, formula);\n }\n };\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -2,5 +2,5 @@ import VTableSheet from './components/vtable-sheet';
2
2
  import type { ISheetDefine, IVTableSheetOptions, IVTableSheetUpdateOptions } from './ts-types';
3
3
  import * as TYPES from './ts-types';
4
4
  import * as VTable from './vtable';
5
- export declare const version = "1.23.1";
5
+ export declare const version = "1.23.2";
6
6
  export { VTableSheet, TYPES, VTable, ISheetDefine, IVTableSheetOptions, IVTableSheetUpdateOptions };
package/cjs/index.js CHANGED
@@ -47,4 +47,4 @@ exports.VTable = VTable;
47
47
 
48
48
  const style_manager_1 = require("./styles/style-manager");
49
49
 
50
- exports.version = "1.23.1", (0, style_manager_1.importStyles)();
50
+ exports.version = "1.23.2", (0, style_manager_1.importStyles)();
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAAoD;AAW3C,sBAXF,sBAAW,CAWE;AATpB,kDAAoC;AASd,sBAAK;AAR3B,iDAAmC;AAQN,wBAAM;AAPnC,0DAAsD;AACzC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,IAAA,4BAAY,GAAE,CAAC","file":"index.js","sourcesContent":["import VTableSheet from './components/vtable-sheet';\nimport type { ISheetDefine, IVTableSheetOptions, IVTableSheetUpdateOptions } from './ts-types';\nimport * as TYPES from './ts-types';\nimport * as VTable from './vtable';\nimport { importStyles } from './styles/style-manager';\nexport const version = \"1.23.1\";\n// 导入样式\nimportStyles();\n/**\n * @namespace VTableSheet\n */\nexport { VTableSheet, TYPES, VTable, ISheetDefine, IVTableSheetOptions, IVTableSheetUpdateOptions };\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAAoD;AAW3C,sBAXF,sBAAW,CAWE;AATpB,kDAAoC;AASd,sBAAK;AAR3B,iDAAmC;AAQN,wBAAM;AAPnC,0DAAsD;AACzC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,IAAA,4BAAY,GAAE,CAAC","file":"index.js","sourcesContent":["import VTableSheet from './components/vtable-sheet';\nimport type { ISheetDefine, IVTableSheetOptions, IVTableSheetUpdateOptions } from './ts-types';\nimport * as TYPES from './ts-types';\nimport * as VTable from './vtable';\nimport { importStyles } from './styles/style-manager';\nexport const version = \"1.23.2\";\n// 导入样式\nimportStyles();\n/**\n * @namespace VTableSheet\n */\nexport { VTableSheet, TYPES, VTable, ISheetDefine, IVTableSheetOptions, IVTableSheetUpdateOptions };\n"]}
@@ -332,7 +332,7 @@ class FormulaManager {
332
332
  row: cell.row,
333
333
  col: cell.col
334
334
  });
335
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
335
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
336
336
  }));
337
337
  } catch (error) {
338
338
  throw new Error(`Failed to add ${numberOfRows} rows at index ${rowIndex}`);
@@ -349,7 +349,7 @@ class FormulaManager {
349
349
  row: cell.row,
350
350
  col: cell.col
351
351
  });
352
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
352
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
353
353
  }));
354
354
  } catch (error) {
355
355
  throw new Error(`Failed to remove ${numberOfRows} rows at index ${rowIndex}`);
@@ -366,7 +366,7 @@ class FormulaManager {
366
366
  row: cell.row,
367
367
  col: cell.col
368
368
  });
369
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
369
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
370
370
  }));
371
371
  } catch (error) {
372
372
  throw new Error(`Failed to add ${numberOfColumns} columns at index ${columnIndex}`);
@@ -383,7 +383,7 @@ class FormulaManager {
383
383
  row: cell.row,
384
384
  col: cell.col
385
385
  });
386
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
386
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
387
387
  }));
388
388
  } catch (error) {
389
389
  throw new Error(`Failed to remove ${numberOfColumns} columns at index ${columnIndex}`);
@@ -398,7 +398,7 @@ class FormulaManager {
398
398
  const totalColCount = sheet.columnCount, totalRowCount = sheet.rowCount, {adjustedCells: adjustedCells, movedCells: movedCells} = this.formulaEngine.adjustFormulaReferencesForColumnMove(sheetKey, sourceCol, targetCol, totalColCount, totalRowCount), allAffectedCells = [ ...adjustedCells, ...movedCells ];
399
399
  for (const cell of allAffectedCells) {
400
400
  const result = this.getCellValue(cell);
401
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
401
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
402
402
  }
403
403
  } catch (error) {
404
404
  throw new Error(`Failed to change column header position: ${error instanceof Error ? error.message : "Unknown error"}`);
@@ -412,7 +412,7 @@ class FormulaManager {
412
412
  const {adjustedCells: adjustedCells, movedCells: movedCells} = this.formulaEngine.adjustFormulaReferencesForRowMove(sheetKey, sourceRow, targetRow), allAffectedCells = [ ...adjustedCells, ...movedCells ];
413
413
  for (const cell of allAffectedCells) {
414
414
  const result = this.getCellValue(cell);
415
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
415
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
416
416
  }
417
417
  } catch (error) {
418
418
  throw new Error(`Failed to change row header position: ${error instanceof Error ? error.message : "Unknown error"}`);