@visactor/vtable 1.6.0-alpha.0 → 1.6.0-alpha.1

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 (55) hide show
  1. package/cjs/ListTable-all.js +5 -5
  2. package/cjs/ListTable-all.js.map +1 -1
  3. package/cjs/ListTable.d.ts +2 -0
  4. package/cjs/ListTable.js +7 -2
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/core/BaseTable.js +1 -1
  7. package/cjs/core/BaseTable.js.map +1 -1
  8. package/cjs/event/event.js +3 -1
  9. package/cjs/event/event.js.map +1 -1
  10. package/cjs/index.d.ts +1 -1
  11. package/cjs/index.js +1 -1
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/plugins/list-tree-stick-cell.d.ts +16 -0
  14. package/cjs/plugins/list-tree-stick-cell.js +171 -0
  15. package/cjs/plugins/list-tree-stick-cell.js.map +1 -0
  16. package/cjs/scenegraph/graphic/group.js +1 -1
  17. package/cjs/scenegraph/graphic/group.js.map +1 -1
  18. package/cjs/scenegraph/group-creater/cell-helper.d.ts +2 -1
  19. package/cjs/scenegraph/group-creater/cell-helper.js +16 -4
  20. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  21. package/cjs/scenegraph/group-creater/init-scenegraph.js +2 -2
  22. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  23. package/cjs/ts-types/table-engine.d.ts +1 -0
  24. package/cjs/ts-types/table-engine.js.map +1 -1
  25. package/cjs/vrender.js +2 -1
  26. package/cjs/vrender.js.map +1 -1
  27. package/dist/vtable.js +268 -11
  28. package/dist/vtable.min.js +2 -2
  29. package/es/ListTable-all.js +5 -3
  30. package/es/ListTable-all.js.map +1 -1
  31. package/es/ListTable.d.ts +2 -0
  32. package/es/ListTable.js +6 -2
  33. package/es/ListTable.js.map +1 -1
  34. package/es/core/BaseTable.js +1 -1
  35. package/es/core/BaseTable.js.map +1 -1
  36. package/es/event/event.js +3 -1
  37. package/es/event/event.js.map +1 -1
  38. package/es/index.d.ts +1 -1
  39. package/es/index.js +1 -1
  40. package/es/index.js.map +1 -1
  41. package/es/plugins/list-tree-stick-cell.d.ts +16 -0
  42. package/es/plugins/list-tree-stick-cell.js +169 -0
  43. package/es/plugins/list-tree-stick-cell.js.map +1 -0
  44. package/es/scenegraph/graphic/group.js +1 -1
  45. package/es/scenegraph/graphic/group.js.map +1 -1
  46. package/es/scenegraph/group-creater/cell-helper.d.ts +2 -1
  47. package/es/scenegraph/group-creater/cell-helper.js +11 -2
  48. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  49. package/es/scenegraph/group-creater/init-scenegraph.js +2 -2
  50. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  51. package/es/ts-types/table-engine.d.ts +1 -0
  52. package/es/ts-types/table-engine.js.map +1 -1
  53. package/es/vrender.js +3 -2
  54. package/es/vrender.js.map +1 -1
  55. package/package.json +3 -3
package/es/event/event.js CHANGED
@@ -137,7 +137,9 @@ export class EventManager {
137
137
  }
138
138
  dealMenuSelect(eventArgsSet) {}
