@visactor/vtable 1.19.9-alpha.3 → 1.20.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/cjs/ListTable.d.ts +8 -2
  2. package/cjs/ListTable.js +58 -11
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.d.ts +4 -1
  5. package/cjs/PivotChart.js +8 -3
  6. package/cjs/PivotChart.js.map +1 -1
  7. package/cjs/PivotTable.d.ts +4 -1
  8. package/cjs/PivotTable.js +8 -3
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/core/BaseTable.d.ts +14 -1
  11. package/cjs/core/BaseTable.js +121 -28
  12. package/cjs/core/BaseTable.js.map +1 -1
  13. package/cjs/core/TABLE_EVENT_TYPE.d.ts +4 -0
  14. package/cjs/core/TABLE_EVENT_TYPE.js +5 -1
  15. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  16. package/cjs/core/animation.js.map +1 -1
  17. package/cjs/core/group-helper.d.ts +3 -1
  18. package/cjs/core/group-helper.js +8 -4
  19. package/cjs/core/group-helper.js.map +1 -1
  20. package/cjs/core/utils/get-cell-position.js +2 -2
  21. package/cjs/core/utils/get-cell-position.js.map +1 -1
  22. package/cjs/data/DataSource.d.ts +1 -0
  23. package/cjs/data/DataSource.js +21 -12
  24. package/cjs/data/DataSource.js.map +1 -1
  25. package/cjs/edit/edit-manager.js +5 -4
  26. package/cjs/edit/edit-manager.js.map +1 -1
  27. package/cjs/event/drill.js +2 -1
  28. package/cjs/event/event.d.ts +17 -0
  29. package/cjs/event/event.js +238 -4
  30. package/cjs/event/event.js.map +1 -1
  31. package/cjs/event/listener/container-dom.js +8 -153
  32. package/cjs/event/listener/container-dom.js.map +1 -1
  33. package/cjs/event/listener/scroll-bar.js +1 -1
  34. package/cjs/event/listener/scroll-bar.js.map +1 -1
  35. package/cjs/event/listener/table-group.js +27 -25
  36. package/cjs/event/listener/table-group.js.map +1 -1
  37. package/cjs/index.d.ts +1 -1
  38. package/cjs/index.js +1 -1
  39. package/cjs/index.js.map +1 -1
  40. package/cjs/layout/pivot-header-layout.js +1 -1
  41. package/cjs/layout/pivot-layout.js +2 -0
  42. package/cjs/layout/row-height-map.js +1 -1
  43. package/cjs/layout/simple-header-layout.js +1 -1
  44. package/cjs/layout/tree-helper.js +1 -1
  45. package/cjs/plugins/custom-cell-style.js +1 -2
  46. package/cjs/plugins/index.js +1 -1
  47. package/cjs/plugins/interface.js +1 -1
  48. package/cjs/plugins/invert-highlight.js +1 -1
  49. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  50. package/cjs/plugins/plugin-manager.js +1 -1
  51. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +1 -4
  52. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  53. package/cjs/scenegraph/graphic/contributions/chart-render.js +1 -4
  54. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  55. package/cjs/scenegraph/graphic/contributions/vchart-graphic-picker.js +1 -7
  56. package/cjs/scenegraph/graphic/contributions/vchart-graphic-picker.js.map +1 -1
  57. package/cjs/scenegraph/group-creater/cell-helper.js +2 -1
  58. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  59. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  60. package/cjs/scenegraph/layout/compute-col-width.js +3 -1
  61. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  62. package/cjs/scenegraph/layout/frozen.js +7 -4
  63. package/cjs/scenegraph/layout/frozen.js.map +1 -1
  64. package/cjs/scenegraph/scenegraph.d.ts +6 -2
  65. package/cjs/scenegraph/scenegraph.js +31 -7
  66. package/cjs/scenegraph/scenegraph.js.map +1 -1
  67. package/cjs/scenegraph/select/create-select-border.d.ts +2 -0
  68. package/cjs/scenegraph/select/create-select-border.js +2 -2
  69. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  70. package/cjs/scenegraph/select/update-custom-select-border.d.ts +6 -0
  71. package/cjs/scenegraph/select/update-custom-select-border.js +69 -0
  72. package/cjs/scenegraph/select/update-custom-select-border.js.map +1 -0
  73. package/cjs/scenegraph/select/update-select-border.js +4 -12
  74. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  75. package/cjs/scenegraph/utils/cell-pos.d.ts +12 -0
  76. package/cjs/scenegraph/utils/cell-pos.js +26 -1
  77. package/cjs/scenegraph/utils/cell-pos.js.map +1 -1
  78. package/cjs/scenegraph/utils/update-container.d.ts +1 -0
  79. package/cjs/scenegraph/utils/update-container.js +8 -1
  80. package/cjs/scenegraph/utils/update-container.js.map +1 -1
  81. package/cjs/state/select/custom-select.d.ts +2 -2
  82. package/cjs/state/select/custom-select.js +2 -14
  83. package/cjs/state/select/custom-select.js.map +1 -1
  84. package/cjs/state/select/update-position.js +1 -1
  85. package/cjs/state/select/update-position.js.map +1 -1
  86. package/cjs/state/state.d.ts +4 -7
  87. package/cjs/state/state.js +14 -2
  88. package/cjs/state/state.js.map +1 -1
  89. package/cjs/themes/theme-define.js +1 -1
  90. package/cjs/themes/theme-define.js.map +1 -1
  91. package/cjs/tools/style.d.ts +3 -1
  92. package/cjs/tools/style.js +23 -2
  93. package/cjs/tools/style.js.map +1 -1
  94. package/cjs/ts-types/base-table.d.ts +6 -0
  95. package/cjs/ts-types/base-table.js.map +1 -1
  96. package/cjs/ts-types/events.d.ts +21 -1
  97. package/cjs/ts-types/events.js.map +1 -1
  98. package/cjs/ts-types/new-data-set.d.ts +1 -0
  99. package/cjs/ts-types/new-data-set.js.map +1 -1
  100. package/cjs/ts-types/style-define.d.ts +6 -0
  101. package/cjs/ts-types/style-define.js.map +1 -1
  102. package/cjs/ts-types/table-engine.d.ts +3 -0
  103. package/cjs/ts-types/table-engine.js.map +1 -1
  104. package/cjs/vrender.js.map +1 -1
  105. package/dist/vtable.js +2402 -465
  106. package/dist/vtable.min.js +2 -2
  107. package/es/ListTable.d.ts +8 -2
  108. package/es/ListTable.js +59 -9
  109. package/es/ListTable.js.map +1 -1
  110. package/es/PivotChart.d.ts +4 -1
  111. package/es/PivotChart.js +8 -3
  112. package/es/PivotChart.js.map +1 -1
  113. package/es/PivotTable.d.ts +4 -1
  114. package/es/PivotTable.js +8 -3
  115. package/es/PivotTable.js.map +1 -1
  116. package/es/core/BaseTable.d.ts +14 -1
  117. package/es/core/BaseTable.js +116 -24
  118. package/es/core/BaseTable.js.map +1 -1
  119. package/es/core/TABLE_EVENT_TYPE.d.ts +4 -0
  120. package/es/core/TABLE_EVENT_TYPE.js +5 -1
  121. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  122. package/es/core/animation.js +1 -1
  123. package/es/core/animation.js.map +1 -1
  124. package/es/core/group-helper.d.ts +3 -1
  125. package/es/core/group-helper.js +8 -4
  126. package/es/core/group-helper.js.map +1 -1
  127. package/es/core/utils/get-cell-position.js +2 -2
  128. package/es/core/utils/get-cell-position.js.map +1 -1
  129. package/es/data/DataSource.d.ts +1 -0
  130. package/es/data/DataSource.js +21 -12
  131. package/es/data/DataSource.js.map +1 -1
  132. package/es/edit/edit-manager.js +5 -4
  133. package/es/edit/edit-manager.js.map +1 -1
  134. package/es/event/drill.js +2 -1
  135. package/es/event/event.d.ts +17 -0
  136. package/es/event/event.js +240 -3
  137. package/es/event/event.js.map +1 -1
  138. package/es/event/listener/container-dom.js +9 -154
  139. package/es/event/listener/container-dom.js.map +1 -1
  140. package/es/event/listener/scroll-bar.js +1 -1
  141. package/es/event/listener/scroll-bar.js.map +1 -1
  142. package/es/event/listener/table-group.js +27 -25
  143. package/es/event/listener/table-group.js.map +1 -1
  144. package/es/index.d.ts +1 -1
  145. package/es/index.js +1 -1
  146. package/es/index.js.map +1 -1
  147. package/es/layout/pivot-header-layout.js +1 -1
  148. package/es/layout/pivot-layout.js +2 -0
  149. package/es/layout/row-height-map.js +1 -1
  150. package/es/layout/simple-header-layout.js +1 -1
  151. package/es/layout/tree-helper.js +1 -1
  152. package/es/plugins/custom-cell-style.js +1 -2
  153. package/es/plugins/index.js +1 -1
  154. package/es/plugins/interface.js +1 -1
  155. package/es/plugins/invert-highlight.js +1 -1
  156. package/es/plugins/list-tree-stick-cell.js +1 -1
  157. package/es/plugins/plugin-manager.js +1 -1
  158. package/es/scenegraph/graphic/contributions/chart-render-helper.js +1 -4
  159. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  160. package/es/scenegraph/graphic/contributions/chart-render.js +1 -4
  161. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  162. package/es/scenegraph/graphic/contributions/vchart-graphic-picker.js +1 -7
  163. package/es/scenegraph/graphic/contributions/vchart-graphic-picker.js.map +1 -1
  164. package/es/scenegraph/group-creater/cell-helper.js +2 -1
  165. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  166. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  167. package/es/scenegraph/layout/compute-col-width.js +3 -1
  168. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  169. package/es/scenegraph/layout/frozen.js +7 -4
  170. package/es/scenegraph/layout/frozen.js.map +1 -1
  171. package/es/scenegraph/scenegraph.d.ts +6 -2
  172. package/es/scenegraph/scenegraph.js +29 -8
  173. package/es/scenegraph/scenegraph.js.map +1 -1
  174. package/es/scenegraph/select/create-select-border.d.ts +2 -0
  175. package/es/scenegraph/select/create-select-border.js +1 -1
  176. package/es/scenegraph/select/create-select-border.js.map +1 -1
  177. package/es/scenegraph/select/update-custom-select-border.d.ts +6 -0
  178. package/es/scenegraph/select/update-custom-select-border.js +63 -0
  179. package/es/scenegraph/select/update-custom-select-border.js.map +1 -0
  180. package/es/scenegraph/select/update-select-border.js +4 -11
  181. package/es/scenegraph/select/update-select-border.js.map +1 -1
  182. package/es/scenegraph/utils/cell-pos.d.ts +12 -0
  183. package/es/scenegraph/utils/cell-pos.js +24 -0
  184. package/es/scenegraph/utils/cell-pos.js.map +1 -1
  185. package/es/scenegraph/utils/update-container.d.ts +1 -0
  186. package/es/scenegraph/utils/update-container.js +6 -0
  187. package/es/scenegraph/utils/update-container.js.map +1 -1
  188. package/es/state/select/custom-select.d.ts +2 -2
  189. package/es/state/select/custom-select.js +3 -15
  190. package/es/state/select/custom-select.js.map +1 -1
  191. package/es/state/select/update-position.js +1 -1
  192. package/es/state/select/update-position.js.map +1 -1
  193. package/es/state/state.d.ts +4 -7
  194. package/es/state/state.js +14 -2
  195. package/es/state/state.js.map +1 -1
  196. package/es/themes/theme-define.js +1 -1
  197. package/es/themes/theme-define.js.map +1 -1
  198. package/es/tools/style.d.ts +3 -1
  199. package/es/tools/style.js +20 -0
  200. package/es/tools/style.js.map +1 -1
  201. package/es/ts-types/base-table.d.ts +6 -0
  202. package/es/ts-types/base-table.js.map +1 -1
  203. package/es/ts-types/events.d.ts +21 -1
  204. package/es/ts-types/events.js.map +1 -1
  205. package/es/ts-types/new-data-set.d.ts +1 -0
  206. package/es/ts-types/new-data-set.js.map +1 -1
  207. package/es/ts-types/style-define.d.ts +6 -0
  208. package/es/ts-types/style-define.js.map +1 -1
  209. package/es/ts-types/table-engine.d.ts +3 -0
  210. package/es/ts-types/table-engine.js.map +1 -1
  211. package/es/vrender.js.map +1 -1
  212. package/package.json +8 -8
