k-vtable 1.0.26 → 1.0.28

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 (211) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +17 -7
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.js +6 -6
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable-all.js +5 -5
  7. package/cjs/PivotTable-all.js.map +1 -1
  8. package/cjs/PivotTable.js +14 -8
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/components/axis/axis.d.ts +5 -3
  11. package/cjs/components/axis/axis.js +20 -14
  12. package/cjs/components/axis/axis.js.map +1 -1
  13. package/cjs/components/axis/get-axis-attributes.d.ts +1 -0
  14. package/cjs/components/axis/get-axis-attributes.js +5 -2
  15. package/cjs/components/axis/get-axis-attributes.js.map +1 -1
  16. package/cjs/components/axis/get-axis-component-size.js +11 -5
  17. package/cjs/components/axis/get-axis-component-size.js.map +1 -1
  18. package/cjs/core/BaseTable.d.ts +3 -3
  19. package/cjs/core/BaseTable.js +16 -13
  20. package/cjs/core/BaseTable.js.map +1 -1
  21. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  22. package/cjs/core/TABLE_EVENT_TYPE.js +3 -1
  23. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  24. package/cjs/data/DataSource.d.ts +1 -1
  25. package/cjs/data/DataSource.js +2 -2
  26. package/cjs/data/DataSource.js.map +1 -1
  27. package/cjs/dataset/dataset.js +13 -4
  28. package/cjs/dataset/dataset.js.map +1 -1
  29. package/cjs/edit/edit-manager.d.ts +3 -2
  30. package/cjs/edit/edit-manager.js +36 -6
  31. package/cjs/edit/edit-manager.js.map +1 -1
  32. package/cjs/event/event.d.ts +9 -0
  33. package/cjs/event/event.js +161 -85
  34. package/cjs/event/event.js.map +1 -1
  35. package/cjs/event/listener/container-dom.js +15 -7
  36. package/cjs/event/listener/container-dom.js.map +1 -1
  37. package/cjs/event/self-event-listener/pivot-chart/axis-hover.js +1 -1
  38. package/cjs/event/self-event-listener/pivot-chart/axis-hover.js.map +1 -1
  39. package/cjs/event/util.d.ts +1 -0
  40. package/cjs/event/util.js +13 -2
  41. package/cjs/event/util.js.map +1 -1
  42. package/cjs/index.d.ts +1 -1
  43. package/cjs/index.js +1 -1
  44. package/cjs/index.js.map +1 -1
  45. package/cjs/layout/chart-helper/get-axis-config.js +40 -25
  46. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  47. package/cjs/layout/chart-helper/get-chart-spec.js +6 -2
  48. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  49. package/cjs/layout/pivot-header-layout.d.ts +4 -1
  50. package/cjs/layout/pivot-header-layout.js +55 -22
  51. package/cjs/layout/pivot-header-layout.js.map +1 -1
  52. package/cjs/plugins/index.js +1 -1
  53. package/cjs/plugins/plugin-manager.d.ts +2 -0
  54. package/cjs/plugins/plugin-manager.js +13 -6
  55. package/cjs/plugins/plugin-manager.js.map +1 -1
  56. package/cjs/scenegraph/component/menu.d.ts +41 -0
  57. package/cjs/scenegraph/component/table-component.d.ts +2 -0
  58. package/cjs/scenegraph/component/table-component.js +39 -9
  59. package/cjs/scenegraph/component/table-component.js.map +1 -1
  60. package/cjs/scenegraph/debug-tool/debug-tool.js +1 -1
  61. package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
  62. package/cjs/scenegraph/graphic/active-cell-chart-list.d.ts +13 -0
  63. package/cjs/scenegraph/graphic/active-cell-chart-list.js +152 -0
  64. package/cjs/scenegraph/graphic/active-cell-chart-list.js.map +1 -0
  65. package/cjs/scenegraph/graphic/chart.d.ts +9 -2
  66. package/cjs/scenegraph/graphic/chart.js +95 -15
  67. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  68. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +2 -1
  69. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  70. package/cjs/scenegraph/graphic/contributions/chart-render.js +3 -3
  71. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  72. package/cjs/scenegraph/group-creater/cell-helper.js +3 -3
  73. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  74. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  75. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  76. package/cjs/scenegraph/layout/compute-col-width.js +1 -1
  77. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  78. package/cjs/scenegraph/layout/frozen.js +4 -4
  79. package/cjs/scenegraph/layout/frozen.js.map +1 -1
  80. package/cjs/scenegraph/layout/update-width.js +1 -1
  81. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  82. package/cjs/scenegraph/refresh-node/update-chart.js +2 -2
  83. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  84. package/cjs/scenegraph/scenegraph.js +9 -2
  85. package/cjs/scenegraph/scenegraph.js.map +1 -1
  86. package/cjs/scenegraph/utils/text-measure.d.ts +38 -0
  87. package/cjs/state/state.js +15 -23
  88. package/cjs/state/state.js.map +1 -1
  89. package/cjs/themes/theme-define.js +22 -16
  90. package/cjs/themes/theme-define.js.map +1 -1
  91. package/cjs/ts-types/base-table.d.ts +5 -3
  92. package/cjs/ts-types/base-table.js.map +1 -1
  93. package/cjs/ts-types/events.d.ts +8 -0
  94. package/cjs/ts-types/events.js.map +1 -1
  95. package/cjs/ts-types/list-table/define/index.d.ts +9 -2
  96. package/cjs/ts-types/list-table/define/index.js.map +1 -1
  97. package/cjs/ts-types/table-engine.d.ts +17 -0
  98. package/cjs/ts-types/table-engine.js.map +1 -1
  99. package/cjs/ts-types/theme.d.ts +12 -4
  100. package/cjs/ts-types/theme.js.map +1 -1
  101. package/cjs/vrender.js.map +1 -1
  102. package/dist/vtable.js +25073 -25724
  103. package/dist/vtable.min.js +2 -2
  104. package/es/ListTable.d.ts +1 -0
  105. package/es/ListTable.js +18 -8
  106. package/es/ListTable.js.map +1 -1
  107. package/es/PivotChart.js +6 -6
  108. package/es/PivotChart.js.map +1 -1
  109. package/es/PivotTable-all.js +5 -3
  110. package/es/PivotTable-all.js.map +1 -1
  111. package/es/PivotTable.js +14 -8
  112. package/es/PivotTable.js.map +1 -1
  113. package/es/components/axis/axis.d.ts +5 -3
  114. package/es/components/axis/axis.js +19 -12
  115. package/es/components/axis/axis.js.map +1 -1
  116. package/es/components/axis/get-axis-attributes.d.ts +1 -0
  117. package/es/components/axis/get-axis-attributes.js +5 -2
  118. package/es/components/axis/get-axis-attributes.js.map +1 -1
  119. package/es/components/axis/get-axis-component-size.js +12 -4
  120. package/es/components/axis/get-axis-component-size.js.map +1 -1
  121. package/es/core/BaseTable.d.ts +3 -3
  122. package/es/core/BaseTable.js +16 -13
  123. package/es/core/BaseTable.js.map +1 -1
  124. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  125. package/es/core/TABLE_EVENT_TYPE.js +3 -1
  126. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  127. package/es/data/DataSource.d.ts +1 -1
  128. package/es/data/DataSource.js +2 -2
  129. package/es/data/DataSource.js.map +1 -1
  130. package/es/dataset/dataset.js +12 -4
  131. package/es/dataset/dataset.js.map +1 -1
  132. package/es/edit/edit-manager.d.ts +3 -2
  133. package/es/edit/edit-manager.js +36 -6
  134. package/es/edit/edit-manager.js.map +1 -1
  135. package/es/event/event.d.ts +9 -0
  136. package/es/event/event.js +161 -85
  137. package/es/event/event.js.map +1 -1
  138. package/es/event/listener/container-dom.js +15 -7
  139. package/es/event/listener/container-dom.js.map +1 -1
  140. package/es/event/self-event-listener/pivot-chart/axis-hover.js +1 -1
  141. package/es/event/self-event-listener/pivot-chart/axis-hover.js.map +1 -1
  142. package/es/event/util.d.ts +1 -0
  143. package/es/event/util.js +11 -0
  144. package/es/event/util.js.map +1 -1
  145. package/es/index.d.ts +1 -1
  146. package/es/index.js +1 -1
  147. package/es/index.js.map +1 -1
  148. package/es/layout/chart-helper/get-axis-config.js +39 -24
  149. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  150. package/es/layout/chart-helper/get-chart-spec.js +5 -3
  151. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  152. package/es/layout/pivot-header-layout.d.ts +4 -1
  153. package/es/layout/pivot-header-layout.js +53 -21
  154. package/es/layout/pivot-header-layout.js.map +1 -1
  155. package/es/plugins/index.js +1 -1
  156. package/es/plugins/plugin-manager.d.ts +2 -0
  157. package/es/plugins/plugin-manager.js +13 -6
  158. package/es/plugins/plugin-manager.js.map +1 -1
  159. package/es/scenegraph/component/menu.d.ts +41 -0
  160. package/es/scenegraph/component/table-component.d.ts +2 -0
  161. package/es/scenegraph/component/table-component.js +39 -9
  162. package/es/scenegraph/component/table-component.js.map +1 -1
  163. package/es/scenegraph/debug-tool/debug-tool.js +1 -1
  164. package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
  165. package/es/scenegraph/graphic/active-cell-chart-list.d.ts +13 -0
  166. package/es/scenegraph/graphic/active-cell-chart-list.js +141 -0
  167. package/es/scenegraph/graphic/active-cell-chart-list.js.map +1 -0
  168. package/es/scenegraph/graphic/chart.d.ts +9 -2
  169. package/es/scenegraph/graphic/chart.js +95 -14
  170. package/es/scenegraph/graphic/chart.js.map +1 -1
  171. package/es/scenegraph/graphic/contributions/chart-render-helper.js +2 -1
  172. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  173. package/es/scenegraph/graphic/contributions/chart-render.js +3 -3
  174. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  175. package/es/scenegraph/group-creater/cell-helper.js +3 -3
  176. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  177. package/es/scenegraph/group-creater/column-helper.js +1 -1
  178. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  179. package/es/scenegraph/layout/compute-col-width.js +1 -1
  180. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  181. package/es/scenegraph/layout/frozen.js +4 -4
  182. package/es/scenegraph/layout/frozen.js.map +1 -1
  183. package/es/scenegraph/layout/update-width.js +1 -1
  184. package/es/scenegraph/layout/update-width.js.map +1 -1
  185. package/es/scenegraph/refresh-node/update-chart.js +2 -2
  186. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  187. package/es/scenegraph/scenegraph.js +9 -2
  188. package/es/scenegraph/scenegraph.js.map +1 -1
  189. package/es/scenegraph/utils/text-measure.d.ts +38 -0
  190. package/es/state/state.js +15 -23
  191. package/es/state/state.js.map +1 -1
  192. package/es/themes/theme-define.js +18 -12
  193. package/es/themes/theme-define.js.map +1 -1
  194. package/es/ts-types/base-table.d.ts +5 -3
  195. package/es/ts-types/base-table.js.map +1 -1
  196. package/es/ts-types/events.d.ts +8 -0
  197. package/es/ts-types/events.js.map +1 -1
  198. package/es/ts-types/list-table/define/index.d.ts +9 -2
  199. package/es/ts-types/list-table/define/index.js.map +1 -1
  200. package/es/ts-types/table-engine.d.ts +17 -0
  201. package/es/ts-types/table-engine.js.map +1 -1
  202. package/es/ts-types/theme.d.ts +12 -4
  203. package/es/ts-types/theme.js.map +1 -1
  204. package/es/vrender.js.map +1 -1
  205. package/package.json +11 -11
  206. package/cjs/layout/pivot-layout.d.ts +0 -1
  207. package/cjs/layout/pivot-layout.js +0 -1
  208. package/cjs/layout/pivot-layout.js.map +0 -1
  209. package/es/layout/pivot-layout.d.ts +0 -1
  210. package/es/layout/pivot-layout.js +0 -1
  211. package/es/layout/pivot-layout.js.map +0 -1
