k-vtable 1.0.34 → 1.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +184 -25
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.js +3 -2
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable.d.ts +1 -0
  7. package/cjs/PivotTable.js +95 -15
  8. package/cjs/PivotTable.js.map +1 -1
  9. package/cjs/core/BaseTable.d.ts +14 -0
  10. package/cjs/core/BaseTable.js +149 -41
  11. package/cjs/core/BaseTable.js.map +1 -1
  12. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  13. package/cjs/core/TABLE_EVENT_TYPE.js +2 -0
  14. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  15. package/cjs/core/record-helper.js +83 -13
  16. package/cjs/core/record-helper.js.map +1 -1
  17. package/cjs/core/tableHelper.js +5 -3
  18. package/cjs/core/tableHelper.js.map +1 -1
  19. package/cjs/core/utils/get-cell-position.js +23 -12
  20. package/cjs/core/utils/get-cell-position.js.map +1 -1
  21. package/cjs/data/DataSource.js +3 -2
  22. package/cjs/data/DataSource.js.map +1 -1
  23. package/cjs/dataset/dataset.js +5 -1
  24. package/cjs/dataset/dataset.js.map +1 -1
  25. package/cjs/edit/edit-manager.js +24 -16
  26. package/cjs/edit/edit-manager.js.map +1 -1
  27. package/cjs/event/EventTarget.js +3 -1
  28. package/cjs/event/EventTarget.js.map +1 -1
  29. package/cjs/event/helper.js +1 -1
  30. package/cjs/event/listener/container-dom.js +11 -6
  31. package/cjs/event/listener/container-dom.js.map +1 -1
  32. package/cjs/event/listener/scroll-bar.js +77 -6
  33. package/cjs/event/listener/scroll-bar.js.map +1 -1
  34. package/cjs/event/listener/table-group.js +53 -23
  35. package/cjs/event/listener/table-group.js.map +1 -1
  36. package/cjs/event/media-click.js +1 -1
  37. package/cjs/event/scroll.js +35 -12
  38. package/cjs/event/scroll.js.map +1 -1
  39. package/cjs/event/sparkline-event.js +1 -1
  40. package/cjs/event/util.d.ts +2 -0
  41. package/cjs/event/util.js +29 -4
  42. package/cjs/event/util.js.map +1 -1
  43. package/cjs/header-helper/header-helper.js +2 -2
  44. package/cjs/header-helper/header-helper.js.map +1 -1
  45. package/cjs/header-helper/style.js +2 -1
  46. package/cjs/index.d.ts +3 -3
  47. package/cjs/index.js +51 -12
  48. package/cjs/index.js.map +1 -1
  49. package/cjs/layout/cell-range/simple-cell-range.js +14 -5
  50. package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
  51. package/cjs/plugins/index.js +1 -1
  52. package/cjs/plugins/interface.js +1 -1
  53. package/cjs/plugins/invert-highlight.js +1 -1
  54. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  55. package/cjs/plugins/plugin-manager.js +1 -1
  56. package/cjs/scenegraph/component/table-component.d.ts +6 -1
  57. package/cjs/scenegraph/component/table-component.js +143 -17
  58. package/cjs/scenegraph/component/table-component.js.map +1 -1
  59. package/cjs/scenegraph/component/util.js +5 -2
  60. package/cjs/scenegraph/component/util.js.map +1 -1
  61. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +29 -10
  62. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  63. package/cjs/scenegraph/group-creater/cell-helper.js +7 -4
  64. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  65. package/cjs/scenegraph/group-creater/init-scenegraph.js +37 -7
  66. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  67. package/cjs/scenegraph/group-creater/progress/proxy.js +4 -2
  68. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  69. package/cjs/scenegraph/scenegraph.d.ts +13 -0
  70. package/cjs/scenegraph/scenegraph.js +194 -23
  71. package/cjs/scenegraph/scenegraph.js.map +1 -1
  72. package/cjs/scenegraph/select/create-select-border.js +9 -10
  73. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  74. package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
  75. package/cjs/scenegraph/select/move-select-border.js.map +1 -1
  76. package/cjs/scenegraph/select/update-custom-select-border.js +9 -9
  77. package/cjs/scenegraph/select/update-custom-select-border.js.map +1 -1
  78. package/cjs/scenegraph/select/update-select-border.js +27 -122
  79. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  80. package/cjs/scenegraph/select/update-select-style.js.map +1 -1
  81. package/cjs/state/select/update-position.js +2 -1
  82. package/cjs/state/select/update-position.js.map +1 -1
  83. package/cjs/state/state.d.ts +8 -1
  84. package/cjs/state/state.js +82 -40
  85. package/cjs/state/state.js.map +1 -1
  86. package/cjs/ts-types/base-table.d.ts +15 -0
  87. package/cjs/ts-types/base-table.js.map +1 -1
  88. package/cjs/ts-types/dataset/aggregation.js +94 -39
  89. package/cjs/ts-types/dataset/aggregation.js.map +1 -1
  90. package/cjs/ts-types/events.d.ts +16 -0
  91. package/cjs/ts-types/events.js.map +1 -1
  92. package/cjs/ts-types/table-engine.js.map +1 -1
  93. package/cjs/vrender.js.map +1 -1
  94. package/dist/vtable.js +2381 -733
  95. package/dist/vtable.min.js +1 -15
  96. package/es/ListTable.d.ts +1 -0
  97. package/es/ListTable.js +178 -25
  98. package/es/ListTable.js.map +1 -1
  99. package/es/PivotChart.js +2 -2
  100. package/es/PivotChart.js.map +1 -1
  101. package/es/PivotTable.d.ts +1 -0
  102. package/es/PivotTable.js +93 -15
  103. package/es/PivotTable.js.map +1 -1
  104. package/es/core/BaseTable.d.ts +14 -0
  105. package/es/core/BaseTable.js +148 -40
  106. package/es/core/BaseTable.js.map +1 -1
  107. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  108. package/es/core/TABLE_EVENT_TYPE.js +2 -0
  109. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  110. package/es/core/record-helper.js +83 -12
  111. package/es/core/record-helper.js.map +1 -1
  112. package/es/core/tableHelper.js +5 -3
  113. package/es/core/tableHelper.js.map +1 -1
  114. package/es/core/utils/get-cell-position.js +23 -12
  115. package/es/core/utils/get-cell-position.js.map +1 -1
  116. package/es/data/DataSource.js +3 -2
  117. package/es/data/DataSource.js.map +1 -1
  118. package/es/dataset/dataset.js +5 -1
  119. package/es/dataset/dataset.js.map +1 -1
  120. package/es/edit/edit-manager.js +22 -16
  121. package/es/edit/edit-manager.js.map +1 -1
  122. package/es/event/EventTarget.js +3 -1
  123. package/es/event/EventTarget.js.map +1 -1
  124. package/es/event/helper.js +1 -1
  125. package/es/event/listener/container-dom.js +10 -5
  126. package/es/event/listener/container-dom.js.map +1 -1
  127. package/es/event/listener/scroll-bar.js +75 -6
  128. package/es/event/listener/scroll-bar.js.map +1 -1
  129. package/es/event/listener/table-group.js +53 -24
  130. package/es/event/listener/table-group.js.map +1 -1
  131. package/es/event/media-click.js +1 -1
  132. package/es/event/scroll.js +35 -12
  133. package/es/event/scroll.js.map +1 -1
  134. package/es/event/sparkline-event.js +1 -1
  135. package/es/event/util.d.ts +2 -0
  136. package/es/event/util.js +25 -1
  137. package/es/event/util.js.map +1 -1
  138. package/es/header-helper/header-helper.js +2 -2
  139. package/es/header-helper/header-helper.js.map +1 -1
  140. package/es/header-helper/style.js +2 -1
  141. package/es/index.d.ts +3 -3
  142. package/es/index.js +5 -3
  143. package/es/index.js.map +1 -1
  144. package/es/layout/cell-range/simple-cell-range.js +14 -5
  145. package/es/layout/cell-range/simple-cell-range.js.map +1 -1
  146. package/es/plugins/index.js +1 -1
  147. package/es/plugins/interface.js +1 -1
  148. package/es/plugins/invert-highlight.js +1 -1
  149. package/es/plugins/list-tree-stick-cell.js +1 -1
  150. package/es/plugins/plugin-manager.js +1 -1
  151. package/es/scenegraph/component/table-component.d.ts +6 -1
  152. package/es/scenegraph/component/table-component.js +141 -17
  153. package/es/scenegraph/component/table-component.js.map +1 -1
  154. package/es/scenegraph/component/util.js +5 -2
  155. package/es/scenegraph/component/util.js.map +1 -1
  156. package/es/scenegraph/graphic/contributions/group-contribution-render.js +29 -10
  157. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  158. package/es/scenegraph/group-creater/cell-helper.js +7 -4
  159. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  160. package/es/scenegraph/group-creater/init-scenegraph.js +37 -7
  161. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  162. package/es/scenegraph/group-creater/progress/proxy.js +4 -2
  163. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  164. package/es/scenegraph/scenegraph.d.ts +13 -0
  165. package/es/scenegraph/scenegraph.js +185 -18
  166. package/es/scenegraph/scenegraph.js.map +1 -1
  167. package/es/scenegraph/select/create-select-border.js +9 -10
  168. package/es/scenegraph/select/create-select-border.js.map +1 -1
  169. package/es/scenegraph/select/delete-select-border.js.map +1 -1
  170. package/es/scenegraph/select/move-select-border.js.map +1 -1
  171. package/es/scenegraph/select/update-custom-select-border.js +9 -9
  172. package/es/scenegraph/select/update-custom-select-border.js.map +1 -1
  173. package/es/scenegraph/select/update-select-border.js +25 -118
  174. package/es/scenegraph/select/update-select-border.js.map +1 -1
  175. package/es/scenegraph/select/update-select-style.js.map +1 -1
  176. package/es/state/select/update-position.js +3 -0
  177. package/es/state/select/update-position.js.map +1 -1
  178. package/es/state/state.d.ts +8 -1
  179. package/es/state/state.js +81 -40
  180. package/es/state/state.js.map +1 -1
  181. package/es/ts-types/base-table.d.ts +15 -0
  182. package/es/ts-types/base-table.js.map +1 -1
  183. package/es/ts-types/dataset/aggregation.js +68 -38
  184. package/es/ts-types/dataset/aggregation.js.map +1 -1
  185. package/es/ts-types/events.d.ts +16 -0
  186. package/es/ts-types/events.js.map +1 -1
  187. package/es/ts-types/table-engine.js.map +1 -1
  188. package/es/vrender.js.map +1 -1
  189. package/package.json +12 -11
@@ -60,7 +60,7 @@ export class EditManager {
60
60
  this.listenersId.push(doubleClickEventId, clickEventId, selectedChangedEventId);
61
61
  }