@@ -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 } 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 constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindEvent();\n }\n\n bindEvent() {\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 const { editCellTrigger = 'doubleclick' } = table.options;\n\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 }\n });\n\n this.listenersId.push(doubleClickEventId, clickEventId);\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) {\n if (this.editingEditor) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\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 //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 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\n const maybePromiseOrValue = this.editingEditor.validateValue?.(newValue, oldValue, this.editCell, this.table);\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.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 } 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 constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindEvent();\n }\n\n bindEvent() {\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 const { editCellTrigger = 'doubleclick' } = table.options;\n\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 }\n });\n\n this.listenersId.push(doubleClickEventId, clickEventId);\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) {\n if (this.editingEditor) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\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 //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 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"]}
package/es/event/drill.js CHANGED
@@ -28,4 +28,5 @@ export function checkHaveDrill(table) {
28
28
  if ("string" != typeof column && (column.drillDown || column.drillUp)) return !0;
29
29
  }
30
30
  return !1;
31
- }
31
+ }
32
+ //# sourceMappingURL=drill.js.map
@@ -1,4 +1,5 @@
1
1
  import type { FederatedPointerEvent, Gesture, IEventTarget } from './../vrender';
2
+ import type { CellInfo } from '../ts-types';
2
3
  import type { BaseTableAPI } from '../ts-types/base-table';
