@visactor/vtable 1.23.3 → 1.24.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 (75) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +182 -24
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.d.ts +1 -0
  5. package/cjs/PivotTable.js +10 -2
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/core/BaseTable.d.ts +9 -0
  8. package/cjs/core/BaseTable.js +64 -15
  9. package/cjs/core/BaseTable.js.map +1 -1
  10. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  11. package/cjs/core/TABLE_EVENT_TYPE.js +2 -0
  12. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  13. package/cjs/core/record-helper.js +83 -13
  14. package/cjs/core/record-helper.js.map +1 -1
  15. package/cjs/data/DataSource.js +3 -2
  16. package/cjs/data/DataSource.js.map +1 -1
  17. package/cjs/dataset/DataStatistics.js +1 -2
  18. package/cjs/edit/edit-manager.js +21 -15
  19. package/cjs/edit/edit-manager.js.map +1 -1
  20. package/cjs/index.d.ts +3 -3
  21. package/cjs/index.js +51 -12
  22. package/cjs/index.js.map +1 -1
  23. package/cjs/layout/cell-range/simple-cell-range.js +14 -4
  24. package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
  25. package/cjs/scenegraph/group-creater/cell-helper.js +1 -1
  26. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  27. package/cjs/scenegraph/group-creater/init-scenegraph.js +1 -1
  28. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  29. package/cjs/state/state.js +14 -11
  30. package/cjs/state/state.js.map +1 -1
  31. package/cjs/ts-types/base-table.d.ts +5 -0
  32. package/cjs/ts-types/base-table.js.map +1 -1
  33. package/cjs/ts-types/events.d.ts +16 -0
  34. package/cjs/ts-types/events.js.map +1 -1
  35. package/cjs/ts-types/table-engine.js.map +1 -1
  36. package/cjs/vrender.js.map +1 -1
  37. package/dist/vtable.js +896 -218
  38. package/dist/vtable.min.js +2 -2
  39. package/es/ListTable.d.ts +1 -0
  40. package/es/ListTable.js +177 -24
  41. package/es/ListTable.js.map +1 -1
  42. package/es/PivotTable.d.ts +1 -0
  43. package/es/PivotTable.js +8 -2
  44. package/es/PivotTable.js.map +1 -1
  45. package/es/core/BaseTable.d.ts +9 -0
  46. package/es/core/BaseTable.js +64 -15
  47. package/es/core/BaseTable.js.map +1 -1
  48. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  49. package/es/core/TABLE_EVENT_TYPE.js +2 -0
  50. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  51. package/es/core/record-helper.js +83 -12
  52. package/es/core/record-helper.js.map +1 -1
  53. package/es/data/DataSource.js +3 -2
  54. package/es/data/DataSource.js.map +1 -1
  55. package/es/dataset/DataStatistics.js +1 -2
  56. package/es/edit/edit-manager.js +20 -16
  57. package/es/edit/edit-manager.js.map +1 -1
  58. package/es/index.d.ts +3 -3
  59. package/es/index.js +5 -3
  60. package/es/index.js.map +1 -1
  61. package/es/layout/cell-range/simple-cell-range.js +14 -4
  62. package/es/layout/cell-range/simple-cell-range.js.map +1 -1
  63. package/es/scenegraph/group-creater/cell-helper.js +1 -1
  64. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  65. package/es/scenegraph/group-creater/init-scenegraph.js +1 -1
  66. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  67. package/es/state/state.js +14 -11
  68. package/es/state/state.js.map +1 -1
  69. package/es/ts-types/base-table.d.ts +5 -0
  70. package/es/ts-types/base-table.js.map +1 -1
  71. package/es/ts-types/events.d.ts +16 -0
  72. package/es/ts-types/events.js.map +1 -1
  73. package/es/ts-types/table-engine.js.map +1 -1
  74. package/es/vrender.js.map +1 -1
  75. package/package.json +4 -4