62
62
  startEditCell(col, row, value, editElement) {
63
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
63
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
64
64
  if (this.editingEditor) return;
65
65
  const editor = this.table.getEditor(col, row);
66
66
  if (editor) {
@@ -76,7 +76,7 @@ export class EditManager {
76
76
  col: col,
77
77
  row: row
78
78
  }), this.table._makeVisibleCell(col, row), this.editingEditor = editor;
79
- const dataValue = isValid(value) ? value : this.table.getCellOriginValue(col, row), rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row)), referencePosition = {
79
+ const customMergeText = null === (_j = this.table.getCustomMerge(col, row)) || void 0 === _j ? void 0 : _j.text, dataValue = isValid(value) ? value : isValid(customMergeText) ? customMergeText : this.table.getCellOriginValue(col, row), rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row)), referencePosition = {
80
80
  rect: {
81
81
  left: rect.left,
82
82
  top: rect.top,
@@ -86,10 +86,10 @@ export class EditManager {
86
86
  };
87
87
  col === this.table.colCount - 1 ? referencePosition.rect.width = rect.width - 1 : referencePosition.rect.width = rect.width + 1,
88
88
  row === this.table.rowCount - 1 ? referencePosition.rect.height = rect.height - 1 : referencePosition.rect.height = rect.height + 1,
89
- editor.beginEditing, null === (_j = editor.beginEditing) || void 0 === _j || _j.call(editor, this.table.getElement(), referencePosition, dataValue),
90
- editor.bindSuccessCallback, null === (_k = editor.bindSuccessCallback) || void 0 === _k || _k.call(editor, (() => {
89
+ editor.beginEditing, null === (_k = editor.beginEditing) || void 0 === _k || _k.call(editor, this.table.getElement(), referencePosition, dataValue),
90
+ editor.bindSuccessCallback, null === (_l = editor.bindSuccessCallback) || void 0 === _l || _l.call(editor, (() => {
91
91
  this.completeEdit();
92
- })), null === (_l = editor.onStart) || void 0 === _l || _l.call(editor, {
92
+ })), null === (_m = editor.onStart) || void 0 === _m || _m.call(editor, {
93
93
  value: dataValue,
94
94
  endEdit: () => {
95
95
  this.completeEdit();
@@ -103,7 +103,7 @@ export class EditManager {
103
103
  }
104
104
  }
105
105
  completeEdit(e) {
106
- var _a, _b;
106
+ var _a, _b, _c;
107
107
  if (!this.editingEditor) return !0;
108
108
  if (this.isValidatingValue) return !1;
109
109
  this.cacheLastSelectedCellEditor = {};
@@ -113,7 +113,7 @@ export class EditManager {
113
113
  } else if (!editor.isEditorElement || editor.isEditorElement(target)) return !1;
114
114
  if (this.editingEditor.getValue, this.editingEditor.validateValue) {
115
115
  this.isValidatingValue = !0;
116
- const newValue = this.editingEditor.getValue(), oldValue = this.table.getCellOriginValue(this.editCell.col, this.editCell.row), target = null == e ? void 0 : e.target, maybePromiseOrValue = null === (_b = (_a = this.editingEditor).validateValue) || void 0 === _b ? void 0 : _b.call(_a, newValue, oldValue, this.editCell, this.table, !!this.table.getElement().contains(target));
116
+ const newValue = this.editingEditor.getValue(), customMergeText = null === (_a = this.table.getCustomMerge(this.editCell.col, this.editCell.row)) || void 0 === _a ? void 0 : _a.text, oldValue = isValid(customMergeText) ? customMergeText : this.table.getCellOriginValue(this.editCell.col, this.editCell.row), target = null == e ? void 0 : e.target, maybePromiseOrValue = null === (_c = (_b = this.editingEditor).validateValue) || void 0 === _c ? void 0 : _c.call(_b, newValue, oldValue, this.editCell, this.table, !!this.table.getElement().contains(target));
117
117
  return isPromise(maybePromiseOrValue) ? (this.isValidatingValue = !0, new Promise(((resolve, reject) => {
118
118
  maybePromiseOrValue.then((result => {
119
119
  dealWithValidateValue(result, this, oldValue, resolve);
@@ -126,15 +126,18 @@ export class EditManager {
126
126
  }
127
127
  doExit() {
128
128
  var _a, _b, _c, _d, _e, _f, _g, _h;
129
- const changedValue = null === (_b = (_a = this.editingEditor).getValue) || void 0 === _b ? void 0 : _b.call(_a), range = this.table.getCellRange(this.editCell.col, this.editCell.row), changedValues = [];
130
- for (let row = range.start.row; row <= range.end.row; row++) {
131
- const rowChangedValues = [];
132
- for (let col = range.start.col; col <= range.end.col; col++) rowChangedValues.push(changedValue);
133
- changedValues.push(rowChangedValues);
129
+ const changedValue = null === (_b = (_a = this.editingEditor).getValue) || void 0 === _b ? void 0 : _b.call(_a), range = this.table.getCellRange(this.editCell.col, this.editCell.row);
130
+ if (null === (_d = (_c = this.editingEditor).beforeEnd) || void 0 === _d || _d.call(_c),
131
+ range.isCustom) this.table.changeCellValue(range.start.col, range.start.row, changedValue); else {
132
+ const changedValues = [];
133
+ for (let row = range.start.row; row <= range.end.row; row++) {
134
+ const rowChangedValues = [];
135
+ for (let col = range.start.col; col <= range.end.col; col++) rowChangedValues.push(changedValue);
136
+ changedValues.push(rowChangedValues);
137
+ }
138
+ this.table.changeCellValues(range.start.col, range.start.row, changedValues);
134
139
  }
135
- null === (_d = (_c = this.editingEditor).beforeEnd) || void 0 === _d || _d.call(_c),
136
- this.table.changeCellValues(range.start.col, range.start.row, changedValues), this.editingEditor.exit,
137
- null === (_f = (_e = this.editingEditor).exit) || void 0 === _f || _f.call(_e),
140
+ this.editingEditor.exit, null === (_f = (_e = this.editingEditor).exit) || void 0 === _f || _f.call(_e),
138
141
  null === (_h = (_g = this.editingEditor).onEnd) || void 0 === _h || _h.call(_g),
139
142
  this.editingEditor = null, this.isValidatingValue = !1, this.beginTriggerEditCellMode = null;
140
143
  }
@@ -142,7 +145,10 @@ export class EditManager {
142
145
  var _a, _b, _c, _d;
143
146
  this.editingEditor && (null === (_b = (_a = this.editingEditor).exit) || void 0 === _b || _b.call(_a),
144
147
  null === (_d = (_c = this.editingEditor).onEnd) || void 0 === _d || _d.call(_c),
145
- this.editingEditor = null);
148
+ this.editingEditor = null), Object.values(this.cacheLastSelectedCellEditor).forEach((editor => {
149
+ var _a;
150
+ return null === (_a = null == editor ? void 0 : editor.onEnd) || void 0 === _a ? void 0 : _a.call(editor);
151
+ })), this.cacheLastSelectedCellEditor = {};
146
152
  }
147
153
  release() {
148
154
  this.listenersId.forEach((id => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":"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","file":"edit-manager.js","sourcesContent":["import type { IEditor, ValidateEnum } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport { isPromise } from '../tools/helper';\nimport { isValid } from '@visactor/vutils';\nimport type { IIconGraphicAttribute } from '../scenegraph/graphic/icon';\n\nexport class EditManager {\n table: BaseTableAPI;\n editingEditor: IEditor;\n isValidatingValue: boolean = false;\n editCell: { col: number; row: number };\n listenersId: number[] = [];\n beginTriggerEditCellMode: 'doubleclick' | 'click' | 'keydown';\n /** 主要为了editor配置成函数的情况下,点击单元格流程造成接连调用getEditor()可能生成多个editor实例,所以需要缓存 */\n cacheLastSelectedCellEditor: Record<string, IEditor> = {};\n constructor(table: BaseTableAPI) {\n this.table = table;\n const { editCellTrigger = 'doubleclick' } = table.options as ListTableConstructorOptions;\n this.bindEvent(editCellTrigger as string);\n }\n\n bindEvent(editCellTrigger: string) {\n // const handler = this.table.internalProps.handler;\n const table = this.table as ListTableAPI;\n const doubleClickEventId = table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (!editCellTrigger.includes('doubleclick')) {\n return;\n }\n\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'doubleclick';\n this.startEditCell(col, row);\n });\n\n const clickEventId = table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n const { editCellTrigger = 'doubleclick' } = table.options;\n if (editCellTrigger === 'click' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('click'))) {\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'click';\n const { col, row } = e;\n this.startEditCell(col, row);\n } else if (\n editCellTrigger === 'keydown' ||\n (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))\n ) {\n // const { col, row } = e;\n // this.beginTriggerEditCellMode = 'keydown';\n // const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n // const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n // if (col === this.table.colCount - 1) {\n // referencePosition.rect.width = rect.width - 1;\n // } else {\n // referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // if (row === this.table.rowCount - 1) {\n // referencePosition.rect.height = rect.height - 1;\n // } else {\n // referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // const editor = (this.table as ListTableAPI).getEditor(col, row);\n // console.log('prepareEdit click-cell');\n // //需要准备编辑环境,等待输入。否则中文输入法第一个字符会被当做英文字符\n // editor.prepareEdit?.({ referencePosition, container: this.table.getElement(), table: this.table, col, row });\n }\n });\n const selectedChangedEventId = table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, e => {\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n if (\n justOneCellSelected &&\n (editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown')))\n ) {\n const { col, row } = e;\n this.beginTriggerEditCellMode = 'keydown';\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n editor &&\n setTimeout(() => {\n // 为什么要加延时:因为这个SELECTED_CHANGED事件是pointerdown过来的,\n // 如果这里不加延时,会导致鼠标抬起pointerup的时候将table.getElement()元素设置成焦点,从而导致编辑器失去焦点(因为prepareEdit只是将editor的element设置pointerEvents为none)\n if (editor && this.editingEditor !== editor) {\n // 判断当前编辑器如果是当前需要准备的编辑器,则不进行准备编辑。这个是为了container-dom文件moveEditCellOnArrowKeys前后逻辑问题,前面有个selectCell会触发这个事件,后面有startEdit了,所以这个prepare就没必要了,触发的话反而有问题\n editor.prepareEdit?.({\n referencePosition,\n container: this.table.getElement(),\n table: this.table,\n col,\n row\n });\n }\n }, 10);\n }\n });\n this.listenersId.push(doubleClickEventId, clickEventId, selectedChangedEventId);\n\n // handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n // this.completeEdit();\n // });\n // handler.on(this.table.getElement(), 'resize', (e: Event) => {\n // if (this.table.autoFillWidth || this.table.autoFillHeight) {\n // this.completeEdit();\n // }\n // });\n }\n\n startEditCell(col: number, row: number, value?: string | number, editElement?: HTMLInputElement) {\n if (this.editingEditor) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n editElement && (editor as any).setElement?.(editElement);\n // //自定义内容单元格不允许编辑\n // if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n // console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n // return;\n // }\n // if (!this.table.isHeader(col, row)) {\n // const range = this.table.getCellRange(col, row);\n // const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // if (isMerge) {\n // console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n // return;\n // }\n // }\n // 序号不允许编辑\n if (this.table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n return;\n }\n //ListTable聚合值不可以修改,PivotTable聚合值在updateAggregationOnEditCell false可以修改,true不可以修改\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n const isPivotTable = this.table.isPivotTable?.();\n const updateAggregationOnEditCell = isPivotTable\n ? (this.table as any).internalProps?.dataConfig?.updateAggregationOnEditCell\n : false;\n if (!isPivotTable || (isPivotTable && updateAggregationOnEditCell)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n }\n\n // group title cell do not allow edit\n const record = this.table.getCellRawRecord(col, row);\n if (record?.vtableMerge) {\n console.warn(\"VTable Warn: this is group title, can't be edited\");\n return;\n }\n\n if (!this.editingEditor) {\n this.editCell = { col, row };\n }\n\n this.table._makeVisibleCell(col, row);\n this.editingEditor = editor;\n const dataValue = isValid(value) ? value : this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement(),\n col,\n row,\n table: this.table\n });\n }\n }\n\n /** 如果是鼠标事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑\n * 返回值如果为false说明没有退出编辑状态 validateValue接口返回false 说明校验失败不退出编辑 */\n completeEdit(e?: Event): boolean | Promise<boolean> {\n if (!this.editingEditor) {\n return true;\n }\n if (this.isValidatingValue) {\n return false;\n }\n this.cacheLastSelectedCellEditor = {};\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return false;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return false;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n if (this.editingEditor.validateValue) {\n this.isValidatingValue = true;\n const newValue = this.editingEditor.getValue();\n const oldValue = this.table.getCellOriginValue(this.editCell.col, this.editCell.row);\n const target = e?.target as HTMLElement | undefined;\n\n const maybePromiseOrValue = this.editingEditor.validateValue?.(\n newValue,\n oldValue,\n this.editCell,\n this.table,\n !!this.table.getElement().contains(target)\n );\n\n if (isPromise(maybePromiseOrValue)) {\n this.isValidatingValue = true;\n return new Promise((resolve, reject) => {\n maybePromiseOrValue\n .then(result => {\n // if (result) {\n // this.doExit();\n // resolve(true);\n // } else {\n // this.isValidatingValue = false;\n // resolve(false);\n // }\n dealWithValidateValue(result, this, oldValue, resolve);\n })\n .catch((err: Error) => {\n this.isValidatingValue = false;\n console.error('VTable Error:', err);\n reject(err);\n });\n });\n }\n return dealWithValidateValue(maybePromiseOrValue, this, oldValue);\n }\n this.doExit();\n return true;\n }\n\n doExit() {\n const changedValue = this.editingEditor.getValue?.();\n const range = this.table.getCellRange(this.editCell.col, this.editCell.row);\n const changedValues: any[] = [];\n for (let row = range.start.row; row <= range.end.row; row++) {\n const rowChangedValues = [];\n for (let col = range.start.col; col <= range.end.col; col++) {\n rowChangedValues.push(changedValue);\n }\n changedValues.push(rowChangedValues);\n }\n this.editingEditor.beforeEnd?.();\n (this.table as ListTableAPI).changeCellValues(range.start.col, range.start.row, changedValues);\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n this.isValidatingValue = false;\n this.beginTriggerEditCellMode = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n }\n\n release() {\n this.listenersId.forEach(id => {\n this.table.off(id);\n });\n }\n}\n\nfunction dealWithValidateValue(\n validateValue: boolean | ValidateEnum,\n editManager: EditManager,\n oldValue: any,\n resolve?: (value: boolean | PromiseLike<boolean>) => void\n): boolean {\n editManager.isValidatingValue = false;\n if (validateValue === 'validate-exit') {\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'invalidate-exit') {\n (editManager.editingEditor as any).setValue(oldValue);\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'validate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === 'invalidate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === true) {\n editManager.doExit();\n resolve?.(true);\n return true;\n }\n resolve?.(false);\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":"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","file":"edit-manager.js","sourcesContent":["import type { IEditor, ValidateEnum } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport { isPromise } from '../tools/helper';\nimport { isValid } from '@visactor/vutils';\nimport type { IIconGraphicAttribute } from '../scenegraph/graphic/icon';\n\nexport class EditManager {\n table: BaseTableAPI;\n editingEditor: IEditor;\n isValidatingValue: boolean = false;\n editCell: { col: number; row: number };\n listenersId: number[] = [];\n beginTriggerEditCellMode: 'doubleclick' | 'click' | 'keydown';\n /** 主要为了editor配置成函数的情况下,点击单元格流程造成接连调用getEditor()可能生成多个editor实例,所以需要缓存 */\n cacheLastSelectedCellEditor: Record<string, IEditor> = {};\n constructor(table: BaseTableAPI) {\n this.table = table;\n const { editCellTrigger = 'doubleclick' } = table.options as ListTableConstructorOptions;\n this.bindEvent(editCellTrigger as string);\n }\n\n bindEvent(editCellTrigger: string) {\n // const handler = this.table.internalProps.handler;\n const table = this.table as ListTableAPI;\n const doubleClickEventId = table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (!editCellTrigger.includes('doubleclick')) {\n return;\n }\n\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'doubleclick';\n this.startEditCell(col, row);\n });\n\n const clickEventId = table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n const { editCellTrigger = 'doubleclick' } = table.options;\n if (editCellTrigger === 'click' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('click'))) {\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'click';\n const { col, row } = e;\n this.startEditCell(col, row);\n } else if (\n editCellTrigger === 'keydown' ||\n (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))\n ) {\n // const { col, row } = e;\n // this.beginTriggerEditCellMode = 'keydown';\n // const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n // const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n // if (col === this.table.colCount - 1) {\n // referencePosition.rect.width = rect.width - 1;\n // } else {\n // referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // if (row === this.table.rowCount - 1) {\n // referencePosition.rect.height = rect.height - 1;\n // } else {\n // referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // const editor = (this.table as ListTableAPI).getEditor(col, row);\n // console.log('prepareEdit click-cell');\n // //需要准备编辑环境,等待输入。否则中文输入法第一个字符会被当做英文字符\n // editor.prepareEdit?.({ referencePosition, container: this.table.getElement(), table: this.table, col, row });\n }\n });\n const selectedChangedEventId = table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, e => {\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n if (\n justOneCellSelected &&\n (editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown')))\n ) {\n const { col, row } = e;\n this.beginTriggerEditCellMode = 'keydown';\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n editor &&\n setTimeout(() => {\n // 为什么要加延时:因为这个SELECTED_CHANGED事件是pointerdown过来的,\n // 如果这里不加延时,会导致鼠标抬起pointerup的时候将table.getElement()元素设置成焦点,从而导致编辑器失去焦点(因为prepareEdit只是将editor的element设置pointerEvents为none)\n if (editor && this.editingEditor !== editor) {\n // 判断当前编辑器如果是当前需要准备的编辑器,则不进行准备编辑。这个是为了container-dom文件moveEditCellOnArrowKeys前后逻辑问题,前面有个selectCell会触发这个事件,后面有startEdit了,所以这个prepare就没必要了,触发的话反而有问题\n editor.prepareEdit?.({\n referencePosition,\n container: this.table.getElement(),\n table: this.table,\n col,\n row\n });\n }\n }, 10);\n }\n });\n this.listenersId.push(doubleClickEventId, clickEventId, selectedChangedEventId);\n\n // handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n // this.completeEdit();\n // });\n // handler.on(this.table.getElement(), 'resize', (e: Event) => {\n // if (this.table.autoFillWidth || this.table.autoFillHeight) {\n // this.completeEdit();\n // }\n // });\n }\n\n startEditCell(col: number, row: number, value?: string | number, editElement?: HTMLInputElement) {\n if (this.editingEditor) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n editElement && (editor as any).setElement?.(editElement);\n // //自定义内容单元格不允许编辑\n // if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n // console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n // return;\n // }\n // if (!this.table.isHeader(col, row)) {\n // const range = this.table.getCellRange(col, row);\n // const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // if (isMerge) {\n // console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n // return;\n // }\n // }\n // 序号不允许编辑\n if (this.table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n return;\n }\n //ListTable聚合值不可以修改,PivotTable聚合值在updateAggregationOnEditCell false可以修改,true不可以修改\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n const isPivotTable = this.table.isPivotTable?.();\n const updateAggregationOnEditCell = isPivotTable\n ? (this.table as any).internalProps?.dataConfig?.updateAggregationOnEditCell\n : false;\n if (!isPivotTable || (isPivotTable && updateAggregationOnEditCell)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n }\n\n // group title cell do not allow edit\n const record = this.table.getCellRawRecord(col, row);\n if (record?.vtableMerge) {\n console.warn(\"VTable Warn: this is group title, can't be edited\");\n return;\n }\n\n if (!this.editingEditor) {\n this.editCell = { col, row };\n }\n\n this.table._makeVisibleCell(col, row);\n this.editingEditor = editor;\n const customMergeText = this.table.getCustomMerge(col, row)?.text;\n const dataValue = isValid(value)\n ? value\n : isValid(customMergeText)\n ? customMergeText\n : this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement(),\n col,\n row,\n table: this.table\n });\n }\n }\n\n /** 如果是鼠标事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑\n * 返回值如果为false说明没有退出编辑状态 validateValue接口返回false 说明校验失败不退出编辑 */\n completeEdit(e?: Event): boolean | Promise<boolean> {\n if (!this.editingEditor) {\n return true;\n }\n if (this.isValidatingValue) {\n return false;\n }\n this.cacheLastSelectedCellEditor = {};\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return false;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return false;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n if (this.editingEditor.validateValue) {\n this.isValidatingValue = true;\n const newValue = this.editingEditor.getValue();\n const customMergeText = this.table.getCustomMerge(this.editCell.col, this.editCell.row)?.text;\n // 自定义合并单元格在编辑态看到的是 customMerge.text,因此校验 oldValue 也应以 text 为准,避免“校验基准值”与用户看到的不一致。\n const oldValue = isValid(customMergeText)\n ? customMergeText\n : this.table.getCellOriginValue(this.editCell.col, this.editCell.row);\n const target = e?.target as HTMLElement | undefined;\n\n const maybePromiseOrValue = this.editingEditor.validateValue?.(\n newValue,\n oldValue,\n this.editCell,\n this.table,\n !!this.table.getElement().contains(target)\n );\n\n if (isPromise(maybePromiseOrValue)) {\n this.isValidatingValue = true;\n return new Promise((resolve, reject) => {\n maybePromiseOrValue\n .then(result => {\n // if (result) {\n // this.doExit();\n // resolve(true);\n // } else {\n // this.isValidatingValue = false;\n // resolve(false);\n // }\n dealWithValidateValue(result, this, oldValue, resolve);\n })\n .catch((err: Error) => {\n this.isValidatingValue = false;\n console.error('VTable Error:', err);\n reject(err);\n });\n });\n }\n return dealWithValidateValue(maybePromiseOrValue, this, oldValue);\n }\n this.doExit();\n return true;\n }\n\n doExit() {\n const changedValue = this.editingEditor.getValue?.();\n const range = this.table.getCellRange(this.editCell.col, this.editCell.row);\n this.editingEditor.beforeEnd?.();\n if (range.isCustom) {\n // 自定义合并单元格的“数据落点”统一写到合并范围左上角单元格;展示值由 record-helper 同步到 customMergeCell.text。\n (this.table as ListTableAPI).changeCellValue(range.start.col, range.start.row, changedValue);\n } else {\n const changedValues: any[] = [];\n for (let row = range.start.row; row <= range.end.row; row++) {\n const rowChangedValues = [];\n for (let col = range.start.col; col <= range.end.col; col++) {\n rowChangedValues.push(changedValue);\n }\n changedValues.push(rowChangedValues);\n }\n (this.table as ListTableAPI).changeCellValues(range.start.col, range.start.row, changedValues);\n }\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n this.isValidatingValue = false;\n this.beginTriggerEditCellMode = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n // 清理缓存的编辑器实例,避免在后续 getEditor 调用中对已结束或未启动的编辑器重复调用 onEnd\n Object.values(this.cacheLastSelectedCellEditor).forEach((editor: IEditor) => editor?.onEnd?.());\n this.cacheLastSelectedCellEditor = {};\n }\n\n release() {\n this.listenersId.forEach(id => {\n this.table.off(id);\n });\n }\n}\n\nfunction dealWithValidateValue(\n validateValue: boolean | ValidateEnum,\n editManager: EditManager,\n oldValue: any,\n resolve?: (value: boolean | PromiseLike<boolean>) => void\n): boolean {\n editManager.isValidatingValue = false;\n if (validateValue === 'validate-exit') {\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'invalidate-exit') {\n (editManager.editingEditor as any).setValue(oldValue);\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'validate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === 'invalidate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === true) {\n editManager.doExit();\n resolve?.(true);\n return true;\n }\n resolve?.(false);\n return false;\n}\n"]}
@@ -10,6 +10,7 @@ export class EventTarget {
10
10
  };
11
11
  }
12
12
  on(type, listener) {
13
+ if (!this.listenersData) return;
13
14
  const list = this.listenersData.listeners[type] || (this.listenersData.listeners[type] = []);
14
15
  list.push(listener);
15
16
  const id = idCount++;
@@ -17,9 +18,10 @@ export class EventTarget {
17
18
  type: type,
18
19
  listener: listener,
19
20
  remove: () => {
21
+ if (!this.listenersData) return;
20
22
  delete this.listenersData.listenerData[id];
21
23
  const index = list.indexOf(listener);
22
- list.splice(index, 1), this.listenersData.listeners[type].length || delete this.listenersData.listeners[type];
24
+ list.splice(index, 1), this.listenersData.listeners[type] && !this.listenersData.listeners[type].length && delete this.listenersData.listeners[type];
23
25
  }
24
26
  }, id;
25
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/EventTarget.ts"],"names":[],"mappings":"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","file":"EventTarget.js","sourcesContent":["/* Adapted from cheetah-grid by yosuke ota\n *url:https://github.com/future-architect/cheetah-grid/blob/master/packages/cheetah-grid/src/js/core/EventTarget.ts\n *License: https://github.com/future-architect/cheetah-grid/blob/master/LICENSE\n * @license\n */\nimport type {\n TableEventListener,\n EventListenerId,\n TableEventHandlersEventArgumentMap,\n TableEventHandlersReturnMap\n} from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\nlet idCount = 1;\n\nexport class EventTarget {\n private listenersData: {\n listeners: { [TYPE in keyof TableEventHandlersEventArgumentMap]?: TableEventListener<TYPE>[] };\n listenerData: {\n [id: number]: {\n type: string;\n listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>;\n remove: () => void;\n };\n };\n } = {\n listeners: {},\n listenerData: {}\n };\n\n /**\n * 监听事件\n * @param type 事件类型\n * @param listener 事件监听器\n * @returns 事件监听器id\n */\n on<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE>\n ): EventListenerId {\n const list: TableEventListener<TYPE>[] =\n this.listenersData.listeners[type] || (this.listenersData.listeners[type] = []);\n list.push(listener);\n\n const id = idCount++;\n this.listenersData.listenerData[id] = {\n type,\n listener,\n remove: (): void => {\n delete this.listenersData.listenerData[id];\n const index = list.indexOf(listener);\n list.splice(index, 1);\n if (!this.listenersData.listeners[type].length) {\n delete this.listenersData.listeners[type];\n }\n }\n };\n return id;\n }\n\n off(type: string, listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>): void;\n off(id: EventListenerId): void;\n off(\n idOrType: EventListenerId | string,\n listener?: TableEventListener<keyof TableEventHandlersEventArgumentMap>\n ): void {\n if (listener) {\n const type = idOrType as string;\n this.removeEventListener(type, listener);\n } else {\n const id = idOrType as EventListenerId;\n if (!this.listenersData) {\n return;\n }\n this.listenersData.listenerData[id]?.remove();\n }\n }\n\n addEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE>,\n option?: any\n ): void {\n this.on(type, listener);\n }\n\n removeEventListener(\n type: string,\n listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>,\n useCapture?: boolean\n ): void {\n if (!this.listenersData) {\n return;\n }\n for (const key in this.listenersData.listenerData) {\n const listenerData = this.listenersData.listenerData[key];\n if (listenerData.type === type && listenerData.listener === listener) {\n this.off(key as unknown as number);\n }\n }\n }\n\n hasListeners(type: string): boolean {\n if (!this.listenersData) {\n return false;\n }\n return !!this.listenersData.listeners[type];\n }\n\n // fireListeners(type: string, ...args: any[]): any {\n // if (!this.listenersData) {\n // return [];\n // }\n // const list = this.listenersData.listeners[type];\n // if (!list) {\n // return [];\n // }\n // return list.map(listener => listener.call(this, ...args)).filter(r => isValid(r));\n // }\n fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n event: TableEventHandlersEventArgumentMap[TYPE]\n ): TableEventHandlersReturnMap[TYPE][] {\n if (!this.listenersData) {\n return [];\n }\n const list = this.listenersData.listeners[type];\n if (!list) {\n return [];\n }\n return list.map(listener => listener.call(this, event)).filter(r => isValid(r));\n }\n release(): void {\n delete this.listenersData;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/event/EventTarget.ts"],"names":[],"mappings":"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","file":"EventTarget.js","sourcesContent":["/* Adapted from cheetah-grid by yosuke ota\n *url:https://github.com/future-architect/cheetah-grid/blob/master/packages/cheetah-grid/src/js/core/EventTarget.ts\n *License: https://github.com/future-architect/cheetah-grid/blob/master/LICENSE\n * @license\n */\nimport type {\n TableEventListener,\n EventListenerId,\n TableEventHandlersEventArgumentMap,\n TableEventHandlersReturnMap\n} from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\nlet idCount = 1;\n\nexport class EventTarget {\n private listenersData: {\n listeners: { [TYPE in keyof TableEventHandlersEventArgumentMap]?: TableEventListener<TYPE>[] };\n listenerData: {\n [id: number]: {\n type: string;\n listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>;\n remove: () => void;\n };\n };\n } = {\n listeners: {},\n listenerData: {}\n };\n\n /**\n * 监听事件\n * @param type 事件类型\n * @param listener 事件监听器\n * @returns 事件监听器id\n */\n on<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE>\n ): EventListenerId {\n if (!this.listenersData) {\n return undefined;\n }\n const list: TableEventListener<TYPE>[] =\n this.listenersData.listeners[type] || (this.listenersData.listeners[type] = []);\n list.push(listener);\n\n const id = idCount++;\n this.listenersData.listenerData[id] = {\n type,\n listener,\n remove: (): void => {\n if (!this.listenersData) {\n return;\n }\n delete this.listenersData.listenerData[id];\n const index = list.indexOf(listener);\n list.splice(index, 1);\n if (this.listenersData.listeners[type] && !this.listenersData.listeners[type].length) {\n delete this.listenersData.listeners[type];\n }\n }\n };\n return id;\n }\n\n off(type: string, listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>): void;\n off(id: EventListenerId): void;\n off(\n idOrType: EventListenerId | string,\n listener?: TableEventListener<keyof TableEventHandlersEventArgumentMap>\n ): void {\n if (listener) {\n const type = idOrType as string;\n this.removeEventListener(type, listener);\n } else {\n const id = idOrType as EventListenerId;\n if (!this.listenersData) {\n return;\n }\n this.listenersData.listenerData[id]?.remove();\n }\n }\n\n addEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE>,\n option?: any\n ): void {\n this.on(type, listener);\n }\n\n removeEventListener(\n type: string,\n listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>,\n useCapture?: boolean\n ): void {\n if (!this.listenersData) {\n return;\n }\n for (const key in this.listenersData.listenerData) {\n const listenerData = this.listenersData.listenerData[key];\n if (listenerData.type === type && listenerData.listener === listener) {\n this.off(key as unknown as number);\n }\n }\n }\n\n hasListeners(type: string): boolean {\n if (!this.listenersData) {\n return false;\n }\n return !!this.listenersData.listeners[type];\n }\n\n // fireListeners(type: string, ...args: any[]): any {\n // if (!this.listenersData) {\n // return [];\n // }\n // const list = this.listenersData.listeners[type];\n // if (!list) {\n // return [];\n // }\n // return list.map(listener => listener.call(this, ...args)).filter(r => isValid(r));\n // }\n fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n event: TableEventHandlersEventArgumentMap[TYPE]\n ): TableEventHandlersReturnMap[TYPE][] {\n if (!this.listenersData) {\n return [];\n }\n const list = this.listenersData.listeners[type];\n if (!list) {\n return [];\n }\n return list.map(listener => listener.call(this, event)).filter(r => isValid(r));\n }\n release(): void {\n delete this.listenersData;\n }\n}\n"]}
@@ -34,4 +34,4 @@ export function fireMoveColEventListeners(table, endMoveColSuccess, e) {
34
34
  });
35
35
  }
36
36
  }
37
- //# sourceMappingURL=helper.js.map
37
+ //# sourceMappingURL=helper.js.map
@@ -247,19 +247,24 @@ export function bindContainerDomListener(eventManager) {
247
247
  table.eventManager.scrollXSpeed = -(x - drawRange.left - leftFrozenColsWidth) / 50),
248
248
  table.eventManager.inertiaScroll.startInertia(table.eventManager.scrollXSpeed, table.eventManager.scrollYSpeed, 1),
249
249
  table.eventManager.inertiaScroll.setScrollHandle(((dx, dy) => {
250
- var _a, _b, _c, _d, _e;
250
+ var _a, _b, _c;
251
251
  let selectX, selectY;
252
252
  handleWhell({
253
253
  deltaX: -dx,
254
254
  deltaY: -dy
255
- }, table.stateManager, !1), bottom ? selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20 : top && (selectY = table.scrollTop + topFrozenRowHeight + 20),
256
- right ? selectX = table.scrollLeft + drawRange.width - rightFrozenColsWidth - 20 : left && (selectX = table.scrollLeft + leftFrozenColsWidth + 20);
255
+ }, table.stateManager, !1);
256
+ const frozenOffset = null !== (_b = null === (_a = table.getFrozenColsOffset) || void 0 === _a ? void 0 : _a.call(table)) && void 0 !== _b ? _b : 0;
257
+ bottom ? selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20 : top && (selectY = table.scrollTop + topFrozenRowHeight + 20),
258
+ right ? selectX = table.scrollLeft + frozenOffset + drawRange.width - rightFrozenColsWidth - 20 : left && (selectX = table.scrollLeft + frozenOffset + leftFrozenColsWidth + 20);
257
259
  let considerFrozenY = !1, considerFrozenX = !1;
258
260
  right || left || (x > table.tableNoFrameWidth - table.getRightFrozenColsWidth() && x < table.tableNoFrameWidth || x > 0 && x < table.getFrozenColsWidth() ? (selectX = x,
259
- considerFrozenX = !0) : selectX = table.scrollLeft + x), bottom || top || (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight || y > 0 && y < table.getFrozenRowsHeight() ? (selectY = y,
261
+ considerFrozenX = !0) : selectX = table.scrollLeft + frozenOffset + x), bottom || top || (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight || y > 0 && y < table.getFrozenRowsHeight() ? (selectY = y,
260
262
  considerFrozenY = !0) : selectY = table.scrollTop + y), table.stateManager.updateInteractionState(InteractionState.grabing);
261
263
  const targetCol = table.getTargetColAtConsiderRightFrozen(selectX, considerFrozenX), targetRow = table.getTargetRowAtConsiderBottomFrozen(selectY, considerFrozenY);
262
- (null === (_a = table.options.select) || void 0 === _a ? void 0 : _a.disableDragSelect) || !isValid(targetCol) || !isValid(targetRow) || (null === (_b = table.options.select) || void 0 === _b ? void 0 : _b.disableSelect) && "function" == typeof (null === (_c = table.options.select) || void 0 === _c ? void 0 : _c.disableSelect) && (null === (_e = null === (_d = table.options.select) || void 0 === _d ? void 0 : _d.disableSelect) || void 0 === _e ? void 0 : _e.call(_d, targetCol.col, targetRow.row, table)) || table.stateManager.updateSelectPos("row" === table.stateManager.select.selectInline ? table.colCount - 1 : targetCol.col, "col" === table.stateManager.select.selectInline ? table.rowCount - 1 : targetRow.row, !1, !1, !1, !1);
264
+ if (!(null === (_c = table.options.select) || void 0 === _c ? void 0 : _c.disableDragSelect) && isValid(targetCol) && isValid(targetRow)) {
265
+ if (isCellDisableSelect(table, targetCol.col, targetRow.row)) return;
266
+ table.stateManager.updateSelectPos("row" === table.stateManager.select.selectInline ? table.colCount - 1 : targetCol.col, "col" === table.stateManager.select.selectInline ? table.rowCount - 1 : targetRow.row, !1, !1, !1, !1);
267
+ }
263
268
  }));
264
269
  } else table.eventManager.inertiaScroll.isInertiaScrolling() ? table.eventManager.inertiaScroll.endInertia() : table.eventManager.scrollYSpeed = 0;
265
270
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/listener/container-dom.ts"],"names":[],"mappings":"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","file":"container-dom.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { EventHandler } from '../EventHandler';\nimport type { ListTableConstructorOptions, MousePointerMultiCellEvent } from '../../ts-types';\nimport { InteractionState, type KeydownEvent, type ListTableAPI } from '../../ts-types';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { handleWhell } from '../scroll';\nimport { browser, getPromiseValue } from '../../tools/helper';\nimport type { EventManager } from '../event';\nimport { getPixelRatio } from '../../tools/pixel-ratio';\nimport { endResizeCol, endResizeRow } from './table-group';\nimport { isCellDisableSelect } from '../../state/select/is-cell-select-highlight';\nimport { fireMoveColEventListeners } from '../helper';\nimport { vglobal } from './../../vrender';\nexport function bindContainerDomListener(eventManager: EventManager) {\n const table = eventManager.table;\n const stateManager = table.stateManager;\n const handler: EventHandler = table.internalProps.handler;\n\n // handler.on(table.getElement(), 'mousedown', (e: MouseEvent) => {\n // if (table.eventManager.isPointerDownOnTable) {\n // e.stopPropagation();\n // }\n // });\n\n handler.on(table.getElement(), 'blur', (e: FocusEvent) => {\n // 检查焦点是否转移到了表格内部的元素(如 editInputElement)\n // 如果是,则不处理 blur 事件,避免在编辑时触发不必要的逻辑\n const relatedTarget = e.relatedTarget as HTMLElement;\n if (relatedTarget) {\n // 检查是否是编辑器内部的 input\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n const editor =\n justOneCellSelected &&\n (table as ListTableAPI).getEditor &&\n (table as ListTableAPI).getEditor(table.stateManager.select.cellPos.col, table.stateManager.select.cellPos.row);\n const editorInput = editor?.getInputElement?.();\n if (editorInput === relatedTarget) {\n return;\n }\n }\n\n eventManager.dealTableHover();\n // eventManager.dealTableSelect();\n });\n\n // 监听键盘事件\n handler.on(table.getElement(), 'keydown', (e: KeyboardEvent) => {\n // 键盘按下事件 内部逻辑处理前\n const beforeKeydownEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e\n };\n table.fireListeners(TABLE_EVENT_TYPE.BEFORE_KEYDOWN, beforeKeydownEvent);\n // 键盘按下事件 内部逻辑处理\n if (e.key === 'a' && (e.ctrlKey || e.metaKey)) {\n if (table.keyboardOptions?.selectAllOnCtrlA) {\n // 处理全选\n e.preventDefault();\n //全选\n eventManager.deelTableSelectAll();\n }\n } else if (\n stateManager.select.cellPos.col >= 0 &&\n stateManager.select.cellPos.row >= 0 &&\n (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n if (\n (!(table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor) ||\n table.options.keyboardOptions?.moveSelectedCellOnArrowKeys === false\n ) {\n // 编辑单元格状态下 如果没有开启方向键切换cell 则退出 。方向键可以在编辑input内移动光标\n return;\n }\n e.preventDefault();\n // 如果不加这句话 外部监听了键盘事件 会影响表格本身的移动格子功能,例如自定义日历编辑器的日期选择pickday.js\n //可能会引起其他问题 例如自定义实现了日历编辑器 里面切换日期左右键可能失效,这个时候建议监听VTable实例的事件keydown\n e.stopPropagation();\n let targetCol;\n let targetRow;\n\n // 处理向上箭头键\n if (e.key === 'ArrowUp') {\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = 0;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n }\n } else if (e.key === 'ArrowDown') {\n // 处理向下箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = table.rowCount - 1;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n }\n } else if (e.key === 'ArrowLeft') {\n // 处理向左箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = 0;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n }\n } else if (e.key === 'ArrowRight') {\n // 处理向右箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = table.colCount - 1;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n }\n }\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const isEditingCell = !!(table as ListTableAPI).editorManager?.editingEditor;\n // 下面这句completeEdit代码和selectCell代码顺序很重要,不能颠倒,否则会导致编辑器失去焦点(selectCell会触发到edit-manager的selected_changed事件,getEditor会创建editor实例并缓存,completeEdit会清空缓存)\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\n const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n if ((table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) && isEditingCell) {\n // 开启了方向键切换编辑单元格 并且当前已经在编辑状态下 切换到下一个需先退出再进入下个单元格的编辑\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager?.startEditCell(targetCol, targetRow);\n }\n }\n } else if (e.key === 'Escape') {\n (table as ListTableAPI).editorManager?.cancelEdit();\n table.getElement().focus();\n } else if (e.key === 'Enter') {\n // 如果按enter键 可以结束当前的编辑 或开启编辑选中的单元格(仅限单选)\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n // 如果是结束当前编辑,且有主动监听keydown事件,则先触发keydown事件,之后再结束编辑\n handleKeydownListener(e);\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\n\n if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {\n // 利用enter键选中下一个单元格\n const targetCol = stateManager.select.cellPos.col;\n const targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n }\n // 直接返回,不再触发最后的keydown监听事件相关代码\n return;\n }\n if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {\n // 利用enter键选中下一个单元格\n const targetCol = stateManager.select.cellPos.col;\n const targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n } else if (\n (table.options.keyboardOptions?.editCellOnEnter ?? true) &&\n (table.stateManager.select.ranges?.length ?? 0) === 1\n ) {\n // 如果开启按enter键进入编辑的配置 且当前有选中的单元格 则进入编辑(仅限单选)\n const startCol = table.stateManager.select.ranges[0].start.col;\n const startRow = table.stateManager.select.ranges[0].start.row;\n const endCol = table.stateManager.select.ranges[0].end.col;\n const endRow = table.stateManager.select.ranges[0].end.row;\n if (startCol === endCol && startRow === endRow) {\n if ((table as ListTableAPI).getEditor(startCol, startRow)) {\n (table as ListTableAPI).editorManager?.startEditCell(startCol, startRow);\n }\n }\n }\n } else if (e.key === 'Tab') {\n if (table.options.keyboardOptions?.moveFocusCellOnTab ?? true) {\n if (stateManager.select.cellPos.col >= 0 && stateManager.select.cellPos.row >= 0) {\n const isLastCell =\n stateManager.select.cellPos.col === table.colCount - 1 &&\n stateManager.select.cellPos.row === table.rowCount - 1;\n\n if (isLastCell) {\n return;\n }\n\n e.preventDefault();\n\n let targetCol;\n let targetRow;\n if (stateManager.select.cellPos.col === table.colCount - 1) {\n targetRow = Math.min(table.rowCount - 1, stateManager.select.cellPos.row + 1);\n targetCol = table.rowHeaderLevelCount;\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = stateManager.select.cellPos.col + 1;\n }\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const isEditingCell = !!(table as ListTableAPI).editorManager?.editingEditor;\n // 下面这句completeEdit代码和selectCell代码顺序很重要,不能颠倒,否则会导致编辑器失去焦点(selectCell会触发到edit-manager的selected_changed事件,getEditor会创建editor实例并缓存,completeEdit会清空缓存)\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\n table.selectCell(targetCol, targetRow);\n if (isEditingCell) {\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager?.startEditCell(targetCol, targetRow);\n }\n }\n }\n }\n } else if (!(e.ctrlKey || e.metaKey)) {\n const editCellTrigger = (table.options as ListTableConstructorOptions).editCellTrigger;\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n if (justOneCellSelected) {\n if (\n (editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))) &&\n !table.editorManager?.editingEditor\n ) {\n const allowedKeys = /^[a-zA-Z0-9+\\-*\\/%=.,\\s]$/; // 允许的键值正则表达式\n if (e.key.match(allowedKeys)) {\n table.editorManager && (table.editorManager.beginTriggerEditCellMode = 'keydown');\n table.editorManager?.startEditCell(stateManager.select.cellPos.col, stateManager.select.cellPos.row, '');\n }\n }\n }\n }\n handleKeydownListener(e);\n });\n\n /**\n * 处理主动注册的keydown事件\n * @param e\n */\n function handleKeydownListener(e: KeyboardEvent) {\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.KEYDOWN)) {\n const cellsEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e,\n // cells: table.getSelectedCellInfos(),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n table.fireListeners(TABLE_EVENT_TYPE.KEYDOWN, cellsEvent);\n }\n }\n\n handler.on(table.getElement(), 'copy', async (e: KeyboardEvent) => {\n if (table.keyboardOptions?.copySelected) {\n eventManager.handleCopy(e);\n }\n });\n handler.on(table.getElement(), 'cut', async (e: KeyboardEvent) => {\n if (table.keyboardOptions?.cutSelected) {\n eventManager.handleCut(e);\n }\n });\n handler.on(table.getElement(), 'paste', async (e: any) => {\n if (table.keyboardOptions?.pasteValueToCell) {\n eventManager.handlePaste(e);\n }\n });\n\n handler.on(table.getElement(), 'contextmenu', (e: any) => {\n if (table.eventOptions?.preventDefaultContextMenu !== false) {\n e.preventDefault();\n } else {\n // default context menu will cause pointerup event can not trigger\n // call manually\n globalPointerupCallback(e);\n }\n });\n\n if (!table.options.canvas) {\n handler.on(table.getContainer(), 'resize', e => {\n if (table.isReleased) {\n return;\n }\n if (e.width === 0 && e.height === 0) {\n // 临时绕行解决因为display设置为none产生的问题\n return;\n }\n if (\n table.autoFillWidth ||\n table.autoFillHeight ||\n table.widthMode === 'adaptive' ||\n table.heightMode === 'adaptive'\n ) {\n table.editorManager?.completeEdit();\n }\n if (!isValid(table.options.pixelRatio)) {\n table.setPixelRatio(getPixelRatio());\n }\n if (!e.windowSizeNotChange) {\n table.resize();\n }\n });\n }\n\n // 有被阻止冒泡的场景 就触发不到这里的事件了 所以这个LastBodyPointerXY变量的赋值在scrollbar的down事件也进行了处理\n const globalPointerdownCallback = (e: MouseEvent) => {\n if (table.isReleased) {\n return;\n }\n // console.log('body pointerdown');\n table.eventManager.LastBodyPointerXY = { x: e.x, y: e.y };\n table.eventManager.isDown = true;\n\n const target = e.target as HTMLElement;\n if (\n !table.getElement().contains(target) &&\n !table.internalProps.menuHandler.containElement(target) &&\n (!table.options.customConfig?.shouldTreatAsClickOnTable ||\n (table.options.customConfig?.shouldTreatAsClickOnTable &&\n !table.options.customConfig?.shouldTreatAsClickOnTable(e)))\n ) {\n // 如果点击到表格外部的dom\n const isCompleteEdit = (table as ListTableAPI).editorManager?.completeEdit(e);\n getPromiseValue<boolean>(isCompleteEdit, isCompleteEdit => {\n if (isCompleteEdit === false) {\n // 如果没有正常退出编辑状态 则不执行下面的逻辑 如选择其他单元格的逻辑\n return;\n }\n //点击到表格外部不需要取消选中状态\n if (table.options.select?.outsideClickDeselect) {\n const isHasSelected = !!stateManager.select.ranges?.length;\n eventManager.dealTableSelect();\n stateManager.endSelectCells(true, isHasSelected);\n }\n });\n table.scenegraph.updateChartState(null, undefined);\n table.scenegraph.deactivateChart(-1, -1, true);\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointerdown',\n env: 'vglobal',\n callback: globalPointerdownCallback\n });\n vglobal.addEventListener('pointerdown', globalPointerdownCallback);\n\n const globalPointerupOutsideCallback = (e: MouseEvent) => {\n // console.log('pointerupoutside');\n // const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n if (stateManager.menu.isShow) {\n setTimeout(() => {\n // conside page scroll\n if (!table.internalProps.menuHandler.pointInMenuElement(e.clientX, e.clientY)) {\n stateManager.menu.isShow && stateManager.hideMenu();\n }\n }, 0);\n }\n // 同pointerup中的逻辑\n if (stateManager.isResizeCol()) {\n endResizeCol(table);\n } else if (stateManager.isResizeRow()) {\n endResizeRow(table);\n } else if (stateManager.isMoveCol()) {\n const endMoveColSuccess = table.stateManager.endMoveCol();\n fireMoveColEventListeners(table, endMoveColSuccess, e);\n } else if (stateManager.isSelecting()) {\n if (table.stateManager.select?.ranges?.length) {\n const lastCol = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end.col;\n const lastRow = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end.row;\n table.stateManager.endSelectCells();\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END)) {\n const cellsEvent: MousePointerMultiCellEvent = {\n event: e,\n cells: [],\n col: lastCol,\n row: lastRow,\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,\n target: undefined\n };\n cellsEvent.cells = table.getSelectedCellInfos();\n table.fireListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END, cellsEvent);\n }\n }\n }\n };\n\n const globalPointerupCallback = (e: MouseEvent) => {\n if (table.isReleased) {\n return;\n }\n const target = e.target as HTMLElement;\n\n if (target !== table.canvas) {\n globalPointerupOutsideCallback(e);\n }\n\n table.eventManager.LastBodyPointerXY = null;\n // console.log('body pointerup', table.eventManager.isDown, table.eventManager.isDraging);\n table.eventManager.isDown = false;\n table.eventManager.isDraging = false;\n table.eventManager.inertiaScroll.endInertia();\n if (stateManager.interactionState === 'grabing' && stateManager.isResizeCol()) {\n endResizeCol(table);\n } else if (stateManager.interactionState === 'grabing' && stateManager.isResizeRow()) {\n endResizeRow(table);\n } else if (stateManager.isMoveCol()) {\n const endMoveColSuccess = table.stateManager.endMoveCol();\n fireMoveColEventListeners(table, endMoveColSuccess, e);\n } else if (table.editorManager?.editingEditor) {\n if (!table.getElement().contains(target)) {\n // 如果点击到表格外部的dom\n const isCompleteEdit = (table as ListTableAPI).editorManager?.completeEdit(e);\n getPromiseValue<boolean>(isCompleteEdit, (isCompleteEdit: boolean) => {\n if (isCompleteEdit === false) {\n // 如果没有正常退出编辑状态 则不执行下面的逻辑 如选择其他单元格的逻辑\n return;\n }\n stateManager.updateInteractionState(InteractionState.default);\n eventManager.dealTableHover();\n });\n }\n }\n stateManager.updateInteractionState(InteractionState.default);\n };\n eventManager.globalEventListeners.push({\n name: 'pointerup',\n env: 'vglobal',\n callback: globalPointerupCallback\n });\n vglobal.addEventListener('pointerup', globalPointerupCallback);\n\n const globalPointermoveCallback = (e: MouseEvent) => {\n if (table.eventManager.isDown && table.eventManager.LastBodyPointerXY) {\n const lastX = table.eventManager.LastBodyPointerXY?.x ?? e.x;\n const lastY = table.eventManager.LastBodyPointerXY?.y ?? e.y;\n if (Math.abs(lastX - e.x) > 1 || Math.abs(lastY - e.y) > 1) {\n table.eventManager.isDraging = true;\n }\n }\n // 注释掉。因为: 这里pointermove太敏感了 点击快的时候 可能动了1px这里也会执行到 就影响到下面选中不触发的问题。下面pointermove就有这段逻辑,这里先去掉\n // if (eventManager.touchSetTimeout) {\n // clearTimeout(eventManager.touchSetTimeout);\n // console.log('eventManager.touchSetTimeout', eventManager.touchSetTimeout);\n // eventManager.touchSetTimeout = undefined;\n // }\n const { x, y } = table._getMouseAbstractPoint(e);\n // if (stateManager.interactionState === InteractionState.scrolling) {\n // return;\n // }\n if (stateManager.interactionState === InteractionState.grabing) {\n if (stateManager.isResizeCol()) {\n eventManager.dealColumnResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN, {\n col: table.stateManager.columnResize.col,\n colWidth: table.getColWidth(table.stateManager.columnResize.col)\n });\n }\n } else if (stateManager.isResizeRow()) {\n eventManager.dealRowResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_ROW)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_ROW, {\n row: table.stateManager.rowResize.row,\n rowHeight: table.getRowHeight(table.stateManager.rowResize.row)\n });\n }\n } else if (stateManager.isMoveCol()) {\n eventManager.dealColumnMover(x, y, e);\n }\n }\n const isSelecting = table.stateManager.isSelecting();\n\n if (\n eventManager._enableTableScroll &&\n eventManager.isDraging &&\n isSelecting &&\n table.stateManager.select.ranges?.length > 0\n ) {\n // 检测鼠标是否离开了table\n const drawRange = table.getDrawRange();\n // const element = table.getElement();\n // const { x: rootLeft, y: rootTop, width: rootWidth } = element.getBoundingClientRect();\n // const tableLeft = drawRange.left + rootLeft;\n // const tableTop = drawRange.top + rootTop;\n // const tableRight = tableLeft + drawRange.width;\n // const tableBottom = tableTop + drawRange.height;\n // console.log('x, y', x, y);\n const topFrozenRowHeight = table.getFrozenRowsHeight();\n const bottomFrozenRowHeight = table.getBottomFrozenRowsHeight();\n const leftFrozenColsWidth = table.getFrozenColsWidth();\n const rightFrozenColsWidth = table.getRightFrozenColsWidth();\n const startCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].start;\n if (table.isSeriesNumber(startCell.col, startCell.row)) {\n //如果是鼠标落到了序号列 不自动滚动\n return;\n }\n const endCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end;\n const canScrollY =\n (table.isFrozenRow(startCell.row) === false || table.isFrozenRow(endCell.row) === false) &&\n table.getAllRowsHeight() > table.tableNoFrameHeight;\n const canScrollX =\n (table.isFrozenColumn(startCell.col) === false || table.isFrozenColumn(endCell.col) === false) &&\n table.getAllColsWidth() > table.tableNoFrameWidth;\n if (\n ((y > drawRange.bottom - bottomFrozenRowHeight || y < drawRange.top + topFrozenRowHeight) && canScrollY) ||\n ((x > drawRange.right - rightFrozenColsWidth || x < drawRange.left + leftFrozenColsWidth) && canScrollX)\n ) {\n table.eventManager.scrollXSpeed = 0;\n table.eventManager.scrollYSpeed = 0;\n let bottom = false;\n let top = false;\n let right = false;\n let left = false;\n if (\n y > drawRange.bottom - bottomFrozenRowHeight &&\n canScrollY &&\n table.scrollTop + table.tableNoFrameHeight < table.getAllRowsHeight()\n ) {\n bottom = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.bottom + bottomFrozenRowHeight) / 50;\n } else if (y < drawRange.top + topFrozenRowHeight && canScrollY && table.scrollTop > 0) {\n top = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.top - topFrozenRowHeight) / 50;\n }\n\n if (\n x > drawRange.right - rightFrozenColsWidth &&\n canScrollX &&\n table.scrollLeft + table.tableNoFrameWidth < table.getAllColsWidth()\n ) {\n right = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.right + rightFrozenColsWidth) / 50;\n } else if (x < drawRange.left + leftFrozenColsWidth && canScrollX && table.scrollLeft > 0) {\n left = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.left - leftFrozenColsWidth) / 50;\n }\n table.eventManager.inertiaScroll.startInertia(\n table.eventManager.scrollXSpeed,\n table.eventManager.scrollYSpeed,\n 1\n );\n table.eventManager.inertiaScroll.setScrollHandle((dx: number, dy: number) => {\n handleWhell({ deltaX: -dx, deltaY: -dy } as any, table.stateManager, false);\n\n let selectX: number;\n let selectY: number;\n\n if (bottom) {\n selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20;\n } else if (top) {\n selectY = table.scrollTop + topFrozenRowHeight + 20;\n }\n\n if (right) {\n selectX = table.scrollLeft + drawRange.width - rightFrozenColsWidth - 20;\n } else if (left) {\n selectX = table.scrollLeft + leftFrozenColsWidth + 20;\n }\n\n let considerFrozenY = false;\n let considerFrozenX = false;\n if (!right && !left) {\n if (\n (x > table.tableNoFrameWidth - table.getRightFrozenColsWidth() && x < table.tableNoFrameWidth) ||\n (x > 0 && x < table.getFrozenColsWidth())\n ) {\n selectX = x;\n considerFrozenX = true;\n } else {\n selectX = table.scrollLeft + x;\n }\n }\n if (!bottom && !top) {\n if (\n (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight) ||\n (y > 0 && y < table.getFrozenRowsHeight())\n ) {\n selectY = y;\n considerFrozenY = true;\n } else {\n selectY = table.scrollTop + y;\n }\n }\n table.stateManager.updateInteractionState(InteractionState.grabing);\n const targetCol = table.getTargetColAtConsiderRightFrozen(selectX, considerFrozenX);\n const targetRow = table.getTargetRowAtConsiderBottomFrozen(selectY, considerFrozenY);\n if (\n !table.options.select?.disableDragSelect &&\n isValid(targetCol) &&\n isValid(targetRow) &&\n (!table.options.select?.disableSelect ||\n !(\n typeof table.options.select?.disableSelect === 'function' &&\n table.options.select?.disableSelect?.(targetCol.col, targetRow.row, table)\n ))\n ) {\n table.stateManager.updateSelectPos(\n table.stateManager.select.selectInline === 'row' ? table.colCount - 1 : targetCol.col,\n table.stateManager.select.selectInline === 'col' ? table.rowCount - 1 : targetRow.row,\n false,\n false,\n false,\n false\n );\n }\n });\n } else if (table.eventManager.inertiaScroll.isInertiaScrolling()) {\n table.eventManager.inertiaScroll.endInertia();\n } else {\n table.eventManager.scrollYSpeed = 0;\n }\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointermove',\n env: 'vglobal',\n callback: globalPointermoveCallback\n });\n vglobal.addEventListener('pointermove', globalPointermoveCallback);\n}\n"]}
1
+ {"version":3,"sources":["../src/event/listener/container-dom.ts"],"names":[],"mappings":"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","file":"container-dom.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { EventHandler } from '../EventHandler';\nimport type { ListTableConstructorOptions, MousePointerMultiCellEvent } from '../../ts-types';\nimport { InteractionState, type KeydownEvent, type ListTableAPI } from '../../ts-types';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { handleWhell } from '../scroll';\nimport { browser, getPromiseValue } from '../../tools/helper';\nimport type { EventManager } from '../event';\nimport { getPixelRatio } from '../../tools/pixel-ratio';\nimport { endResizeCol, endResizeRow } from './table-group';\nimport { isCellDisableSelect } from '../../state/select/is-cell-select-highlight';\nimport { fireMoveColEventListeners } from '../helper';\nimport { vglobal } from './../../vrender';\nexport function bindContainerDomListener(eventManager: EventManager) {\n const table = eventManager.table;\n const stateManager = table.stateManager;\n const handler: EventHandler = table.internalProps.handler;\n\n // handler.on(table.getElement(), 'mousedown', (e: MouseEvent) => {\n // if (table.eventManager.isPointerDownOnTable) {\n // e.stopPropagation();\n // }\n // });\n\n handler.on(table.getElement(), 'blur', (e: FocusEvent) => {\n // 检查焦点是否转移到了表格内部的元素(如 editInputElement)\n // 如果是,则不处理 blur 事件,避免在编辑时触发不必要的逻辑\n const relatedTarget = e.relatedTarget as HTMLElement;\n if (relatedTarget) {\n // 检查是否是编辑器内部的 input\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n const editor =\n justOneCellSelected &&\n (table as ListTableAPI).getEditor &&\n (table as ListTableAPI).getEditor(table.stateManager.select.cellPos.col, table.stateManager.select.cellPos.row);\n const editorInput = editor?.getInputElement?.();\n if (editorInput === relatedTarget) {\n return;\n }\n }\n\n eventManager.dealTableHover();\n // eventManager.dealTableSelect();\n });\n\n // 监听键盘事件\n handler.on(table.getElement(), 'keydown', (e: KeyboardEvent) => {\n // 键盘按下事件 内部逻辑处理前\n const beforeKeydownEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e\n };\n table.fireListeners(TABLE_EVENT_TYPE.BEFORE_KEYDOWN, beforeKeydownEvent);\n // 键盘按下事件 内部逻辑处理\n if (e.key === 'a' && (e.ctrlKey || e.metaKey)) {\n if (table.keyboardOptions?.selectAllOnCtrlA) {\n // 处理全选\n e.preventDefault();\n //全选\n eventManager.deelTableSelectAll();\n }\n } else if (\n stateManager.select.cellPos.col >= 0 &&\n stateManager.select.cellPos.row >= 0 &&\n (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n if (\n (!(table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor) ||\n table.options.keyboardOptions?.moveSelectedCellOnArrowKeys === false\n ) {\n // 编辑单元格状态下 如果没有开启方向键切换cell 则退出 。方向键可以在编辑input内移动光标\n return;\n }\n e.preventDefault();\n // 如果不加这句话 外部监听了键盘事件 会影响表格本身的移动格子功能,例如自定义日历编辑器的日期选择pickday.js\n //可能会引起其他问题 例如自定义实现了日历编辑器 里面切换日期左右键可能失效,这个时候建议监听VTable实例的事件keydown\n e.stopPropagation();\n let targetCol;\n let targetRow;\n\n // 处理向上箭头键\n if (e.key === 'ArrowUp') {\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = 0;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n }\n } else if (e.key === 'ArrowDown') {\n // 处理向下箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = table.rowCount - 1;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n }\n } else if (e.key === 'ArrowLeft') {\n // 处理向左箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = 0;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n }\n } else if (e.key === 'ArrowRight') {\n // 处理向右箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = table.colCount - 1;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n }\n }\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const isEditingCell = !!(table as ListTableAPI).editorManager?.editingEditor;\n // 下面这句completeEdit代码和selectCell代码顺序很重要,不能颠倒,否则会导致编辑器失去焦点(selectCell会触发到edit-manager的selected_changed事件,getEditor会创建editor实例并缓存,completeEdit会清空缓存)\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\n const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n if ((table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) && isEditingCell) {\n // 开启了方向键切换编辑单元格 并且当前已经在编辑状态下 切换到下一个需先退出再进入下个单元格的编辑\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager?.startEditCell(targetCol, targetRow);\n }\n }\n } else if (e.key === 'Escape') {\n (table as ListTableAPI).editorManager?.cancelEdit();\n table.getElement().focus();\n } else if (e.key === 'Enter') {\n // 如果按enter键 可以结束当前的编辑 或开启编辑选中的单元格(仅限单选)\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n // 如果是结束当前编辑,且有主动监听keydown事件,则先触发keydown事件,之后再结束编辑\n handleKeydownListener(e);\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\n\n if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {\n // 利用enter键选中下一个单元格\n const targetCol = stateManager.select.cellPos.col;\n const targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n }\n // 直接返回,不再触发最后的keydown监听事件相关代码\n return;\n }\n if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {\n // 利用enter键选中下一个单元格\n const targetCol = stateManager.select.cellPos.col;\n const targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n } else if (\n (table.options.keyboardOptions?.editCellOnEnter ?? true) &&\n (table.stateManager.select.ranges?.length ?? 0) === 1\n ) {\n // 如果开启按enter键进入编辑的配置 且当前有选中的单元格 则进入编辑(仅限单选)\n const startCol = table.stateManager.select.ranges[0].start.col;\n const startRow = table.stateManager.select.ranges[0].start.row;\n const endCol = table.stateManager.select.ranges[0].end.col;\n const endRow = table.stateManager.select.ranges[0].end.row;\n if (startCol === endCol && startRow === endRow) {\n if ((table as ListTableAPI).getEditor(startCol, startRow)) {\n (table as ListTableAPI).editorManager?.startEditCell(startCol, startRow);\n }\n }\n }\n } else if (e.key === 'Tab') {\n if (table.options.keyboardOptions?.moveFocusCellOnTab ?? true) {\n if (stateManager.select.cellPos.col >= 0 && stateManager.select.cellPos.row >= 0) {\n const isLastCell =\n stateManager.select.cellPos.col === table.colCount - 1 &&\n stateManager.select.cellPos.row === table.rowCount - 1;\n\n if (isLastCell) {\n return;\n }\n\n e.preventDefault();\n\n let targetCol;\n let targetRow;\n if (stateManager.select.cellPos.col === table.colCount - 1) {\n targetRow = Math.min(table.rowCount - 1, stateManager.select.cellPos.row + 1);\n targetCol = table.rowHeaderLevelCount;\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = stateManager.select.cellPos.col + 1;\n }\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n const isEditingCell = !!(table as ListTableAPI).editorManager?.editingEditor;\n // 下面这句completeEdit代码和selectCell代码顺序很重要,不能颠倒,否则会导致编辑器失去焦点(selectCell会触发到edit-manager的selected_changed事件,getEditor会创建editor实例并缓存,completeEdit会清空缓存)\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\n table.selectCell(targetCol, targetRow);\n if (isEditingCell) {\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager?.startEditCell(targetCol, targetRow);\n }\n }\n }\n }\n } else if (!(e.ctrlKey || e.metaKey)) {\n const editCellTrigger = (table.options as ListTableConstructorOptions).editCellTrigger;\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n if (justOneCellSelected) {\n if (\n (editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))) &&\n !table.editorManager?.editingEditor\n ) {\n const allowedKeys = /^[a-zA-Z0-9+\\-*\\/%=.,\\s]$/; // 允许的键值正则表达式\n if (e.key.match(allowedKeys)) {\n table.editorManager && (table.editorManager.beginTriggerEditCellMode = 'keydown');\n table.editorManager?.startEditCell(stateManager.select.cellPos.col, stateManager.select.cellPos.row, '');\n }\n }\n }\n }\n handleKeydownListener(e);\n });\n\n /**\n * 处理主动注册的keydown事件\n * @param e\n */\n function handleKeydownListener(e: KeyboardEvent) {\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.KEYDOWN)) {\n const cellsEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e,\n // cells: table.getSelectedCellInfos(),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n table.fireListeners(TABLE_EVENT_TYPE.KEYDOWN, cellsEvent);\n }\n }\n\n handler.on(table.getElement(), 'copy', async (e: KeyboardEvent) => {\n if (table.keyboardOptions?.copySelected) {\n eventManager.handleCopy(e);\n }\n });\n handler.on(table.getElement(), 'cut', async (e: KeyboardEvent) => {\n if (table.keyboardOptions?.cutSelected) {\n eventManager.handleCut(e);\n }\n });\n handler.on(table.getElement(), 'paste', async (e: any) => {\n if (table.keyboardOptions?.pasteValueToCell) {\n eventManager.handlePaste(e);\n }\n });\n\n handler.on(table.getElement(), 'contextmenu', (e: any) => {\n if (table.eventOptions?.preventDefaultContextMenu !== false) {\n e.preventDefault();\n } else {\n // default context menu will cause pointerup event can not trigger\n // call manually\n globalPointerupCallback(e);\n }\n });\n\n if (!table.options.canvas) {\n handler.on(table.getContainer(), 'resize', e => {\n if (table.isReleased) {\n return;\n }\n if (e.width === 0 && e.height === 0) {\n // 临时绕行解决因为display设置为none产生的问题\n return;\n }\n if (\n table.autoFillWidth ||\n table.autoFillHeight ||\n table.widthMode === 'adaptive' ||\n table.heightMode === 'adaptive'\n ) {\n table.editorManager?.completeEdit();\n }\n if (!isValid(table.options.pixelRatio)) {\n table.setPixelRatio(getPixelRatio());\n }\n if (!e.windowSizeNotChange) {\n table.resize();\n }\n });\n }\n\n // 有被阻止冒泡的场景 就触发不到这里的事件了 所以这个LastBodyPointerXY变量的赋值在scrollbar的down事件也进行了处理\n const globalPointerdownCallback = (e: MouseEvent) => {\n if (table.isReleased) {\n return;\n }\n // console.log('body pointerdown');\n table.eventManager.LastBodyPointerXY = { x: e.x, y: e.y };\n table.eventManager.isDown = true;\n\n const target = e.target as HTMLElement;\n if (\n !table.getElement().contains(target) &&\n !table.internalProps.menuHandler.containElement(target) &&\n (!table.options.customConfig?.shouldTreatAsClickOnTable ||\n (table.options.customConfig?.shouldTreatAsClickOnTable &&\n !table.options.customConfig?.shouldTreatAsClickOnTable(e)))\n ) {\n // 如果点击到表格外部的dom\n const isCompleteEdit = (table as ListTableAPI).editorManager?.completeEdit(e);\n getPromiseValue<boolean>(isCompleteEdit, isCompleteEdit => {\n if (isCompleteEdit === false) {\n // 如果没有正常退出编辑状态 则不执行下面的逻辑 如选择其他单元格的逻辑\n return;\n }\n //点击到表格外部不需要取消选中状态\n if (table.options.select?.outsideClickDeselect) {\n const isHasSelected = !!stateManager.select.ranges?.length;\n eventManager.dealTableSelect();\n stateManager.endSelectCells(true, isHasSelected);\n }\n });\n table.scenegraph.updateChartState(null, undefined);\n table.scenegraph.deactivateChart(-1, -1, true);\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointerdown',\n env: 'vglobal',\n callback: globalPointerdownCallback\n });\n vglobal.addEventListener('pointerdown', globalPointerdownCallback);\n\n const globalPointerupOutsideCallback = (e: MouseEvent) => {\n // console.log('pointerupoutside');\n // const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n if (stateManager.menu.isShow) {\n setTimeout(() => {\n // conside page scroll\n if (!table.internalProps.menuHandler.pointInMenuElement(e.clientX, e.clientY)) {\n stateManager.menu.isShow && stateManager.hideMenu();\n }\n }, 0);\n }\n // 同pointerup中的逻辑\n if (stateManager.isResizeCol()) {\n endResizeCol(table);\n } else if (stateManager.isResizeRow()) {\n endResizeRow(table);\n } else if (stateManager.isMoveCol()) {\n const endMoveColSuccess = table.stateManager.endMoveCol();\n fireMoveColEventListeners(table, endMoveColSuccess, e);\n } else if (stateManager.isSelecting()) {\n if (table.stateManager.select?.ranges?.length) {\n const lastCol = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end.col;\n const lastRow = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end.row;\n table.stateManager.endSelectCells();\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END)) {\n const cellsEvent: MousePointerMultiCellEvent = {\n event: e,\n cells: [],\n col: lastCol,\n row: lastRow,\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,\n target: undefined\n };\n cellsEvent.cells = table.getSelectedCellInfos();\n table.fireListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END, cellsEvent);\n }\n }\n }\n };\n\n const globalPointerupCallback = (e: MouseEvent) => {\n if (table.isReleased) {\n return;\n }\n const target = e.target as HTMLElement;\n\n if (target !== table.canvas) {\n globalPointerupOutsideCallback(e);\n }\n\n table.eventManager.LastBodyPointerXY = null;\n // console.log('body pointerup', table.eventManager.isDown, table.eventManager.isDraging);\n table.eventManager.isDown = false;\n table.eventManager.isDraging = false;\n table.eventManager.inertiaScroll.endInertia();\n if (stateManager.interactionState === 'grabing' && stateManager.isResizeCol()) {\n endResizeCol(table);\n } else if (stateManager.interactionState === 'grabing' && stateManager.isResizeRow()) {\n endResizeRow(table);\n } else if (stateManager.isMoveCol()) {\n const endMoveColSuccess = table.stateManager.endMoveCol();\n fireMoveColEventListeners(table, endMoveColSuccess, e);\n } else if (table.editorManager?.editingEditor) {\n if (!table.getElement().contains(target)) {\n // 如果点击到表格外部的dom\n const isCompleteEdit = (table as ListTableAPI).editorManager?.completeEdit(e);\n getPromiseValue<boolean>(isCompleteEdit, (isCompleteEdit: boolean) => {\n if (isCompleteEdit === false) {\n // 如果没有正常退出编辑状态 则不执行下面的逻辑 如选择其他单元格的逻辑\n return;\n }\n stateManager.updateInteractionState(InteractionState.default);\n eventManager.dealTableHover();\n });\n }\n }\n stateManager.updateInteractionState(InteractionState.default);\n };\n eventManager.globalEventListeners.push({\n name: 'pointerup',\n env: 'vglobal',\n callback: globalPointerupCallback\n });\n vglobal.addEventListener('pointerup', globalPointerupCallback);\n\n const globalPointermoveCallback = (e: MouseEvent) => {\n if (table.eventManager.isDown && table.eventManager.LastBodyPointerXY) {\n const lastX = table.eventManager.LastBodyPointerXY?.x ?? e.x;\n const lastY = table.eventManager.LastBodyPointerXY?.y ?? e.y;\n if (Math.abs(lastX - e.x) > 1 || Math.abs(lastY - e.y) > 1) {\n table.eventManager.isDraging = true;\n }\n }\n // 注释掉。因为: 这里pointermove太敏感了 点击快的时候 可能动了1px这里也会执行到 就影响到下面选中不触发的问题。下面pointermove就有这段逻辑,这里先去掉\n // if (eventManager.touchSetTimeout) {\n // clearTimeout(eventManager.touchSetTimeout);\n // console.log('eventManager.touchSetTimeout', eventManager.touchSetTimeout);\n // eventManager.touchSetTimeout = undefined;\n // }\n const { x, y } = table._getMouseAbstractPoint(e);\n // if (stateManager.interactionState === InteractionState.scrolling) {\n // return;\n // }\n if (stateManager.interactionState === InteractionState.grabing) {\n if (stateManager.isResizeCol()) {\n eventManager.dealColumnResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN, {\n col: table.stateManager.columnResize.col,\n colWidth: table.getColWidth(table.stateManager.columnResize.col)\n });\n }\n } else if (stateManager.isResizeRow()) {\n eventManager.dealRowResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_ROW)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_ROW, {\n row: table.stateManager.rowResize.row,\n rowHeight: table.getRowHeight(table.stateManager.rowResize.row)\n });\n }\n } else if (stateManager.isMoveCol()) {\n eventManager.dealColumnMover(x, y, e);\n }\n }\n const isSelecting = table.stateManager.isSelecting();\n\n if (\n eventManager._enableTableScroll &&\n eventManager.isDraging &&\n isSelecting &&\n table.stateManager.select.ranges?.length > 0\n ) {\n // 检测鼠标是否离开了table\n const drawRange = table.getDrawRange();\n // const element = table.getElement();\n // const { x: rootLeft, y: rootTop, width: rootWidth } = element.getBoundingClientRect();\n // const tableLeft = drawRange.left + rootLeft;\n // const tableTop = drawRange.top + rootTop;\n // const tableRight = tableLeft + drawRange.width;\n // const tableBottom = tableTop + drawRange.height;\n // console.log('x, y', x, y);\n const topFrozenRowHeight = table.getFrozenRowsHeight();\n const bottomFrozenRowHeight = table.getBottomFrozenRowsHeight();\n const leftFrozenColsWidth = table.getFrozenColsWidth();\n const rightFrozenColsWidth = table.getRightFrozenColsWidth();\n const startCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].start;\n if (table.isSeriesNumber(startCell.col, startCell.row)) {\n //如果是鼠标落到了序号列 不自动滚动\n return;\n }\n const endCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end;\n const canScrollY =\n (table.isFrozenRow(startCell.row) === false || table.isFrozenRow(endCell.row) === false) &&\n table.getAllRowsHeight() > table.tableNoFrameHeight;\n const canScrollX =\n (table.isFrozenColumn(startCell.col) === false || table.isFrozenColumn(endCell.col) === false) &&\n table.getAllColsWidth() > table.tableNoFrameWidth;\n if (\n ((y > drawRange.bottom - bottomFrozenRowHeight || y < drawRange.top + topFrozenRowHeight) && canScrollY) ||\n ((x > drawRange.right - rightFrozenColsWidth || x < drawRange.left + leftFrozenColsWidth) && canScrollX)\n ) {\n table.eventManager.scrollXSpeed = 0;\n table.eventManager.scrollYSpeed = 0;\n let bottom = false;\n let top = false;\n let right = false;\n let left = false;\n if (\n y > drawRange.bottom - bottomFrozenRowHeight &&\n canScrollY &&\n table.scrollTop + table.tableNoFrameHeight < table.getAllRowsHeight()\n ) {\n bottom = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.bottom + bottomFrozenRowHeight) / 50;\n } else if (y < drawRange.top + topFrozenRowHeight && canScrollY && table.scrollTop > 0) {\n top = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.top - topFrozenRowHeight) / 50;\n }\n\n if (\n x > drawRange.right - rightFrozenColsWidth &&\n canScrollX &&\n table.scrollLeft + table.tableNoFrameWidth < table.getAllColsWidth()\n ) {\n right = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.right + rightFrozenColsWidth) / 50;\n } else if (x < drawRange.left + leftFrozenColsWidth && canScrollX && table.scrollLeft > 0) {\n left = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.left - leftFrozenColsWidth) / 50;\n }\n table.eventManager.inertiaScroll.startInertia(\n table.eventManager.scrollXSpeed,\n table.eventManager.scrollYSpeed,\n 1\n );\n table.eventManager.inertiaScroll.setScrollHandle((dx: number, dy: number) => {\n handleWhell({ deltaX: -dx, deltaY: -dy } as any, table.stateManager, false);\n\n let selectX: number;\n let selectY: number;\n const frozenOffset = table.getFrozenColsOffset?.() ?? 0;\n\n if (bottom) {\n selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20;\n } else if (top) {\n selectY = table.scrollTop + topFrozenRowHeight + 20;\n }\n\n if (right) {\n selectX = table.scrollLeft + frozenOffset + drawRange.width - rightFrozenColsWidth - 20;\n } else if (left) {\n selectX = table.scrollLeft + frozenOffset + leftFrozenColsWidth + 20;\n }\n\n let considerFrozenY = false;\n let considerFrozenX = false;\n if (!right && !left) {\n if (\n (x > table.tableNoFrameWidth - table.getRightFrozenColsWidth() && x < table.tableNoFrameWidth) ||\n (x > 0 && x < table.getFrozenColsWidth())\n ) {\n selectX = x;\n considerFrozenX = true;\n } else {\n selectX = table.scrollLeft + frozenOffset + x;\n }\n }\n if (!bottom && !top) {\n if (\n (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight) ||\n (y > 0 && y < table.getFrozenRowsHeight())\n ) {\n selectY = y;\n considerFrozenY = true;\n } else {\n selectY = table.scrollTop + y;\n }\n }\n table.stateManager.updateInteractionState(InteractionState.grabing);\n const targetCol = table.getTargetColAtConsiderRightFrozen(selectX, considerFrozenX);\n const targetRow = table.getTargetRowAtConsiderBottomFrozen(selectY, considerFrozenY);\n if (!table.options.select?.disableDragSelect && isValid(targetCol) && isValid(targetRow)) {\n if (isCellDisableSelect(table, targetCol.col, targetRow.row)) {\n return;\n }\n table.stateManager.updateSelectPos(\n table.stateManager.select.selectInline === 'row' ? table.colCount - 1 : targetCol.col,\n table.stateManager.select.selectInline === 'col' ? table.rowCount - 1 : targetRow.row,\n false,\n false,\n false,\n false\n );\n }\n });\n } else if (table.eventManager.inertiaScroll.isInertiaScrolling()) {\n table.eventManager.inertiaScroll.endInertia();\n } else {\n table.eventManager.scrollYSpeed = 0;\n }\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointermove',\n env: 'vglobal',\n callback: globalPointermoveCallback\n });\n vglobal.addEventListener('pointermove', globalPointermoveCallback);\n}\n"]}