3
4
  import { type SceneEvent } from './util';
4
5
  import { InertiaScroll } from './scroll';
@@ -37,6 +38,11 @@ export declare class EventManager {
37
38
  inertiaScroll: InertiaScroll;
38
39
  bindSparklineHoverEvent: boolean;
39
40
  _enableTableScroll: boolean;
41
+ cutWaitPaste: boolean;
42
+ private clipboardCheckTimer;
43
+ private cutOperationTime;
44
+ lastClipboardContent: string;
45
+ cutCellRange: CellInfo[][] | null;
40
46
  constructor(table: BaseTableAPI);
41
47
  bindOuterEvent(): void;
42
48
  updateEventBinder(): void;
@@ -61,4 +67,15 @@ export declare class EventManager {
61
67
  release(): void;
62
68
  enableScroll(): void;
63
69
  disableScroll(): void;
70
+ handleCopy(e: KeyboardEvent, isCut?: boolean): Promise<void>;
71
+ handleCut(e: KeyboardEvent): Promise<void>;
72
+ handlePaste(e: KeyboardEvent): void;
73
+ private executePaste;
74
+ private clearCutArea;
75
+ private checkClipboardChanged;
76
+ private saveClipboardContent;
77
+ private pasteHtmlToTable;
78
+ private _pasteValue;
79
+ private pasteTextToTable;
80
+ private handlePasteValues;
64
81
  }
package/es/event/event.js CHANGED
@@ -1,3 +1,29 @@
1
+ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
2
+ return new (P || (P = Promise))((function(resolve, reject) {
3
+ function fulfilled(value) {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ }
10
+ function rejected(value) {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function step(result) {
18
+ var value;
19
+ result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
20
+ resolve(value);
21
+ }))).then(fulfilled, rejected);
22
+ }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ }));
25
+ };
26
+
1
27
  import { RichText, vglobal } from "./../vrender";