139
139
  checkColumnResize(eventArgsSet, update) {
140
- const {eventArgs: eventArgs} = eventArgsSet, resizeCol = this.table.scenegraph.getResizeColAt(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y, null == eventArgs ? void 0 : eventArgs.targetCell);
140
+ const {eventArgs: eventArgs} = eventArgsSet;
141
+ if (this.table.options.enableTreeStickCell && !eventArgs) return !1;
142
+ const resizeCol = this.table.scenegraph.getResizeColAt(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y, null == eventArgs ? void 0 : eventArgs.targetCell);
141
143
  return !!(this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) && (update && this.table.stateManager.startResizeCol(resizeCol.col, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y, resizeCol.rightFrozen),
142
144
  !0);
143
145
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@src/vrender';\nimport type { FederatedPointerEvent, Gesture, IEventTarget } from './../vrender';\nimport { RichText } from './../vrender';\nimport type { ColumnDefine, MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManager } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindGesture, bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\nimport { Env } from '../tools/env';\nimport type { ListTable } from '../ListTable';\nimport { isValid } from '@visactor/vutils';\nimport { InertiaScroll } from './scroll';\n\nexport class EventManager {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n // /** 为了能够判断canvas mousedown 事件 以阻止事件冒泡 */\n // isPointerDownOnTable: boolean = false;\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n gesture: Gesture;\n handleTextStickBindId: number[];\n\n //鼠标事件记录。 PointerMove敏感度太高了 记录下上一个鼠标位置 在接收到PointerMove事件时做判断 是否到到触发框选或者移动表头操作的标准,防止误触\n LastPointerXY: { x: number; y: number };\n LastBodyPointerXY: { x: number; y: number };\n isDown = false;\n isDraging = false;\n scrollYSpeed: number;\n scrollXSpeed: number;\n downIcon: IEventTarget; // 记录鼠标按下的sicon\n //报错已绑定过的事件 后续清除绑定\n globalEventListeners: { name: string; env: 'document' | 'body' | 'window'; callback: (e?: any) => void }[] = [];\n inertiaScroll: InertiaScroll;\n\n bindSparklineHoverEvent: boolean;\n\n _enableTableScroll: boolean = true;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.handleTextStickBindId = [];\n this.inertiaScroll = new InertiaScroll(table.stateManager);\n if (Env.mode === 'node') {\n return;\n }\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n bindGesture(this);\n }\n updateEventBinder() {\n setTimeout(() => {\n // 处理textStick 是否绑定SCROLL的判断\n if (checkHaveTextStick(this.table) && this.handleTextStickBindId?.length === 0) {\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n })\n );\n\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, e => {\n handleTextStick(this.table);\n })\n );\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, e => {\n handleTextStick(this.table);\n })\n );\n } else if (!checkHaveTextStick(this.table) && this.handleTextStickBindId) {\n this.handleTextStickBindId.forEach(id => {\n this.table.off(id);\n });\n this.handleTextStickBindId = [];\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n }, 0);\n }\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManager: StateManager = this.table.stateManager;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon, event } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManager.triggerDropDownMenu(col, row, x, y, event);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManager.triggerSort(col, row, icon, event);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManager.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n const isHasSelected = !!stateManager.select.ranges?.length;\n stateManager.updateSelectPos(-1, -1);\n stateManager.endSelectCells(true, isHasSelected);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, () => {\n stateManager.hideMenu();\n });\n\n // 处理textStick\n // if (checkHaveTextStick(this.table)) {\n // this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n // handleTextStick(this.table);\n // });\n // }\n this.updateEventBinder();\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table.eventManager.checkCellFillhandle(eventArgsSet)) {\n this.table.fireListeners(TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE, {});\n } else if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n this.table.internalProps._widthResizedColMap.add(resizeCol.col);\n // if (this.table.isPivotChart()) {\n this.table.scenegraph.updateChartSize(resizeCol.col);\n // }\n const state = this.table.stateManager;\n // update frozen shadowline component\n if (\n state.columnResize.col < state.table.frozenColCount &&\n !state.table.isPivotTable() &&\n !(state.table as ListTable).transpose\n ) {\n state.table.scenegraph.component.setFrozenColumnShadow(\n state.table.frozenColCount - 1,\n state.columnResize.isRightFrozen\n );\n }\n const colWidths = [];\n // 返回所有列宽信息\n for (let col = 0; col < this.table.colCount; col++) {\n colWidths.push(this.table.getColWidth(col));\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, {\n col: resizeCol.col,\n colWidths\n });\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManager.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManager.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverIcon(\n eventArgs.col,\n eventArgs.row,\n eventArgs.target,\n eventArgs.targetCell,\n eventArgs.event\n );\n } else {\n this.table.stateManager.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n if (!eventArgsSet) {\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (eventArgs.target.name === 'checkbox' || eventArgs.target.name === 'radio') {\n return false;\n }\n\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManager.updateHoverPos(-1, -1);\n // }\n const define = this.table.getBodyColumnDefine(eventArgs.col, eventArgs.row);\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n ((define as ColumnDefine)?.disableHeaderSelect || this.table.stateManager.select?.disableHeader)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (!this.table.isHeader(eventArgs.col, eventArgs.row) && (define as ColumnDefine)?.disableSelect) {\n if (!isSelectMoving) {\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n dealFillSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length && this.table.stateManager.isFillHandle()) {\n let updateRow;\n let updateCol;\n const currentRange = this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1];\n if (isSelectMoving) {\n if (!isValid(this.table.stateManager.fillHandle.directionRow)) {\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n this.table.stateManager.fillHandle.directionRow = true;\n } else {\n this.table.stateManager.fillHandle.directionRow = false;\n }\n }\n\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n if (this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y > 0) {\n this.table.stateManager.fillHandle.direction = 'top';\n } else {\n this.table.stateManager.fillHandle.direction = 'bottom';\n }\n } else {\n if (this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x > 0) {\n this.table.stateManager.fillHandle.direction = 'left';\n } else {\n this.table.stateManager.fillHandle.direction = 'right';\n }\n }\n if (this.table.stateManager.fillHandle.directionRow) {\n updateRow = eventArgs.row;\n updateCol = currentRange.end.col;\n } else {\n updateRow = currentRange.end.row;\n updateCol = eventArgs.col;\n }\n }\n\n this.table.stateManager.updateSelectPos(\n isSelectMoving ? updateCol : currentRange.end.col,\n isSelectMoving ? updateRow : currentRange.end.row,\n true,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n } else {\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n }\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n // fillSelected(eventArgsSet?: SceneEvent, SelectCellRange?: any, SelectData?: any): any {\n // return;\n // if (!eventArgsSet) {\n // this.table.stateManager.updateSelectPos(-1, -1);\n // return;\n // }\n // const { eventArgs } = eventArgsSet;\n\n // if (eventArgs) {\n // if (eventArgs.target.name === 'checkbox') {\n // return;\n // }\n // let direction;\n\n // if (eventArgs.row >= SelectCellRange.start.row && eventArgs.row <= SelectCellRange.end.row) {\n // if (eventArgs.col > SelectCellRange.end.col) {\n // direction = 'right';\n // } else {\n // direction = 'left';\n // }\n // } else {\n // if (eventArgs.row > SelectCellRange.end.row) {\n // direction = 'down';\n // } else {\n // direction = 'up';\n // }\n // }\n // const values: (string | number)[][] = [];\n // const fillData: any[][] = [];\n // let updaterow;\n // let updatecol;\n // const rows = SelectData.split('\\n'); // 将数据拆分为行\n // rows.forEach(function (rowCells: any, rowIndex: number) {\n // const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n // const rowValues: (string | number)[] = [];\n // values.push(rowValues);\n // cells.forEach(function (cell: string, cellIndex: number) {\n // // 去掉单元格数据末尾的 '\\r'\n // if (cellIndex === cells.length - 1) {\n // cell = cell.trim();\n // }\n // rowValues.push(cell);\n // });\n // });\n\n // updaterow = SelectCellRange.start.row;\n // updatecol = SelectCellRange.start.col;\n // if (['up', 'left'].indexOf(direction) > -1) {\n // if (direction === 'up') {\n // updaterow = eventArgs.row;\n\n // const fillLength = SelectCellRange.start.row - updaterow;\n\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = values.length - 1 - (i % values.length);\n // const newRow = values[rowIndex].slice(0); // 复制一行数据\n\n // fillData.unshift(newRow); // 在填充数据的开头插入新行\n // }\n // } else {\n // updatecol = eventArgs.col;\n // const fillLength = SelectCellRange.start.col - updatecol;\n\n // for (let i = 0; i < values.length; i++) {\n // const newRow = values[i].slice(0); // 复制一行数据\n // while (newRow.length < fillLength) {\n // newRow.unshift(newRow[0]); // 在新行开头向左填充元素\n // }\n // fillData.push(newRow);\n // }\n // }\n // } else {\n // if (direction === 'down') {\n // updaterow = SelectCellRange.end.row + 1;\n // const fillLength = eventArgs.row - SelectCellRange.end.row;\n\n // // 将原始数据添加到新数组中\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = i % values.length;\n // const newRow = values[rowIndex]; // 复制一行数据\n // fillData.push(newRow);\n // }\n // } else {\n // const fillLength = eventArgs.col - SelectCellRange.end.col;\n // updatecol = SelectCellRange.end.col + 1;\n\n // values.forEach(function (rowCells: any[]) {\n // const newRow: any[] = [];\n // // 将原始数据按顺序填充到新行中\n // for (let i = 0; i < fillLength; i++) {\n // const dataIndex = i % rowCells.length;\n // newRow.push(rowCells[dataIndex]);\n // }\n\n // // 将新行添加到填充数据中\n // fillData.push(newRow);\n // });\n // }\n // }\n\n // (this.table as ListTableAPI).changeCellValues(updatecol, updaterow, fillData, false);\n // }\n // }\n\n deelTableSelectAll() {\n this.table.stateManager.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n\n const { eventArgs } = eventArgsSet;\n // if (eventArgs) { // 如果是鼠标处理表格外部如最后一列的后面 也期望可以拖拽列宽\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n if (update) {\n this.table.stateManager.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n // }\n\n return false;\n }\n\n checkRowResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n const resizeRow = this.table.scenegraph.getResizeRowAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n\n if (this.table._canResizeRow(resizeRow.col, resizeRow.row) && resizeRow.row >= 0) {\n if (update) {\n this.table.stateManager.startResizeRow(\n resizeRow.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeRow.bottomFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n checkCellFillhandle(eventArgsSet: SceneEvent, update?: boolean): boolean {\n if (this.table.options.excelOptions?.fillHandle) {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length) {\n const lastCol = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.col,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.col\n );\n const lastRow = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.row,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.row\n );\n\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n // 计算鼠标与fillhandle矩形中心之间的距离\n const distanceX = Math.abs(eventArgsSet.abstractPos.x - lastCellBound.x2);\n const distanceY = Math.abs(eventArgsSet.abstractPos.y - lastCellBound.y2);\n const squareSize = 6 * 3;\n // 判断鼠标是否落在fillhandle矩形内\n if (\n this.table.stateManager.fillHandle?.isFilling ||\n (distanceX <= squareSize / 2 && distanceY <= squareSize / 2)\n ) {\n if (update) {\n this.table.stateManager.startFillSelect(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);\n }\n return true;\n }\n }\n }\n }\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeCol(xInTable, yInTable);\n }\n\n dealRowResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeRow(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n (checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManager.select.ranges) ||\n this.table.options.select?.disableHeaderSelect ||\n this.table.options.select?.disableSelect) &&\n // this.table.stateManager.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManager.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManager.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n if (isValid(eventArgs.col) && isValid(eventArgs.row)) {\n this.table.stateManager.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon,\n event\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon,\n event\n });\n return true;\n }\n }\n\n return false;\n }\n /** TODO 其他的事件并么有做remove */\n release() {\n this.gesture.release();\n\n // remove global event listerner\n this.globalEventListeners.forEach(item => {\n if (item.env === 'document') {\n document.removeEventListener(item.name, item.callback);\n } else if (item.env === 'body') {\n document.body.removeEventListener(item.name, item.callback);\n } else if (item.env === 'window') {\n window.removeEventListener(item.name, item.callback);\n }\n });\n this.globalEventListeners = [];\n }\n\n enableScroll() {\n this._enableTableScroll = true;\n }\n\n disableScroll() {\n this._enableTableScroll = false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAmB,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,YAAY;IAiCvB,YAAY,KAAmB;QAZ/B,WAAM,GAAG,KAAK,CAAC;QACf,cAAS,GAAG,KAAK,CAAC;QAKlB,yBAAoB,GAAyF,EAAE,CAAC;QAKhH,uBAAkB,GAAY,IAAI,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAGD,cAAc;QACZ,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/B,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,iBAAiB;QACf,UAAU,CAAC,GAAG,EAAE;;YAEd,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,qBAAqB,0CAAE,MAAM,MAAK,CAAC,EAAE;gBAC9E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;oBACzC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC,CACH,CAAC;gBAEF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE;oBACpD,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC,CACH,CAAC;gBACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE;oBACjD,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC,CACH,CAAC;aACH;iBAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBACxE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;aACjC;YAGD,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IACD,aAAa;QACX,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACzB,OAAO;SACR;QAED,MAAM,YAAY,GAAiB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAG3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;;YACpD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;YAE3D,IAAI,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,EAAE;gBAC1C,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aACzD;iBAAM,IAAI,QAAQ,KAAK,gBAAgB,CAAC,IAAI,EAAE;gBAC7C,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;aACjD;iBAAM,IAAI,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE;gBAC/C,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aAC5C;iBAAM,IAAI,QAAQ,KAAK,gBAAgB,CAAC,SAAS,EAAE;gBAClD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxB;iBAAM,IAAI,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE;gBACzF,MAAM,aAAa,GAAG,CAAC,CAAC,CAAA,MAAA,YAAY,CAAC,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAA,CAAC;gBAC3D,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;QAGH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACvD,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAQH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAG3B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAwB,EAAE,EAAE;;YACzE,IAAI,CAAC,CAAC,cAAc,EAAE;gBACpB,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,cAAqB,CAAC,CAAC;gBAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CACpD,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,MAAA,YAAY,CAAC,SAAS,0CAAE,UAAU,CACnC,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE;oBAC7D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;iBACrE;qBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE;oBAC1F,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAEhE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAErD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;oBAEtC,IACE,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc;wBACnD,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE;wBAC3B,CAAE,KAAK,CAAC,KAAmB,CAAC,SAAS,EACrC;wBACA,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,qBAAqB,CACpD,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,EAC9B,KAAK,CAAC,YAAY,CAAC,aAAa,CACjC,CAAC;qBACH;oBACD,MAAM,SAAS,GAAG,EAAE,CAAC;oBAErB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;wBAClD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC7C;oBACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;wBAC3D,GAAG,EAAE,SAAS,CAAC,GAAG;wBAClB,SAAS;qBACV,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;QAGH,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,KAAmB,CAAC,EAAE;YACzE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;QAGD,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAGpC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAG/B,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,YAAyB;QACtC,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO;SACR;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAEnC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;SACtE;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAChD;IACH,CAAC;IAED,aAAa,CAAC,YAAwB;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAEnC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CACrC,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,KAAK,CAChB,CAAC;SACH;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SACvE;IACH,CAAC;IAED,aAAa,CAAC,YAAwB;IAEtC,CAAC;IAED,eAAe,CAAC,YAAyB,EAAE,cAAwB;;QACjE,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;SACd;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAEnC,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC7E,OAAO,KAAK,CAAC;aACd;YAUD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5E,IACE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC;gBACjD,CAAC,CAAC,MAAuB,aAAvB,MAAM,uBAAN,MAAM,CAAmB,mBAAmB,MAAI,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,0CAAE,aAAa,CAAA,CAAC,EAChG;gBACA,IAAI,CAAC,cAAc,EAAE;oBAEnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBACjD;gBACD,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,MAAuB,aAAvB,MAAM,uBAAN,MAAM,CAAmB,aAAa,CAAA,EAAE;gBACxG,IAAI,CAAC,cAAc,EAAE;oBACnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBACjD;gBACD,OAAO,KAAK,CAAC;aACd;YAED,IACE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBACzB,CAAC,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,0CAAE,MAAM,CAAC,IAAI,MAAK,YAAY,IAAI,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,0CAAE,MAAM,CAAC,IAAI,MAAK,OAAO,CAAC,EAC3G;gBAEA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChD,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CACrC,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,KAAK,CAAC,QAAQ,EACxB,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAClD,KAAK,EACL,cAAc,CACf,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc,CAAC,YAAyB,EAAE,cAAwB;;QAChE,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAEnC,IAAI,SAAS,EAAE;YACb,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,0CAAE,MAAM,0CAAE,MAAM,KAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE;gBAC5F,IAAI,SAAS,CAAC;gBACd,IAAI,SAAS,CAAC;gBACd,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC7G,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC7D,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;4BAChF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAChF;4BACA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;yBACxD;6BAAM;4BACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;yBACzD;qBACF;oBAED,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;wBAChF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAChF;wBACA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE;4BAC9E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;yBACtD;6BAAM;4BACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC;yBACzD;qBACF;yBAAM;wBACL,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE;4BAC9E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;yBACvD;6BAAM;4BACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;yBACxD;qBACF;oBACD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE;wBACnD,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;wBAC1B,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;qBAClC;yBAAM;wBACL,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;wBACjC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;qBAC3B;iBACF;gBAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CACrC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EACjD,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EACjD,IAAI,EACJ,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAClD,KAAK,EACL,cAAc,CACf,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CACrC,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,KAAK,CAAC,QAAQ,EACxB,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAClD,KAAK,EACL,cAAc,CACf,CAAC;aACH;YACD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IA0GD,kBAAkB;QAChB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,cAAc,CAAC,YAAwB;IAEvC,CAAC;IAED,iBAAiB,CAAC,YAAwB,EAAE,MAAgB;QAE1D,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAEnC,IAAK,IAAI,CAAC,KAAK,CAAC,OAAuC,CAAC,mBAAmB,IAAI,CAAC,SAAS,EAAE;YACzF,OAAO,KAAK,CAAC;SACd;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CACpD,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CACtB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE;YACnF,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CACpC,SAAS,CAAC,GAAG,EACb,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,SAAS,CAAC,WAAW,CACtB,CAAC;aACH;YACD,OAAO,IAAI,CAAC;SACb;QAGD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,CAAC,YAAwB,EAAE,MAAgB;QACvD,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QACnC,IAAI,SAAS,EAAE;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CACpD,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,SAAS,CAAC,UAAU,CACrB,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE;gBAChF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CACpC,SAAS,CAAC,GAAG,EACb,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,SAAS,CAAC,YAAY,CACvB,CAAC;iBACH;gBACD,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB,CAAC,YAAwB,EAAE,MAAgB;;QAC5D,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,UAAU,EAAE;YAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;YACnC,IAAI,SAAS,EAAE;gBACb,IAAI,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,0CAAE,MAAM,0CAAE,MAAM,EAAE;oBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EACjG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAChG,CAAC;oBACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EACjG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAChG,CAAC;oBAEF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,gBAAgB,CAAC;oBAEtG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;oBAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;oBAC1E,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;oBAEzB,IACE,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,0CAAE,SAAS;wBAC7C,CAAC,SAAS,IAAI,UAAU,GAAG,CAAC,IAAI,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,EAC5D;wBACA,IAAI,MAAM,EAAE;4BACV,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;yBACjG;wBACD,OAAO,IAAI,CAAC;qBACb;iBACF;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;QACjD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CAAC,QAAgB,EAAE,QAAgB;QAC9C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,gBAAgB,CAAC,YAAwB;;QAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QACnC,IACE,SAAS;YACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC;YACjD,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;iBACrF,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,0CAAE,mBAAmB,CAAA;iBAC9C,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,0CAAE,aAAa,CAAA,CAAC;YAG3C,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAC/D;YACA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAClC,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,GAAG,EACb,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,CAC3B,CAAC;YACF,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,YAAwB;QACtC,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QACnC,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CACnC,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,GAAG,EACb,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,CAC3B,CAAC;SACH;IACH,CAAC;IAED,iBAAiB,CAAC,YAAwB;IAE1C,CAAC;IAED,aAAa,CAAC,CAAwB,EAAE,YAAwB;QAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAKnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,IAAI;YAC/C,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC,CAAC;YACP,GAAG,EAAE,CAAC,CAAC;SACR,CAAC;QACF,MAAM,IAAI,GAAG,MAAyB,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBAEf,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC;gBAC5D,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE;gBAC3B,GAAG;gBACH,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;gBACjC,IAAI;gBACJ,KAAK;aACN,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,MAAM,YAAY,QAAQ,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE;oBACpD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;oBAEvB,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC;oBACnD,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC1C,GAAG;oBACH,GAAG;oBACH,QAAQ,EAAG,IAAI,CAAC,SAAiB,CAAC,QAAQ;oBAC1C,IAAI,EAAE,IAAuB;oBAC7B,KAAK;iBACN,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAGvB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU,EAAE;gBAC3B,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxD;iBAAM,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE;gBAC9B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC7D;iBAAM,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAChC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;CACF","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@src/vrender';\nimport type { FederatedPointerEvent, Gesture, IEventTarget } from './../vrender';\nimport { RichText } from './../vrender';\nimport type { ColumnDefine, ListTableConstructorOptions, MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManager } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindGesture, bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\nimport { Env } from '../tools/env';\nimport type { ListTable } from '../ListTable';\nimport { isValid } from '@visactor/vutils';\nimport { InertiaScroll } from './scroll';\n\nexport class EventManager {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n // /** 为了能够判断canvas mousedown 事件 以阻止事件冒泡 */\n // isPointerDownOnTable: boolean = false;\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n gesture: Gesture;\n handleTextStickBindId: number[];\n\n //鼠标事件记录。 PointerMove敏感度太高了 记录下上一个鼠标位置 在接收到PointerMove事件时做判断 是否到到触发框选或者移动表头操作的标准,防止误触\n LastPointerXY: { x: number; y: number };\n LastBodyPointerXY: { x: number; y: number };\n isDown = false;\n isDraging = false;\n scrollYSpeed: number;\n scrollXSpeed: number;\n downIcon: IEventTarget; // 记录鼠标按下的sicon\n //报错已绑定过的事件 后续清除绑定\n globalEventListeners: { name: string; env: 'document' | 'body' | 'window'; callback: (e?: any) => void }[] = [];\n inertiaScroll: InertiaScroll;\n\n bindSparklineHoverEvent: boolean;\n\n _enableTableScroll: boolean = true;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.handleTextStickBindId = [];\n this.inertiaScroll = new InertiaScroll(table.stateManager);\n if (Env.mode === 'node') {\n return;\n }\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n bindGesture(this);\n }\n updateEventBinder() {\n setTimeout(() => {\n // 处理textStick 是否绑定SCROLL的判断\n if (checkHaveTextStick(this.table) && this.handleTextStickBindId?.length === 0) {\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n })\n );\n\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, e => {\n handleTextStick(this.table);\n })\n );\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, e => {\n handleTextStick(this.table);\n })\n );\n } else if (!checkHaveTextStick(this.table) && this.handleTextStickBindId) {\n this.handleTextStickBindId.forEach(id => {\n this.table.off(id);\n });\n this.handleTextStickBindId = [];\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n }, 0);\n }\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManager: StateManager = this.table.stateManager;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon, event } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManager.triggerDropDownMenu(col, row, x, y, event);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManager.triggerSort(col, row, icon, event);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManager.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n const isHasSelected = !!stateManager.select.ranges?.length;\n stateManager.updateSelectPos(-1, -1);\n stateManager.endSelectCells(true, isHasSelected);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, () => {\n stateManager.hideMenu();\n });\n\n // 处理textStick\n // if (checkHaveTextStick(this.table)) {\n // this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n // handleTextStick(this.table);\n // });\n // }\n this.updateEventBinder();\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table.eventManager.checkCellFillhandle(eventArgsSet)) {\n this.table.fireListeners(TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE, {});\n } else if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n this.table.internalProps._widthResizedColMap.add(resizeCol.col);\n // if (this.table.isPivotChart()) {\n this.table.scenegraph.updateChartSize(resizeCol.col);\n // }\n const state = this.table.stateManager;\n // update frozen shadowline component\n if (\n state.columnResize.col < state.table.frozenColCount &&\n !state.table.isPivotTable() &&\n !(state.table as ListTable).transpose\n ) {\n state.table.scenegraph.component.setFrozenColumnShadow(\n state.table.frozenColCount - 1,\n state.columnResize.isRightFrozen\n );\n }\n const colWidths = [];\n // 返回所有列宽信息\n for (let col = 0; col < this.table.colCount; col++) {\n colWidths.push(this.table.getColWidth(col));\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, {\n col: resizeCol.col,\n colWidths\n });\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManager.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManager.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverIcon(\n eventArgs.col,\n eventArgs.row,\n eventArgs.target,\n eventArgs.targetCell,\n eventArgs.event\n );\n } else {\n this.table.stateManager.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n if (!eventArgsSet) {\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (eventArgs.target.name === 'checkbox' || eventArgs.target.name === 'radio') {\n return false;\n }\n\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManager.updateHoverPos(-1, -1);\n // }\n const define = this.table.getBodyColumnDefine(eventArgs.col, eventArgs.row);\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n ((define as ColumnDefine)?.disableHeaderSelect || this.table.stateManager.select?.disableHeader)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (!this.table.isHeader(eventArgs.col, eventArgs.row) && (define as ColumnDefine)?.disableSelect) {\n if (!isSelectMoving) {\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n dealFillSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length && this.table.stateManager.isFillHandle()) {\n let updateRow;\n let updateCol;\n const currentRange = this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1];\n if (isSelectMoving) {\n if (!isValid(this.table.stateManager.fillHandle.directionRow)) {\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n this.table.stateManager.fillHandle.directionRow = true;\n } else {\n this.table.stateManager.fillHandle.directionRow = false;\n }\n }\n\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n if (this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y > 0) {\n this.table.stateManager.fillHandle.direction = 'top';\n } else {\n this.table.stateManager.fillHandle.direction = 'bottom';\n }\n } else {\n if (this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x > 0) {\n this.table.stateManager.fillHandle.direction = 'left';\n } else {\n this.table.stateManager.fillHandle.direction = 'right';\n }\n }\n if (this.table.stateManager.fillHandle.directionRow) {\n updateRow = eventArgs.row;\n updateCol = currentRange.end.col;\n } else {\n updateRow = currentRange.end.row;\n updateCol = eventArgs.col;\n }\n }\n\n this.table.stateManager.updateSelectPos(\n isSelectMoving ? updateCol : currentRange.end.col,\n isSelectMoving ? updateRow : currentRange.end.row,\n true,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n } else {\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n }\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n // fillSelected(eventArgsSet?: SceneEvent, SelectCellRange?: any, SelectData?: any): any {\n // return;\n // if (!eventArgsSet) {\n // this.table.stateManager.updateSelectPos(-1, -1);\n // return;\n // }\n // const { eventArgs } = eventArgsSet;\n\n // if (eventArgs) {\n // if (eventArgs.target.name === 'checkbox') {\n // return;\n // }\n // let direction;\n\n // if (eventArgs.row >= SelectCellRange.start.row && eventArgs.row <= SelectCellRange.end.row) {\n // if (eventArgs.col > SelectCellRange.end.col) {\n // direction = 'right';\n // } else {\n // direction = 'left';\n // }\n // } else {\n // if (eventArgs.row > SelectCellRange.end.row) {\n // direction = 'down';\n // } else {\n // direction = 'up';\n // }\n // }\n // const values: (string | number)[][] = [];\n // const fillData: any[][] = [];\n // let updaterow;\n // let updatecol;\n // const rows = SelectData.split('\\n'); // 将数据拆分为行\n // rows.forEach(function (rowCells: any, rowIndex: number) {\n // const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n // const rowValues: (string | number)[] = [];\n // values.push(rowValues);\n // cells.forEach(function (cell: string, cellIndex: number) {\n // // 去掉单元格数据末尾的 '\\r'\n // if (cellIndex === cells.length - 1) {\n // cell = cell.trim();\n // }\n // rowValues.push(cell);\n // });\n // });\n\n // updaterow = SelectCellRange.start.row;\n // updatecol = SelectCellRange.start.col;\n // if (['up', 'left'].indexOf(direction) > -1) {\n // if (direction === 'up') {\n // updaterow = eventArgs.row;\n\n // const fillLength = SelectCellRange.start.row - updaterow;\n\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = values.length - 1 - (i % values.length);\n // const newRow = values[rowIndex].slice(0); // 复制一行数据\n\n // fillData.unshift(newRow); // 在填充数据的开头插入新行\n // }\n // } else {\n // updatecol = eventArgs.col;\n // const fillLength = SelectCellRange.start.col - updatecol;\n\n // for (let i = 0; i < values.length; i++) {\n // const newRow = values[i].slice(0); // 复制一行数据\n // while (newRow.length < fillLength) {\n // newRow.unshift(newRow[0]); // 在新行开头向左填充元素\n // }\n // fillData.push(newRow);\n // }\n // }\n // } else {\n // if (direction === 'down') {\n // updaterow = SelectCellRange.end.row + 1;\n // const fillLength = eventArgs.row - SelectCellRange.end.row;\n\n // // 将原始数据添加到新数组中\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = i % values.length;\n // const newRow = values[rowIndex]; // 复制一行数据\n // fillData.push(newRow);\n // }\n // } else {\n // const fillLength = eventArgs.col - SelectCellRange.end.col;\n // updatecol = SelectCellRange.end.col + 1;\n\n // values.forEach(function (rowCells: any[]) {\n // const newRow: any[] = [];\n // // 将原始数据按顺序填充到新行中\n // for (let i = 0; i < fillLength; i++) {\n // const dataIndex = i % rowCells.length;\n // newRow.push(rowCells[dataIndex]);\n // }\n\n // // 将新行添加到填充数据中\n // fillData.push(newRow);\n // });\n // }\n // }\n\n // (this.table as ListTableAPI).changeCellValues(updatecol, updaterow, fillData, false);\n // }\n // }\n\n deelTableSelectAll() {\n this.table.stateManager.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if ((this.table.options as ListTableConstructorOptions).enableTreeStickCell && !eventArgs) {\n return false;\n }\n // if (eventArgs) { // 如果是鼠标处理表格外部如最后一列的后面 也期望可以拖拽列宽\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n if (update) {\n this.table.stateManager.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n // }\n\n return false;\n }\n\n checkRowResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n const resizeRow = this.table.scenegraph.getResizeRowAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n\n if (this.table._canResizeRow(resizeRow.col, resizeRow.row) && resizeRow.row >= 0) {\n if (update) {\n this.table.stateManager.startResizeRow(\n resizeRow.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeRow.bottomFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n checkCellFillhandle(eventArgsSet: SceneEvent, update?: boolean): boolean {\n if (this.table.options.excelOptions?.fillHandle) {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length) {\n const lastCol = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.col,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.col\n );\n const lastRow = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.row,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.row\n );\n\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n // 计算鼠标与fillhandle矩形中心之间的距离\n const distanceX = Math.abs(eventArgsSet.abstractPos.x - lastCellBound.x2);\n const distanceY = Math.abs(eventArgsSet.abstractPos.y - lastCellBound.y2);\n const squareSize = 6 * 3;\n // 判断鼠标是否落在fillhandle矩形内\n if (\n this.table.stateManager.fillHandle?.isFilling ||\n (distanceX <= squareSize / 2 && distanceY <= squareSize / 2)\n ) {\n if (update) {\n this.table.stateManager.startFillSelect(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);\n }\n return true;\n }\n }\n }\n }\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeCol(xInTable, yInTable);\n }\n\n dealRowResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeRow(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n (checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManager.select.ranges) ||\n this.table.options.select?.disableHeaderSelect ||\n this.table.options.select?.disableSelect) &&\n // this.table.stateManager.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManager.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManager.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n if (isValid(eventArgs.col) && isValid(eventArgs.row)) {\n this.table.stateManager.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon,\n event\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon,\n event\n });\n return true;\n }\n }\n\n return false;\n }\n /** TODO 其他的事件并么有做remove */\n release() {\n this.gesture.release();\n\n // remove global event listerner\n this.globalEventListeners.forEach(item => {\n if (item.env === 'document') {\n document.removeEventListener(item.name, item.callback);\n } else if (item.env === 'body') {\n document.body.removeEventListener(item.name, item.callback);\n } else if (item.env === 'window') {\n window.removeEventListener(item.name, item.callback);\n }\n });\n this.globalEventListeners = [];\n }\n\n enableScroll() {\n this._enableTableScroll = true;\n }\n\n disableScroll() {\n this._enableTableScroll = false;\n }\n}\n"]}
package/es/index.d.ts CHANGED
@@ -20,7 +20,7 @@ export { getDataCellPath } from './tools/get-data-path';
20
20
  export * from './render/jsx';
21
21
  export { getTargetCell } from './event/util';
22
22
  import * as VRender from './vrender';
23
- export declare const version = "1.6.0-alpha.0";
23
+ export declare const version = "1.6.0-alpha.1";
24
24
  export { TYPES, core, ListTable, ListTableSimple, ListTableConstructorOptions, PivotTable, PivotTableSimple, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, VRender };
25
25
  declare function getIcons(): {
26
26
  [key: string]: TYPES.ColumnIconOption;
package/es/index.js CHANGED
@@ -42,7 +42,7 @@ export { getTargetCell } from "./event/util";
42
42
 
43
43
  import * as VRender from "./vrender";
44
44
 
45
- export const version = "1.6.0-alpha.0";
45
+ export const version = "1.6.0-alpha.1";
46
46
 
47
47
  export { TYPES, core, ListTable, ListTableSimple, PivotTable, PivotTableSimple, PivotChart, themes, data, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, VRender };
48
48
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAsB3D,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK/F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC;AAIvC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAEf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,OAAO,EACR,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\n\n// export * as VRender from './vrender';\nimport * as VRender from './vrender';\n\nexport const version = \"1.6.0-alpha.0\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText,\n VRender\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAsB3D,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK/F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC;AAIvC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAEf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,OAAO,EACR,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\n\n// export * as VRender from './vrender';\nimport * as VRender from './vrender';\n\nexport const version = \"1.6.0-alpha.1\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText,\n VRender\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n"]}
@@ -0,0 +1,16 @@
1
+ import type { ListTable } from '../ListTable';
2
+ export declare class ListTreeStickCellPlugin {
3
+ table: ListTable;
4
+ titleRows: number[];
5
+ showedTitleRows: number[];
6
+ rowNow: number;
7
+ skipStartRow: number;
8
+ skipEndRow: number;
9
+ constructor(table: ListTable);
10
+ updateGroupTitle(): void;
11
+ updateGroupTitleInfo(): void;
12
+ getTitleRowsByRecordIndex(recordIndex: number | number[], nextRecordIndex: number | number[]): void;
13
+ updateScenegraph(): void;
14
+ }
15
+ export declare const registerListTreeStickCellPlugin: () => void;
16
+ export type IListTreeStickCellPlugin = typeof ListTreeStickCellPlugin;
@@ -0,0 +1,169 @@
1
+ import { isArray } from "@visactor/vutils";
2
+
3
+ import { Factory } from "../core/factory";
4
+
5
+ import { Group } from "../scenegraph/graphic/group";
6
+
7
+ import { createRect } from "../vrender";
8
+
9
+ import { updateCell } from "../scenegraph/group-creater/cell-helper";
10
+
11
+ import { getTargetCell } from "../event/util";
12
+
13
+ export class ListTreeStickCellPlugin {
14
+ constructor(table) {
15
+ this.titleRows = [], this.showedTitleRows = [], this.rowNow = -1, this.skipStartRow = -1,
16
+ this.skipEndRow = -1, this.table = table, this.table.on("scroll", (e => {
17
+ "vertical" === e.scrollDirection && this.updateGroupTitle();
18
+ }));
19
+ }
20
+ updateGroupTitle() {
21
+ -1 !== this.skipStartRow && -1 !== this.skipEndRow && this.skipStartRow !== this.table.scenegraph.proxy.bodyTopRow - 1 ? (this.table.scenegraph.proxy.screenTopRow <= this.skipStartRow || this.table.scenegraph.proxy.screenTopRow >= this.skipEndRow) && (this.skipStartRow = -1,
22
+ this.skipEndRow = -1, this.updateGroupTitleInfo()) : (this.skipStartRow = -1, this.skipEndRow = -1,
23
+ this.updateGroupTitleInfo()), this.updateScenegraph();
24
+ }
25
+ updateGroupTitleInfo() {
26
+ this.rowNow = this.table.scenegraph.proxy.screenTopRow + this.titleRows.length;
27
+ const recordIndex = this.table.getRecordIndexByCell(0, this.rowNow), nextRecordIndex = this.table.getRecordIndexByCell(0, this.rowNow + 1);
28
+ this.getTitleRowsByRecordIndex(recordIndex, nextRecordIndex);
29
+ }
30
+ getTitleRowsByRecordIndex(recordIndex, nextRecordIndex) {
31
+ const titleRecords = [];
32
+ isArray(recordIndex) || (recordIndex = [ recordIndex ]), isArray(nextRecordIndex) || (nextRecordIndex = [ nextRecordIndex ]);
33
+ for (let i = 0; i < recordIndex.length; i++) {
34
+ const index = recordIndex.slice(0, i + 1), record = this.table.dataSource.getRaw(index);
35
+ titleRecords.push(record);
36
+ }
37
+ const titleRows = [], isTitle = nextRecordIndex.length === recordIndex.length + 1;
38
+ let titleIndex = recordIndex.slice(0, isTitle ? recordIndex.length : recordIndex.length - 1);
39
+ const currentIndexedData = this.table.dataSource.currentIndexedData;
40
+ for (let i = this.rowNow - this.table.columnHeaderLevelCount; i >= 0; i--) {
41
+ const currentIndex = currentIndexedData[i];
42
+ if (isArray(currentIndex) && titleIndex.length === currentIndex.length) {
43
+ let isMatch = !0;
44
+ for (let j = 0; j < currentIndex.length; j++) if (currentIndex[j] !== titleIndex[j]) {
45
+ isMatch = !1;
46
+ break;
47
+ }
48
+ isMatch && (titleRows.push(i + this.table.columnHeaderLevelCount), titleIndex = titleIndex.slice(0, titleIndex.length - 1));
49
+ } else if (currentIndex === recordIndex[0]) {
50
+ titleRows.push(i + this.table.columnHeaderLevelCount);
51
+ break;
52
+ }
53
+ }
54
+ this.titleRows = titleRows.reverse();
55
+ }
56
+ updateScenegraph() {
57
+ const {table: table} = this, {shadowGroup: shadowGroup, shadowGroupFrozen: shadowGroupFrozen} = prepareShadowRoot(table);
58
+ this.showedTitleRows.length = 0;
59
+ let skip = 0;
60
+ for (let col = 0; col < table.colCount; col++) {
61
+ let colGroup;
62
+ col < table.frozenColCount ? (colGroup = new Group({
63
+ x: table.getColsWidth(0, col - 1),
64
+ y: table.getFrozenRowsHeight()
65
+ }), shadowGroupFrozen.add(colGroup)) : (colGroup = new Group({
66
+ x: table.getColsWidth(table.frozenColCount, col - 1),
67
+ y: table.getFrozenRowsHeight()
68
+ }), shadowGroup.add(colGroup)), colGroup.col = col;
69
+ for (let i = 0; i < this.titleRows.length; i++) {
70
+ const row = this.titleRows[i];
71
+ if (isSkipRow(row, this.rowNow, table.scenegraph.proxy.screenTopRow, this.titleRows)) {
72
+ 0 === col && skip++;
73
+ continue;
74
+ }
75
+ 0 === col && this.showedTitleRows.push(row);
76
+ const cell = table.scenegraph.getCell(col, row);
77
+ if ("cell" === cell.role) {
78
+ const newCell = cloneGraphic(cell);
79
+ newCell.setAttributes({
80
+ y: 40 * i
81
+ }), colGroup.add(newCell);
82
+ } else {
83
+ const newCell = updateCell(col, row, table, !0, !0);
84
+ newCell.setAttributes({
85
+ y: 40 * i
86
+ }), colGroup.add(newCell);
87
+ }
88
+ }
89
+ }
90
+ skip > 0 && -1 === this.skipStartRow && -1 === this.skipEndRow && (this.skipStartRow = table.scenegraph.proxy.screenTopRow - 1,
91
+ this.skipEndRow = table.scenegraph.proxy.screenTopRow + 1);
92
+ }
93
+ }
94
+
95
+ function isSkipRow(row, topRow, screenTopRow, titleRows) {
96
+ if (row === topRow && row !== screenTopRow + titleRows.length - 1) return !0;
97
+ return row === screenTopRow + titleRows.indexOf(row) + 1 && row < topRow;
98
+ }
99
+
100
+ function cloneGraphic(graphic) {
101
+ const newGraphic = graphic.clone();
102
+ if (newGraphic.role = graphic.role, newGraphic.col = graphic.col, newGraphic.row = graphic.row,
103
+ newGraphic.mergeStartCol = graphic.mergeStartCol, newGraphic.mergeStartRow = graphic.mergeStartRow,
104
+ newGraphic.mergeEndCol = graphic.mergeEndCol, newGraphic.mergeEndRow = graphic.mergeEndRow,
105
+ newGraphic.contentWidth = graphic.contentWidth, newGraphic.contentHeight = graphic.contentHeight,
106
+ "cell" === newGraphic.role) {
107
+ const hackRect = createRect({
108
+ x: 0,
109
+ y: 0,
110
+ width: newGraphic.attribute.width,
111
+ height: newGraphic.attribute.height
112
+ });
113
+ newGraphic.add(hackRect);
114
+ }
115
+ if ("group" === graphic.type) {
116
+ const newGroup = newGraphic;
117
+ graphic.forEachChildren((child => {
118
+ const newChild = cloneGraphic(child);
119
+ newGroup.add(newChild);
120
+ }));
121
+ }
122
+ return newGraphic;
123
+ }
124
+
125
+ function prepareShadowRoot(table) {
126
+ const colHeaderGroup = table.scenegraph.colHeaderGroup, cornerHeaderGroup = table.scenegraph.cornerHeaderGroup;
127
+ if (!colHeaderGroup.border) {
128
+ const hackBorder = createRect({
129
+ x: 0,
130
+ y: 0,
131
+ width: 0,
132
+ height: 0
133
+ });
134
+ colHeaderGroup.add(hackBorder), colHeaderGroup.border = hackBorder, hackBorder.attachShadow(hackBorder.shadowRoot),
135
+ hackBorder.name = "border-rect", hackBorder.addEventListener("click", (e => {
136
+ const titleRows = table.listTreeStickCellPlugin.titleRows, {shadowTarget: shadowTarget} = e.pickParams, cellGroup = getTargetCell(shadowTarget), {col: col, row: row} = cellGroup, rowIndex = titleRows.indexOf(row);
137
+ table.scrollToCell({
138
+ col: col,
139
+ row: row - rowIndex
140
+ });
141
+ }));
142
+ }
143
+ if (!cornerHeaderGroup.border) {
144
+ const hackBorder = createRect({
145
+ x: 0,
146
+ y: 0,
147
+ width: 0,
148
+ height: 0
149
+ });
150
+ cornerHeaderGroup.add(hackBorder), cornerHeaderGroup.border = hackBorder, hackBorder.attachShadow(hackBorder.shadowRoot),
151
+ hackBorder.name = "border-rect", hackBorder.addEventListener("click", (e => {
152
+ const titleRows = table.listTreeStickCellPlugin.titleRows, {shadowTarget: shadowTarget} = e.pickParams, cellGroup = getTargetCell(shadowTarget), {col: col, row: row} = cellGroup, rowIndex = titleRows.indexOf(row);
153
+ table.scrollToCell({
154
+ col: col,
155
+ row: row - rowIndex
156
+ });
157
+ }));
158
+ }
159
+ const shadowGroup = colHeaderGroup.border.shadowRoot, shadowGroupFrozen = cornerHeaderGroup.border.shadowRoot;
160
+ return shadowGroup.removeAllChild(), shadowGroupFrozen.removeAllChild(), {
161
+ shadowGroup: shadowGroup,
162
+ shadowGroupFrozen: shadowGroupFrozen
163
+ };
164
+ }
165
+
166
+ export const registerListTreeStickCellPlugin = () => {
167
+ Factory.registerComponent("listTreeStickCellPlugin", ListTreeStickCellPlugin);
168
+ };
169
+ //# sourceMappingURL=list-tree-stick-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/plugins/list-tree-stick-cell.ts"],"names":[],"mappings":"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","file":"list-tree-stick-cell.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport type { ListTable } from '../ListTable';\nimport { Factory } from '../core/factory';\nimport { Group } from '../scenegraph/graphic/group';\nimport { createRect, type Graphic } from '../vrender';\nimport { updateCell } from '../scenegraph/group-creater/cell-helper';\nimport { getTargetCell } from '../event/util';\n\nexport class ListTreeStickCellPlugin {\n table: ListTable;\n titleRows: number[] = [];\n showedTitleRows: number[] = [];\n rowNow: number = -1;\n skipStartRow: number = -1;\n skipEndRow: number = -1;\n\n constructor(table: ListTable) {\n this.table = table;\n\n this.table.on('scroll', e => {\n if (e.scrollDirection !== 'vertical') {\n return;\n }\n this.updateGroupTitle();\n });\n }\n\n updateGroupTitle() {\n // this.updateGroupTitleInfo();\n if (\n this.skipStartRow !== -1 &&\n this.skipEndRow !== -1 &&\n this.skipStartRow !== this.table.scenegraph.proxy.bodyTopRow - 1\n ) {\n if (\n this.table.scenegraph.proxy.screenTopRow <= this.skipStartRow ||\n this.table.scenegraph.proxy.screenTopRow >= this.skipEndRow\n ) {\n this.skipStartRow = -1;\n this.skipEndRow = -1;\n this.updateGroupTitleInfo();\n } else {\n // const row = this.table.scenegraph.proxy.screenTopRow + titleRows.length;\n // nowRow = row;\n // renderLast = true;\n // do nothing\n }\n } else {\n this.skipStartRow = -1;\n this.skipEndRow = -1;\n this.updateGroupTitleInfo();\n }\n\n this.updateScenegraph();\n }\n\n updateGroupTitleInfo() {\n this.rowNow = this.table.scenegraph.proxy.screenTopRow + this.titleRows.length;\n const recordIndex = this.table.getRecordIndexByCell(0, this.rowNow); // [0, 0, 6]/0\n const nextRecordIndex = this.table.getRecordIndexByCell(0, this.rowNow + 1);\n this.getTitleRowsByRecordIndex(recordIndex, nextRecordIndex);\n }\n\n getTitleRowsByRecordIndex(recordIndex: number | number[], nextRecordIndex: number | number[]) {\n const titleRecords = [];\n if (!isArray(recordIndex)) {\n recordIndex = [recordIndex];\n }\n if (!isArray(nextRecordIndex)) {\n nextRecordIndex = [nextRecordIndex];\n }\n\n for (let i = 0; i < recordIndex.length; i++) {\n const index = recordIndex.slice(0, i + 1);\n const record = this.table.dataSource.getRaw(index as unknown as number);\n titleRecords.push(record);\n }\n\n const titleRows = [];\n // const isTitle = !(recordIndex.length === (this.table.options.groupBy as any).length + 1);\n const isTitle = nextRecordIndex.length === recordIndex.length + 1;\n let titleIndex = recordIndex.slice(0, !isTitle ? recordIndex.length - 1 : recordIndex.length);\n const currentIndexedData = this.table.dataSource.currentIndexedData;\n const startIndex = this.rowNow - this.table.columnHeaderLevelCount;\n\n for (let i = startIndex; i >= 0; i--) {\n const currentIndex = currentIndexedData[i];\n if (isArray(currentIndex) && titleIndex.length === currentIndex.length) {\n let isMatch = true;\n for (let j = 0; j < currentIndex.length; j++) {\n if (currentIndex[j] !== titleIndex[j]) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n titleRows.push(i + this.table.columnHeaderLevelCount);\n titleIndex = titleIndex.slice(0, titleIndex.length - 1);\n }\n } else if (currentIndex === recordIndex[0]) {\n titleRows.push(i + this.table.columnHeaderLevelCount);\n break;\n }\n }\n\n this.titleRows = titleRows.reverse();\n }\n\n updateScenegraph() {\n const { table } = this;\n const { shadowGroup, shadowGroupFrozen } = prepareShadowRoot(table);\n\n this.showedTitleRows.length = 0;\n let skip = 0;\n for (let col = 0; col < table.colCount; col++) {\n let colGroup;\n if (col < table.frozenColCount) {\n colGroup = new Group({\n x: table.getColsWidth(0, col - 1),\n y: table.getFrozenRowsHeight()\n });\n shadowGroupFrozen.add(colGroup);\n } else {\n colGroup = new Group({\n x: table.getColsWidth(table.frozenColCount, col - 1),\n y: table.getFrozenRowsHeight()\n });\n shadowGroup.add(colGroup);\n }\n colGroup.col = col;\n for (let i = 0; i < this.titleRows.length; i++) {\n const row = this.titleRows[i];\n if (isSkipRow(row, this.rowNow, table.scenegraph.proxy.screenTopRow, this.titleRows)) {\n // skipOne = true;\n col === 0 && skip++;\n continue;\n }\n if (col === 0) {\n this.showedTitleRows.push(row);\n }\n const cell = table.scenegraph.getCell(col, row);\n if (cell.role === 'cell') {\n const newCell = cloneGraphic(cell);\n newCell.setAttributes({\n y: i * 40\n });\n colGroup.add(newCell);\n } else {\n // create a fake cellGroup for title\n const newCell = updateCell(col, row, table, true, true);\n newCell.setAttributes({\n y: i * 40\n });\n colGroup.add(newCell);\n }\n }\n }\n\n if (skip > 0 && this.skipStartRow === -1 && this.skipEndRow === -1) {\n this.skipStartRow = table.scenegraph.proxy.screenTopRow - 1;\n this.skipEndRow = table.scenegraph.proxy.screenTopRow + 1;\n }\n }\n}\n\nfunction isSkipRow(row: number, topRow: number, screenTopRow: number, titleRows: number[]) {\n if (row === topRow && row !== screenTopRow + titleRows.length - 1) {\n return true;\n }\n\n const rowIndex = titleRows.indexOf(row);\n const rowLimit = screenTopRow + rowIndex + 1;\n if (row === rowLimit && row < topRow) {\n return true;\n }\n\n return false;\n}\n\nfunction cloneGraphic(graphic: Graphic) {\n const newGraphic = graphic.clone();\n (newGraphic as any).role = (graphic as any).role;\n (newGraphic as any).col = (graphic as any).col;\n (newGraphic as any).row = (graphic as any).row;\n (newGraphic as any).mergeStartCol = (graphic as any).mergeStartCol;\n (newGraphic as any).mergeStartRow = (graphic as any).mergeStartRow;\n (newGraphic as any).mergeEndCol = (graphic as any).mergeEndCol;\n (newGraphic as any).mergeEndRow = (graphic as any).mergeEndRow;\n (newGraphic as any).contentWidth = (graphic as any).contentWidth;\n (newGraphic as any).contentHeight = (graphic as any).contentHeight;\n\n if ((newGraphic as any).role === 'cell') {\n // hack for vrender not support shadow group pick\n const hackRect = createRect({\n x: 0,\n y: 0,\n width: newGraphic.attribute.width,\n height: newGraphic.attribute.height\n });\n newGraphic.add(hackRect);\n }\n\n if (graphic.type === 'group') {\n const newGroup = newGraphic as Group;\n graphic.forEachChildren(child => {\n const newChild = cloneGraphic(child as any);\n newGroup.add(newChild);\n });\n }\n return newGraphic;\n}\n\nfunction prepareShadowRoot(table: ListTable) {\n const colHeaderGroup = table.scenegraph.colHeaderGroup;\n const cornerHeaderGroup = table.scenegraph.cornerHeaderGroup;\n if (!colHeaderGroup.border) {\n const hackBorder = createRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n colHeaderGroup.add(hackBorder);\n colHeaderGroup.border = hackBorder;\n (hackBorder as any).attachShadow(hackBorder.shadowRoot);\n hackBorder.name = 'border-rect';\n\n hackBorder.addEventListener('click', (e: any) => {\n const titleRows = table.listTreeStickCellPlugin.titleRows;\n const { shadowTarget } = e.pickParams;\n const cellGroup = getTargetCell(shadowTarget);\n const { col, row } = cellGroup;\n const rowIndex = titleRows.indexOf(row);\n table.scrollToCell({ col, row: row - rowIndex });\n });\n }\n\n if (!cornerHeaderGroup.border) {\n const hackBorder = createRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n cornerHeaderGroup.add(hackBorder);\n cornerHeaderGroup.border = hackBorder;\n (hackBorder as any).attachShadow(hackBorder.shadowRoot);\n hackBorder.name = 'border-rect';\n\n hackBorder.addEventListener('click', (e: any) => {\n const titleRows = table.listTreeStickCellPlugin.titleRows;\n const { shadowTarget } = e.pickParams;\n const cellGroup = getTargetCell(shadowTarget);\n const { col, row } = cellGroup;\n const rowIndex = titleRows.indexOf(row);\n table.scrollToCell({ col, row: row - rowIndex });\n });\n }\n\n const shadowGroup = colHeaderGroup.border.shadowRoot;\n const shadowGroupFrozen = cornerHeaderGroup.border.shadowRoot;\n shadowGroup.removeAllChild();\n shadowGroupFrozen.removeAllChild();\n\n return { shadowGroup, shadowGroupFrozen };\n}\n\nexport const registerListTreeStickCellPlugin = () => {\n Factory.registerComponent('listTreeStickCellPlugin', ListTreeStickCellPlugin);\n};\n\nexport type IListTreeStickCellPlugin = typeof ListTreeStickCellPlugin;\n"]}
@@ -110,7 +110,7 @@ export class Group extends VRenderGroup {
110
110
  }
111
111
  return "body" === this.role || "row-header" === this.role || "col-header" === this.role || "right-frozen" === this.role || "bottom-frozen" === this.role || "corner-header" === this.role || "corner-right-top-header" === this.role || "corner-right-bottom-header" === this.role || "corner-left-bottom-header" === this.role ? (this._AABBBounds.setValue(-1 / 0, -1 / 0, 1 / 0, 1 / 0),
112
112
  this.parent && this.parent.addChildUpdateBoundTag(), this.clearUpdateBoundTag(),
113
- this._AABBBounds) : super.doUpdateAABBBounds();
113
+ this.shadowRoot && this.shadowRoot.tryUpdateAABBBounds(), this._AABBBounds) : super.doUpdateAABBBounds();
114
114
  }
115
115
  updateColumnRowNumber(row) {
116
116
  this.rowNumber ? this.rowNumber = Math.max(this.rowNumber, row) : this.rowNumber = row;