@@ -20,6 +20,8 @@ export interface TableEvents {
20
20
  RESIZE_COLUMN_END: 'resize_column_end';
21
21
  RESIZE_ROW: 'resize_row';
22
22
  RESIZE_ROW_END: 'resize_row_end';
23
+ MERGE_CELLS: 'merge_cells';
24
+ UNMERGE_CELLS: 'unmerge_cells';
23
25
  CHANGE_HEADER_POSITION: 'change_header_position';
24
26
  CHANGE_HEADER_POSITION_START: 'change_header_position_start';
25
27
  CHANGING_HEADER_POSITION: 'changing_header_position';
@@ -20,6 +20,8 @@ export const TABLE_EVENT_TYPE = {
20
20
  RESIZE_COLUMN_END: "resize_column_end",
21
21
  RESIZE_ROW: "resize_row",
22
22
  RESIZE_ROW_END: "resize_row_end",
23
+ MERGE_CELLS: "merge_cells",
24
+ UNMERGE_CELLS: "unmerge_cells",
23
25
  CHANGE_HEADER_POSITION_START: "change_header_position_start",
24
26
  CHANGE_HEADER_POSITION: "change_header_position",
25
27
  CHANGING_HEADER_POSITION: "changing_header_position",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/TABLE_EVENT_TYPE.ts"],"names":[],"mappings":"AAuQA,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,4BAA4B,EAAE,8BAA8B;IAC5D,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,2BAA2B,EAAE,6BAA6B;IAC1D,UAAU,EAAE,YAAY;IAIxB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAE1C,2BAA2B,EAAE,6BAA6B;IAE1D,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IAEtB,UAAU,EAAE,YAAY;IAExB,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,eAAe;IAE9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAElC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,oBAAoB,EAAE,sBAAsB;IAC5C,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,+BAA+B,EAAE,iCAAiC;IAClE,iCAAiC,EAAE,mCAAmC;IACtE,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAE5C,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IAExC,YAAY,EAAE,cAAc;IAC5B,wBAAwB,EAAE,0BAA0B;IACpD,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAE5B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAE9B,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;CACtB,CAAC","file":"TABLE_EVENT_TYPE.js","sourcesContent":["export interface TableEvents {\n /**\n * 鼠标点击单元格事件\n */\n CLICK_CELL: 'click_cell';\n /**\n * 鼠标双击单元格事件\n */\n DBLCLICK_CELL: 'dblclick_cell';\n /**\n * 单元格上鼠标按下事件\n */\n MOUSEDOWN_CELL: 'mousedown_cell';\n /**\n * 单元格鼠标松开事件\n */\n MOUSEUP_CELL: 'mouseup_cell';\n\n /**\n * 单元格选中状态改变事件\n */\n SELECTED_CELL: 'selected_cell';\n\n /**\n * 单元格选中状态改变事件\n */\n SELECTED_CLEAR: 'selected_clear';\n\n /** 键盘按下事件 内部逻辑处理前 */\n BEFORE_KEYDOWN: 'before_keydown';\n /**\n * 键盘按下事件 触发时机是在内部处理keydown逻辑之后\n */\n KEYDOWN: 'keydown';\n /**\n * 鼠标进入表格事件\n */\n MOUSEENTER_TABLE: 'mouseenter_table';\n /**\n * 鼠标离开表格事件\n */\n MOUSELEAVE_TABLE: 'mouseleave_table';\n /**\n * 鼠标点击表格事件\n */\n MOUSEDOWN_TABLE: 'mousedown_table';\n /**\n * 鼠标在表格上移动事件\n */\n MOUSEMOVE_TABLE: 'mousemove_table';\n /**\n * 鼠标在某个单元格上移动事件\n */\n MOUSEMOVE_CELL: 'mousemove_cell';\n /**\n * 鼠标进入单元格事件\n */\n MOUSEENTER_CELL: 'mouseenter_cell';\n /**\n * 鼠标离开单元格事件\n */\n MOUSELEAVE_CELL: 'mouseleave_cell';\n /**\n * 单元格右键事件\n */\n CONTEXTMENU_CELL: 'contextmenu_cell';\n /**\n * 画布右键事件\n */\n CONTEXTMENU_CANVAS: 'contextmenu_canvas';\n /**\n * 列宽调整事件\n */\n RESIZE_COLUMN: 'resize_column';\n /**\n * 列宽调整结束事件\n */\n RESIZE_COLUMN_END: 'resize_column_end';\n /**\n * 行高调整事件\n */\n RESIZE_ROW: 'resize_row';\n /**\n * 行高调整结束事件\n */\n RESIZE_ROW_END: 'resize_row_end';\n /**\n * 拖拽表头移动位置的事件\n */\n CHANGE_HEADER_POSITION: 'change_header_position';\n CHANGE_HEADER_POSITION_START: 'change_header_position_start';\n CHANGING_HEADER_POSITION: 'changing_header_position';\n CHANGE_HEADER_POSITION_FAIL: 'change_header_position_fail';\n /**\n * 点击排序图标事件\n */\n SORT_CLICK: 'sort_click';\n /**\n * 执行完排序\n */\n AFTER_SORT: 'after_sort';\n /**\n * 点击固定列图标 冻结或者解冻事件\n */\n FREEZE_CLICK: 'freeze_click';\n /**\n * 滚动表格事件\n */\n SCROLL: 'scroll';\n CAN_SCROLL: 'can_scroll';\n /**\n * 横向滚动条滚动到结束位\n */\n SCROLL_HORIZONTAL_END: 'scroll_horizontal_end';\n /**\n * 竖向滚动条滚动到结束位\n */\n SCROLL_VERTICAL_END: 'scroll_vertical_end';\n /**\n * 点击下拉菜单图标事件\n */\n DROPDOWN_MENU_CLICK: 'dropdown_menu_click';\n /**\n * 鼠标经过迷你图标记事件\n */\n MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol';\n\n /**\n * 拖拽框选单元格鼠标松开事件\n */\n DRAG_SELECT_END: 'drag_select_end';\n /**\n * 拖拽框选单元格鼠标移动事件\n */\n SELECTED_CHANGED: 'selected_changed';\n /** 复制完成 */\n COPY_DATA: 'copy_data';\n /**\n * 点击下拉菜单按钮\n */\n DROPDOWN_ICON_CLICK: 'dropdown_icon_click';\n /**\n * 清空下拉菜单事件(菜单显示时点击其他区域)\n */\n DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear';\n\n /**\n * 树形结构展开收起的点击事件\n */\n TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change';\n\n SHOW_MENU: 'show_menu';\n HIDE_MENU: 'hide_menu';\n /**\n * icon图标点击事件\n */\n ICON_CLICK: 'icon_click';\n\n // legend component\n LEGEND_ITEM_CLICK: 'legend_item_click';\n LEGEND_ITEM_HOVER: 'legend_item_hover';\n LEGEND_ITEM_UNHOVER: 'legend_item_unHover';\n LEGEND_CHANGE: 'legend_change';\n\n MOUSEENTER_AXIS: 'mouseenter_axis';\n MOUSELEAVE_AXIS: 'mouseleave_axis';\n\n CHECKBOX_STATE_CHANGE: 'checkbox_state_change';\n RADIO_STATE_CHANGE: 'radio_state_change';\n SWITCH_STATE_CHANGE: 'switch_state_change';\n //#region lifecircle\n /** 表格实例初始化前触发 */\n BEFORE_INIT: 'before_init';\n /** 更新表格选项前触发 */\n BEFORE_UPDATE_OPTION: 'before_update_option';\n /** 设置表格大小前触发 */\n BEFORE_SET_SIZE: 'before_set_size';\n /** 每次渲染完成触发 */\n AFTER_RENDER: 'after_render';\n /** 表格实例初始化完成 */\n INITIALIZED: 'initialized';\n /** 表格更新完成 */\n UPDATED: 'updated';\n /** 单元格内容宽度更新后触发 */\n AFTER_UPDATE_CELL_CONTENT_WIDTH: 'after_update_cell_content_width';\n\n /** 选择边框高度更新后触发 */\n AFTER_UPDATE_SELECT_BORDER_HEIGHT: 'after_update_select_border_height';\n //#endregion\n\n /** 编辑单元格 */\n CHANGE_CELL_VALUE: 'change_cell_value';\n /** 批量编辑单元格 */\n CHANGE_CELL_VALUES: 'change_cell_values';\n\n /**\n * 鼠标按下填充柄事件\n */\n MOUSEDOWN_FILL_HANDLE: 'mousedown_fill_handle';\n /**\n * 拖拽填充柄结束事件\n */\n DRAG_FILL_HANDLE_END: 'drag_fill_handle_end';\n /**\n * 双击填充柄事件\n */\n DBLCLICK_FILL_HANDLE: 'dblclick_fill_handle';\n\n /**\n * 空数据提示点击事件\n */\n EMPTY_TIP_CLICK: 'empty_tip_click';\n /**\n * 空数据提示双击事件\n */\n EMPTY_TIP_DBLCLICK: 'empty_tip_dblclick';\n\n /**\n * 按钮点击事件\n */\n BUTTON_CLICK: 'button_click';\n /**\n * 缓存图表事件\n */\n BEFORE_CACHE_CHART_IMAGE: 'before_cache_chart_image';\n /**\n * 粘贴数据事件\n */\n PASTED_DATA: 'pasted_data';\n PLUGIN_EVENT: 'plugin_event';\n\n /**\n * 添加数据记录事件\n */\n ADD_RECORD: 'add_record';\n /**\n * 删除数据记录事件\n */\n DELETE_RECORD: 'delete_record';\n /**\n * 更新数据记录事件\n */\n UPDATE_RECORD: 'update_record';\n /**\n * 添加列事件\n */\n ADD_COLUMN: 'add_column';\n /**\n * 删除列事件\n */\n DELETE_COLUMN: 'delete_column';\n /**\n * 筛选菜单显示事件\n */\n FILTER_MENU_SHOW: 'filter_menu_show';\n /**\n * 筛选菜单隐藏事件\n */\n FILTER_MENU_HIDE: 'filter_menu_hide';\n}\n/**\n * Table event types\n */\nexport const TABLE_EVENT_TYPE: TableEvents = {\n CLICK_CELL: 'click_cell',\n DBLCLICK_CELL: 'dblclick_cell',\n MOUSEDOWN_CELL: 'mousedown_cell',\n MOUSEUP_CELL: 'mouseup_cell',\n SELECTED_CELL: 'selected_cell',\n SELECTED_CLEAR: 'selected_clear',\n BEFORE_KEYDOWN: 'before_keydown',\n KEYDOWN: 'keydown',\n MOUSEENTER_TABLE: 'mouseenter_table',\n MOUSELEAVE_TABLE: 'mouseleave_table',\n MOUSEDOWN_TABLE: 'mousedown_table',\n MOUSEMOVE_TABLE: 'mousemove_table',\n MOUSEMOVE_CELL: 'mousemove_cell',\n MOUSEENTER_CELL: 'mouseenter_cell',\n MOUSELEAVE_CELL: 'mouseleave_cell',\n CONTEXTMENU_CELL: 'contextmenu_cell',\n CONTEXTMENU_CANVAS: 'contextmenu_canvas',\n RESIZE_COLUMN: 'resize_column',\n RESIZE_COLUMN_END: 'resize_column_end',\n RESIZE_ROW: 'resize_row',\n RESIZE_ROW_END: 'resize_row_end',\n CHANGE_HEADER_POSITION_START: 'change_header_position_start',\n CHANGE_HEADER_POSITION: 'change_header_position',\n CHANGING_HEADER_POSITION: 'changing_header_position',\n CHANGE_HEADER_POSITION_FAIL: 'change_header_position_fail',\n SORT_CLICK: 'sort_click',\n /**\n * 执行完排序\n */\n AFTER_SORT: 'after_sort',\n FREEZE_CLICK: 'freeze_click',\n SCROLL: 'scroll',\n CAN_SCROLL: 'can_scroll',\n SCROLL_HORIZONTAL_END: 'scroll_horizontal_end',\n SCROLL_VERTICAL_END: 'scroll_vertical_end',\n DROPDOWN_MENU_CLICK: 'dropdown_menu_click',\n MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol',\n DRAG_SELECT_END: 'drag_select_end',\n SELECTED_CHANGED: 'selected_changed',\n COPY_DATA: 'copy_data',\n DROPDOWN_ICON_CLICK: 'dropdown_icon_click', // 点击下拉菜单按钮\n DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear', // 清空下拉菜单事件(菜单显示时点击其他区域)\n\n TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change', //树形结构展开收起的点击事件\n\n SHOW_MENU: 'show_menu',\n HIDE_MENU: 'hide_menu',\n\n ICON_CLICK: 'icon_click',\n\n LEGEND_ITEM_CLICK: 'legend_item_click',\n LEGEND_ITEM_HOVER: 'legend_item_hover',\n LEGEND_ITEM_UNHOVER: 'legend_item_unHover',\n LEGEND_CHANGE: 'legend_change',\n\n MOUSEENTER_AXIS: 'mouseenter_axis',\n MOUSELEAVE_AXIS: 'mouseleave_axis',\n\n CHECKBOX_STATE_CHANGE: 'checkbox_state_change',\n RADIO_STATE_CHANGE: 'radio_state_change',\n SWITCH_STATE_CHANGE: 'switch_state_change',\n BEFORE_SET_SIZE: 'before_set_size',\n BEFORE_INIT: 'before_init',\n BEFORE_UPDATE_OPTION: 'before_update_option',\n AFTER_RENDER: 'after_render',\n INITIALIZED: 'initialized',\n UPDATED: 'updated',\n AFTER_UPDATE_CELL_CONTENT_WIDTH: 'after_update_cell_content_width',\n AFTER_UPDATE_SELECT_BORDER_HEIGHT: 'after_update_select_border_height',\n CHANGE_CELL_VALUE: 'change_cell_value',\n CHANGE_CELL_VALUES: 'change_cell_values',\n DRAG_FILL_HANDLE_END: 'drag_fill_handle_end',\n MOUSEDOWN_FILL_HANDLE: 'mousedown_fill_handle',\n DBLCLICK_FILL_HANDLE: 'dblclick_fill_handle',\n\n EMPTY_TIP_CLICK: 'empty_tip_click',\n EMPTY_TIP_DBLCLICK: 'empty_tip_dblclick',\n\n BUTTON_CLICK: 'button_click',\n BEFORE_CACHE_CHART_IMAGE: 'before_cache_chart_image',\n PASTED_DATA: 'pasted_data',\n PLUGIN_EVENT: 'plugin_event',\n\n ADD_RECORD: 'add_record',\n DELETE_RECORD: 'delete_record',\n UPDATE_RECORD: 'update_record',\n ADD_COLUMN: 'add_column',\n DELETE_COLUMN: 'delete_column',\n\n FILTER_MENU_SHOW: 'filter_menu_show',\n FILTER_MENU_HIDE: 'filter_menu_hide'\n} as TableEvents;\n"]}
1
+ {"version":3,"sources":["../src/core/TABLE_EVENT_TYPE.ts"],"names":[],"mappings":"AA+QA,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,4BAA4B,EAAE,8BAA8B;IAC5D,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,2BAA2B,EAAE,6BAA6B;IAC1D,UAAU,EAAE,YAAY;IAIxB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAE1C,2BAA2B,EAAE,6BAA6B;IAE1D,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IAEtB,UAAU,EAAE,YAAY;IAExB,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,eAAe;IAE9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAElC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,oBAAoB,EAAE,sBAAsB;IAC5C,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,+BAA+B,EAAE,iCAAiC;IAClE,iCAAiC,EAAE,mCAAmC;IACtE,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAE5C,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IAExC,YAAY,EAAE,cAAc;IAC5B,wBAAwB,EAAE,0BAA0B;IACpD,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAE5B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAE9B,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;CACtB,CAAC","file":"TABLE_EVENT_TYPE.js","sourcesContent":["export interface TableEvents {\n /**\n * 鼠标点击单元格事件\n */\n CLICK_CELL: 'click_cell';\n /**\n * 鼠标双击单元格事件\n */\n DBLCLICK_CELL: 'dblclick_cell';\n /**\n * 单元格上鼠标按下事件\n */\n MOUSEDOWN_CELL: 'mousedown_cell';\n /**\n * 单元格鼠标松开事件\n */\n MOUSEUP_CELL: 'mouseup_cell';\n\n /**\n * 单元格选中状态改变事件\n */\n SELECTED_CELL: 'selected_cell';\n\n /**\n * 单元格选中状态改变事件\n */\n SELECTED_CLEAR: 'selected_clear';\n\n /** 键盘按下事件 内部逻辑处理前 */\n BEFORE_KEYDOWN: 'before_keydown';\n /**\n * 键盘按下事件 触发时机是在内部处理keydown逻辑之后\n */\n KEYDOWN: 'keydown';\n /**\n * 鼠标进入表格事件\n */\n MOUSEENTER_TABLE: 'mouseenter_table';\n /**\n * 鼠标离开表格事件\n */\n MOUSELEAVE_TABLE: 'mouseleave_table';\n /**\n * 鼠标点击表格事件\n */\n MOUSEDOWN_TABLE: 'mousedown_table';\n /**\n * 鼠标在表格上移动事件\n */\n MOUSEMOVE_TABLE: 'mousemove_table';\n /**\n * 鼠标在某个单元格上移动事件\n */\n MOUSEMOVE_CELL: 'mousemove_cell';\n /**\n * 鼠标进入单元格事件\n */\n MOUSEENTER_CELL: 'mouseenter_cell';\n /**\n * 鼠标离开单元格事件\n */\n MOUSELEAVE_CELL: 'mouseleave_cell';\n /**\n * 单元格右键事件\n */\n CONTEXTMENU_CELL: 'contextmenu_cell';\n /**\n * 画布右键事件\n */\n CONTEXTMENU_CANVAS: 'contextmenu_canvas';\n /**\n * 列宽调整事件\n */\n RESIZE_COLUMN: 'resize_column';\n /**\n * 列宽调整结束事件\n */\n RESIZE_COLUMN_END: 'resize_column_end';\n /**\n * 行高调整事件\n */\n RESIZE_ROW: 'resize_row';\n /**\n * 行高调整结束事件\n */\n RESIZE_ROW_END: 'resize_row_end';\n /**\n * 合并单元格事件(mergeCells 调用成功后触发)\n */\n MERGE_CELLS: 'merge_cells';\n /**\n * 取消合并单元格事件(unmergeCells 调用后触发)\n */\n UNMERGE_CELLS: 'unmerge_cells';\n /**\n * 拖拽表头移动位置的事件\n */\n CHANGE_HEADER_POSITION: 'change_header_position';\n CHANGE_HEADER_POSITION_START: 'change_header_position_start';\n CHANGING_HEADER_POSITION: 'changing_header_position';\n CHANGE_HEADER_POSITION_FAIL: 'change_header_position_fail';\n /**\n * 点击排序图标事件\n */\n SORT_CLICK: 'sort_click';\n /**\n * 执行完排序\n */\n AFTER_SORT: 'after_sort';\n /**\n * 点击固定列图标 冻结或者解冻事件\n */\n FREEZE_CLICK: 'freeze_click';\n /**\n * 滚动表格事件\n */\n SCROLL: 'scroll';\n CAN_SCROLL: 'can_scroll';\n /**\n * 横向滚动条滚动到结束位\n */\n SCROLL_HORIZONTAL_END: 'scroll_horizontal_end';\n /**\n * 竖向滚动条滚动到结束位\n */\n SCROLL_VERTICAL_END: 'scroll_vertical_end';\n /**\n * 点击下拉菜单图标事件\n */\n DROPDOWN_MENU_CLICK: 'dropdown_menu_click';\n /**\n * 鼠标经过迷你图标记事件\n */\n MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol';\n\n /**\n * 拖拽框选单元格鼠标松开事件\n */\n DRAG_SELECT_END: 'drag_select_end';\n /**\n * 拖拽框选单元格鼠标移动事件\n */\n SELECTED_CHANGED: 'selected_changed';\n /** 复制完成 */\n COPY_DATA: 'copy_data';\n /**\n * 点击下拉菜单按钮\n */\n DROPDOWN_ICON_CLICK: 'dropdown_icon_click';\n /**\n * 清空下拉菜单事件(菜单显示时点击其他区域)\n */\n DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear';\n\n /**\n * 树形结构展开收起的点击事件\n */\n TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change';\n\n SHOW_MENU: 'show_menu';\n HIDE_MENU: 'hide_menu';\n /**\n * icon图标点击事件\n */\n ICON_CLICK: 'icon_click';\n\n // legend component\n LEGEND_ITEM_CLICK: 'legend_item_click';\n LEGEND_ITEM_HOVER: 'legend_item_hover';\n LEGEND_ITEM_UNHOVER: 'legend_item_unHover';\n LEGEND_CHANGE: 'legend_change';\n\n MOUSEENTER_AXIS: 'mouseenter_axis';\n MOUSELEAVE_AXIS: 'mouseleave_axis';\n\n CHECKBOX_STATE_CHANGE: 'checkbox_state_change';\n RADIO_STATE_CHANGE: 'radio_state_change';\n SWITCH_STATE_CHANGE: 'switch_state_change';\n //#region lifecircle\n /** 表格实例初始化前触发 */\n BEFORE_INIT: 'before_init';\n /** 更新表格选项前触发 */\n BEFORE_UPDATE_OPTION: 'before_update_option';\n /** 设置表格大小前触发 */\n BEFORE_SET_SIZE: 'before_set_size';\n /** 每次渲染完成触发 */\n AFTER_RENDER: 'after_render';\n /** 表格实例初始化完成 */\n INITIALIZED: 'initialized';\n /** 表格更新完成 */\n UPDATED: 'updated';\n /** 单元格内容宽度更新后触发 */\n AFTER_UPDATE_CELL_CONTENT_WIDTH: 'after_update_cell_content_width';\n\n /** 选择边框高度更新后触发 */\n AFTER_UPDATE_SELECT_BORDER_HEIGHT: 'after_update_select_border_height';\n //#endregion\n\n /** 编辑单元格 */\n CHANGE_CELL_VALUE: 'change_cell_value';\n /** 批量编辑单元格 */\n CHANGE_CELL_VALUES: 'change_cell_values';\n\n /**\n * 鼠标按下填充柄事件\n */\n MOUSEDOWN_FILL_HANDLE: 'mousedown_fill_handle';\n /**\n * 拖拽填充柄结束事件\n */\n DRAG_FILL_HANDLE_END: 'drag_fill_handle_end';\n /**\n * 双击填充柄事件\n */\n DBLCLICK_FILL_HANDLE: 'dblclick_fill_handle';\n\n /**\n * 空数据提示点击事件\n */\n EMPTY_TIP_CLICK: 'empty_tip_click';\n /**\n * 空数据提示双击事件\n */\n EMPTY_TIP_DBLCLICK: 'empty_tip_dblclick';\n\n /**\n * 按钮点击事件\n */\n BUTTON_CLICK: 'button_click';\n /**\n * 缓存图表事件\n */\n BEFORE_CACHE_CHART_IMAGE: 'before_cache_chart_image';\n /**\n * 粘贴数据事件\n */\n PASTED_DATA: 'pasted_data';\n PLUGIN_EVENT: 'plugin_event';\n\n /**\n * 添加数据记录事件\n */\n ADD_RECORD: 'add_record';\n /**\n * 删除数据记录事件\n */\n DELETE_RECORD: 'delete_record';\n /**\n * 更新数据记录事件\n */\n UPDATE_RECORD: 'update_record';\n /**\n * 添加列事件\n */\n ADD_COLUMN: 'add_column';\n /**\n * 删除列事件\n */\n DELETE_COLUMN: 'delete_column';\n /**\n * 筛选菜单显示事件\n */\n FILTER_MENU_SHOW: 'filter_menu_show';\n /**\n * 筛选菜单隐藏事件\n */\n FILTER_MENU_HIDE: 'filter_menu_hide';\n}\n/**\n * Table event types\n */\nexport const TABLE_EVENT_TYPE: TableEvents = {\n CLICK_CELL: 'click_cell',\n DBLCLICK_CELL: 'dblclick_cell',\n MOUSEDOWN_CELL: 'mousedown_cell',\n MOUSEUP_CELL: 'mouseup_cell',\n SELECTED_CELL: 'selected_cell',\n SELECTED_CLEAR: 'selected_clear',\n BEFORE_KEYDOWN: 'before_keydown',\n KEYDOWN: 'keydown',\n MOUSEENTER_TABLE: 'mouseenter_table',\n MOUSELEAVE_TABLE: 'mouseleave_table',\n MOUSEDOWN_TABLE: 'mousedown_table',\n MOUSEMOVE_TABLE: 'mousemove_table',\n MOUSEMOVE_CELL: 'mousemove_cell',\n MOUSEENTER_CELL: 'mouseenter_cell',\n MOUSELEAVE_CELL: 'mouseleave_cell',\n CONTEXTMENU_CELL: 'contextmenu_cell',\n CONTEXTMENU_CANVAS: 'contextmenu_canvas',\n RESIZE_COLUMN: 'resize_column',\n RESIZE_COLUMN_END: 'resize_column_end',\n RESIZE_ROW: 'resize_row',\n RESIZE_ROW_END: 'resize_row_end',\n MERGE_CELLS: 'merge_cells',\n UNMERGE_CELLS: 'unmerge_cells',\n CHANGE_HEADER_POSITION_START: 'change_header_position_start',\n CHANGE_HEADER_POSITION: 'change_header_position',\n CHANGING_HEADER_POSITION: 'changing_header_position',\n CHANGE_HEADER_POSITION_FAIL: 'change_header_position_fail',\n SORT_CLICK: 'sort_click',\n /**\n * 执行完排序\n */\n AFTER_SORT: 'after_sort',\n FREEZE_CLICK: 'freeze_click',\n SCROLL: 'scroll',\n CAN_SCROLL: 'can_scroll',\n SCROLL_HORIZONTAL_END: 'scroll_horizontal_end',\n SCROLL_VERTICAL_END: 'scroll_vertical_end',\n DROPDOWN_MENU_CLICK: 'dropdown_menu_click',\n MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol',\n DRAG_SELECT_END: 'drag_select_end',\n SELECTED_CHANGED: 'selected_changed',\n COPY_DATA: 'copy_data',\n DROPDOWN_ICON_CLICK: 'dropdown_icon_click', // 点击下拉菜单按钮\n DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear', // 清空下拉菜单事件(菜单显示时点击其他区域)\n\n TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change', //树形结构展开收起的点击事件\n\n SHOW_MENU: 'show_menu',\n HIDE_MENU: 'hide_menu',\n\n ICON_CLICK: 'icon_click',\n\n LEGEND_ITEM_CLICK: 'legend_item_click',\n LEGEND_ITEM_HOVER: 'legend_item_hover',\n LEGEND_ITEM_UNHOVER: 'legend_item_unHover',\n LEGEND_CHANGE: 'legend_change',\n\n MOUSEENTER_AXIS: 'mouseenter_axis',\n MOUSELEAVE_AXIS: 'mouseleave_axis',\n\n CHECKBOX_STATE_CHANGE: 'checkbox_state_change',\n RADIO_STATE_CHANGE: 'radio_state_change',\n SWITCH_STATE_CHANGE: 'switch_state_change',\n BEFORE_SET_SIZE: 'before_set_size',\n BEFORE_INIT: 'before_init',\n BEFORE_UPDATE_OPTION: 'before_update_option',\n AFTER_RENDER: 'after_render',\n INITIALIZED: 'initialized',\n UPDATED: 'updated',\n AFTER_UPDATE_CELL_CONTENT_WIDTH: 'after_update_cell_content_width',\n AFTER_UPDATE_SELECT_BORDER_HEIGHT: 'after_update_select_border_height',\n CHANGE_CELL_VALUE: 'change_cell_value',\n CHANGE_CELL_VALUES: 'change_cell_values',\n DRAG_FILL_HANDLE_END: 'drag_fill_handle_end',\n MOUSEDOWN_FILL_HANDLE: 'mousedown_fill_handle',\n DBLCLICK_FILL_HANDLE: 'dblclick_fill_handle',\n\n EMPTY_TIP_CLICK: 'empty_tip_click',\n EMPTY_TIP_DBLCLICK: 'empty_tip_dblclick',\n\n BUTTON_CLICK: 'button_click',\n BEFORE_CACHE_CHART_IMAGE: 'before_cache_chart_image',\n PASTED_DATA: 'pasted_data',\n PLUGIN_EVENT: 'plugin_event',\n\n ADD_RECORD: 'add_record',\n DELETE_RECORD: 'delete_record',\n UPDATE_RECORD: 'update_record',\n ADD_COLUMN: 'add_column',\n DELETE_COLUMN: 'delete_column',\n\n FILTER_MENU_SHOW: 'filter_menu_show',\n FILTER_MENU_HIDE: 'filter_menu_hide'\n} as TableEvents;\n"]}
@@ -36,11 +36,30 @@ import { TABLE_EVENT_TYPE } from "./TABLE_EVENT_TYPE";
36
36
 
37
37
  import { isNumber } from "@visactor/vutils";
38
38
 
39
+ import { getCustomMergeCellFunc } from "./utils/get-custom-merge-cell-func";
40
+
41
+ function refreshCustomMergeCellGroups(table) {
42
+ var _a;
43
+ if (!Array.isArray(table.options.customMergeCell)) return;
44
+ table.internalProps.customMergeCell = getCustomMergeCellFunc(table.options.customMergeCell);
45
+ const merges = table.options.customMergeCell;
46
+ for (let i = 0; i < merges.length; i++) {
47
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
48
+ if (null == r ? void 0 : r.start) for (let col = r.start.col; col <= r.end.col; col++) for (let row = r.start.row; row <= r.end.row; row++) table.scenegraph.updateCellContent(col, row);
49
+ }
50
+ }
51
+
39
52
  export function listTableChangeCellValue(col, row, value, workOnEditableCell, triggerEvent, table, noTriggerChangeCellValuesEvent) {
53
+ var _a, _b;
40
54
  if (workOnEditableCell && table.isHasEditorDefine(col, row) || !1 === workOnEditableCell) {
41
55
  const recordShowIndex = table.getRecordShowIndexByCell(col, row), recordIndex = recordShowIndex >= 0 ? table.dataSource.getIndexKey(recordShowIndex) : void 0, {field: field} = table.internalProps.layoutMap.getBody(col, row), beforeChangeValue = table.getCellRawValue(col, row), oldValue = table.getCellOriginValue(col, row);
42
56
  table.isHeader(col, row) ? table.internalProps.layoutMap.updateColumnTitle(col, row, value) : table.dataSource.changeFieldValue(value, recordShowIndex, field, col, row, table);
43
- const range = table.getCellRange(col, row), aggregators = table.internalProps.layoutMap.getAggregatorsByCell(col, row);
57
+ const range = table.getCellRange(col, row);
58
+ if (range.isCustom && range.start.col === col && range.start.row === row && Array.isArray(table.options.customMergeCell) && "function" == typeof table.getCellValue) {
59
+ const customMerge = null === (_b = null === (_a = table.internalProps) || void 0 === _a ? void 0 : _a.customMergeCell) || void 0 === _b ? void 0 : _b.call(_a, col, row, table);
60
+ customMerge && (customMerge.text = value);
61
+ }
62
+ const aggregators = table.internalProps.layoutMap.getAggregatorsByCell(col, row);
44
63
  if (aggregators) {
45
64
  if (Array.isArray(aggregators)) for (let i = 0; i < (null == aggregators ? void 0 : aggregators.length); i++) aggregators[i].recalculate(); else aggregators.recalculate();
46
65
  const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(range.start.col, range.start.row, range.end.col, range.end.row);
@@ -244,8 +263,14 @@ export function listTableAddRecord(record, recordIndex, table) {
244
263
  (void 0 === recordIndex || recordIndex > table.dataSource.sourceLength) && (recordIndex = table.dataSource.sourceLength);
245
264
  const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, syncToOriginalRecords = !!(null === (_f = table.options) || void 0 === _f ? void 0 : _f.syncRecordOperationsToSourceRecords);
246
265
  if (table.dataSource.addRecord(record, recordIndex, syncToOriginalRecords), adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, 1),
247
- syncToOriginalRecords) return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
248
- table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(), !0;
266
+ syncToOriginalRecords) {
267
+ if (!table.transpose) {
268
+ const insertRowIndex = recordIndex + headerCount + table.internalProps.layoutMap.hasAggregationOnTopCount;
269
+ table.rowHeightsMap.insert(insertRowIndex);
270
+ }
271
+ return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
272
+ table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(!0), !0;
273
+ }
249
274
  const oldRowCount = table.rowCount;
250
275
  if (table.refreshRowColCount(), 0 === table.scenegraph.proxy.totalActualBodyRowCount) return table.scenegraph.clearCells(),
251
276
  table.scenegraph.createSceneGraph(), !0;
@@ -326,8 +351,14 @@ export function listTableAddRecords(records, recordIndex, table) {
326
351
  void 0 === recordIndex || recordIndex > table.dataSource.sourceLength ? recordIndex = table.dataSource.sourceLength : recordIndex < 0 && (recordIndex = 0);
327
352
  const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, syncToOriginalRecords = !!(null === (_f = table.options) || void 0 === _f ? void 0 : _f.syncRecordOperationsToSourceRecords);
328
353
  if (table.dataSource.addRecords(records, recordIndex, syncToOriginalRecords), adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, records.length),
329
- syncToOriginalRecords) return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
330
- table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(), !0;
354
+ syncToOriginalRecords) {
355
+ if (!table.transpose) {
356
+ const insertRowIndex = recordIndex + headerCount + table.internalProps.layoutMap.hasAggregationOnTopCount;
357
+ for (let i = 0; i < records.length; i++) table.rowHeightsMap.insert(insertRowIndex);
358
+ }
359
+ return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
360
+ table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(!0), !0;
361
+ }
331
362
  const oldRowCount = table.transpose ? table.colCount : table.rowCount;
332
363
  if (table.refreshRowColCount(), 0 === table.scenegraph.proxy.totalActualBodyRowCount) return table.scenegraph.clearCells(),
333
364
  table.scenegraph.createSceneGraph(), !0;
@@ -393,7 +424,7 @@ export function listTableAddRecords(records, recordIndex, table) {
393
424
  }
394
425
 
395
426
  export function listTableDeleteRecords(recordIndexs, table) {
396
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
427
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
397
428
  if ((null == recordIndexs ? void 0 : recordIndexs.length) > 0) if (table.internalProps.groupBy) null === (_b = (_a = table.dataSource).deleteRecordsForGroup) || void 0 === _b || _b.call(_a, recordIndexs),
398
429
  table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(), table.sortState && sortRecords(table),
399
430
  table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(); else if ("tree" === table.dataSource.rowHierarchyType) {
@@ -408,9 +439,16 @@ export function listTableDeleteRecords(recordIndexs, table) {
408
439
  } else {
409
440
  const syncToOriginalRecords = !!(null === (_f = table.options) || void 0 === _f ? void 0 : _f.syncRecordOperationsToSourceRecords), deletedRecordIndexs = table.dataSource.deleteRecords(recordIndexs, syncToOriginalRecords);
410
441
  if (0 === deletedRecordIndexs.length) return;
442
+ Array.isArray(table.options.customMergeCell) && (table.internalProps.customMergeCell = getCustomMergeCellFunc(table.options.customMergeCell));
411
443
  for (let index = 0; index < deletedRecordIndexs.length; index++) adjustCheckBoxStateMapWithDeleteRecordIndex(table, deletedRecordIndexs[index], 1);
412
- if (syncToOriginalRecords) return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
413
- table.scenegraph.clearCells(), void table.scenegraph.createSceneGraph();
444
+ if (syncToOriginalRecords) {
445
+ if (!table.transpose) {
446
+ const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount, sorted = [ ...deletedRecordIndexs ].sort(((a, b) => b - a));
447
+ for (let i = 0; i < sorted.length; i++) table.rowHeightsMap.delete(sorted[i] + headerCount + topAggregationCount);
448
+ }
449
+ return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
450
+ table.scenegraph.clearCells(), void table.scenegraph.createSceneGraph(!0);
451
+ }
414
452
  const oldRowCount = table.transpose ? table.colCount : table.rowCount;
415
453
  table.refreshRowColCount();
416
454
  const newRowCount = table.transpose ? table.colCount : table.rowCount, recordIndexsMinToMax = deletedRecordIndexs.sort(((a, b) => a - b)), minRecordIndex = recordIndexsMinToMax[0];
@@ -441,7 +479,8 @@ export function listTableDeleteRecords(recordIndexs, table) {
441
479
  row: row
442
480
  });
443
481
  null === (_g = table.reactCustomLayout) || void 0 === _g || _g.clearCache(), table.transpose ? table.scenegraph.updateCol(delRows, [], updateRows) : table.scenegraph.updateRow(delRows, [], updateRows),
444
- null === (_h = table.reactCustomLayout) || void 0 === _h || _h.updateAllCustomCell();
482
+ null === (_h = table.reactCustomLayout) || void 0 === _h || _h.updateAllCustomCell(),
483
+ refreshCustomMergeCellGroups(table);
445
484
  }
446
485
  } else {
447
486
  const delRows = [], headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount, bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;
@@ -456,6 +495,37 @@ export function listTableDeleteRecords(recordIndexs, table) {
456
495
  });
457
496
  }
458
497
  const updateRows = [];
498
+ if (table.internalProps.customMergeCell) {
499
+ const proxy = table.scenegraph.proxy, deletedIndexNums = (recordIndexsMinToMax[0],
500
+ recordIndexsMinToMax.map((recordIndex => recordIndex + headerCount + topAggregationCount))), minIndexNum = deletedIndexNums[0];
501
+ let updateMin = minIndexNum, updateMax = minIndexNum;
502
+ if (Array.isArray(table.options.customMergeCell)) {
503
+ const merges = table.options.customMergeCell, axis = table.transpose ? "col" : "row";
504
+ merges.forEach((m => {
505
+ const r = null == m ? void 0 : m.range;
506
+ if ((null == r ? void 0 : r.start) && (null == r ? void 0 : r.end)) for (let i = 0; i < deletedIndexNums.length; i++) {
507
+ const deleteIndex = deletedIndexNums[i];
508
+ if (r.end[axis] >= deleteIndex - 1) {
509
+ updateMin = Math.min(updateMin, r.start[axis]), updateMax = Math.max(updateMax, r.end[axis]);
510
+ break;
511
+ }
512
+ }
513
+ }));
514
+ }
515
+ if (table.transpose) {
516
+ const start = Math.max(updateMin, null !== (_j = null == proxy ? void 0 : proxy.colStart) && void 0 !== _j ? _j : updateMin), end = Math.min(updateMax, null !== (_k = null == proxy ? void 0 : proxy.colEnd) && void 0 !== _k ? _k : updateMax);
517
+ for (let col = start; col <= end; col++) updateRows.push({
518
+ col: col,
519
+ row: 0
520
+ });
521
+ } else {
522
+ const start = Math.max(updateMin, null !== (_l = null == proxy ? void 0 : proxy.rowStart) && void 0 !== _l ? _l : updateMin), end = Math.min(updateMax, null !== (_m = null == proxy ? void 0 : proxy.rowEnd) && void 0 !== _m ? _m : updateMax);
523
+ for (let row = start; row <= end; row++) updateRows.push({
524
+ col: 0,
525
+ row: row
526
+ });
527
+ }
528
+ }
459
529
  for (let row = headerCount; row < headerCount + topAggregationCount; row++) table.transpose ? updateRows.push({
460
530
  col: row,
461
531
  row: 0
@@ -470,8 +540,9 @@ export function listTableDeleteRecords(recordIndexs, table) {
470
540
  col: 0,
471
541
  row: row
472
542
  });
473
- null === (_j = table.reactCustomLayout) || void 0 === _j || _j.clearCache(), table.transpose ? table.scenegraph.updateCol(delRows, [], updateRows) : table.scenegraph.updateRow(delRows, [], updateRows),
474
- null === (_k = table.reactCustomLayout) || void 0 === _k || _k.updateAllCustomCell();
543
+ null === (_o = table.reactCustomLayout) || void 0 === _o || _o.clearCache(), table.transpose ? table.scenegraph.updateCol(delRows, [], updateRows) : table.scenegraph.updateRow(delRows, [], updateRows),
544
+ null === (_p = table.reactCustomLayout) || void 0 === _p || _p.updateAllCustomCell(),
545
+ refreshCustomMergeCellGroups(table);
475
546
  }
476
547
  }
477
548
  }
@@ -489,7 +560,7 @@ export function listTableUpdateRecords(records, recordIndexs, table) {
489
560
  const syncToOriginalRecords = !!(null === (_f = table.options) || void 0 === _f ? void 0 : _f.syncRecordOperationsToSourceRecords), updateRecordIndexs = table.dataSource.updateRecords(records, recordIndexs, syncToOriginalRecords);
490
561
  if (0 === updateRecordIndexs.length) return;
491
562
  if (syncToOriginalRecords) return table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
492
- table.scenegraph.clearCells(), void table.scenegraph.createSceneGraph();
563
+ table.scenegraph.clearCells(), void table.scenegraph.createSceneGraph(!0);
493
564
  const recordIndexsMinToMax = updateRecordIndexs.map((index => table.getBodyRowIndexByRecordIndex(index))).sort(((a, b) => a - b));
494
565
  if (table.pagination) {
495
566
  const {perPageCount: perPageCount, currentPage: currentPage} = table.pagination, headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount, endIndex = perPageCount * (currentPage || 0) + perPageCount, updateRows = [];