@@ -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: MouseEvent) => {\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 enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;\n table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);\n if (\n (table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor\n ) {\n // 开启了方向键切换编辑单元格 并且当前已经在编辑状态下 切换到下一个需先退出再进入下个单元格的编辑\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\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 table.selectCell(targetCol, targetRow);\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n (table as ListTableAPI).editorManager?.completeEdit();\n table.getElement().focus();\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 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 handleKeydownListener(e);\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 (!table.getElement().contains(target) && !table.internalProps.menuHandler.containElement(target)) {\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 }\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(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 (!table.getElement().contains(target) && !table.internalProps.menuHandler.containElement(target)) {\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 }\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"]}
@@ -20,7 +20,7 @@ export function bindAxisHoverEvent(table) {
20
20
 
21
21
  function getAxisPosition(col, row, layout) {
22
22
  if (layout.indicatorsAsCol) {
23
- if (layout.hasTwoIndicatorAxes && row === layout.columnHeaderLevelCount - 1 && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return "top";
23
+ if (layout.hasTopIndicatorAxis && row === layout.columnHeaderLevelCount - 1 && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return "top";
24
24
  if (row === layout.rowCount - layout.bottomFrozenRowCount && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return "bottom";
25
25
  if (col === layout.rowHeaderLevelCount - 1 && row >= layout.rowHeaderLevelCount && row < layout.rowCount - layout.bottomFrozenRowCount) return "left";
26
26
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/self-event-listener/pivot-chart/axis-hover.ts"],"names":[],"mappings":"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","file":"axis-hover.js","sourcesContent":["import { TABLE_EVENT_TYPE } from '../../../core/TABLE_EVENT_TYPE';\nimport type { PivotHeaderLayoutMap } from '../../../layout/pivot-header-layout';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\n\nexport function bindAxisHoverEvent(table: BaseTableAPI) {\n if (!table.isPivotChart()) {\n return;\n }\n\n table.on(TABLE_EVENT_TYPE.MOUSEENTER_CELL, e => {\n const cellGroup = table.scenegraph.getCell(e.col, e.row);\n cellGroup.forEachChildren(child => {\n if (child.name === 'axis') {\n const position = getAxisPosition(e.col, e.row, table.internalProps.layoutMap as PivotHeaderLayoutMap);\n (e as any).axisPosition = position;\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEENTER_AXIS, e as any);\n }\n });\n });\n\n table.on(TABLE_EVENT_TYPE.MOUSELEAVE_CELL, e => {\n const cellGroup = table.scenegraph.getCell(e.col, e.row);\n cellGroup.forEachChildren(child => {\n if (child.name === 'axis') {\n const position = getAxisPosition(e.col, e.row, table.internalProps.layoutMap as PivotHeaderLayoutMap);\n (e as any).axisPosition = position;\n table.fireListeners(TABLE_EVENT_TYPE.MOUSELEAVE_AXIS, e as any);\n }\n });\n });\n}\n\nfunction getAxisPosition(col: number, row: number, layout: PivotHeaderLayoutMap) {\n if (layout.indicatorsAsCol) {\n if (\n layout.hasTwoIndicatorAxes &&\n row === layout.columnHeaderLevelCount - 1 &&\n col >= layout.rowHeaderLevelCount &&\n col < layout.colCount - layout.rightFrozenColCount\n ) {\n return 'top';\n } else if (\n row === layout.rowCount - layout.bottomFrozenRowCount &&\n col >= layout.rowHeaderLevelCount &&\n col < layout.colCount - layout.rightFrozenColCount\n ) {\n return 'bottom';\n } else if (\n col === layout.rowHeaderLevelCount - 1 &&\n row >= layout.rowHeaderLevelCount &&\n row < layout.rowCount - layout.bottomFrozenRowCount\n ) {\n return 'left';\n }\n } else {\n if (\n col === layout.rowHeaderLevelCount - 1 &&\n row >= layout.columnHeaderLevelCount &&\n row < layout.rowCount - layout.bottomFrozenRowCount\n ) {\n return 'left';\n } else if (\n col === layout.colCount - layout.rightFrozenColCount &&\n row >= layout.columnHeaderLevelCount &&\n row < layout.rowCount - layout.bottomFrozenRowCount\n ) {\n return 'right';\n } else if (\n row === layout.rowCount - layout.bottomFrozenRowCount &&\n col >= layout.rowHeaderLevelCount &&\n col < layout.colCount - layout.rightFrozenColCount\n ) {\n return 'bottom';\n }\n }\n return 'bottom';\n}\n"]}
1
+ {"version":3,"sources":["../src/event/self-event-listener/pivot-chart/axis-hover.ts"],"names":[],"mappings":"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","file":"axis-hover.js","sourcesContent":["import { TABLE_EVENT_TYPE } from '../../../core/TABLE_EVENT_TYPE';\nimport type { PivotHeaderLayoutMap } from '../../../layout/pivot-header-layout';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\n\nexport function bindAxisHoverEvent(table: BaseTableAPI) {\n if (!table.isPivotChart()) {\n return;\n }\n\n table.on(TABLE_EVENT_TYPE.MOUSEENTER_CELL, e => {\n const cellGroup = table.scenegraph.getCell(e.col, e.row);\n cellGroup.forEachChildren(child => {\n if (child.name === 'axis') {\n const position = getAxisPosition(e.col, e.row, table.internalProps.layoutMap as PivotHeaderLayoutMap);\n (e as any).axisPosition = position;\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEENTER_AXIS, e as any);\n }\n });\n });\n\n table.on(TABLE_EVENT_TYPE.MOUSELEAVE_CELL, e => {\n const cellGroup = table.scenegraph.getCell(e.col, e.row);\n cellGroup.forEachChildren(child => {\n if (child.name === 'axis') {\n const position = getAxisPosition(e.col, e.row, table.internalProps.layoutMap as PivotHeaderLayoutMap);\n (e as any).axisPosition = position;\n table.fireListeners(TABLE_EVENT_TYPE.MOUSELEAVE_AXIS, e as any);\n }\n });\n });\n}\n\nfunction getAxisPosition(col: number, row: number, layout: PivotHeaderLayoutMap) {\n if (layout.indicatorsAsCol) {\n if (\n layout.hasTopIndicatorAxis &&\n row === layout.columnHeaderLevelCount - 1 &&\n col >= layout.rowHeaderLevelCount &&\n col < layout.colCount - layout.rightFrozenColCount\n ) {\n return 'top';\n } else if (\n row === layout.rowCount - layout.bottomFrozenRowCount &&\n col >= layout.rowHeaderLevelCount &&\n col < layout.colCount - layout.rightFrozenColCount\n ) {\n return 'bottom';\n } else if (\n col === layout.rowHeaderLevelCount - 1 &&\n row >= layout.rowHeaderLevelCount &&\n row < layout.rowCount - layout.bottomFrozenRowCount\n ) {\n return 'left';\n }\n } else {\n if (\n col === layout.rowHeaderLevelCount - 1 &&\n row >= layout.columnHeaderLevelCount &&\n row < layout.rowCount - layout.bottomFrozenRowCount\n ) {\n return 'left';\n } else if (\n col === layout.colCount - layout.rightFrozenColCount &&\n row >= layout.columnHeaderLevelCount &&\n row < layout.rowCount - layout.bottomFrozenRowCount\n ) {\n return 'right';\n } else if (\n row === layout.rowCount - layout.bottomFrozenRowCount &&\n col >= layout.rowHeaderLevelCount &&\n col < layout.colCount - layout.rightFrozenColCount\n ) {\n return 'bottom';\n }\n }\n return 'bottom';\n}\n"]}
@@ -18,3 +18,4 @@ export interface SceneEvent {
18
18
  export declare function getCellEventArgsSet(e: FederatedPointerEvent): SceneEvent;
19
19
  export declare function getTargetCell(target: any): any;
20
20
  export declare const regIndexReg: RegExp;
21
+ export declare function setDataToHTML(data: string): string;
package/es/event/util.js CHANGED
@@ -35,4 +35,15 @@ function getMergeCellInfo(cellGroup) {
35
35
  }
36
36
 
37
37
  export const regIndexReg = /radio-\d+-\d+-(\d+)/;
38
+
39
+ export function setDataToHTML(data) {
40
+ 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");
41
+ return rows.forEach((function(rowCells, rowIndex) {
42
+ const cells = rowCells.split("\t"), rowValues = [];
43
+ 0 === rowIndex && result.push("<tbody>"), cells.forEach((function(cell, cellIndex) {
44
+ 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;") : " ";
45
+ rowValues.push(`<td>${parsedCellData}</td>`);
46
+ })), result.push("<tr>", ...rowValues, "</tr>"), rowIndex === rows.length - 1 && result.push("</tbody>");
47
+ })), result.push("</table>"), [ META_HEAD, result.join("") ].join("");
48
+ }
38
49
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAiB3C,MAAM,UAAU,mBAAmB,CAAC,CAAwB;IAC1D,MAAM,UAAU,GAAe;QAC7B,WAAW,EAAE;YAGX,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACf,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;SAChB;KAMF,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,UAAU,EAAE;QACd,UAAU,CAAC,SAAS,GAAG;YACrB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,KAAK,EAAE,CAAC;YACR,UAAU;YACV,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC;YACvC,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC;KACH;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAW;IACvC,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;QAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1B,OAAO,MAAM,CAAC;SACf;QACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;KACxB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAgB;IACxC,IACE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAC9B;QACA,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,aAAa;YACjC,MAAM,EAAE,SAAS,CAAC,WAAW;YAC7B,QAAQ,EAAE,SAAS,CAAC,aAAa;YACjC,MAAM,EAAE,SAAS,CAAC,WAAW;SAC9B,CAAC;KACH;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC","file":"util.js","sourcesContent":["import type { FederatedPointerEvent, IEventTarget } from './../vrender';\nimport type { Group } from '../scenegraph/graphic/group';\nimport type { MergeCellInfo } from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\nexport interface SceneEvent {\n abstractPos: {\n x: number;\n y: number;\n };\n eventArgs?: {\n col: number;\n row: number;\n event: FederatedPointerEvent;\n targetCell: Group;\n mergeInfo?: MergeCellInfo;\n target: IEventTarget;\n };\n}\n\nexport function getCellEventArgsSet(e: FederatedPointerEvent): SceneEvent {\n const tableEvent: SceneEvent = {\n abstractPos: {\n // x: e.x,\n // y: e.y,\n x: e.viewport.x,\n y: e.viewport.y\n }\n // eventArgs: {\n // col: (e.target as any).col,\n // row: (e.target as any).row,\n // event: e,\n // },\n };\n const targetCell = getTargetCell(e.target);\n if (targetCell) {\n tableEvent.eventArgs = {\n col: targetCell.col,\n row: targetCell.row,\n event: e,\n targetCell,\n mergeInfo: getMergeCellInfo(targetCell),\n target: e.target\n };\n }\n return tableEvent;\n}\n\nexport function getTargetCell(target: any) {\n while (target && target.parent) {\n if (target.role === 'cell') {\n return target;\n }\n target = target.parent;\n }\n return null;\n}\n\nfunction getMergeCellInfo(cellGroup: Group): MergeCellInfo | undefined {\n if (\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n return {\n colStart: cellGroup.mergeStartCol,\n colEnd: cellGroup.mergeEndCol,\n rowStart: cellGroup.mergeStartRow,\n rowEnd: cellGroup.mergeEndRow\n };\n }\n return undefined;\n}\n\nexport const regIndexReg = /radio-\\d+-\\d+-(\\d+)/;\n"]}
1
+ {"version":3,"sources":["../src/event/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { FederatedPointerEvent, IEventTarget } from './../vrender';\nimport type { Group } from '../scenegraph/graphic/group';\nimport type { MergeCellInfo } from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\nexport interface SceneEvent {\n abstractPos: {\n x: number;\n y: number;\n };\n eventArgs?: {\n col: number;\n row: number;\n event: FederatedPointerEvent;\n targetCell: Group;\n mergeInfo?: MergeCellInfo;\n target: IEventTarget;\n };\n}\n\nexport function getCellEventArgsSet(e: FederatedPointerEvent): SceneEvent {\n const tableEvent: SceneEvent = {\n abstractPos: {\n // x: e.x,\n // y: e.y,\n x: e.viewport.x,\n y: e.viewport.y\n }\n // eventArgs: {\n // col: (e.target as any).col,\n // row: (e.target as any).row,\n // event: e,\n // },\n };\n const targetCell = getTargetCell(e.target);\n if (targetCell) {\n tableEvent.eventArgs = {\n col: targetCell.col,\n row: targetCell.row,\n event: e,\n targetCell,\n mergeInfo: getMergeCellInfo(targetCell),\n target: e.target\n };\n }\n return tableEvent;\n}\n\nexport function getTargetCell(target: any) {\n while (target && target.parent) {\n if (target.role === 'cell') {\n return target;\n }\n target = target.parent;\n }\n return null;\n}\n\nfunction getMergeCellInfo(cellGroup: Group): MergeCellInfo | undefined {\n if (\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n return {\n colStart: cellGroup.mergeStartCol,\n colEnd: cellGroup.mergeEndCol,\n rowStart: cellGroup.mergeStartRow,\n rowEnd: cellGroup.mergeEndRow\n };\n }\n return undefined;\n}\n\nexport const regIndexReg = /radio-\\d+-\\d+-(\\d+)/;\n\nexport function setDataToHTML(data: string) {\n const result = ['<table>'];\n const META_HEAD = [\n '<meta name=\"author\" content=\"Visactor\"/>', // 后面可用于vtable之间的快速复制粘贴\n //white-space:normal,连续的空白字符会被合并为一个空格,并且文本会根据容器的宽度自动换行显示\n //mso-data-placement:same-cell,excel专用, 在同一个单元格中显示所有数据,而不是默认情况下将数据分散到多个单元格中显示\n '<style type=\"text/css\">td{white-space:normal}br{mso-data-placement:same-cell}</style>'\n ].join('');\n const rows = data.split('\\r\\n'); // 将数据拆分为行\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: string[] = [];\n if (rowIndex === 0) {\n result.push('<tbody>');\n }\n cells.forEach(function (cell: string, cellIndex: number) {\n // 单元格数据处理\n const parsedCellData = !cell\n ? ' '\n : cell\n .toString()\n .replace(/&/g, '&amp;') // replace & with &amp; to prevent XSS attacks\n .replace(/'/g, '&#39;') // replace ' with &#39; to prevent XSS attacks\n .replace(/</g, '&lt;') // replace < with &lt; to prevent XSS attacks\n .replace(/>/g, '&gt;') // replace > with &gt; to prevent XSS attacks\n .replace(/\\n/g, '<br>') // replace \\n with <br> to prevent XSS attacks\n .replace(/(<br(\\s*|\\/)>(\\r\\n|\\n)?|\\r\\n|\\n)/g, '<br>\\r\\n') // replace <br> with <br>\\r\\n to prevent XSS attacks\n .replace(/\\x20{2,}/gi, (substring: string | any[]) => {\n // excel连续空格序列化\n return `<span style=\"mso-spacerun: yes\">${'&nbsp;'.repeat(substring.length - 1)} </span>`;\n }) // replace 2 or more spaces with &nbsp; to prevent XSS attacks\n .replace(/\\t/gi, '&#9;'); // replace \\t with &#9; to prevent XSS attacks\n\n rowValues.push(`<td>${parsedCellData}</td>`);\n });\n result.push('<tr>', ...rowValues, '</tr>');\n\n if (rowIndex === rows.length - 1) {\n result.push('</tbody>');\n }\n });\n result.push('</table>');\n return [META_HEAD, result.join('')].join('');\n}\n"]}
package/es/index.d.ts CHANGED
@@ -24,7 +24,7 @@ export { getTargetCell } from './event/util';
24
24
  export { toBoxArray } from './tools/helper';
25
25
  export { Icon } from './scenegraph/graphic/icon';
26
26
  export { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';
27
- export declare const version = "1.0.25";
27
+ export declare const version = "1.0.28";
28
28
  export { TYPES, core, ListTable, ListTableSimple, BaseTableAPI, ListTableConstructorOptions, PivotTable, PivotTableSimple, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, textMeasure, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, pluginsDefinition };
29
29
  declare function getIcons(): {
30
30
  [key: string]: TYPES.ColumnIconOption;
package/es/index.js CHANGED
@@ -48,7 +48,7 @@ export { Icon } from "./scenegraph/graphic/icon";
48
48
 
49
49
  export { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from "./scenegraph/component/custom";
50
50
 
51
- export const version = "1.0.25";
51
+ export const version = "1.0.28";
52
52
 
53
53
  export { TYPES, core, ListTable, ListTableSimple, PivotTable, PivotTableSimple, PivotChart, textMeasure, themes, data, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, pluginsDefinition };
54
54
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,iBAAiB,MAAM,WAAW,CAAC;AAsB/C,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM5G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK7F,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAIhC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAGf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,WAAW,EACX,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EAElB,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport * as pluginsDefinition from './plugins';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet, textMeasure } from './scenegraph/utils/text-measure';\nimport type { BaseTableAPI } from './ts-types/base-table';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\nexport { toBoxArray } from './tools/helper';\nexport { Icon } from './scenegraph/graphic/icon';\nexport { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.0.25\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n BaseTableAPI,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n textMeasure,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText,\n pluginsDefinition\n // VRender // should use import {xxx} from '@visactor/vtable/es/vrender'\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,iBAAiB,MAAM,WAAW,CAAC;AAsB/C,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM5G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK7F,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAIhC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAGf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,WAAW,EACX,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EAElB,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport * as pluginsDefinition from './plugins';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet, textMeasure } from './scenegraph/utils/text-measure';\nimport type { BaseTableAPI } from './ts-types/base-table';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\nexport { toBoxArray } from './tools/helper';\nexport { Icon } from './scenegraph/graphic/icon';\nexport { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.0.28\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n BaseTableAPI,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n textMeasure,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText,\n pluginsDefinition\n // VRender // should use import {xxx} from '@visactor/vtable/es/vrender'\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
@@ -13,10 +13,12 @@ import { getTickModeFunction, getZeroAlignTickAlignTicks } from "./tick-align";
13
13
  export function getAxisConfigInPivotChart(col, row, layout) {
14
14
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
15
15
  if (layout._table.isPivotChart()) if (layout.indicatorsAsCol) {
16
- if (layout.hasTwoIndicatorAxes && row === layout.columnHeaderLevelCount - 1 && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) {
16
+ if (layout.hasTopIndicatorAxis && row === layout.columnHeaderLevelCount - 1 && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) {
17
+ const indicatorKey = layout.getIndicatorKey(col, row), indicatorInfo = layout.getIndicatorInfo(indicatorKey);
18
+ if (!(null == indicatorInfo ? void 0 : indicatorInfo.hasTopIndicatorAxis)) return;
17
19
  const axisRange = getRange("top", col, row + 1, col, layout.columnHeaderLevelCount - 1, col, row, 1, layout);
18
20
  if (!axisRange) return;
19
- const chartCellStyle = layout._table._getCellStyle(col, row + 1), padding = getQuadProps(getProp("padding", chartCellStyle, col, row + 1, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, targetTicks: targetTicks, targetRange: targetRange, index: index, theme: theme} = axisRange;
21
+ const chartCellStyle = layout._table._getCellStyle(col, row + 1), bodyChartCellPadding = getQuadProps(getProp("padding", chartCellStyle, col, row + 1, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, targetTicks: targetTicks, targetRange: targetRange, index: index, theme: theme} = axisRange;
20
22
  return isNumber(null == axisOption ? void 0 : axisOption.min) && (range.min = axisOption.min,
21
23
  range.min > 0 && (axisOption.zero = !1)), isNumber(null == axisOption ? void 0 : axisOption.max) && (range.max = axisOption.max,
22
24
  range.max < 0 && (axisOption.zero = !1)), merge({
@@ -32,7 +34,7 @@ export function getAxisConfigInPivotChart(col, row, layout) {
32
34
  },
33
35
  __ticksForVTable: ticks,
34
36
  __vtableChartTheme: theme,
35
- __vtablePadding: padding
37
+ __vtableBodyChartCellPadding: bodyChartCellPadding
36
38
  });
37
39
  }
38
40
  if (row === layout.rowCount - layout.bottomFrozenRowCount && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) {
@@ -44,7 +46,7 @@ export function getAxisConfigInPivotChart(col, row, layout) {
44
46
  }));
45
47
  const axisRange = getRange("bottom", col, row - 1, col, row, col, row, 0, layout), {chartType: chartType} = getAxisOption(col, row - 1, "bottom", layout);
46
48
  if (!axisRange) return;
47
- const chartCellStyle = layout._table._getCellStyle(col, row - 1), padding = getQuadProps(getProp("padding", chartCellStyle, col, row - 1, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, index: index, targetTicks: targetTicks, targetRange: targetRange, theme: theme} = axisRange;
49
+ const chartCellStyle = layout._table._getCellStyle(col, row - 1), bodyChartCellPadding = getQuadProps(getProp("padding", chartCellStyle, col, row - 1, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, index: index, targetTicks: targetTicks, targetRange: targetRange, theme: theme} = axisRange;
48
50
  isNumber(null == axisOption ? void 0 : axisOption.max) ? (range.max = axisOption.max,
49
51
  range.max < 0 && (axisOption.zero = !1)) : "boxPlot" === chartType && (range.max += (range.max - range.min) / 20),
50
52
  isNumber(null == axisOption ? void 0 : axisOption.min) ? (range.min = axisOption.min,
@@ -72,7 +74,7 @@ export function getAxisConfigInPivotChart(col, row, layout) {
72
74
  },
73
75
  __ticksForVTable: ticks,
74
76
  __vtableChartTheme: theme,
75
- __vtablePadding: padding
77
+ __vtableBodyChartCellPadding: bodyChartCellPadding
76
78
  });
77
79
  }
78
80
  if (col === layout.rowHeaderLevelCount - 1 && row >= layout.columnHeaderLevelCount && row < layout.rowCount - layout.bottomFrozenRowCount) {
@@ -80,7 +82,7 @@ export function getAxisConfigInPivotChart(col, row, layout) {
80
82
  isArray(rowDimensionKey) && (rowDimensionKey = rowDimensionKey[0]);
81
83
  const data = null !== (_c = layout.dataset.collectedValues[rowDimensionKey]) && void 0 !== _c ? _c : [], rowPath = layout.getRowKeysPath(col, row), domain = null !== (_d = data[null != rowPath ? rowPath : ""]) && void 0 !== _d ? _d : [], {axisOption: axisOption, theme: theme, chartType: chartType} = getAxisOption(col + 1, row, "left", layout);
82
84
  if (!1 === (null == axisOption ? void 0 : axisOption.visible)) return;
83
- const chartCellStyle = layout._table._getCellStyle(col + 1, row), padding = getQuadProps(getProp("padding", chartCellStyle, col + 1, row, layout._table)), spec = layout.getRawChartSpec(col + 1, row);
85
+ const chartCellStyle = layout._table._getCellStyle(col + 1, row), bodyChartCellPadding = getQuadProps(getProp("padding", chartCellStyle, col + 1, row, layout._table)), spec = layout.getRawChartSpec(col + 1, row);
84
86
  return merge({
85
87
  domain: "linear" === (null == axisOption ? void 0 : axisOption.type) ? void 0 : Array.from(domain),
86
88
  range: "linear" === (null == axisOption ? void 0 : axisOption.type) ? domain : void 0,
@@ -90,9 +92,12 @@ export function getAxisConfigInPivotChart(col, row, layout) {
90
92
  }, axisOption, {
91
93
  orient: "left",
92
94
  type: null !== (_e = null == axisOption ? void 0 : axisOption.type) && void 0 !== _e ? _e : "band",
93
- __vtableChartTheme: theme,
95
+ label: {
96
+ flush: !0
97
+ },
94
98
  inverse: transformInverse(axisOption, "horizontal" === (null !== (_f = null == spec ? void 0 : spec.direction) && void 0 !== _f ? _f : "scatter" === chartType ? "vertical" : "horizontal")),
95
- __vtablePadding: padding
99
+ __vtableChartTheme: theme,
100
+ __vtableBodyChartCellPadding: bodyChartCellPadding
96
101
  });
97
102
  }
98
103
  } else {
@@ -105,7 +110,7 @@ export function getAxisConfigInPivotChart(col, row, layout) {
105
110
  }));
106
111
  const axisRange = getRange("left", col + 1, row, col, row, col, row, 0, layout), {chartType: chartType} = getAxisOption(col + 1, row, "left", layout);
107
112
  if (!axisRange) return;
108
- const chartCellStyle = layout._table._getCellStyle(col + 1, row), padding = getQuadProps(getProp("padding", chartCellStyle, col + 1, row, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, index: index, targetTicks: targetTicks, targetRange: targetRange, theme: theme} = axisRange;
113
+ const chartCellStyle = layout._table._getCellStyle(col + 1, row), bodyChartCellPadding = getQuadProps(getProp("padding", chartCellStyle, col + 1, row, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, index: index, targetTicks: targetTicks, targetRange: targetRange, theme: theme} = axisRange;
109
114
  isNumber(null == axisOption ? void 0 : axisOption.max) ? (range.max = axisOption.max,
110
115
  range.max < 0 && (axisOption.zero = !1)) : "boxPlot" === chartType && (range.max += (range.max - range.min) / 20),
111
116
  isNumber(null == axisOption ? void 0 : axisOption.min) ? (range.min = axisOption.min,
@@ -134,13 +139,15 @@ export function getAxisConfigInPivotChart(col, row, layout) {
134
139
  },
135
140
  __ticksForVTable: ticks,
136
141
  __vtableChartTheme: theme,
137
- __vtablePadding: padding
142
+ __vtableBodyChartCellPadding: bodyChartCellPadding
138
143
  });
139
144
  }
140
145
  if (col === layout.colCount - layout.rightFrozenColCount && row >= layout.columnHeaderLevelCount && row < layout.rowCount - layout.bottomFrozenRowCount) {
141
- const axisRange = getRange("right", col - 1, row, layout.rowHeaderLevelCount - 1, row, col, row, 1, layout), {chartType: chartType} = getAxisOption(col - 1, row, "right", layout);
146
+ const indicatorKey = layout.getIndicatorKey(col, row), indicatorInfo = layout.getIndicatorInfo(indicatorKey);
147
+ if (!(null == indicatorInfo ? void 0 : indicatorInfo.hasRightIndicatorAxis)) return;
148
+ const {axisOption: axisOption, chartType: chartType} = getAxisOption(col - 1, row, "right", layout), axisRange = getRange("right", col - 1, row, layout.rowHeaderLevelCount - 1, row, col, row, 1, layout);
142
149
  if (!axisRange) return;
143
- const chartCellStyle = layout._table._getCellStyle(col - 1, row), padding = getQuadProps(getProp("padding", chartCellStyle, col - 1, row, layout._table)), {range: range, ticks: ticks, axisOption: axisOption, index: index, targetTicks: targetTicks, targetRange: targetRange, theme: theme} = axisRange;
150
+ const chartCellStyle = layout._table._getCellStyle(col - 1, row), bodyChartCellPadding = getQuadProps(getProp("padding", chartCellStyle, col - 1, row, layout._table)), {range: range, ticks: ticks, index: index, targetTicks: targetTicks, targetRange: targetRange, theme: theme} = axisRange;
144
151
  isNumber(null == axisOption ? void 0 : axisOption.min) && (range.min = axisOption.min,
145
152
  range.min > 0 && (axisOption.zero = !1)), isNumber(null == axisOption ? void 0 : axisOption.max) && (range.max = axisOption.max,
146
153
  range.max < 0 && (axisOption.zero = !1));
@@ -166,7 +173,7 @@ export function getAxisConfigInPivotChart(col, row, layout) {
166
173
  },
167
174
  __ticksForVTable: ticks,
168
175
  __vtableChartTheme: theme,
169
- __vtablePadding: padding
176
+ __vtableBodyChartCellPadding: bodyChartCellPadding
170
177
  });
171
178
  }
172
179
  if (row === layout.rowCount - layout.bottomFrozenRowCount && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) {
@@ -174,28 +181,32 @@ export function getAxisConfigInPivotChart(col, row, layout) {
174
181
  isArray(columnDimensionKey) && (columnDimensionKey = columnDimensionKey[0]);
175
182
  const data = null !== (_l = layout.dataset.collectedValues[columnDimensionKey]) && void 0 !== _l ? _l : [], colPath = layout.getColKeysPath(col, row), domain = null !== (_m = null == data ? void 0 : data[null != colPath ? colPath : ""]) && void 0 !== _m ? _m : [], {axisOption: axisOption, isPercent: isPercent, theme: theme, chartType: chartType} = getAxisOption(col, row - 1, "bottom", layout);
176
183
  if (!1 === (null == axisOption ? void 0 : axisOption.visible)) return;
177
- const chartCellStyle = layout._table._getCellStyle(col, row - 1), padding = getQuadProps(getProp("padding", chartCellStyle, col, row - 1, layout._table));
184
+ const chartCellStyle = layout._table._getCellStyle(col, row - 1), bodyChartCellPadding = getQuadProps(getProp("padding", chartCellStyle, col, row - 1, layout._table));
178
185
  return merge({
179
186
  domain: "linear" === (null == axisOption ? void 0 : axisOption.type) ? void 0 : Array.from(domain),
180
187
  range: "linear" === (null == axisOption ? void 0 : axisOption.type) ? domain : void 0
181
188
  }, axisOption, {
182
189
  orient: "bottom",
183
190
  type: null !== (_o = null == axisOption ? void 0 : axisOption.type) && void 0 !== _o ? _o : "band",
191
+ label: {
192
+ flush: !0
193
+ },
184
194
  __vtableChartTheme: theme,
185
- __vtablePadding: padding
195
+ __vtableBodyChartCellPadding: bodyChartCellPadding
186
196
  });
187
197
  }
188
198
  }
189
199
  }
190
200
 
191
201
  export function getAxisOption(col, row, orient, layout) {
192
- var _a, _b;
202
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
193
203
  const spec = layout.getRawChartSpec(col, row), axes = null !== (_a = spec.axes) && void 0 !== _a ? _a : [];
194
204
  if (layout._table.pivotChartAxes.forEach((axis => {
195
205
  -1 === axes.findIndex((a => axis.orient === a.orient)) && axes.push(axis);
196
206
  })), spec && isArray(axes)) {
197
207
  const axisOption = axes.find((axis => axis.orient === orient));
198
208
  if (axisOption) {
209
+ axisOption.zero && isNumber(null === (_b = axisOption.range) || void 0 === _b ? void 0 : _b.min) && (axisOption.zero = !1);
199
210
  const {seriesIndex: seriesIndex, seriesId: seriesId} = axisOption;
200
211
  let seriesIndice, seriesSpec;
201
212
  isValid(seriesId) && isArray(spec.series) ? seriesIndice = (isArray(seriesId) ? seriesId : [ seriesId ]).map((id => {
@@ -203,18 +214,22 @@ export function getAxisOption(col, row, orient, layout) {
203
214
  return index >= 0 && (seriesSpec = spec.series[index]), index;
204
215
  })) : isValid(seriesIndex) && isArray(spec.series) && (seriesIndice = seriesIndex);
205
216
  const {isZeroAlign: isZeroAlign, isTickAlign: isTickAlign} = checkZeroAlign(spec, orient, layout);
206
- return {
217
+ return axisOption.labelHoverOnAxis || (axisOption.labelHoverOnAxis = null === (_d = null === (_c = layout._table.options.chartDimensionLinkage) || void 0 === _c ? void 0 : _c.labelHoverOnAxis) || void 0 === _d ? void 0 : _d[orient]),
218
+ {
207
219
  axisOption: axisOption,
208
220
  isPercent: spec.percent,
209
221
  isZeroAlign: isZeroAlign,
210
222
  isTickAlign: isTickAlign,
211
223
  seriesIndice: seriesIndice,
212
224
  theme: spec.theme,
213
- chartType: null !== (_b = null == seriesSpec ? void 0 : seriesSpec.type) && void 0 !== _b ? _b : spec.type
225
+ chartType: null !== (_e = null == seriesSpec ? void 0 : seriesSpec.type) && void 0 !== _e ? _e : spec.type
214
226
  };
215
227
  }
216
228
  }
217
- const axisOption = layout._table.pivotChartAxes.find((axisOption => axisOption.orient === orient)), {isZeroAlign: isZeroAlign, isTickAlign: isTickAlign} = checkZeroAlign(spec, orient, layout);
229
+ const axisOption = null !== (_f = layout._table.pivotChartAxes.find((axisOption => axisOption.orient === orient))) && void 0 !== _f ? _f : {};
230
+ axisOption.zero && isNumber(null === (_g = axisOption.range) || void 0 === _g ? void 0 : _g.min) && (axisOption.zero = !1),
231
+ axisOption && !axisOption.labelHoverOnAxis && (axisOption.labelHoverOnAxis = null === (_j = null === (_h = layout._table.options.chartDimensionLinkage) || void 0 === _h ? void 0 : _h.labelHoverOnAxis) || void 0 === _j ? void 0 : _j[orient]);
232
+ const {isZeroAlign: isZeroAlign, isTickAlign: isTickAlign} = checkZeroAlign(spec, orient, layout);
218
233
  return {
219
234
  axisOption: axisOption,
220
235
  isPercent: !1,
@@ -249,7 +264,7 @@ function checkZeroAlign(spec, orient, layout) {
249
264
  }
250
265
 
251
266
  export function getAxisRange(collectedValues, indicatorKeys, isZeroAlign, colPath, seriesId) {
252
- var _a;
267
+ var _a, _b;
253
268
  if (isArray(seriesId)) {
254
269
  const range = {
255
270
  min: 1 / 0,
@@ -261,9 +276,9 @@ export function getAxisRange(collectedValues, indicatorKeys, isZeroAlign, colPat
261
276
  }
262
277
  return isFinite(range.min) && isFinite(range.max) ? range : null;
263
278
  }
264
- let defaultKey = null == indicatorKeys ? void 0 : indicatorKeys[seriesId];
279
+ let defaultKey = null !== (_a = null == indicatorKeys ? void 0 : indicatorKeys[seriesId]) && void 0 !== _a ? _a : null == indicatorKeys ? void 0 : indicatorKeys[0];
265
280
  if (isArray(defaultKey) && (defaultKey = defaultKey[0]), !defaultKey) return null;
266
- const data = collectedValues[defaultKey], range = merge({}, null !== (_a = null == data ? void 0 : data[null != colPath ? colPath : ""]) && void 0 !== _a ? _a : {
281
+ const data = collectedValues[defaultKey], range = merge({}, null !== (_b = null == data ? void 0 : data[null != colPath ? colPath : ""]) && void 0 !== _b ? _b : {
267
282
  min: 0,
268
283
  max: 1
269
284
  });
@@ -275,7 +290,7 @@ export function getAxisRange(collectedValues, indicatorKeys, isZeroAlign, colPat
275
290
  export function isTopOrBottomAxis(col, row, layout) {
276
291
  if (!layout._table.isPivotChart()) return !1;
277
292
  if (layout.indicatorsAsCol) {
278
- if (layout.hasTwoIndicatorAxes && row === layout.columnHeaderLevelCount - 1 && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return !0;
293
+ if (layout.hasTopIndicatorAxis && row === layout.columnHeaderLevelCount - 1 && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return !0;
279
294
  if (row === layout.rowCount - layout.bottomFrozenRowCount && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return !0;
280
295
  } else if (row === layout.rowCount - layout.bottomFrozenRowCount && col >= layout.rowHeaderLevelCount && col < layout.colCount - layout.rightFrozenColCount) return !0;
281
296
  return !1;
@@ -352,7 +367,7 @@ export function hasLinearAxis(spec, tableAxesConfig, isHorizontal, isThisXAxis)
352
367
  }
353
368
 
354
369
  function getRange(position, colForAxisOption, rowForAxisOption, colForIndicatorKey, rowForIndicatorKey, col, row, defaultSeriesIndice, layout) {
355
- const indicatorKeys = layout.getIndicatorKeyInChartSpec(colForIndicatorKey, rowForIndicatorKey);
370
+ const indicatorKeys = layout.getIndicatorKeyInChartSpec(colForIndicatorKey >= 0 ? colForIndicatorKey : col, rowForIndicatorKey >= 0 ? rowForIndicatorKey : row);
356
371
  let path;
357
372
  path = "top" === position || "bottom" === position ? layout.getColKeysPath(col, row) : layout.getRowKeysPath(col, row);
358
373
  const rangeConfig = getChartAxisRange(colForAxisOption, rowForAxisOption, defaultSeriesIndice, position, indicatorKeys, path, layout);