2
28
 
3
29
  import { TABLE_EVENT_TYPE } from "../core/TABLE_EVENT_TYPE";
@@ -40,11 +66,16 @@ import { bindDropdownMenuEvent } from "./self-event-listener/base-table/dropdown
40
66
 
41
67
  import { bindDBClickAutoColumnWidthEvent } from "./self-event-listener/base-table/dbclick-auto-column-width";
42
68
 
69
+ import { browser } from "../tools/helper";
70
+
71
+ import { clearActiveCellRangeState, setActiveCellRangeState } from "../tools/style";
72
+
43
73
  export class EventManager {
44
74
  constructor(table) {
45
75
  this.isDown = !1, this.isDraging = !1, this.globalEventListeners = [], this._enableTableScroll = !0,
46
- this.table = table, this.handleTextStickBindId = [], this.inertiaScroll = new InertiaScroll(table.stateManager),
47
- "node" === Env.mode || table.options.disableInteraction || (this.bindOuterEvent(),
76
+ this.cutWaitPaste = !1, this.clipboardCheckTimer = null, this.cutOperationTime = 0,
77
+ this.lastClipboardContent = "", this.cutCellRange = null, this.table = table, this.handleTextStickBindId = [],
78
+ this.inertiaScroll = new InertiaScroll(table.stateManager), "node" === Env.mode || table.options.disableInteraction || (this.bindOuterEvent(),
48
79
  setTimeout((() => {
49
80
  this.bindSelfEvent();
50
81
  }), 0));
@@ -100,7 +131,7 @@ export class EventManager {
100
131
  }
101
132
  return !1;
102
133
  }
103
- return !this.table.isPivotChart() || "axis-label" !== (null === (_b = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target.name) && "chart" !== (null === (_c = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _c ? void 0 : _c.target.type) ? (this.table.stateManager.updateSelectPos(eventArgs.col, eventArgs.row, eventArgs.event.shiftKey, eventArgs.event.ctrlKey || eventArgs.event.metaKey, !1, !isSelectMoving && (null === (_e = null === (_d = this.table.options.select) || void 0 === _d ? void 0 : _d.makeSelectCellVisible) || void 0 === _e || _e)),
134
+ return !this.table.isPivotChart() || "axis-label" !== (null === (_b = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target.name) && "chart" !== (null === (_c = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _c ? void 0 : _c.target.type) ? (this.table.stateManager.updateSelectPos("row" === this.table.stateManager.select.selectInline ? this.table.colCount - 1 : eventArgs.col, "col" === this.table.stateManager.select.selectInline ? this.table.rowCount - 1 : eventArgs.row, eventArgs.event.shiftKey, eventArgs.event.ctrlKey || eventArgs.event.metaKey, !1, !isSelectMoving && (null === (_e = null === (_d = this.table.options.select) || void 0 === _d ? void 0 : _d.makeSelectCellVisible) || void 0 === _e || _e)),
104
135
  !0) : (this.table.stateManager.updateSelectPos(-1, -1), !1);
105
136
  }
106
137
  return !1;
@@ -234,5 +265,211 @@ export class EventManager {
234
265
  disableScroll() {
235
266
  this._enableTableScroll = !1;
236
267
  }
268
+ handleCopy(e, isCut = !1) {
269
+ var _a, _b;
270
+ return __awaiter(this, void 0, void 0, (function*() {
271
+ const table = this.table;
272
+ !isCut && (this.cutWaitPaste = !1);
273
+ const data = this.table.getCopyValue();
274
+ if (isValid(data)) {
275
+ e.preventDefault();
276
+ const permissionState = yield navigator.permissions.query({
277
+ name: "clipboard-write"
278
+ });
279
+ if ((null === (_a = navigator.clipboard) || void 0 === _a ? void 0 : _a.write) && "granted" === permissionState.state) {
280
+ const setDataToHTML = data => {
281
+ const result = [ "<table>" ], META_HEAD = [ '<meta name="author" content="Visactor"/>', '<style type="text/css">td{white-space:normal}br{mso-data-placement:same-cell}</style>' ].join(""), rows = data.split("\r\n");
282
+ return rows.forEach((function(rowCells, rowIndex) {
283
+ const cells = rowCells.split("\t"), rowValues = [];
284
+ 0 === rowIndex && result.push("<tbody>"), cells.forEach((function(cell, cellIndex) {
285
+ const parsedCellData = cell ? cell.toString().replace(/&/g, "&amp;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\n/g, "<br>").replace(/(<br(\s*|\/)>(\r\n|\n)?|\r\n|\n)/g, "<br>\r\n").replace(/\x20{2,}/gi, (substring => `<span style="mso-spacerun: yes">${"&nbsp;".repeat(substring.length - 1)} </span>`)).replace(/\t/gi, "&#9;") : " ";
286
+ rowValues.push(`<td>${parsedCellData}</td>`);
287
+ })), result.push("<tr>", ...rowValues, "</tr>"), rowIndex === rows.length - 1 && result.push("</tbody>");
288
+ })), result.push("</table>"), [ META_HEAD, result.join("") ].join("");
289
+ }, dataHTML = setDataToHTML(data);
290
+ navigator.clipboard.write([ new ClipboardItem({
291
+ "text/html": new Blob([ dataHTML ], {
292
+ type: "text/html"
293
+ }),
294
+ "text/plain": new Blob([ data ], {
295
+ type: "text/plain"
296
+ })
297
+ }) ]);
298
+ } else browser.IE ? window.clipboardData.setData("Text", data) : e.clipboardData.setData("text/plain", data);
299
+ table.fireListeners(TABLE_EVENT_TYPE.COPY_DATA, {
300
+ cellRange: table.stateManager.select.ranges,
301
+ copyData: data,
302
+ isCut: isCut
303
+ });
304
+ }
305
+ (null === (_b = table.keyboardOptions) || void 0 === _b ? void 0 : _b.showCopyCellBorder) && (setActiveCellRangeState(table),
306
+ table.clearSelected());
307
+ }));
308
+ }
309
+ handleCut(e) {
310
+ return __awaiter(this, void 0, void 0, (function*() {
311
+ this.handleCopy(e, !0), this.cutWaitPaste = !0, this.cutCellRange = this.table.getSelectedCellInfos(),
312
+ this.clipboardCheckTimer && clearTimeout(this.clipboardCheckTimer), this.clipboardCheckTimer = window.setTimeout((() => {
313
+ this.cutWaitPaste && (this.cutWaitPaste = !1, this.cutCellRange = null, this.clipboardCheckTimer = null);
314
+ }), 3e4), this.saveClipboardContent();
315
+ }));
316
+ }
317
+ handlePaste(e) {
318
+ this.cutWaitPaste ? this.checkClipboardChanged().then((changed => {
319
+ this.executePaste(e), changed || this.clearCutArea(this.table), this.cutWaitPaste && (this.cutWaitPaste = !1,
320
+ this.cutCellRange = null, this.clipboardCheckTimer && (clearTimeout(this.clipboardCheckTimer),
321
+ this.clipboardCheckTimer = null));
322
+ })).catch((() => {
323
+ this.executePaste(e), this.cutWaitPaste && (this.cutWaitPaste = !1, this.cutCellRange = null,
324
+ this.clipboardCheckTimer && (clearTimeout(this.clipboardCheckTimer), this.clipboardCheckTimer = null));
325
+ })) : this.executePaste(e);
326
+ }
327
+ executePaste(e) {
328
+ var _a, _b, _c, _d;
329
+ return __awaiter(this, void 0, void 0, (function*() {
330
+ const table = this.table;
331
+ if (table.changeCellValues) {
332
+ if (null === (_a = table.editorManager) || void 0 === _a ? void 0 : _a.editingEditor) return;
333
+ if ((null === (_b = table.stateManager.select.ranges) || void 0 === _b ? void 0 : _b.length) > 0) if (null === (_c = navigator.clipboard) || void 0 === _c ? void 0 : _c.read) navigator.clipboard.read().then((clipboardItems => {
334
+ for (const item of clipboardItems) item.types.includes("text/html") ? this.pasteHtmlToTable(item) : 1 === item.types.length && "text/plain" === item.types[0] && this.pasteTextToTable(item);
335
+ })); else {
336
+ const ranges = table.stateManager.select.ranges, col = Math.min(ranges[0].start.col, ranges[0].end.col), row = Math.min(ranges[0].start.row, ranges[0].end.row), rows = (e.clipboardData || window.Clipboard).getData("text").split("\n"), values = [];
337
+ rows.forEach((function(rowCells, rowIndex) {
338
+ const cells = rowCells.split("\t"), rowValues = [];
339
+ values.push(rowValues), cells.forEach((function(cell, cellIndex) {
340
+ cellIndex === cells.length - 1 && (cell = cell.trim()), rowValues.push(cell);
341
+ }));
342
+ }));
343
+ const changedCellResults = yield table.changeCellValues(col, row, values);
344
+ table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA) && table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {
345
+ col: col,
346
+ row: row,
347
+ pasteData: values,
348
+ changedCellResults: changedCellResults
349
+ });
350
+ }
351
+ }
352
+ (null === (_d = table.keyboardOptions) || void 0 === _d ? void 0 : _d.showCopyCellBorder) && clearActiveCellRangeState(table);
353
+ }));
354
+ }
355
+ clearCutArea(table) {
356
+ try {
357
+ const selectCells = this.cutCellRange;
358
+ if (!selectCells || 0 === selectCells.length) return;
359
+ for (let i = 0; i < selectCells.length; i++) for (let j = 0; j < selectCells[i].length; j++) selectCells[i][j] && table.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, void 0);
360
+ } catch (error) {}
361
+ }
362
+ checkClipboardChanged() {
363
+ return __awaiter(this, void 0, void 0, (function*() {
364
+ if (!navigator.clipboard || !navigator.clipboard.readText) return !1;
365
+ try {
366
+ return (yield navigator.clipboard.readText()) !== this.lastClipboardContent;
367
+ } catch (err) {
368
+ return !1;
369
+ }
370
+ }));
371
+ }
372
+ saveClipboardContent() {
373
+ navigator.clipboard && navigator.clipboard.readText && setTimeout((() => {
374
+ navigator.clipboard.readText().then((text => {
375
+ this.lastClipboardContent = text;
376
+ })).catch((err => {}));
377
+ }), 50);
378
+ }
379
+ pasteHtmlToTable(item) {
380
+ const regex = /<tr[^>]*>([\s\S]*?)<\/tr>/g, cellRegex = /<td[^>]*>([\s\S]*?)<\/td>/g, table = this.table, ranges = table.stateManager.select.ranges, selectRangeLength = ranges.length, col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col), row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row), maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col), maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);
381
+ let pasteValuesColCount = 0, pasteValuesRowCount = 0, values = [];
382
+ item.getType("text/html").then((blob => {
383
+ blob.text().then((pastedData => __awaiter(this, void 0, void 0, (function*() {
384
+ var _a, _b;
385
+ if (pastedData && /(<table)|(<TABLE)/g.test(pastedData)) {
386
+ const matches = Array.from(pastedData.matchAll(regex));
387
+ for (const match of matches) {
388
+ const rowContent = match[1], rowValues = Array.from(rowContent.matchAll(cellRegex)).map((cellMatch => cellMatch[1].replace(/(<(?!br)([^>]+)>)/gi, "").replace(/<br(\s*|\/)>[\r\n]?/gim, "\n").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&#9;/gi, "\t").replace(/&nbsp;/g, " ")));
389
+ values.push(rowValues), pasteValuesColCount = Math.max(pasteValuesColCount, null !== (_a = null == rowValues ? void 0 : rowValues.length) && void 0 !== _a ? _a : 0);
390
+ }
391
+ pasteValuesRowCount = null !== (_b = values.length) && void 0 !== _b ? _b : 0, values = this.handlePasteValues(values, pasteValuesRowCount, pasteValuesColCount, maxRow - row + 1, maxCol - col + 1);
392
+ const changedCellResults = yield table.changeCellValues(col, row, values, !0);
393
+ table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA) && table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {
394
+ col: col,
395
+ row: row,
396
+ pasteData: values,
397
+ changedCellResults: changedCellResults
398
+ });
399
+ } else navigator.clipboard.read().then((clipboardItems => {
400
+ for (const item of clipboardItems) item.types.includes("text/plain") && item.getType("text/plain").then((blob => {
401
+ blob.text().then(this._pasteValue);
402
+ }));
403
+ }));
404
+ }))));
405
+ }));
406
+ }
407
+ _pasteValue(pastedData) {
408
+ var _a;
409
+ return __awaiter(this, void 0, void 0, (function*() {
410
+ const table = this.table, ranges = table.stateManager.select.ranges, selectRangeLength = ranges.length, col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col), row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row), maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col), maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);
411
+ let pasteValuesColCount = 0, pasteValuesRowCount = 0, values = [];
412
+ pastedData.split("\n").forEach((function(rowCells, rowIndex) {
413
+ var _a;
414
+ const cells = rowCells.split("\t"), rowValues = [];
415
+ values.push(rowValues), cells.forEach((function(cell, cellIndex) {
416
+ cellIndex === cells.length - 1 && (cell = cell.trim()), rowValues.push(cell);
417
+ })), pasteValuesColCount = Math.max(pasteValuesColCount, null !== (_a = null == rowValues ? void 0 : rowValues.length) && void 0 !== _a ? _a : 0);
418
+ })), pasteValuesRowCount = null !== (_a = values.length) && void 0 !== _a ? _a : 0,
419
+ values = this.handlePasteValues(values, pasteValuesRowCount, pasteValuesColCount, maxRow - row + 1, maxCol - col + 1);
420
+ const changedCellResults = yield table.changeCellValues(col, row, values, !0);
421
+ table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA) && table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {
422
+ col: col,
423
+ row: row,
424
+ pasteData: values,
425
+ changedCellResults: changedCellResults
426
+ });
427
+ }));
428
+ }
429
+ pasteTextToTable(item) {
430
+ const table = this.table, ranges = table.stateManager.select.ranges, selectRangeLength = ranges.length, col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col), row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row), maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col), maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);
431
+ let pasteValuesColCount = 0, pasteValuesRowCount = 0;
432
+ item.getType("text/plain").then((blob => {
433
+ blob.text().then((pastedData => __awaiter(this, void 0, void 0, (function*() {
434
+ var _a;
435
+ const rows = pastedData.replace(/\r(?!\n)/g, "\r\n").split("\r\n");
436
+ let values = [];
437
+ rows.length > 1 && "" === rows[rows.length - 1] && rows.pop(), rows.forEach((function(rowCells, rowIndex) {
438
+ var _a;
439
+ const cells = rowCells.split("\t"), rowValues = [];
440
+ values.push(rowValues), cells.forEach((function(cell, cellIndex) {
441
+ cell.includes("\n") && (cell = cell.replace(/^"(.*)"$/, "$1").replace(/["]*/g, (match => new Array(Math.floor(match.length / 2)).fill('"').join("")))),
442
+ rowValues.push(cell);
443
+ })), pasteValuesColCount = Math.max(pasteValuesColCount, null !== (_a = null == rowValues ? void 0 : rowValues.length) && void 0 !== _a ? _a : 0);
444
+ })), pasteValuesRowCount = null !== (_a = values.length) && void 0 !== _a ? _a : 0,
445
+ values = this.handlePasteValues(values, pasteValuesRowCount, pasteValuesColCount, maxRow - row + 1, maxCol - col + 1);
446
+ const changedCellResults = yield table.changeCellValues(col, row, values, !0);
447
+ table.hasListeners(TABLE_EVENT_TYPE.PASTED_DATA) && table.fireListeners(TABLE_EVENT_TYPE.PASTED_DATA, {
448
+ col: col,
449
+ row: row,
450
+ pasteData: values,
451
+ changedCellResults: changedCellResults
452
+ });
453
+ }))));
454
+ }));
455
+ }
456
+ handlePasteValues(values, rowCount, colCount, selectedRowCount, selectedColCount) {
457
+ if (selectedColCount > colCount || selectedRowCount > rowCount) {
458
+ if (selectedColCount % colCount == 0 && selectedRowCount % rowCount == 0) {
459
+ const toPasteValues = [];
460
+ for (let i = 0; i < selectedRowCount; i++) {
461
+ const rowPasteValue = [];
462
+ toPasteValues.push(rowPasteValue);
463
+ for (let j = 0; j < selectedColCount; j++) {
464
+ const copiedRow = i % rowCount, copiedCol = j % colCount;
465
+ rowPasteValue.push(values[copiedRow][copiedCol]);
466
+ }
467
+ }
468
+ return toPasteValues;
469
+ }
470
+ return values;
471
+ }
472
+ return values;
473
+ }
237
474
  }
238
475
  //# sourceMappingURL=event.js.map