@visactor/vtable 1.22.11-alpha.1 → 1.22.11-alpha.3
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.
- package/cjs/ListTable.d.ts +3 -9
- package/cjs/ListTable.js +6 -35
- package/cjs/ListTable.js.map +1 -1
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +0 -1
- package/cjs/core/TABLE_EVENT_TYPE.js +0 -1
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/core/record-helper.d.ts +2 -7
- package/cjs/core/record-helper.js +24 -64
- package/cjs/core/record-helper.js.map +1 -1
- package/cjs/dataset/DataStatistics.js +2 -1
- package/cjs/dataset/dataset-pivot-table.js +1 -2
- package/cjs/edit/edit-manager.js +3 -3
- package/cjs/edit/edit-manager.js.map +1 -1
- package/cjs/edit/editors.js +1 -1
- package/cjs/event/event.js +1 -7
- package/cjs/event/event.js.map +1 -1
- package/cjs/header-helper/style.js +2 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/pivot-header-layout.js +0 -1
- package/cjs/plugins/index.js +1 -1
- package/cjs/plugins/interface.js +1 -1
- package/cjs/plugins/invert-highlight.js +1 -1
- package/cjs/ts-types/base-table.d.ts +2 -2
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/events.d.ts +0 -15
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +2 -7
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +30 -118
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +3 -9
- package/es/ListTable.js +7 -35
- package/es/ListTable.js.map +1 -1
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/TABLE_EVENT_TYPE.d.ts +0 -1
- package/es/core/TABLE_EVENT_TYPE.js +0 -1
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/core/record-helper.d.ts +2 -7
- package/es/core/record-helper.js +20 -58
- package/es/core/record-helper.js.map +1 -1
- package/es/dataset/DataStatistics.js +2 -1
- package/es/dataset/dataset-pivot-table.js +1 -2
- package/es/edit/edit-manager.js +3 -3
- package/es/edit/edit-manager.js.map +1 -1
- package/es/edit/editors.js +1 -1
- package/es/event/event.js +1 -7
- package/es/event/event.js.map +1 -1
- package/es/header-helper/style.js +2 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/pivot-header-layout.js +1 -2
- package/es/plugins/index.js +1 -1
- package/es/plugins/interface.js +1 -1
- package/es/plugins/invert-highlight.js +1 -1
- package/es/ts-types/base-table.d.ts +2 -2
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/events.d.ts +0 -15
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +2 -7
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +4 -4
- package/cjs/core/index.d.ts +0 -1
- package/cjs/core/index.js +0 -30
- package/cjs/core/index.js.map +0 -1
- package/es/core/index.d.ts +0 -1
- package/es/core/index.js +0 -2
- package/es/core/index.js.map +0 -1
package/es/event/event.js
CHANGED
|
@@ -450,13 +450,7 @@ export class EventManager {
|
|
|
450
450
|
try {
|
|
451
451
|
const selectCells = this.cutCellRange;
|
|
452
452
|
if (!selectCells || 0 === selectCells.length) return;
|
|
453
|
-
|
|
454
|
-
for (let i = 0; i < selectCells.length; i++) for (let j = 0; j < selectCells[i].length; j++) selectCells[i][j] && changeValues.push({
|
|
455
|
-
col: selectCells[i][j].col,
|
|
456
|
-
row: selectCells[i][j].row,
|
|
457
|
-
value: void 0
|
|
458
|
-
});
|
|
459
|
-
table.changeCellValuesByIds(changeValues);
|
|
453
|
+
for (let i = 0; i < selectCells.length; i++) for (let j = 0; j < selectCells[i].length; j++) selectCells[i][j] && table.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, void 0);
|
|
460
454
|
} catch (error) {}
|
|
461
455
|
}
|
|
462
456
|
checkClipboardChanged() {
|
package/es/event/event.js.map
CHANGED
|
@@ -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, vglobal } from './../vrender';\nimport type { CellInfo, ListTableAPI, ListTableConstructorOptions } 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, ListTableProtected } 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, setDataToHTML, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './self-event-listener/pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './self-event-listener/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';\nimport { isCellDisableSelect } from '../state/select/is-cell-select-highlight';\nimport {\n bindGroupCheckboxTreeChange,\n bindGroupTitleCheckboxChange,\n bindHeaderCheckboxChange\n} from './self-event-listener/list-table/checkbox';\nimport { bindButtonClickEvent } from './component/button';\nimport { bindIconClickEvent } from './self-event-listener/base-table/icon';\nimport { bindDropdownMenuEvent } from './self-event-listener/base-table/dropdown-menu';\nimport { bindDBClickAutoColumnWidthEvent } from './self-event-listener/base-table/dbclick-auto-column-width';\nimport { browser } from '../tools/helper';\nimport { clearActiveCellRangeState, setActiveCellRangeState } from '../tools/style';\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 isTouchMove: boolean; // touchmove 事件中设置\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 /** 是在touchSetTimeout中设置的true 延迟了500ms 如果在500ms内接入了touch事件 则取消touchSetTimeout逻辑 也就是不会将touchMode设置为true。这个是longTouch的逻辑 */\n isLongTouch: 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: {\n name: string;\n env: 'document' | 'body' | 'window' | 'vglobal';\n callback: (e?: any) => void;\n }[] = [];\n inertiaScroll: InertiaScroll;\n\n bindSparklineHoverEvent: boolean;\n\n _enableTableScroll: boolean = true;\n /** 剪切后等待粘贴 */\n cutWaitPaste: boolean = false;\n private clipboardCheckTimer: number | null = null; // 剪贴板检测定时器\n private cutOperationTime: number = 0; // 记录剪切操作的时间\n lastClipboardContent: string = ''; // 最后一次复制/剪切的内容\n cutCellRange: CellInfo[][] | null = null;\n /** 复制时的源位置信息(用于公式相对引用调整) */\n copySourceRange: { startCol: number; startRow: number } | null = null;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.handleTextStickBindId = [];\n this.inertiaScroll = new InertiaScroll(table.stateManager);\n if (Env.mode === 'node' || table.options.disableInteraction) {\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 if (this.table.isReleased) {\n return;\n }\n\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 // 图标点击\n bindIconClickEvent(this.table);\n\n // 下拉菜单内容点击\n bindDropdownMenuEvent(this.table);\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\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n bindDBClickAutoColumnWidthEvent(this.table);\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 // group title checkbox change\n bindGroupTitleCheckboxChange(this.table);\n // checkbox and titlr change\n bindGroupCheckboxTreeChange(this.table as ListTable);\n // header checkbox change\n bindHeaderCheckboxChange(this.table);\n\n // button click\n bindButtonClickEvent(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(eventArgs.col, eventArgs.row, eventArgs.target, eventArgs.targetCell);\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 (\n eventArgs.target.name === 'checkbox' ||\n eventArgs.target.name === 'radio' ||\n eventArgs.target.name === 'switch' ||\n eventArgs.target.name === 'button'\n ) {\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\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n isCellDisableSelect(this.table, eventArgs.col, eventArgs.row)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (\n !this.table.isHeader(eventArgs.col, eventArgs.row) &&\n isCellDisableSelect(this.table, eventArgs.col, eventArgs.row)\n ) {\n if (!isSelectMoving) {\n const isHasSelected = !!this.table.stateManager.select.ranges?.length;\n this.table.stateManager.updateSelectPos(-1, -1);\n if (isHasSelected) {\n this.table.stateManager.endSelectCells(true, isHasSelected);\n }\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 const shiftMultiSelect = this.table.keyboardOptions?.shiftMultiSelect ?? true;\n const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;\n this.table.stateManager.updateSelectPos(\n this.table.stateManager.select.selectInline === 'row' ? this.table.colCount - 1 : eventArgs.col,\n this.table.stateManager.select.selectInline === 'col' ? this.table.rowCount - 1 : eventArgs.row,\n eventArgs.event.shiftKey && shiftMultiSelect,\n (eventArgs.event.ctrlKey || eventArgs.event.metaKey) && ctrlMultiSelect,\n false,\n isSelectMoving ? false : this.table.options.select?.makeSelectCellVisible ?? true\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 const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;\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) && ctrlMultiSelect,\n false,\n !isSelectMoving\n );\n } else {\n const shiftMultiSelect = this.table.keyboardOptions?.shiftMultiSelect ?? true;\n const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey && shiftMultiSelect,\n (eventArgs.event.ctrlKey || eventArgs.event.metaKey) && ctrlMultiSelect,\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 this.table.fireListeners(TABLE_EVENT_TYPE.SELECTED_CELL, {\n ranges: this.table.stateManager.select.ranges,\n col: 0,\n row: 0\n });\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.internalProps as ListTableProtected).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 let useerCustomCanResizeColumn: boolean = true;\n if (\n this.table.internalProps.canResizeColumn &&\n !this.table.internalProps.canResizeColumn(resizeCol.col, resizeCol.row, this.table)\n ) {\n useerCustomCanResizeColumn = false;\n }\n\n if (useerCustomCanResizeColumn && 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 if (this.table.stateManager.isResizeCol()) {\n // 结束列调整\n this.table.stateManager.endResizeCol();\n }\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 cellIsHeaderCheck(eventArgsSet: SceneEvent, update?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n const { col, row, target } = eventArgs;\n if (!this.table.isHeader(col, row)) {\n return false;\n }\n const cellType = this.table.getCellType(eventArgs.col, eventArgs.row);\n if (cellType === 'checkbox' && target.name === 'checkbox') {\n return true;\n }\n return false;\n }\n checkCellFillhandle(eventArgsSet: SceneEvent, update?: boolean): boolean {\n let isFillHandle = false;\n if (typeof this.table.options.excelOptions?.fillHandle === 'function') {\n isFillHandle = this.table.options.excelOptions.fillHandle({\n selectRanges: this.table.stateManager.select.ranges,\n table: this.table\n });\n } else {\n isFillHandle = this.table.options.excelOptions?.fillHandle;\n }\n if (isFillHandle) {\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 const startCol = Math.min(\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 startRow = Math.min(\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 // 计算鼠标与fillhandle矩形中心之间的距离 distanceX 和 distanceY\n // 考虑最后一行和最后一列的特殊情况 逻辑处理需要和update-select-border.ts 中 “计算填充柄小方块的位置” 逻辑处理一致。目前都还有小问题,例如存在冻结的时候。\n let lastCellBoundTargetX;\n if (lastCol < this.table.colCount - 1) {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n lastCellBoundTargetX = lastCellBound.x2;\n } else {\n if (startCol === 0) {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(0, lastRow).globalAABBBounds;\n lastCellBoundTargetX = lastCellBound.x1;\n } else {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(\n startCol - 1,\n lastRow\n ).globalAABBBounds;\n lastCellBoundTargetX = lastCellBound.x2;\n }\n }\n const distanceX = Math.abs(eventArgsSet.abstractPos.x - lastCellBoundTargetX);\n\n let lastCellBoundTargetY;\n if (lastRow < this.table.rowCount - 1) {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n lastCellBoundTargetY = lastCellBound.y2;\n } else {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, startRow - 1).globalAABBBounds;\n lastCellBoundTargetY = lastCellBound.y2;\n }\n const distanceY = Math.abs(eventArgsSet.abstractPos.y - lastCellBoundTargetY);\n\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 checkColumnMover(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 eventArgs?.event?.nativeEvent\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(x: number, y: number, event: MouseEvent | PointerEvent | TouchEvent) {\n let col = this.table.getColAtRelativePosition(x);\n let row = this.table.getRowAtRelativePosition(y);\n if (col === -1 && this.table.stateManager.columnMove.movingColumnOrRow === 'row') {\n col = 0;\n }\n if (row === -1 && this.table.stateManager.columnMove.movingColumnOrRow === 'column') {\n row = 0;\n }\n // const { eventArgs } = eventArgsSet;\n if (isValid(col) && isValid(row)) {\n this.table.stateManager.updateMoveCol(col, row, x, y, event);\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 } else if (item.env === 'vglobal') {\n vglobal.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 async handleCopy(e: KeyboardEvent, isCut: boolean = false) {\n const table = this.table;\n !isCut && (this.cutWaitPaste = false);\n this.copySourceRange = null;\n // 记录复制时的源位置(用于公式相对引用调整)\n const sourceRanges = table.stateManager.select.ranges;\n if (sourceRanges && sourceRanges.length === 1) {\n // 只有一个选区的时候才需要采取解析公式(和excel一致),才需要记录源位置\n const sourceRange = sourceRanges[0];\n this.copySourceRange = {\n startCol: Math.min(sourceRange.start.col, sourceRange.end.col),\n startRow: Math.min(sourceRange.start.row, sourceRange.end.row)\n };\n } else if (!sourceRanges?.length) {\n this.copySourceRange = null;\n // 没有选中区域,直接返回,不进行复制操作\n return;\n }\n\n const data = this.table.getCopyValue(\n table.options.keyboardOptions?.getCopyCellValue?.value as (col: number, row: number) => string | number\n );\n if (isValid(data)) {\n e.preventDefault();\n\n // 确保表格元素获得焦点,避免Document is not focused错误\n const element = table.getElement();\n if (element && element !== document.activeElement) {\n element.focus();\n // 短暂延迟,确保焦点设置完成\n await new Promise(resolve => setTimeout(resolve, 10));\n }\n\n try {\n // 优先使用现代剪贴板API\n if (navigator.clipboard && navigator.clipboard.writeText) {\n // 尝试获取权限(如果支持)\n let hasPermission = true;\n if (navigator.permissions && navigator.permissions.query) {\n try {\n const permissionState = await navigator.permissions.query({\n name: 'clipboard-write' as PermissionName\n });\n hasPermission = permissionState.state === 'granted';\n } catch (permissionError) {\n // 权限查询失败,继续尝试写入\n console.warn('无法查询剪贴板权限:', permissionError);\n hasPermission = true; // 假设有权限,让写入操作自己失败\n }\n }\n\n if (hasPermission) {\n // 将复制的数据转为html格式\n\n try {\n // 尝试使用 ClipboardItem(支持富文本)\n if (window.ClipboardItem) {\n let htmlValues = data;\n if (\n table.stateManager.select.ranges.length === 1 && //只有一个选区的时候采取解析公式(和excel一致)\n table.options.keyboardOptions?.getCopyCellValue?.html\n ) {\n htmlValues = this.table.getCopyValue(\n table.options.keyboardOptions?.getCopyCellValue.html as (\n col: number,\n row: number\n ) => string | number\n );\n }\n const dataHTML = setDataToHTML(htmlValues);\n await navigator.clipboard.write([\n new ClipboardItem({\n 'text/html': new Blob([dataHTML], { type: 'text/html' }),\n 'text/plain': new Blob([data], { type: 'text/plain' })\n })\n ]);\n } else {\n // 降级到纯文本\n await navigator.clipboard.writeText(data);\n }\n } catch (clipboardError) {\n console.warn('剪贴板写入失败,使用降级方案:', clipboardError);\n // 降级到传统方法\n this.fallbackCopyToClipboard(data, e);\n }\n } else {\n // 没有权限,使用降级方案\n this.fallbackCopyToClipboard(data, e);\n }\n } else {\n // 不支持现代剪贴板API,使用降级方案\n this.fallbackCopyToClipboard(data, e);\n }\n\n table.fireListeners(TABLE_EVENT_TYPE.COPY_DATA, {\n cellRange: table.stateManager.select.ranges,\n copyData: data,\n isCut\n });\n } catch (error) {\n console.error('复制操作失败:', error);\n // 最后的降级方案\n this.fallbackCopyToClipboard(data, e);\n }\n }\n if (table.keyboardOptions?.showCopyCellBorder) {\n setActiveCellRangeState(table);\n table.clearSelected();\n }\n }\n\n // 降级复制方案\n private fallbackCopyToClipboard(data: string, e: KeyboardEvent): void {\n try {\n // 尝试使用旧的 clipboardData API (在事件处理函数中直接设置)\n if ((e as any).clipboardData) {\n (e as any).clipboardData.setData('text/plain', data);\n return;\n }\n\n // 确保当前文档有焦点\n if (document.activeElement && document.activeElement !== document.body) {\n (document.activeElement as HTMLElement).blur();\n }\n\n // 尝试使用 document.execCommand\n const textArea = document.createElement('textarea');\n textArea.value = data;\n textArea.style.position = 'fixed';\n textArea.style.left = '-999999px';\n textArea.style.top = '-999999px';\n textArea.style.opacity = '0';\n textArea.setAttribute('readonly', '');\n textArea.setAttribute('aria-hidden', 'true');\n document.body.appendChild(textArea);\n\n // 强制聚焦并选中文本\n textArea.focus();\n textArea.select();\n textArea.setSelectionRange(0, data.length);\n\n try {\n const successful = document.execCommand('copy');\n if (!successful) {\n console.warn('execCommand复制返回false,可能不被支持');\n }\n } catch (execError) {\n console.warn('execCommand复制失败:', execError);\n } finally {\n document.body.removeChild(textArea);\n }\n } catch (error) {\n console.error('降级复制方案失败:', error);\n }\n }\n\n async handleCut(e: KeyboardEvent) {\n this.handleCopy(e, true);\n this.cutWaitPaste = true;\n this.cutCellRange = this.table.getSelectedCellInfos();\n // 设置自动超时,防止剪切状态无限期保持\n if (this.clipboardCheckTimer) {\n clearTimeout(this.clipboardCheckTimer);\n }\n\n // 30秒后自动取消剪切状态\n this.clipboardCheckTimer = window.setTimeout(() => {\n if (this.cutWaitPaste) {\n // 剪切操作超时,重置剪切状态\n this.cutWaitPaste = false;\n this.cutCellRange = null;\n this.clipboardCheckTimer = null;\n }\n }, 30000); // 30秒超时\n\n // 保存剪贴板内容以便后续检测变化\n this.saveClipboardContent();\n }\n\n // 执行实际的粘贴操作\n handlePaste(e: KeyboardEvent): void {\n if (!this.cutWaitPaste) {\n // 非剪切状态,直接粘贴\n this.executePaste(e);\n return;\n }\n\n this.checkClipboardChanged()\n .then(changed => {\n // 执行粘贴操作,并根据剪贴板是否变化决定是否清空选中区域\n this.executePaste(e);\n if (!changed) {\n this.clearCutArea(this.table as ListTableAPI);\n }\n // 执行完粘贴操作后,重置剪切状态\n if (this.cutWaitPaste) {\n this.cutWaitPaste = false;\n this.cutCellRange = null;\n // 清除定时器\n if (this.clipboardCheckTimer) {\n clearTimeout(this.clipboardCheckTimer);\n this.clipboardCheckTimer = null;\n }\n }\n })\n .catch(() => {\n // 如果无法检测剪贴板变化(例如权限问题),则保守地执行粘贴但不清空选中区域\n this.executePaste(e);\n // 执行完粘贴操作后,重置剪切状态\n if (this.cutWaitPaste) {\n this.cutWaitPaste = false;\n this.cutCellRange = null;\n // 清除定时器\n if (this.clipboardCheckTimer) {\n clearTimeout(this.clipboardCheckTimer);\n this.clipboardCheckTimer = null;\n }\n }\n });\n }\n private async executePaste(e: any) {\n const table = this.table;\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n return;\n }\n if ((table as ListTableAPI).changeCellValues && table.stateManager.select.ranges?.length > 0) {\n try {\n // 优先使用现代剪贴板API\n if (navigator.clipboard && navigator.clipboard.read) {\n try {\n // 读取剪切板数据\n const clipboardItems = await navigator.clipboard.read();\n let handled = false;\n\n for (const item of clipboardItems) {\n // 优先处理 html 格式数据\n if (item.types.includes('text/html')) {\n await this.pasteHtmlToTable(item);\n handled = true;\n break;\n } else if (item.types.includes('text/plain')) {\n await this.pasteTextToTable(item);\n handled = true;\n break;\n }\n }\n\n if (!handled) {\n // 如果没有处理任何数据,使用降级方案\n await this.fallbackPasteFromClipboard(e);\n }\n } catch (clipboardError) {\n console.warn('现代剪贴板API读取失败,使用降级方案:', clipboardError);\n // 降级到传统方法\n await this.fallbackPasteFromClipboard(e);\n }\n } else {\n // 不支持现代剪贴板API,使用降级方案\n await this.fallbackPasteFromClipboard(e);\n }\n } catch (error) {\n console.error('粘贴操作失败:', error);\n // 最后的降级方案\n await this.fallbackPasteFromClipboard(e);\n }\n }\n if (table.keyboardOptions?.showCopyCellBorder) {\n clearActiveCellRangeState(table);\n }\n }\n\n // 降级粘贴方案\n private async fallbackPasteFromClipboard(e: any): Promise<void> {\n const table = this.table;\n const ranges = table.stateManager.select.ranges;\n const col = Math.min(ranges[0].start.col, ranges[0].end.col);\n const row = Math.min(ranges[0].start.row, ranges[0].end.row);\n\n try {\n // 确保表格元素获得焦点\n const element = table.getElement();\n if (element && element !== document.activeElement) {\n element.focus();\n // 短暂延迟,确保焦点设置完成\n await new Promise(resolve => setTimeout(resolve, 10));\n }\n\n // 尝试从事件对象获取剪贴板数据\n const clipboardData = e.clipboardData || (window as any).clipboardData || window.Clipboard;\n\n if (clipboardData) {\n const pastedData = clipboardData.getData('text') || clipboardData.getData('Text');\n if (pastedData) {\n await this.processPastedText(pastedData, col, row);\n return;\n }\n }\n } catch (error) {\n console.error('降级粘贴方案失败:', error);\n }\n }\n\n // 处理粘贴的文本数据\n private async processPastedText(pastedData: string, col: number, row: number): Promise<void> {\n const table = this.table;\n const rows = pastedData.split('\\n'); // 将数据拆分为行\n const values: (string | number)[][] = [];\n\n rows.forEach(function (rowCells: any) {\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 let processedValues;\n // 检查是否支持公式处理(针对vtable-sheet)\n if (table.options.keyboardOptions?.processFormulaBeforePaste && this.copySourceRange) {\n // 利用复制时记录的源位置,对粘贴的数据进行公式处理\n processedValues = table.options.keyboardOptions.processFormulaBeforePaste(\n values,\n this.copySourceRange.startCol,\n this.copySourceRange.startRow,\n col,\n row\n );\n }\n\n // 保持与 navigator.clipboard.read 中的操作一致\n const changedCellResults = await (table as ListTableAPI).changeCellValues(\n col,\n row,\n processedValues ? processedValues : values,\n true\n );\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues ? processedValues : values,\n changedCellResults\n });\n }\n }\n // 清空选中区域的内容\n private clearCutArea(table: ListTableAPI): void {\n try {\n const selectCells = this.cutCellRange;\n if (!selectCells || selectCells.length === 0) {\n return;\n }\n\n const changeValues: {\n col: number;\n row: number;\n value: string | number | null;\n }[] = [];\n for (let i = 0; i < selectCells.length; i++) {\n for (let j = 0; j < selectCells[i].length; j++) {\n if (selectCells[i][j]) {\n changeValues.push({\n col: selectCells[i][j].col,\n row: selectCells[i][j].row,\n value: undefined\n });\n }\n }\n }\n table.changeCellValuesByIds(changeValues);\n } catch (error) {\n console.error('清空单元格内容失败', error);\n }\n }\n\n // 检查剪贴板内容是否被其他应用更改\n private async checkClipboardChanged(): Promise<boolean> {\n // 如果不支持读取剪贴板,则无法检测变化\n if (!navigator.clipboard || !navigator.clipboard.readText) {\n return false;\n }\n\n try {\n const currentContent = await navigator.clipboard.readText();\n // console.log('当前剪贴板内容:', currentContent);\n // console.log('上次保存的剪贴板内容:', this.lastClipboardContent);\n\n // 比较当前剪贴板内容与剪切时保存的内容\n return currentContent !== this.lastClipboardContent;\n } catch (err) {\n console.warn('检查剪贴板状态失败:', err);\n // 出错时假设剪贴板未变化\n return false;\n }\n }\n\n // 保存剪贴板内容\n private saveClipboardContent(): void {\n // 尝试获取剪贴板内容\n if (navigator.clipboard && navigator.clipboard.readText) {\n // 延迟一点以确保剪贴板内容已更新\n setTimeout(() => {\n navigator.clipboard\n .readText()\n .then(text => {\n this.lastClipboardContent = text;\n console.log('已保存剪贴板状态');\n })\n .catch(err => {\n console.warn('无法读取剪贴板内容:', err);\n });\n }, 50);\n }\n }\n private pasteHtmlToTable(item: ClipboardItem) {\n // const regex = /<tr[^>]*>(.*?)<\\/tr>/gs; // 匹配<tr>标签及其内容\n const regex = /<tr[^>]*>([\\s\\S]*?)<\\/tr>/g; // for webpack3\n // const cellRegex = /<td[^>]*>(.*?)<\\/td>/gs; // 匹配<td>标签及其内容\n const cellRegex = /<td[^>]*>([\\s\\S]*?)<\\/td>/g; // for webpack3\n const table = this.table;\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n item.getType('text/html').then((blob: any) => {\n blob.text().then(async (pastedData: any) => {\n // 解析html数据\n if (pastedData && /(<table)|(<TABLE)/g.test(pastedData)) {\n // const matches = pastedData.matchAll(regex);\n const matches = Array.from(pastedData.matchAll(regex));\n for (const match of matches) {\n const rowContent = match[1]; // 获取<tr>标签中的内容\n const cellMatches: RegExpMatchArray[] = Array.from(rowContent.matchAll(cellRegex)); // 获取<td>标签中的内容\n const rowValues = cellMatches.map(cellMatch => {\n return (\n cellMatch[1]\n .replace(/(<(?!br)([^>]+)>)/gi, '') // 除了 <br> 标签以外的所有 HTML 标签都替换为空字符串\n .replace(/<br(\\s*|\\/)>[\\r\\n]?/gim, '\\n') // 将字符串中的 <br> 标签以及其后可能存在的空白字符和斜杠都替换为换行符 \\n\n // .replace(/<br>/g, '\\n') // 替换<br>标签为换行符\n // .replace(/<(?:.|\\n)*?>/gm, '') // 去除HTML标签\n //将字符串中的 HTML 实体字符转换为原始的字符\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/	/gi, '\\t')\n .replace(/ /g, ' ')\n );\n // .trim(); // 去除首尾空格\n });\n values.push(rowValues);\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n }\n pasteValuesRowCount = values.length ?? 0;\n values = this.handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n let processedValues;\n // 检查是否支持公式处理(针对vtable-sheet)\n if (table.options.keyboardOptions?.processFormulaBeforePaste && this.copySourceRange) {\n // 使用复制时记录的源位置(而不是当前的选中位置)\n processedValues = table.options.keyboardOptions.processFormulaBeforePaste(\n values,\n this.copySourceRange.startCol,\n this.copySourceRange.startRow,\n col,\n row\n );\n }\n\n const changedCellResults = await (table as ListTableAPI).changeCellValues(\n col,\n row,\n processedValues ? processedValues : values,\n true\n );\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues ? processedValues : values,\n changedCellResults\n });\n }\n } else {\n navigator.clipboard.read().then(clipboardItems => {\n for (const item of clipboardItems) {\n if (item.types.includes('text/plain')) {\n item.getType('text/plain').then((blob: Blob) => {\n blob.text().then(data => this._pasteValue(data));\n });\n }\n }\n });\n }\n });\n });\n }\n\n private async _pasteValue(pastedData: string) {\n const table = this.table;\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n const rows = pastedData.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 pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n });\n pasteValuesRowCount = values.length ?? 0;\n values = this.handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n let processedValues;\n // 检查是否支持公式处理(针对vtable-sheet)\n if (table.options.keyboardOptions?.processFormulaBeforePaste && this.copySourceRange) {\n // 利用复制时记录的源位置,对粘贴的数据进行公式处理\n processedValues = table.options.keyboardOptions.processFormulaBeforePaste(\n values,\n this.copySourceRange.startCol,\n this.copySourceRange.startRow,\n col,\n row\n );\n }\n // 保持与 navigator.clipboard.read 中的操作一致\n const changedCellResults = await (table as ListTableAPI).changeCellValues(\n col,\n row,\n processedValues ? processedValues : values,\n true\n );\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues ? processedValues : values,\n changedCellResults\n });\n }\n }\n private async pasteTextToTable(item: ClipboardItem) {\n const table = this.table;\n // 如果只有 'text/plain'\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n\n try {\n const blob = await item.getType('text/plain');\n const pastedData = await blob.text();\n const values = this.parsePastedData(pastedData);\n\n const pasteValuesRowCount = values.length;\n const pasteValuesColCount = Math.max(...values.map(row => row.length), 0);\n\n const processedValues = this.handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n\n const changedCellResults = await (table as ListTableAPI).changeCellValues(col, row, processedValues, true);\n\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues,\n changedCellResults\n });\n }\n } catch (error) {\n // 静默处理粘贴错误,保持原有行为\n console.warn('Paste operation failed:', error);\n }\n }\n\n private parsePastedData(pastedData: string): (string | number)[][] {\n const rows = pastedData.replace(/\\r(?!\\n)/g, '\\r\\n').split('\\r\\n'); // 文本中的换行符格式进行统一处理\n const values: (string | number)[][] = [];\n\n // 移除最后一行空行\n if (rows.length > 1 && rows[rows.length - 1] === '') {\n rows.pop();\n }\n\n rows.forEach((rowCells: string) => {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = cells.map(cell => this.processCellValue(cell));\n values.push(rowValues);\n });\n\n return values;\n }\n\n private processCellValue(cell: string): string | number {\n if (cell.includes('\\n')) {\n cell = cell\n .replace(/^\"(.*)\"$/, '$1') // 将字符串开头和结尾的双引号去除,并保留双引号内的内容\n .replace(/[\"]*/g, match => new Array(Math.floor(match.length / 2)).fill('\"').join('')); // 连续出现的双引号替换为一半数量的双引号\n }\n\n // 尝试转换为数字\n const numValue = Number(cell);\n return isNaN(numValue) ? cell : numValue;\n }\n private handlePasteValues(\n values: (string | number)[][],\n rowCount: number,\n colCount: number,\n selectedRowCount: number,\n selectedColCount: number\n ) {\n if (selectedColCount > colCount || selectedRowCount > rowCount) {\n if (selectedColCount % colCount === 0 && selectedRowCount % rowCount === 0) {\n const toPasteValues: (string | number)[][] = [];\n // 在目标区域中循环遍历,将复制的值逐个粘贴到每个单元格中\n for (let i = 0; i < selectedRowCount; i++) {\n const rowPasteValue: (string | number)[] = [];\n toPasteValues.push(rowPasteValue);\n for (let j = 0; j < selectedColCount; j++) {\n const copiedRow = i % rowCount;\n const copiedCol = j % colCount;\n rowPasteValue.push(values[copiedRow][copiedCol]);\n }\n }\n return toPasteValues;\n }\n return values;\n }\n return values;\n }\n}\n"]}
|
|
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, vglobal } from './../vrender';\nimport type { CellInfo, ListTableAPI, ListTableConstructorOptions } 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, ListTableProtected } 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, setDataToHTML, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './self-event-listener/pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './self-event-listener/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';\nimport { isCellDisableSelect } from '../state/select/is-cell-select-highlight';\nimport {\n bindGroupCheckboxTreeChange,\n bindGroupTitleCheckboxChange,\n bindHeaderCheckboxChange\n} from './self-event-listener/list-table/checkbox';\nimport { bindButtonClickEvent } from './component/button';\nimport { bindIconClickEvent } from './self-event-listener/base-table/icon';\nimport { bindDropdownMenuEvent } from './self-event-listener/base-table/dropdown-menu';\nimport { bindDBClickAutoColumnWidthEvent } from './self-event-listener/base-table/dbclick-auto-column-width';\nimport { browser } from '../tools/helper';\nimport { clearActiveCellRangeState, setActiveCellRangeState } from '../tools/style';\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 isTouchMove: boolean; // touchmove 事件中设置\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 /** 是在touchSetTimeout中设置的true 延迟了500ms 如果在500ms内接入了touch事件 则取消touchSetTimeout逻辑 也就是不会将touchMode设置为true。这个是longTouch的逻辑 */\n isLongTouch: 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: {\n name: string;\n env: 'document' | 'body' | 'window' | 'vglobal';\n callback: (e?: any) => void;\n }[] = [];\n inertiaScroll: InertiaScroll;\n\n bindSparklineHoverEvent: boolean;\n\n _enableTableScroll: boolean = true;\n /** 剪切后等待粘贴 */\n cutWaitPaste: boolean = false;\n private clipboardCheckTimer: number | null = null; // 剪贴板检测定时器\n private cutOperationTime: number = 0; // 记录剪切操作的时间\n lastClipboardContent: string = ''; // 最后一次复制/剪切的内容\n cutCellRange: CellInfo[][] | null = null;\n /** 复制时的源位置信息(用于公式相对引用调整) */\n copySourceRange: { startCol: number; startRow: number } | null = null;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.handleTextStickBindId = [];\n this.inertiaScroll = new InertiaScroll(table.stateManager);\n if (Env.mode === 'node' || table.options.disableInteraction) {\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 if (this.table.isReleased) {\n return;\n }\n\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 // 图标点击\n bindIconClickEvent(this.table);\n\n // 下拉菜单内容点击\n bindDropdownMenuEvent(this.table);\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\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n bindDBClickAutoColumnWidthEvent(this.table);\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 // group title checkbox change\n bindGroupTitleCheckboxChange(this.table);\n // checkbox and titlr change\n bindGroupCheckboxTreeChange(this.table as ListTable);\n // header checkbox change\n bindHeaderCheckboxChange(this.table);\n\n // button click\n bindButtonClickEvent(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(eventArgs.col, eventArgs.row, eventArgs.target, eventArgs.targetCell);\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 (\n eventArgs.target.name === 'checkbox' ||\n eventArgs.target.name === 'radio' ||\n eventArgs.target.name === 'switch' ||\n eventArgs.target.name === 'button'\n ) {\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\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n isCellDisableSelect(this.table, eventArgs.col, eventArgs.row)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (\n !this.table.isHeader(eventArgs.col, eventArgs.row) &&\n isCellDisableSelect(this.table, eventArgs.col, eventArgs.row)\n ) {\n if (!isSelectMoving) {\n const isHasSelected = !!this.table.stateManager.select.ranges?.length;\n this.table.stateManager.updateSelectPos(-1, -1);\n if (isHasSelected) {\n this.table.stateManager.endSelectCells(true, isHasSelected);\n }\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 const shiftMultiSelect = this.table.keyboardOptions?.shiftMultiSelect ?? true;\n const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;\n this.table.stateManager.updateSelectPos(\n this.table.stateManager.select.selectInline === 'row' ? this.table.colCount - 1 : eventArgs.col,\n this.table.stateManager.select.selectInline === 'col' ? this.table.rowCount - 1 : eventArgs.row,\n eventArgs.event.shiftKey && shiftMultiSelect,\n (eventArgs.event.ctrlKey || eventArgs.event.metaKey) && ctrlMultiSelect,\n false,\n isSelectMoving ? false : (this.table.options.select?.makeSelectCellVisible ?? true)\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 const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;\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) && ctrlMultiSelect,\n false,\n !isSelectMoving\n );\n } else {\n const shiftMultiSelect = this.table.keyboardOptions?.shiftMultiSelect ?? true;\n const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey && shiftMultiSelect,\n (eventArgs.event.ctrlKey || eventArgs.event.metaKey) && ctrlMultiSelect,\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 this.table.fireListeners(TABLE_EVENT_TYPE.SELECTED_CELL, {\n ranges: this.table.stateManager.select.ranges,\n col: 0,\n row: 0\n });\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.internalProps as ListTableProtected).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 let useerCustomCanResizeColumn: boolean = true;\n if (\n this.table.internalProps.canResizeColumn &&\n !this.table.internalProps.canResizeColumn(resizeCol.col, resizeCol.row, this.table)\n ) {\n useerCustomCanResizeColumn = false;\n }\n\n if (useerCustomCanResizeColumn && 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 if (this.table.stateManager.isResizeCol()) {\n // 结束列调整\n this.table.stateManager.endResizeCol();\n }\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 cellIsHeaderCheck(eventArgsSet: SceneEvent, update?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n const { col, row, target } = eventArgs;\n if (!this.table.isHeader(col, row)) {\n return false;\n }\n const cellType = this.table.getCellType(eventArgs.col, eventArgs.row);\n if (cellType === 'checkbox' && target.name === 'checkbox') {\n return true;\n }\n return false;\n }\n checkCellFillhandle(eventArgsSet: SceneEvent, update?: boolean): boolean {\n let isFillHandle = false;\n if (typeof this.table.options.excelOptions?.fillHandle === 'function') {\n isFillHandle = this.table.options.excelOptions.fillHandle({\n selectRanges: this.table.stateManager.select.ranges,\n table: this.table\n });\n } else {\n isFillHandle = this.table.options.excelOptions?.fillHandle;\n }\n if (isFillHandle) {\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 const startCol = Math.min(\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 startRow = Math.min(\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 // 计算鼠标与fillhandle矩形中心之间的距离 distanceX 和 distanceY\n // 考虑最后一行和最后一列的特殊情况 逻辑处理需要和update-select-border.ts 中 “计算填充柄小方块的位置” 逻辑处理一致。目前都还有小问题,例如存在冻结的时候。\n let lastCellBoundTargetX;\n if (lastCol < this.table.colCount - 1) {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n lastCellBoundTargetX = lastCellBound.x2;\n } else {\n if (startCol === 0) {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(0, lastRow).globalAABBBounds;\n lastCellBoundTargetX = lastCellBound.x1;\n } else {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(\n startCol - 1,\n lastRow\n ).globalAABBBounds;\n lastCellBoundTargetX = lastCellBound.x2;\n }\n }\n const distanceX = Math.abs(eventArgsSet.abstractPos.x - lastCellBoundTargetX);\n\n let lastCellBoundTargetY;\n if (lastRow < this.table.rowCount - 1) {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n lastCellBoundTargetY = lastCellBound.y2;\n } else {\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, startRow - 1).globalAABBBounds;\n lastCellBoundTargetY = lastCellBound.y2;\n }\n const distanceY = Math.abs(eventArgsSet.abstractPos.y - lastCellBoundTargetY);\n\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 checkColumnMover(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 eventArgs?.event?.nativeEvent\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(x: number, y: number, event: MouseEvent | PointerEvent | TouchEvent) {\n let col = this.table.getColAtRelativePosition(x);\n let row = this.table.getRowAtRelativePosition(y);\n if (col === -1 && this.table.stateManager.columnMove.movingColumnOrRow === 'row') {\n col = 0;\n }\n if (row === -1 && this.table.stateManager.columnMove.movingColumnOrRow === 'column') {\n row = 0;\n }\n // const { eventArgs } = eventArgsSet;\n if (isValid(col) && isValid(row)) {\n this.table.stateManager.updateMoveCol(col, row, x, y, event);\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 } else if (item.env === 'vglobal') {\n vglobal.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 async handleCopy(e: KeyboardEvent, isCut: boolean = false) {\n const table = this.table;\n !isCut && (this.cutWaitPaste = false);\n this.copySourceRange = null;\n // 记录复制时的源位置(用于公式相对引用调整)\n const sourceRanges = table.stateManager.select.ranges;\n if (sourceRanges && sourceRanges.length === 1) {\n // 只有一个选区的时候才需要采取解析公式(和excel一致),才需要记录源位置\n const sourceRange = sourceRanges[0];\n this.copySourceRange = {\n startCol: Math.min(sourceRange.start.col, sourceRange.end.col),\n startRow: Math.min(sourceRange.start.row, sourceRange.end.row)\n };\n } else if (!sourceRanges?.length) {\n this.copySourceRange = null;\n // 没有选中区域,直接返回,不进行复制操作\n return;\n }\n\n const data = this.table.getCopyValue(\n table.options.keyboardOptions?.getCopyCellValue?.value as (col: number, row: number) => string | number\n );\n if (isValid(data)) {\n e.preventDefault();\n\n // 确保表格元素获得焦点,避免Document is not focused错误\n const element = table.getElement();\n if (element && element !== document.activeElement) {\n element.focus();\n // 短暂延迟,确保焦点设置完成\n await new Promise(resolve => setTimeout(resolve, 10));\n }\n\n try {\n // 优先使用现代剪贴板API\n if (navigator.clipboard && navigator.clipboard.writeText) {\n // 尝试获取权限(如果支持)\n let hasPermission = true;\n if (navigator.permissions && navigator.permissions.query) {\n try {\n const permissionState = await navigator.permissions.query({\n name: 'clipboard-write' as PermissionName\n });\n hasPermission = permissionState.state === 'granted';\n } catch (permissionError) {\n // 权限查询失败,继续尝试写入\n console.warn('无法查询剪贴板权限:', permissionError);\n hasPermission = true; // 假设有权限,让写入操作自己失败\n }\n }\n\n if (hasPermission) {\n // 将复制的数据转为html格式\n\n try {\n // 尝试使用 ClipboardItem(支持富文本)\n if (window.ClipboardItem) {\n let htmlValues = data;\n if (\n table.stateManager.select.ranges.length === 1 && //只有一个选区的时候采取解析公式(和excel一致)\n table.options.keyboardOptions?.getCopyCellValue?.html\n ) {\n htmlValues = this.table.getCopyValue(\n table.options.keyboardOptions?.getCopyCellValue.html as (\n col: number,\n row: number\n ) => string | number\n );\n }\n const dataHTML = setDataToHTML(htmlValues);\n await navigator.clipboard.write([\n new ClipboardItem({\n 'text/html': new Blob([dataHTML], { type: 'text/html' }),\n 'text/plain': new Blob([data], { type: 'text/plain' })\n })\n ]);\n } else {\n // 降级到纯文本\n await navigator.clipboard.writeText(data);\n }\n } catch (clipboardError) {\n console.warn('剪贴板写入失败,使用降级方案:', clipboardError);\n // 降级到传统方法\n this.fallbackCopyToClipboard(data, e);\n }\n } else {\n // 没有权限,使用降级方案\n this.fallbackCopyToClipboard(data, e);\n }\n } else {\n // 不支持现代剪贴板API,使用降级方案\n this.fallbackCopyToClipboard(data, e);\n }\n\n table.fireListeners(TABLE_EVENT_TYPE.COPY_DATA, {\n cellRange: table.stateManager.select.ranges,\n copyData: data,\n isCut\n });\n } catch (error) {\n console.error('复制操作失败:', error);\n // 最后的降级方案\n this.fallbackCopyToClipboard(data, e);\n }\n }\n if (table.keyboardOptions?.showCopyCellBorder) {\n setActiveCellRangeState(table);\n table.clearSelected();\n }\n }\n\n // 降级复制方案\n private fallbackCopyToClipboard(data: string, e: KeyboardEvent): void {\n try {\n // 尝试使用旧的 clipboardData API (在事件处理函数中直接设置)\n if ((e as any).clipboardData) {\n (e as any).clipboardData.setData('text/plain', data);\n return;\n }\n\n // 确保当前文档有焦点\n if (document.activeElement && document.activeElement !== document.body) {\n (document.activeElement as HTMLElement).blur();\n }\n\n // 尝试使用 document.execCommand\n const textArea = document.createElement('textarea');\n textArea.value = data;\n textArea.style.position = 'fixed';\n textArea.style.left = '-999999px';\n textArea.style.top = '-999999px';\n textArea.style.opacity = '0';\n textArea.setAttribute('readonly', '');\n textArea.setAttribute('aria-hidden', 'true');\n document.body.appendChild(textArea);\n\n // 强制聚焦并选中文本\n textArea.focus();\n textArea.select();\n textArea.setSelectionRange(0, data.length);\n\n try {\n const successful = document.execCommand('copy');\n if (!successful) {\n console.warn('execCommand复制返回false,可能不被支持');\n }\n } catch (execError) {\n console.warn('execCommand复制失败:', execError);\n } finally {\n document.body.removeChild(textArea);\n }\n } catch (error) {\n console.error('降级复制方案失败:', error);\n }\n }\n\n async handleCut(e: KeyboardEvent) {\n this.handleCopy(e, true);\n this.cutWaitPaste = true;\n this.cutCellRange = this.table.getSelectedCellInfos();\n // 设置自动超时,防止剪切状态无限期保持\n if (this.clipboardCheckTimer) {\n clearTimeout(this.clipboardCheckTimer);\n }\n\n // 30秒后自动取消剪切状态\n this.clipboardCheckTimer = window.setTimeout(() => {\n if (this.cutWaitPaste) {\n // 剪切操作超时,重置剪切状态\n this.cutWaitPaste = false;\n this.cutCellRange = null;\n this.clipboardCheckTimer = null;\n }\n }, 30000); // 30秒超时\n\n // 保存剪贴板内容以便后续检测变化\n this.saveClipboardContent();\n }\n\n // 执行实际的粘贴操作\n handlePaste(e: KeyboardEvent): void {\n if (!this.cutWaitPaste) {\n // 非剪切状态,直接粘贴\n this.executePaste(e);\n return;\n }\n\n this.checkClipboardChanged()\n .then(changed => {\n // 执行粘贴操作,并根据剪贴板是否变化决定是否清空选中区域\n this.executePaste(e);\n if (!changed) {\n this.clearCutArea(this.table as ListTableAPI);\n }\n // 执行完粘贴操作后,重置剪切状态\n if (this.cutWaitPaste) {\n this.cutWaitPaste = false;\n this.cutCellRange = null;\n // 清除定时器\n if (this.clipboardCheckTimer) {\n clearTimeout(this.clipboardCheckTimer);\n this.clipboardCheckTimer = null;\n }\n }\n })\n .catch(() => {\n // 如果无法检测剪贴板变化(例如权限问题),则保守地执行粘贴但不清空选中区域\n this.executePaste(e);\n // 执行完粘贴操作后,重置剪切状态\n if (this.cutWaitPaste) {\n this.cutWaitPaste = false;\n this.cutCellRange = null;\n // 清除定时器\n if (this.clipboardCheckTimer) {\n clearTimeout(this.clipboardCheckTimer);\n this.clipboardCheckTimer = null;\n }\n }\n });\n }\n private async executePaste(e: any) {\n const table = this.table;\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n return;\n }\n if ((table as ListTableAPI).changeCellValues && table.stateManager.select.ranges?.length > 0) {\n try {\n // 优先使用现代剪贴板API\n if (navigator.clipboard && navigator.clipboard.read) {\n try {\n // 读取剪切板数据\n const clipboardItems = await navigator.clipboard.read();\n let handled = false;\n\n for (const item of clipboardItems) {\n // 优先处理 html 格式数据\n if (item.types.includes('text/html')) {\n await this.pasteHtmlToTable(item);\n handled = true;\n break;\n } else if (item.types.includes('text/plain')) {\n await this.pasteTextToTable(item);\n handled = true;\n break;\n }\n }\n\n if (!handled) {\n // 如果没有处理任何数据,使用降级方案\n await this.fallbackPasteFromClipboard(e);\n }\n } catch (clipboardError) {\n console.warn('现代剪贴板API读取失败,使用降级方案:', clipboardError);\n // 降级到传统方法\n await this.fallbackPasteFromClipboard(e);\n }\n } else {\n // 不支持现代剪贴板API,使用降级方案\n await this.fallbackPasteFromClipboard(e);\n }\n } catch (error) {\n console.error('粘贴操作失败:', error);\n // 最后的降级方案\n await this.fallbackPasteFromClipboard(e);\n }\n }\n if (table.keyboardOptions?.showCopyCellBorder) {\n clearActiveCellRangeState(table);\n }\n }\n\n // 降级粘贴方案\n private async fallbackPasteFromClipboard(e: any): Promise<void> {\n const table = this.table;\n const ranges = table.stateManager.select.ranges;\n const col = Math.min(ranges[0].start.col, ranges[0].end.col);\n const row = Math.min(ranges[0].start.row, ranges[0].end.row);\n\n try {\n // 确保表格元素获得焦点\n const element = table.getElement();\n if (element && element !== document.activeElement) {\n element.focus();\n // 短暂延迟,确保焦点设置完成\n await new Promise(resolve => setTimeout(resolve, 10));\n }\n\n // 尝试从事件对象获取剪贴板数据\n const clipboardData = e.clipboardData || (window as any).clipboardData || window.Clipboard;\n\n if (clipboardData) {\n const pastedData = clipboardData.getData('text') || clipboardData.getData('Text');\n if (pastedData) {\n await this.processPastedText(pastedData, col, row);\n return;\n }\n }\n } catch (error) {\n console.error('降级粘贴方案失败:', error);\n }\n }\n\n // 处理粘贴的文本数据\n private async processPastedText(pastedData: string, col: number, row: number): Promise<void> {\n const table = this.table;\n const rows = pastedData.split('\\n'); // 将数据拆分为行\n const values: (string | number)[][] = [];\n\n rows.forEach(function (rowCells: any) {\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 let processedValues;\n // 检查是否支持公式处理(针对vtable-sheet)\n if (table.options.keyboardOptions?.processFormulaBeforePaste && this.copySourceRange) {\n // 利用复制时记录的源位置,对粘贴的数据进行公式处理\n processedValues = table.options.keyboardOptions.processFormulaBeforePaste(\n values,\n this.copySourceRange.startCol,\n this.copySourceRange.startRow,\n col,\n row\n );\n }\n\n // 保持与 navigator.clipboard.read 中的操作一致\n const changedCellResults = await (table as ListTableAPI).changeCellValues(\n col,\n row,\n processedValues ? processedValues : values,\n true\n );\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues ? processedValues : values,\n changedCellResults\n });\n }\n }\n // 清空选中区域的内容\n private clearCutArea(table: ListTableAPI): void {\n try {\n const selectCells = this.cutCellRange;\n if (!selectCells || selectCells.length === 0) {\n return;\n }\n\n for (let i = 0; i < selectCells.length; i++) {\n for (let j = 0; j < selectCells[i].length; j++) {\n if (selectCells[i][j]) {\n table.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, undefined);\n }\n }\n }\n } catch (error) {\n console.error('清空单元格内容失败', error);\n }\n }\n\n // 检查剪贴板内容是否被其他应用更改\n private async checkClipboardChanged(): Promise<boolean> {\n // 如果不支持读取剪贴板,则无法检测变化\n if (!navigator.clipboard || !navigator.clipboard.readText) {\n return false;\n }\n\n try {\n const currentContent = await navigator.clipboard.readText();\n // console.log('当前剪贴板内容:', currentContent);\n // console.log('上次保存的剪贴板内容:', this.lastClipboardContent);\n\n // 比较当前剪贴板内容与剪切时保存的内容\n return currentContent !== this.lastClipboardContent;\n } catch (err) {\n console.warn('检查剪贴板状态失败:', err);\n // 出错时假设剪贴板未变化\n return false;\n }\n }\n\n // 保存剪贴板内容\n private saveClipboardContent(): void {\n // 尝试获取剪贴板内容\n if (navigator.clipboard && navigator.clipboard.readText) {\n // 延迟一点以确保剪贴板内容已更新\n setTimeout(() => {\n navigator.clipboard\n .readText()\n .then(text => {\n this.lastClipboardContent = text;\n console.log('已保存剪贴板状态');\n })\n .catch(err => {\n console.warn('无法读取剪贴板内容:', err);\n });\n }, 50);\n }\n }\n private pasteHtmlToTable(item: ClipboardItem) {\n // const regex = /<tr[^>]*>(.*?)<\\/tr>/gs; // 匹配<tr>标签及其内容\n const regex = /<tr[^>]*>([\\s\\S]*?)<\\/tr>/g; // for webpack3\n // const cellRegex = /<td[^>]*>(.*?)<\\/td>/gs; // 匹配<td>标签及其内容\n const cellRegex = /<td[^>]*>([\\s\\S]*?)<\\/td>/g; // for webpack3\n const table = this.table;\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n item.getType('text/html').then((blob: any) => {\n blob.text().then(async (pastedData: any) => {\n // 解析html数据\n if (pastedData && /(<table)|(<TABLE)/g.test(pastedData)) {\n // const matches = pastedData.matchAll(regex);\n const matches = Array.from(pastedData.matchAll(regex));\n for (const match of matches) {\n const rowContent = match[1]; // 获取<tr>标签中的内容\n const cellMatches: RegExpMatchArray[] = Array.from(rowContent.matchAll(cellRegex)); // 获取<td>标签中的内容\n const rowValues = cellMatches.map(cellMatch => {\n return (\n cellMatch[1]\n .replace(/(<(?!br)([^>]+)>)/gi, '') // 除了 <br> 标签以外的所有 HTML 标签都替换为空字符串\n .replace(/<br(\\s*|\\/)>[\\r\\n]?/gim, '\\n') // 将字符串中的 <br> 标签以及其后可能存在的空白字符和斜杠都替换为换行符 \\n\n // .replace(/<br>/g, '\\n') // 替换<br>标签为换行符\n // .replace(/<(?:.|\\n)*?>/gm, '') // 去除HTML标签\n //将字符串中的 HTML 实体字符转换为原始的字符\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/	/gi, '\\t')\n .replace(/ /g, ' ')\n );\n // .trim(); // 去除首尾空格\n });\n values.push(rowValues);\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n }\n pasteValuesRowCount = values.length ?? 0;\n values = this.handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n let processedValues;\n // 检查是否支持公式处理(针对vtable-sheet)\n if (table.options.keyboardOptions?.processFormulaBeforePaste && this.copySourceRange) {\n // 使用复制时记录的源位置(而不是当前的选中位置)\n processedValues = table.options.keyboardOptions.processFormulaBeforePaste(\n values,\n this.copySourceRange.startCol,\n this.copySourceRange.startRow,\n col,\n row\n );\n }\n\n const changedCellResults = await (table as ListTableAPI).changeCellValues(\n col,\n row,\n processedValues ? processedValues : values,\n true\n );\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues ? processedValues : values,\n changedCellResults\n });\n }\n } else {\n navigator.clipboard.read().then(clipboardItems => {\n for (const item of clipboardItems) {\n if (item.types.includes('text/plain')) {\n item.getType('text/plain').then((blob: Blob) => {\n blob.text().then(data => this._pasteValue(data));\n });\n }\n }\n });\n }\n });\n });\n }\n\n private async _pasteValue(pastedData: string) {\n const table = this.table;\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n const rows = pastedData.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 pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n });\n pasteValuesRowCount = values.length ?? 0;\n values = this.handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n let processedValues;\n // 检查是否支持公式处理(针对vtable-sheet)\n if (table.options.keyboardOptions?.processFormulaBeforePaste && this.copySourceRange) {\n // 利用复制时记录的源位置,对粘贴的数据进行公式处理\n processedValues = table.options.keyboardOptions.processFormulaBeforePaste(\n values,\n this.copySourceRange.startCol,\n this.copySourceRange.startRow,\n col,\n row\n );\n }\n // 保持与 navigator.clipboard.read 中的操作一致\n const changedCellResults = await (table as ListTableAPI).changeCellValues(\n col,\n row,\n processedValues ? processedValues : values,\n true\n );\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues ? processedValues : values,\n changedCellResults\n });\n }\n }\n private async pasteTextToTable(item: ClipboardItem) {\n const table = this.table;\n // 如果只有 'text/plain'\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n\n try {\n const blob = await item.getType('text/plain');\n const pastedData = await blob.text();\n const values = this.parsePastedData(pastedData);\n\n const pasteValuesRowCount = values.length;\n const pasteValuesColCount = Math.max(...values.map(row => row.length), 0);\n\n const processedValues = this.handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n\n const changedCellResults = await (table as ListTableAPI).changeCellValues(col, row, processedValues, true);\n\n if (table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA)) {\n table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {\n col,\n row,\n pasteData: processedValues,\n changedCellResults\n });\n }\n } catch (error) {\n // 静默处理粘贴错误,保持原有行为\n console.warn('Paste operation failed:', error);\n }\n }\n\n private parsePastedData(pastedData: string): (string | number)[][] {\n const rows = pastedData.replace(/\\r(?!\\n)/g, '\\r\\n').split('\\r\\n'); // 文本中的换行符格式进行统一处理\n const values: (string | number)[][] = [];\n\n // 移除最后一行空行\n if (rows.length > 1 && rows[rows.length - 1] === '') {\n rows.pop();\n }\n\n rows.forEach((rowCells: string) => {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = cells.map(cell => this.processCellValue(cell));\n values.push(rowValues);\n });\n\n return values;\n }\n\n private processCellValue(cell: string): string | number {\n if (cell.includes('\\n')) {\n cell = cell\n .replace(/^\"(.*)\"$/, '$1') // 将字符串开头和结尾的双引号去除,并保留双引号内的内容\n .replace(/[\"]*/g, match => new Array(Math.floor(match.length / 2)).fill('\"').join('')); // 连续出现的双引号替换为一半数量的双引号\n }\n\n // 尝试转换为数字\n const numValue = Number(cell);\n return isNaN(numValue) ? cell : numValue;\n }\n private handlePasteValues(\n values: (string | number)[][],\n rowCount: number,\n colCount: number,\n selectedRowCount: number,\n selectedColCount: number\n ) {\n if (selectedColCount > colCount || selectedRowCount > rowCount) {\n if (selectedColCount % colCount === 0 && selectedRowCount % rowCount === 0) {\n const toPasteValues: (string | number)[][] = [];\n // 在目标区域中循环遍历,将复制的值逐个粘贴到每个单元格中\n for (let i = 0; i < selectedRowCount; i++) {\n const rowPasteValue: (string | number)[] = [];\n toPasteValues.push(rowPasteValue);\n for (let j = 0; j < selectedColCount; j++) {\n const copiedRow = i % rowCount;\n const copiedCol = j % colCount;\n rowPasteValue.push(values[copiedRow][copiedCol]);\n }\n }\n return toPasteValues;\n }\n return values;\n }\n return values;\n }\n}\n"]}
|
|
@@ -13,4 +13,5 @@ export function of(headerStyle, defaultHeaderStyle, styleArg, StyleClass, global
|
|
|
13
13
|
return headerStyle || defaultHeaderStyle ? headerStyle instanceof Style ? headerStyle : "function" == typeof headerStyle ? of(headerStyle(styleArg), defaultHeaderStyle, styleArg, StyleClass, globalAutoWrapText, theme) : (headerStyle || (headerStyle = {}),
|
|
14
14
|
globalAutoWrapText && !isValid(headerStyle.autoWrapText) && (headerStyle.autoWrapText = !0),
|
|
15
15
|
StyleClass === CheckboxStyle ? new CheckboxStyle(null != headerStyle ? headerStyle : {}, null != defaultHeaderStyle ? defaultHeaderStyle : {}, null !== (_a = theme.checkboxStyle) && void 0 !== _a ? _a : {}) : new StyleClass(null != headerStyle ? headerStyle : {}, null != defaultHeaderStyle ? defaultHeaderStyle : {})) : StyleClass.DEFAULT;
|
|
16
|
-
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=style.js.map
|
package/es/index.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export { getTargetCell } from './event/util';
|
|
|
24
24
|
export { toBoxArray } from './tools/helper';
|
|
25
25
|
export { Icon } from './scenegraph/graphic/icon';
|
|
26
26
|
export { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';
|
|
27
|
-
export declare const version = "1.22.11-alpha.
|
|
27
|
+
export declare const version = "1.22.11-alpha.3";
|
|
28
28
|
export { TYPES, core, ListTable, ListTableSimple, BaseTableAPI, ListTableConstructorOptions, PivotTable, PivotTableSimple, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, textMeasure, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, pluginsDefinition };
|
|
29
29
|
declare function getIcons(): {
|
|
30
30
|
[key: string]: TYPES.ColumnIconOption;
|
package/es/index.js
CHANGED
|
@@ -48,7 +48,7 @@ export { Icon } from "./scenegraph/graphic/icon";
|
|
|
48
48
|
|
|
49
49
|
export { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from "./scenegraph/component/custom";
|
|
50
50
|
|
|
51
|
-
export const version = "1.22.11-alpha.
|
|
51
|
+
export const version = "1.22.11-alpha.3";
|
|
52
52
|
|
|
53
53
|
export { TYPES, core, ListTable, ListTableSimple, PivotTable, PivotTableSimple, PivotChart, textMeasure, themes, data, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, pluginsDefinition };
|
|
54
54
|
|
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;AAC3D,OAAO,KAAK,iBAAiB,MAAM,WAAW,CAAC;AAsB/C,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,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM5G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK7F,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAIzC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAGf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,WAAW,EACX,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EAElB,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;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,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 * as pluginsDefinition from './plugins';\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, textMeasure } from './scenegraph/utils/text-measure';\nimport type { BaseTableAPI } from './ts-types/base-table';\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';\nexport { toBoxArray } from './tools/helper';\nexport { Icon } from './scenegraph/graphic/icon';\nexport { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.22.11-alpha.
|
|
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;AAC3D,OAAO,KAAK,iBAAiB,MAAM,WAAW,CAAC;AAsB/C,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,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM5G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK7F,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAIzC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAGf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,WAAW,EACX,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EAElB,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;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,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 * as pluginsDefinition from './plugins';\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, textMeasure } from './scenegraph/utils/text-measure';\nimport type { BaseTableAPI } from './ts-types/base-table';\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';\nexport { toBoxArray } from './tools/helper';\nexport { Icon } from './scenegraph/graphic/icon';\nexport { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.22.11-alpha.3\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n BaseTableAPI,\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 textMeasure,\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 pluginsDefinition\n // VRender // should use import {xxx} from '@visactor/vtable/es/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\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
|
|
@@ -2003,5 +2003,4 @@ function bandSpace(count, paddingInner, paddingOuter) {
|
|
|
2003
2003
|
let space;
|
|
2004
2004
|
return space = 1 === count ? count + 2 * paddingOuter : count - paddingInner + 2 * paddingOuter,
|
|
2005
2005
|
count ? space > 0 ? space : 1 : 0;
|
|
2006
|
-
}
|
|
2007
|
-
//# sourceMappingURL=pivot-header-layout.js.map
|
|
2006
|
+
}
|
package/es/plugins/index.js
CHANGED
package/es/plugins/interface.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { };
|
|
2
|
-
//# sourceMappingURL=interface.js.map
|
|
2
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -480,9 +480,9 @@ export interface BaseTableAPI {
|
|
|
480
480
|
off: (id: EventListenerId) => void;
|
|
481
481
|
getBodyField: (col: number, row: number) => FieldDef | undefined;
|
|
482
482
|
getRecordByCell: (col: number, row: number) => MaybePromiseOrUndefined;
|
|
483
|
-
getTableIndexByRecordIndex: (recordIndex: number
|
|
483
|
+
getTableIndexByRecordIndex: (recordIndex: number) => number;
|
|
484
484
|
getTableIndexByField: (field: FieldDef) => number;
|
|
485
|
-
getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number
|
|
485
|
+
getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number) => CellAddress;
|
|
486
486
|
getRecordShowIndexByCell: (col: number, row: number) => number;
|
|
487
487
|
getRecordStartRowByRecordIndex: (index: number) => number;
|
|
488
488
|
getHeaderField: (col: number, row: number) => any | undefined;
|