@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
+ };
@@ -186,12 +186,15 @@ function handleDisableFirstRowAsHeader(table) {
186
186
  }), table.scenegraph.updateNextFrame();
187
187
  }
188
188
 
189
- function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
189
+ export function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
190
+ const getActiveSheetKey = () => {
191
+ var _a, _b, _c, _d, _e, _f;
192
+ 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";
193
+ };
190
194
  return {
191
195
  isFormulaCell: (col, row, cellData, table) => {
192
- var _a;
193
196
  if (null == vtableSheet ? void 0 : vtableSheet.formulaManager) try {
194
- const sheetName = (null === (_a = vtableSheet.sheetManager) || void 0 === _a ? void 0 : _a._activeSheetKey) || "Sheet1";
197
+ const sheetName = getActiveSheetKey();
195
198
  return vtableSheet.formulaManager.isCellFormula({
196
199
  sheet: sheetName,
197
200
  row: row,
@@ -203,9 +206,8 @@ function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
203
206
  return "string" == typeof cellValue && cellValue.startsWith("=");
204
207
  },
205
208
  getCellFormula: (col, row, cellData, table) => {
206
- var _a;
207
209
  if (null == vtableSheet ? void 0 : vtableSheet.formulaManager) try {
208
- const sheetName = (null === (_a = vtableSheet.sheetManager) || void 0 === _a ? void 0 : _a._activeSheetKey) || "Sheet1";
210
+ const sheetName = getActiveSheetKey();
209
211
  return vtableSheet.formulaManager.getCellFormula({
210
212
  sheet: sheetName,
211
213
  row: row,
@@ -216,9 +218,8 @@ function createFormulaDetectionOptions(sheetDefine, options, vtableSheet) {
216
218
  if ("string" == typeof cellValue && cellValue.startsWith("=")) return cellValue;
217
219
  },
218
220
  setCellFormula: (col, row, formula, table) => {
219
- var _a;
220
221
  if (null == vtableSheet ? void 0 : vtableSheet.formulaManager) try {
221
- const sheetName = (null === (_a = vtableSheet.sheetManager) || void 0 === _a ? void 0 : _a._activeSheetKey) || "Sheet1";
222
+ const sheetName = getActiveSheetKey();
222
223
  return void vtableSheet.formulaManager.setCellContent({
223
224
  sheet: sheetName,
224
225
  row: row,
@@ -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/es/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/es/index.js CHANGED
@@ -6,7 +6,7 @@ import * as VTable from "./vtable";
6
6
 
7
7
  import { importStyles } from "./styles/style-manager";
8
8
 
9
- export const version = "1.23.1";
9
+ export const version = "1.23.2";
10
10
 
11
11
  importStyles();
12
12
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,YAAY,EAAE,CAAC;AAIf,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAgE,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,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,YAAY,EAAE,CAAC;AAIf,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAgE,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"]}
@@ -333,7 +333,7 @@ export class FormulaManager {
333
333
  row: cell.row,
334
334
  col: cell.col
335
335
  });
336
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
336
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
337
337
  }));
338
338
  } catch (error) {
339
339
  throw new Error(`Failed to add ${numberOfRows} rows at index ${rowIndex}`);
@@ -350,7 +350,7 @@ export class FormulaManager {
350
350
  row: cell.row,
351
351
  col: cell.col
352
352
  });
353
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
353
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
354
354
  }));
355
355
  } catch (error) {
356
356
  throw new Error(`Failed to remove ${numberOfRows} rows at index ${rowIndex}`);
@@ -367,7 +367,7 @@ export class FormulaManager {
367
367
  row: cell.row,
368
368
  col: cell.col
369
369
  });
370
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
370
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
371
371
  }));
372
372
  } catch (error) {
373
373
  throw new Error(`Failed to add ${numberOfColumns} columns at index ${columnIndex}`);
@@ -384,7 +384,7 @@ export class FormulaManager {
384
384
  row: cell.row,
385
385
  col: cell.col
386
386
  });
387
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
387
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
388
388
  }));
389
389
  } catch (error) {
390
390
  throw new Error(`Failed to remove ${numberOfColumns} columns at index ${columnIndex}`);
@@ -399,7 +399,7 @@ export class FormulaManager {
399
399
  const totalColCount = sheet.columnCount, totalRowCount = sheet.rowCount, {adjustedCells: adjustedCells, movedCells: movedCells} = this.formulaEngine.adjustFormulaReferencesForColumnMove(sheetKey, sourceCol, targetCol, totalColCount, totalRowCount), allAffectedCells = [ ...adjustedCells, ...movedCells ];
400
400
  for (const cell of allAffectedCells) {
401
401
  const result = this.getCellValue(cell);
402
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
402
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
403
403
  }
404
404
  } catch (error) {
405
405
  throw new Error(`Failed to change column header position: ${error instanceof Error ? error.message : "Unknown error"}`);
@@ -413,7 +413,7 @@ export class FormulaManager {
413
413
  const {adjustedCells: adjustedCells, movedCells: movedCells} = this.formulaEngine.adjustFormulaReferencesForRowMove(sheetKey, sourceRow, targetRow), allAffectedCells = [ ...adjustedCells, ...movedCells ];
414
414
  for (const cell of allAffectedCells) {
415
415
  const result = this.getCellValue(cell);
416
- null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value);
416
+ null === (_a = this.sheet.getActiveSheet().tableInstance) || void 0 === _a || _a.changeCellValue(cell.col, cell.row, result.error ? "#ERROR!" : result.value, !1, !1);
417
417
  }
418
418
  } catch (error) {
419
419
  throw new Error(`Failed to change row header position: ${error instanceof Error ? error.message : "Unknown error"}`);