@visactor/vtable 0.18.0-alpha.0 → 0.18.0-alpha.2

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 (581) hide show
  1. package/cjs/ListTable.d.ts +3 -0
  2. package/cjs/ListTable.js +74 -16
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.d.ts +2 -4
  5. package/cjs/PivotChart.js +42 -17
  6. package/cjs/PivotChart.js.map +1 -1
  7. package/cjs/PivotTable.d.ts +5 -0
  8. package/cjs/PivotTable.js +109 -14
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/body-helper/body-helper.js +2 -1
  11. package/cjs/body-helper/body-helper.js.map +1 -1
  12. package/cjs/components/axis/axis.js +4 -1
  13. package/cjs/components/axis/axis.js.map +1 -1
  14. package/cjs/components/axis/get-axis-attributes.d.ts +1 -0
  15. package/cjs/components/axis/get-axis-attributes.js +2 -1
  16. package/cjs/components/axis/get-axis-attributes.js.map +1 -1
  17. package/cjs/components/axis/label-overlap.js.map +1 -1
  18. package/cjs/components/axis/linear-scale.js +1 -0
  19. package/cjs/components/axis/linear-scale.js.map +1 -1
  20. package/cjs/components/tooltip/TooltipHandler.js +2 -5
  21. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  22. package/cjs/core/BaseTable.d.ts +24 -4
  23. package/cjs/core/BaseTable.js +83 -52
  24. package/cjs/core/BaseTable.js.map +1 -1
  25. package/cjs/core/style.js +1 -2
  26. package/cjs/core/tableHelper.d.ts +3 -2
  27. package/cjs/core/tableHelper.js +20 -7
  28. package/cjs/core/tableHelper.js.map +1 -1
  29. package/cjs/dataset/dataset.js +8 -13
  30. package/cjs/dataset/dataset.js.map +1 -1
  31. package/cjs/edit/edit-manager.d.ts +1 -1
  32. package/cjs/edit/edit-manager.js +9 -12
  33. package/cjs/edit/edit-manager.js.map +1 -1
  34. package/cjs/event/EventHandler.d.ts +1 -0
  35. package/cjs/event/EventHandler.js +1 -1
  36. package/cjs/event/EventHandler.js.map +1 -1
  37. package/cjs/event/event.d.ts +12 -1
  38. package/cjs/event/event.js +8 -3
  39. package/cjs/event/event.js.map +1 -1
  40. package/cjs/event/listener/container-dom.js +51 -8
  41. package/cjs/event/listener/container-dom.js.map +1 -1
  42. package/cjs/event/listener/scroll-bar.js +24 -8
  43. package/cjs/event/listener/scroll-bar.js.map +1 -1
  44. package/cjs/event/listener/table-group.js +50 -42
  45. package/cjs/event/listener/table-group.js.map +1 -1
  46. package/cjs/event/listener/touch.js.map +1 -1
  47. package/cjs/event/media-click.js +5 -2
  48. package/cjs/event/media-click.js.map +1 -1
  49. package/cjs/event/pivot-chart/axis-click.js.map +1 -1
  50. package/cjs/event/scroll.js +1 -0
  51. package/cjs/event/util.d.ts +1 -1
  52. package/cjs/event/util.js.map +1 -1
  53. package/cjs/index.d.ts +5 -2
  54. package/cjs/index.js +29 -2
  55. package/cjs/index.js.map +1 -1
  56. package/cjs/layout/chart-helper/get-chart-spec.d.ts +1 -0
  57. package/cjs/layout/chart-helper/get-chart-spec.js +13 -2
  58. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  59. package/cjs/layout/pivot-header-layout.d.ts +5 -4
  60. package/cjs/layout/pivot-header-layout.js +20 -16
  61. package/cjs/layout/pivot-header-layout.js.map +1 -1
  62. package/cjs/layout/pivot-layout-helper.d.ts +1 -0
  63. package/cjs/layout/pivot-layout-helper.js +16 -6
  64. package/cjs/layout/pivot-layout-helper.js.map +1 -1
  65. package/cjs/layout/simple-header-layout.d.ts +6 -4
  66. package/cjs/layout/simple-header-layout.js +44 -13
  67. package/cjs/layout/simple-header-layout.js.map +1 -1
  68. package/cjs/render/jsx/index.d.ts +2 -3
  69. package/cjs/render/jsx/index.js +1 -1
  70. package/cjs/render/jsx/index.js.map +1 -1
  71. package/cjs/render/layout/arc.d.ts +2 -2
  72. package/cjs/render/layout/arc.js +1 -1
  73. package/cjs/render/layout/arc.js.map +1 -1
  74. package/cjs/render/layout/circle.d.ts +2 -2
  75. package/cjs/render/layout/circle.js +1 -1
  76. package/cjs/render/layout/circle.js.map +1 -1
  77. package/cjs/render/layout/container.d.ts +2 -2
  78. package/cjs/render/layout/container.js +1 -1
  79. package/cjs/render/layout/container.js.map +1 -1
  80. package/cjs/render/layout/group.d.ts +2 -2
  81. package/cjs/render/layout/group.js +1 -1
  82. package/cjs/render/layout/group.js.map +1 -1
  83. package/cjs/render/layout/icon.d.ts +2 -2
  84. package/cjs/render/layout/icon.js +1 -1
  85. package/cjs/render/layout/icon.js.map +1 -1
  86. package/cjs/render/layout/image.d.ts +2 -2
  87. package/cjs/render/layout/image.js +1 -1
  88. package/cjs/render/layout/image.js.map +1 -1
  89. package/cjs/render/layout/rect.d.ts +2 -2
  90. package/cjs/render/layout/rect.js +1 -1
  91. package/cjs/render/layout/rect.js.map +1 -1
  92. package/cjs/render/layout/text.d.ts +3 -3
  93. package/cjs/render/layout/text.js +2 -2
  94. package/cjs/render/layout/text.js.map +1 -1
  95. package/cjs/scenegraph/component/cell-content.d.ts +4 -4
  96. package/cjs/scenegraph/component/cell-content.js +7 -6
  97. package/cjs/scenegraph/component/cell-content.js.map +1 -1
  98. package/cjs/scenegraph/component/cell-mover.d.ts +1 -1
  99. package/cjs/scenegraph/component/cell-mover.js +1 -1
  100. package/cjs/scenegraph/component/cell-mover.js.map +1 -1
  101. package/cjs/scenegraph/component/custom.d.ts +1 -1
  102. package/cjs/scenegraph/component/custom.js +34 -17
  103. package/cjs/scenegraph/component/custom.js.map +1 -1
  104. package/cjs/scenegraph/component/drill-icon.js.map +1 -1
  105. package/cjs/scenegraph/component/menu.d.ts +1 -1
  106. package/cjs/scenegraph/component/menu.js +1 -1
  107. package/cjs/scenegraph/component/menu.js.map +1 -1
  108. package/cjs/scenegraph/component/table-component.d.ts +1 -1
  109. package/cjs/scenegraph/component/table-component.js +13 -12
  110. package/cjs/scenegraph/component/table-component.js.map +1 -1
  111. package/cjs/scenegraph/debug-tool/debug-tool.d.ts +1 -1
  112. package/cjs/scenegraph/debug-tool/debug-tool.js +1 -1
  113. package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
  114. package/cjs/scenegraph/debug-tool/index.d.ts +1 -1
  115. package/cjs/scenegraph/debug-tool/index.js.map +1 -1
  116. package/cjs/scenegraph/graphic/chart.d.ts +2 -2
  117. package/cjs/scenegraph/graphic/chart.js +12 -5
  118. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  119. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +5 -5
  120. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  121. package/cjs/scenegraph/graphic/contributions/chart-render.d.ts +1 -1
  122. package/cjs/scenegraph/graphic/contributions/chart-render.js +1 -1
  123. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  124. package/cjs/scenegraph/graphic/contributions/group-contribution-render.d.ts +18 -3
  125. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +62 -6
  126. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  127. package/cjs/scenegraph/graphic/contributions/image-contribution-render.d.ts +2 -2
  128. package/cjs/scenegraph/graphic/contributions/image-contribution-render.js +1 -1
  129. package/cjs/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
  130. package/cjs/scenegraph/graphic/contributions/index.d.ts +1 -1
  131. package/cjs/scenegraph/graphic/contributions/index.js +6 -2
  132. package/cjs/scenegraph/graphic/contributions/index.js.map +1 -1
  133. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.d.ts +2 -2
  134. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +2 -2
  135. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  136. package/cjs/scenegraph/graphic/group.d.ts +4 -2
  137. package/cjs/scenegraph/graphic/group.js +4 -2
  138. package/cjs/scenegraph/graphic/group.js.map +1 -1
  139. package/cjs/scenegraph/graphic/icon.d.ts +2 -2
  140. package/cjs/scenegraph/graphic/icon.js +1 -1
  141. package/cjs/scenegraph/graphic/icon.js.map +1 -1
  142. package/cjs/scenegraph/graphic/text.d.ts +2 -2
  143. package/cjs/scenegraph/graphic/text.js +2 -2
  144. package/cjs/scenegraph/graphic/text.js.map +1 -1
  145. package/cjs/scenegraph/group-creater/cell-helper.d.ts +1 -1
  146. package/cjs/scenegraph/group-creater/cell-helper.js +16 -11
  147. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  148. package/cjs/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
  149. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -1
  150. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  151. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
  152. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -3
  153. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  154. package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  155. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +44 -19
  156. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  157. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +1 -1
  158. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  159. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
  160. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +3 -2
  161. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  162. package/cjs/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
  163. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +3 -2
  164. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  165. package/cjs/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  166. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +3 -2
  167. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  168. package/cjs/scenegraph/group-creater/column-helper.d.ts +5 -2
  169. package/cjs/scenegraph/group-creater/column-helper.js +8 -3
  170. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  171. package/cjs/scenegraph/group-creater/init-scenegraph.js +11 -11
  172. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  173. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +4 -3
  174. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  175. package/cjs/scenegraph/group-creater/progress/proxy.js +7 -6
  176. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  177. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -2
  178. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  179. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +4 -3
  180. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  181. package/cjs/scenegraph/icon/icon-update.d.ts +2 -0
  182. package/cjs/scenegraph/icon/icon-update.js +19 -4
  183. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  184. package/cjs/scenegraph/layout/compute-col-width.js +12 -9
  185. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  186. package/cjs/scenegraph/layout/compute-row-height.js +24 -14
  187. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  188. package/cjs/scenegraph/layout/frozen.js +3 -1
  189. package/cjs/scenegraph/layout/frozen.js.map +1 -1
  190. package/cjs/scenegraph/layout/move-cell.js.map +1 -1
  191. package/cjs/scenegraph/layout/update-col.js +6 -5
  192. package/cjs/scenegraph/layout/update-col.js.map +1 -1
  193. package/cjs/scenegraph/layout/update-height.d.ts +1 -1
  194. package/cjs/scenegraph/layout/update-height.js +7 -5
  195. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  196. package/cjs/scenegraph/layout/update-row.js +50 -14
  197. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  198. package/cjs/scenegraph/layout/update-width.d.ts +1 -1
  199. package/cjs/scenegraph/layout/update-width.js +12 -11
  200. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  201. package/cjs/scenegraph/refresh-node/update-chart.js +11 -1
  202. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  203. package/cjs/scenegraph/scenegraph.d.ts +7 -3
  204. package/cjs/scenegraph/scenegraph.js +54 -60
  205. package/cjs/scenegraph/scenegraph.js.map +1 -1
  206. package/cjs/scenegraph/select/create-select-border.js +1 -1
  207. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  208. package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
  209. package/cjs/scenegraph/select/update-select-border.js +34 -17
  210. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  211. package/cjs/scenegraph/stick-text/index.js +9 -4
  212. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  213. package/cjs/scenegraph/style/corner-cell.js.map +1 -1
  214. package/cjs/scenegraph/style/frame-border.d.ts +3 -1
  215. package/cjs/scenegraph/style/frame-border.js +21 -3
  216. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  217. package/cjs/scenegraph/utils/get-cell-merge.js +1 -1
  218. package/cjs/scenegraph/utils/get-cell-merge.js.map +1 -1
  219. package/cjs/scenegraph/utils/padding.js +1 -1
  220. package/cjs/scenegraph/utils/padding.js.map +1 -1
  221. package/cjs/scenegraph/utils/render-service.d.ts +1 -1
  222. package/cjs/scenegraph/utils/render-service.js +1 -1
  223. package/cjs/scenegraph/utils/render-service.js.map +1 -1
  224. package/cjs/scenegraph/utils/text-icon-layout.d.ts +1 -1
  225. package/cjs/scenegraph/utils/text-icon-layout.js +13 -10
  226. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  227. package/cjs/scenegraph/utils/text-measure.d.ts +2 -2
  228. package/cjs/scenegraph/utils/text-measure.js +1 -1
  229. package/cjs/scenegraph/utils/text-measure.js.map +1 -1
  230. package/cjs/scenegraph/utils/text-pos.d.ts +1 -1
  231. package/cjs/scenegraph/utils/text-pos.js.map +1 -1
  232. package/cjs/state/cell-move/adjust-header.js.map +1 -1
  233. package/cjs/state/cell-move/index.js +2 -1
  234. package/cjs/state/cell-move/index.js.map +1 -1
  235. package/cjs/state/select/update-position.js +60 -65
  236. package/cjs/state/select/update-position.js.map +1 -1
  237. package/cjs/state/spark-line/index.js +10 -6
  238. package/cjs/state/spark-line/index.js.map +1 -1
  239. package/cjs/state/state.d.ts +1 -1
  240. package/cjs/state/state.js +12 -16
  241. package/cjs/state/state.js.map +1 -1
  242. package/cjs/themes/ARCO.js +7 -2
  243. package/cjs/themes/ARCO.js.map +1 -1
  244. package/cjs/themes/BRIGHT.js +8 -1
  245. package/cjs/themes/BRIGHT.js.map +1 -1
  246. package/cjs/themes/DARK.js +7 -1
  247. package/cjs/themes/DARK.js.map +1 -1
  248. package/cjs/themes/DEFAULT.js +6 -0
  249. package/cjs/themes/DEFAULT.js.map +1 -1
  250. package/cjs/themes/SIMPLIFY.js +6 -0
  251. package/cjs/themes/SIMPLIFY.js.map +1 -1
  252. package/cjs/themes/component.d.ts +27 -0
  253. package/cjs/themes/component.js +29 -2
  254. package/cjs/themes/component.js.map +1 -1
  255. package/cjs/themes/theme.d.ts +2 -0
  256. package/cjs/themes/theme.js +29 -1
  257. package/cjs/themes/theme.js.map +1 -1
  258. package/cjs/tools/NumberMap.d.ts +4 -0
  259. package/cjs/tools/NumberMap.js +17 -1
  260. package/cjs/tools/NumberMap.js.map +1 -1
  261. package/cjs/ts-types/base-table.d.ts +10 -3
  262. package/cjs/ts-types/base-table.js.map +1 -1
  263. package/cjs/ts-types/common.d.ts +1 -0
  264. package/cjs/ts-types/common.js.map +1 -1
  265. package/cjs/ts-types/component/title.d.ts +1 -1
  266. package/cjs/ts-types/component/title.js.map +1 -1
  267. package/cjs/ts-types/customElement.d.ts +1 -1
  268. package/cjs/ts-types/customElement.js.map +1 -1
  269. package/cjs/ts-types/customLayout.d.ts +1 -1
  270. package/cjs/ts-types/customLayout.js.map +1 -1
  271. package/cjs/ts-types/events.d.ts +3 -4
  272. package/cjs/ts-types/events.js.map +1 -1
  273. package/cjs/ts-types/list-table/define/basic-define.d.ts +5 -1
  274. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  275. package/cjs/ts-types/list-table/define/image-define.d.ts +2 -0
  276. package/cjs/ts-types/list-table/define/image-define.js.map +1 -1
  277. package/cjs/ts-types/list-table/define/multilinetext-define.d.ts +0 -1
  278. package/cjs/ts-types/list-table/define/multilinetext-define.js.map +1 -1
  279. package/cjs/ts-types/pivot-table/dimension/image-dimension.d.ts +1 -0
  280. package/cjs/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
  281. package/cjs/ts-types/pivot-table/indicator/image-indicator.d.ts +2 -0
  282. package/cjs/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  283. package/cjs/ts-types/table-engine.d.ts +17 -0
  284. package/cjs/ts-types/table-engine.js.map +1 -1
  285. package/cjs/ts-types/theme.d.ts +7 -0
  286. package/cjs/ts-types/theme.js.map +1 -1
  287. package/cjs/vrender.d.ts +4 -0
  288. package/cjs/vrender.js +40 -0
  289. package/cjs/vrender.js.map +1 -0
  290. package/dist/vtable.js +28869 -46496
  291. package/dist/vtable.min.js +2 -2
  292. package/es/ListTable.d.ts +3 -0
  293. package/es/ListTable.js +73 -16
  294. package/es/ListTable.js.map +1 -1
  295. package/es/PivotChart.d.ts +2 -4
  296. package/es/PivotChart.js +42 -17
  297. package/es/PivotChart.js.map +1 -1
  298. package/es/PivotTable.d.ts +5 -0
  299. package/es/PivotTable.js +109 -14
  300. package/es/PivotTable.js.map +1 -1
  301. package/es/body-helper/body-helper.js +2 -1
  302. package/es/body-helper/body-helper.js.map +1 -1
  303. package/es/components/axis/axis.js +4 -1
  304. package/es/components/axis/axis.js.map +1 -1
  305. package/es/components/axis/get-axis-attributes.d.ts +1 -0
  306. package/es/components/axis/get-axis-attributes.js +2 -1
  307. package/es/components/axis/get-axis-attributes.js.map +1 -1
  308. package/es/components/axis/label-overlap.js.map +1 -1
  309. package/es/components/axis/linear-scale.js +1 -0
  310. package/es/components/axis/linear-scale.js.map +1 -1
  311. package/es/components/tooltip/TooltipHandler.js +2 -5
  312. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  313. package/es/core/BaseTable.d.ts +24 -4
  314. package/es/core/BaseTable.js +87 -55
  315. package/es/core/BaseTable.js.map +1 -1
  316. package/es/core/style.js +1 -2
  317. package/es/core/tableHelper.d.ts +3 -2
  318. package/es/core/tableHelper.js +19 -6
  319. package/es/core/tableHelper.js.map +1 -1
  320. package/es/dataset/dataset.js +8 -13
  321. package/es/dataset/dataset.js.map +1 -1
  322. package/es/edit/edit-manager.d.ts +1 -1
  323. package/es/edit/edit-manager.js +9 -12
  324. package/es/edit/edit-manager.js.map +1 -1
  325. package/es/event/EventHandler.d.ts +1 -0
  326. package/es/event/EventHandler.js +1 -1
  327. package/es/event/EventHandler.js.map +1 -1
  328. package/es/event/event.d.ts +12 -1
  329. package/es/event/event.js +8 -3
  330. package/es/event/event.js.map +1 -1
  331. package/es/event/listener/container-dom.js +51 -8
  332. package/es/event/listener/container-dom.js.map +1 -1
  333. package/es/event/listener/scroll-bar.js +24 -8
  334. package/es/event/listener/scroll-bar.js.map +1 -1
  335. package/es/event/listener/table-group.js +50 -42
  336. package/es/event/listener/table-group.js.map +1 -1
  337. package/es/event/listener/touch.js.map +1 -1
  338. package/es/event/media-click.js +5 -2
  339. package/es/event/media-click.js.map +1 -1
  340. package/es/event/pivot-chart/axis-click.js.map +1 -1
  341. package/es/event/scroll.js +2 -1
  342. package/es/event/util.d.ts +1 -1
  343. package/es/event/util.js.map +1 -1
  344. package/es/index.d.ts +5 -2
  345. package/es/index.js +10 -2
  346. package/es/index.js.map +1 -1
  347. package/es/layout/chart-helper/get-chart-spec.d.ts +1 -0
  348. package/es/layout/chart-helper/get-chart-spec.js +11 -0
  349. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  350. package/es/layout/pivot-header-layout.d.ts +5 -4
  351. package/es/layout/pivot-header-layout.js +20 -16
  352. package/es/layout/pivot-header-layout.js.map +1 -1
  353. package/es/layout/pivot-layout-helper.d.ts +1 -0
  354. package/es/layout/pivot-layout-helper.js +16 -6
  355. package/es/layout/pivot-layout-helper.js.map +1 -1
  356. package/es/layout/simple-header-layout.d.ts +6 -4
  357. package/es/layout/simple-header-layout.js +45 -14
  358. package/es/layout/simple-header-layout.js.map +1 -1
  359. package/es/render/jsx/index.d.ts +2 -3
  360. package/es/render/jsx/index.js +1 -1
  361. package/es/render/jsx/index.js.map +1 -1
  362. package/es/render/layout/arc.d.ts +2 -2
  363. package/es/render/layout/arc.js +1 -1
  364. package/es/render/layout/arc.js.map +1 -1
  365. package/es/render/layout/circle.d.ts +2 -2
  366. package/es/render/layout/circle.js +1 -1
  367. package/es/render/layout/circle.js.map +1 -1
  368. package/es/render/layout/container.d.ts +2 -2
  369. package/es/render/layout/container.js +1 -1
  370. package/es/render/layout/container.js.map +1 -1
  371. package/es/render/layout/group.d.ts +2 -2
  372. package/es/render/layout/group.js +1 -1
  373. package/es/render/layout/group.js.map +1 -1
  374. package/es/render/layout/icon.d.ts +2 -2
  375. package/es/render/layout/icon.js +1 -1
  376. package/es/render/layout/icon.js.map +1 -1
  377. package/es/render/layout/image.d.ts +2 -2
  378. package/es/render/layout/image.js +1 -1
  379. package/es/render/layout/image.js.map +1 -1
  380. package/es/render/layout/rect.d.ts +2 -2
  381. package/es/render/layout/rect.js +1 -1
  382. package/es/render/layout/rect.js.map +1 -1
  383. package/es/render/layout/text.d.ts +3 -3
  384. package/es/render/layout/text.js +2 -2
  385. package/es/render/layout/text.js.map +1 -1
  386. package/es/scenegraph/component/cell-content.d.ts +4 -4
  387. package/es/scenegraph/component/cell-content.js +7 -8
  388. package/es/scenegraph/component/cell-content.js.map +1 -1
  389. package/es/scenegraph/component/cell-mover.d.ts +1 -1
  390. package/es/scenegraph/component/cell-mover.js +1 -1
  391. package/es/scenegraph/component/cell-mover.js.map +1 -1
  392. package/es/scenegraph/component/custom.d.ts +1 -1
  393. package/es/scenegraph/component/custom.js +35 -20
  394. package/es/scenegraph/component/custom.js.map +1 -1
  395. package/es/scenegraph/component/drill-icon.js.map +1 -1
  396. package/es/scenegraph/component/menu.d.ts +1 -1
  397. package/es/scenegraph/component/menu.js +1 -1
  398. package/es/scenegraph/component/menu.js.map +1 -1
  399. package/es/scenegraph/component/table-component.d.ts +1 -1
  400. package/es/scenegraph/component/table-component.js +13 -12
  401. package/es/scenegraph/component/table-component.js.map +1 -1
  402. package/es/scenegraph/debug-tool/debug-tool.d.ts +1 -1
  403. package/es/scenegraph/debug-tool/debug-tool.js +1 -1
  404. package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
  405. package/es/scenegraph/debug-tool/index.d.ts +1 -1
  406. package/es/scenegraph/debug-tool/index.js.map +1 -1
  407. package/es/scenegraph/graphic/chart.d.ts +2 -2
  408. package/es/scenegraph/graphic/chart.js +12 -5
  409. package/es/scenegraph/graphic/chart.js.map +1 -1
  410. package/es/scenegraph/graphic/contributions/chart-render-helper.js +5 -5
  411. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  412. package/es/scenegraph/graphic/contributions/chart-render.d.ts +1 -1
  413. package/es/scenegraph/graphic/contributions/chart-render.js +1 -1
  414. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  415. package/es/scenegraph/graphic/contributions/group-contribution-render.d.ts +18 -3
  416. package/es/scenegraph/graphic/contributions/group-contribution-render.js +58 -3
  417. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  418. package/es/scenegraph/graphic/contributions/image-contribution-render.d.ts +2 -2
  419. package/es/scenegraph/graphic/contributions/image-contribution-render.js +1 -1
  420. package/es/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
  421. package/es/scenegraph/graphic/contributions/index.d.ts +1 -1
  422. package/es/scenegraph/graphic/contributions/index.js +5 -3
  423. package/es/scenegraph/graphic/contributions/index.js.map +1 -1
  424. package/es/scenegraph/graphic/contributions/rect-contribution-render.d.ts +2 -2
  425. package/es/scenegraph/graphic/contributions/rect-contribution-render.js +2 -2
  426. package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  427. package/es/scenegraph/graphic/group.d.ts +4 -2
  428. package/es/scenegraph/graphic/group.js +4 -2
  429. package/es/scenegraph/graphic/group.js.map +1 -1
  430. package/es/scenegraph/graphic/icon.d.ts +2 -2
  431. package/es/scenegraph/graphic/icon.js +1 -1
  432. package/es/scenegraph/graphic/icon.js.map +1 -1
  433. package/es/scenegraph/graphic/text.d.ts +2 -2
  434. package/es/scenegraph/graphic/text.js +1 -1
  435. package/es/scenegraph/graphic/text.js.map +1 -1
  436. package/es/scenegraph/group-creater/cell-helper.d.ts +1 -1
  437. package/es/scenegraph/group-creater/cell-helper.js +13 -10
  438. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  439. package/es/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
  440. package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -1
  441. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  442. package/es/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
  443. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -3
  444. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  445. package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  446. package/es/scenegraph/group-creater/cell-type/image-cell.js +39 -17
  447. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  448. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +1 -1
  449. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  450. package/es/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
  451. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +3 -2
  452. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  453. package/es/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
  454. package/es/scenegraph/group-creater/cell-type/text-cell.js +3 -2
  455. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  456. package/es/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  457. package/es/scenegraph/group-creater/cell-type/video-cell.js +3 -2
  458. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  459. package/es/scenegraph/group-creater/column-helper.d.ts +5 -2
  460. package/es/scenegraph/group-creater/column-helper.js +10 -5
  461. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  462. package/es/scenegraph/group-creater/init-scenegraph.js +11 -11
  463. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  464. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +3 -2
  465. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  466. package/es/scenegraph/group-creater/progress/proxy.js +6 -6
  467. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  468. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -2
  469. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  470. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +5 -4
  471. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  472. package/es/scenegraph/icon/icon-update.d.ts +2 -0
  473. package/es/scenegraph/icon/icon-update.js +16 -2
  474. package/es/scenegraph/icon/icon-update.js.map +1 -1
  475. package/es/scenegraph/layout/compute-col-width.js +12 -9
  476. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  477. package/es/scenegraph/layout/compute-row-height.js +25 -17
  478. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  479. package/es/scenegraph/layout/frozen.js +3 -1
  480. package/es/scenegraph/layout/frozen.js.map +1 -1
  481. package/es/scenegraph/layout/move-cell.js.map +1 -1
  482. package/es/scenegraph/layout/update-col.js +6 -5
  483. package/es/scenegraph/layout/update-col.js.map +1 -1
  484. package/es/scenegraph/layout/update-height.d.ts +1 -1
  485. package/es/scenegraph/layout/update-height.js +7 -5
  486. package/es/scenegraph/layout/update-height.js.map +1 -1
  487. package/es/scenegraph/layout/update-row.js +50 -14
  488. package/es/scenegraph/layout/update-row.js.map +1 -1
  489. package/es/scenegraph/layout/update-width.d.ts +1 -1
  490. package/es/scenegraph/layout/update-width.js +12 -11
  491. package/es/scenegraph/layout/update-width.js.map +1 -1
  492. package/es/scenegraph/refresh-node/update-chart.js +11 -1
  493. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  494. package/es/scenegraph/scenegraph.d.ts +7 -3
  495. package/es/scenegraph/scenegraph.js +54 -58
  496. package/es/scenegraph/scenegraph.js.map +1 -1
  497. package/es/scenegraph/select/create-select-border.js +1 -1
  498. package/es/scenegraph/select/create-select-border.js.map +1 -1
  499. package/es/scenegraph/select/delete-select-border.js.map +1 -1
  500. package/es/scenegraph/select/update-select-border.js +34 -17
  501. package/es/scenegraph/select/update-select-border.js.map +1 -1
  502. package/es/scenegraph/stick-text/index.js +9 -4
  503. package/es/scenegraph/stick-text/index.js.map +1 -1
  504. package/es/scenegraph/style/corner-cell.js.map +1 -1
  505. package/es/scenegraph/style/frame-border.d.ts +3 -1
  506. package/es/scenegraph/style/frame-border.js +18 -1
  507. package/es/scenegraph/style/frame-border.js.map +1 -1
  508. package/es/scenegraph/utils/get-cell-merge.js +1 -1
  509. package/es/scenegraph/utils/get-cell-merge.js.map +1 -1
  510. package/es/scenegraph/utils/padding.js +1 -1
  511. package/es/scenegraph/utils/padding.js.map +1 -1
  512. package/es/scenegraph/utils/render-service.d.ts +1 -1
  513. package/es/scenegraph/utils/render-service.js +1 -1
  514. package/es/scenegraph/utils/render-service.js.map +1 -1
  515. package/es/scenegraph/utils/text-icon-layout.d.ts +1 -1
  516. package/es/scenegraph/utils/text-icon-layout.js +13 -12
  517. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  518. package/es/scenegraph/utils/text-measure.d.ts +2 -2
  519. package/es/scenegraph/utils/text-measure.js +1 -1
  520. package/es/scenegraph/utils/text-measure.js.map +1 -1
  521. package/es/scenegraph/utils/text-pos.d.ts +1 -1
  522. package/es/scenegraph/utils/text-pos.js.map +1 -1
  523. package/es/state/cell-move/adjust-header.js.map +1 -1
  524. package/es/state/cell-move/index.js +2 -1
  525. package/es/state/cell-move/index.js.map +1 -1
  526. package/es/state/select/update-position.js +60 -65
  527. package/es/state/select/update-position.js.map +1 -1
  528. package/es/state/spark-line/index.js +10 -6
  529. package/es/state/spark-line/index.js.map +1 -1
  530. package/es/state/state.d.ts +1 -1
  531. package/es/state/state.js +14 -17
  532. package/es/state/state.js.map +1 -1
  533. package/es/themes/ARCO.js +7 -2
  534. package/es/themes/ARCO.js.map +1 -1
  535. package/es/themes/BRIGHT.js +8 -1
  536. package/es/themes/BRIGHT.js.map +1 -1
  537. package/es/themes/DARK.js +7 -1
  538. package/es/themes/DARK.js.map +1 -1
  539. package/es/themes/DEFAULT.js +6 -0
  540. package/es/themes/DEFAULT.js.map +1 -1
  541. package/es/themes/SIMPLIFY.js +6 -0
  542. package/es/themes/SIMPLIFY.js.map +1 -1
  543. package/es/themes/component.d.ts +27 -0
  544. package/es/themes/component.js +28 -0
  545. package/es/themes/component.js.map +1 -1
  546. package/es/themes/theme.d.ts +2 -0
  547. package/es/themes/theme.js +29 -2
  548. package/es/themes/theme.js.map +1 -1
  549. package/es/tools/NumberMap.d.ts +4 -0
  550. package/es/tools/NumberMap.js +17 -1
  551. package/es/tools/NumberMap.js.map +1 -1
  552. package/es/ts-types/base-table.d.ts +10 -3
  553. package/es/ts-types/base-table.js.map +1 -1
  554. package/es/ts-types/common.d.ts +1 -0
  555. package/es/ts-types/common.js.map +1 -1
  556. package/es/ts-types/component/title.d.ts +1 -1
  557. package/es/ts-types/component/title.js.map +1 -1
  558. package/es/ts-types/customElement.d.ts +1 -1
  559. package/es/ts-types/customElement.js.map +1 -1
  560. package/es/ts-types/customLayout.d.ts +1 -1
  561. package/es/ts-types/customLayout.js.map +1 -1
  562. package/es/ts-types/events.d.ts +3 -4
  563. package/es/ts-types/events.js.map +1 -1
  564. package/es/ts-types/list-table/define/basic-define.d.ts +5 -1
  565. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  566. package/es/ts-types/list-table/define/image-define.d.ts +2 -0
  567. package/es/ts-types/list-table/define/image-define.js.map +1 -1
  568. package/es/ts-types/list-table/define/multilinetext-define.d.ts +0 -1
  569. package/es/ts-types/list-table/define/multilinetext-define.js.map +1 -1
  570. package/es/ts-types/pivot-table/dimension/image-dimension.d.ts +1 -0
  571. package/es/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
  572. package/es/ts-types/pivot-table/indicator/image-indicator.d.ts +2 -0
  573. package/es/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  574. package/es/ts-types/table-engine.d.ts +17 -0
  575. package/es/ts-types/table-engine.js.map +1 -1
  576. package/es/ts-types/theme.d.ts +7 -0
  577. package/es/ts-types/theme.js.map +1 -1
  578. package/es/vrender.d.ts +4 -0
  579. package/es/vrender.js +22 -0
  580. package/es/vrender.js.map +1 -0
  581. package/package.json +13 -12
@@ -33,6 +33,7 @@ export declare class DimensionTree {
33
33
  tree: IPivotLayoutHeadNode;
34
34
  totalLevel: number;
35
35
  dimensionKeys: NumberMap<string>;
36
+ cache: Map<number, any>;
36
37
  constructor(tree: IPivotLayoutHeadNode[], sharedVar: {
37
38
  seqId: number;
38
39
  }, hierarchyType?: 'grid' | 'tree', rowExpandLevel?: number);
@@ -19,13 +19,13 @@ export class DimensionTree {
19
19
  size: 0,
20
20
  startInTotal: 0,
21
21
  hierarchyState: void 0
22
- }, this.totalLevel = 0, this.dimensionKeys = new NumberMap, this.sizeIncludeParent = null != rowExpandLevel,
23
- this.rowExpandLevel = rowExpandLevel, this.hierarchyType = hierarchyType, this.sharedVar = sharedVar,
24
- this.reset(tree);
22
+ }, this.totalLevel = 0, this.dimensionKeys = new NumberMap, this.cache = new Map,
23
+ this.sizeIncludeParent = null != rowExpandLevel, this.rowExpandLevel = rowExpandLevel,
24
+ this.hierarchyType = hierarchyType, this.sharedVar = sharedVar, this.reset(tree);
25
25
  }
26
26
  reset(tree, updateTreeNode = !1) {
27
- this.dimensionKeys = new NumberMap, this.tree.children = tree, this.setTreeNode(this.tree, 0, this.tree),
28
- this.totalLevel = this.dimensionKeys.count();
27
+ this.cache.clear(), this.dimensionKeys = new NumberMap, this.tree.children = tree,
28
+ this.setTreeNode(this.tree, 0, this.tree), this.totalLevel = this.dimensionKeys.count();
29
29
  }
30
30
  setTreeNode(node, startIndex, parent) {
31
31
  var _a, _b, _c, _d, _e, _f, _g;
@@ -75,11 +75,21 @@ export class DimensionTree {
75
75
  if (index < node.startIndex || index >= node.startIndex + node.size) return;
76
76
  if (path.push(node), !node.children || 0 === node.children.length || node.level >= maxDeep) return;
77
77
  const cIndex = index - node.startIndex;
78
+ if (this.cache.has(node.level + 1)) {
79
+ const cacheNode = this.cache.get(node.level + 1);
80
+ if (cIndex >= cacheNode.startIndex && cIndex < cacheNode.startIndex + cacheNode.size) return void this.searchPath(cIndex, cacheNode, path, maxDeep);
81
+ }
78
82
  let left = 0, right = node.children.length - 1;
79
83
  for (;left <= right; ) {
80
84
  const middle = Math.floor((left + right) / 2), element = node.children[middle];
81
85
  if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {
82
- this.searchPath(cIndex, element, path, maxDeep);
86
+ this.cache.set(element.level, element);
87
+ const deleteLevels = [];
88
+ this.cache.forEach(((node, key) => {
89
+ key > element.level && deleteLevels.push(key);
90
+ })), deleteLevels.forEach((key => {
91
+ this.cache.delete(key);
92
+ })), this.searchPath(cIndex, element, path, maxDeep);
83
93
  break;
84
94
  }
85
95
  cIndex < element.startIndex ? right = middle - 1 : left = middle + 1;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/pivot-layout-helper.ts"],"names":[],"mappings":"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","file":"pivot-layout-helper.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type {\n CellInfo,\n ColumnIconOption,\n FieldData,\n HeaderData,\n ICustomRender,\n IDimension,\n IIndicator,\n IRowDimension,\n LayoutObjectId\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport type { PivotHeaderLayoutMap } from './pivot-header-layout';\nimport type { ILinkDimension } from '../ts-types/pivot-table/dimension/link-dimension';\nimport type { IImageDimension } from '../ts-types/pivot-table/dimension/image-dimension';\n// import { sharedVar } from './pivot-header-layout';\n\ninterface IPivotLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // indicatorKey?: string;\n value: string;\n children: IPivotLayoutHeadNode[] | undefined;\n level: number;\n /** 节点跨占层数 如汇总节点跨几层维度 */\n levelSpan: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface IPivotLayoutDimensionHeadNode extends IPivotLayoutBaseHeadNode {\n dimensionKey: string;\n}\ninterface IPivotLayoutIndicatorHeadNode extends IPivotLayoutBaseHeadNode {\n indicatorKey: string;\n}\nexport type IPivotLayoutHeadNode = Either<IPivotLayoutDimensionHeadNode, IPivotLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n sharedVar: { seqId: number };\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n rowExpandLevel: number;\n hierarchyType: 'grid' | 'tree';\n tree: IPivotLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n levelSpan: 1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n constructor(\n tree: IPivotLayoutHeadNode[],\n sharedVar: { seqId: number },\n hierarchyType: 'grid' | 'tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.rowExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.sharedVar = sharedVar;\n this.reset(tree);\n }\n\n reset(tree: IPivotLayoutHeadNode[], updateTreeNode = false) {\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.dimensionKeys = new NumberMap<string>();\n this.tree.children = tree as IPivotLayoutHeadNode[];\n // const re = { totalLevel: 0 };\n // if (updateTreeNode) this.updateTreeNode(this.tree, 0, re, this.tree);\n // else\n this.setTreeNode(this.tree, 0, this.tree);\n this.totalLevel = this.dimensionKeys.count();\n }\n setTreeNode(node: IPivotLayoutHeadNode, startIndex: number, parent: IPivotLayoutHeadNode): number {\n node.startIndex = startIndex;\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n !this.dimensionKeys.contain(node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey) &&\n this.dimensionKeys.put(node.level, node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey);\n if (!node.id) {\n node.id = ++this.sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid') {\n if (node.children?.length >= 1) {\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else {\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n this.setTreeNode(n, size, node);\n });\n } else if (!node.hierarchyState && node.level + 1 < this.rowExpandLevel && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n node.hierarchyState = HierarchyState.expand;\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n node.hierarchyState = HierarchyState.collapse;\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<IPivotLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n getTreePathByCellIds(ids: LayoutObjectId[]): Array<IPivotLayoutHeadNode> {\n const path: any[] = [];\n let nodes = this.tree.children;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n const pathNode = this.findNodeById(nodes, id);\n if (pathNode) {\n path.push(pathNode);\n nodes = pathNode.children;\n } else {\n break;\n }\n }\n // path.shift();\n return path;\n }\n findNodeById(nodes: IPivotLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: IPivotLayoutHeadNode, path: Array<IPivotLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return;\n }\n path.push(node);\n if (!node.children || node.children.length === 0 || node.level >= maxDeep) {\n return;\n }\n\n // const cIndex = index - node.startIndex;\n // for (let i = 0; i < node.children.length; i++) {\n // const element = node.children[i];\n // if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n // this.searchPath(cIndex, element, path, maxDeep);\n // break;\n // }\n // }\n\n // use dichotomy to optimize search performance\n const cIndex = index - node.startIndex;\n let left = 0;\n let right = node.children.length - 1;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const element = node.children[middle];\n\n if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n this.searchPath(cIndex, element, path, maxDeep);\n break;\n } else if (cIndex < element.startIndex) {\n right = middle - 1;\n } else {\n left = middle + 1;\n }\n }\n return;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: IPivotLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: IPivotLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n\n if (node.children && node.level < level) {\n parNode = node;\n for (let i = 0; i < node.children.length; i++) {\n if (\n (sourceIndex >= node.children[i].startInTotal &&\n sourceIndex <= node.children[i].startInTotal + node.children[i].size) ||\n (targetIndex >= node.children[i].startInTotal &&\n targetIndex <= node.children[i].startInTotal + node.children[i].size)\n ) {\n findTargetNode(node.children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const sourceColumns = parNode.children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(parNode.children, sourceColumns);\n }\n}\n\n//#region 为方法getLayoutRowTree提供的类型和工具方法\nexport type LayouTreeNode = {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children?: LayouTreeNode[];\n};\n\nexport function generateLayoutTree(tree: LayouTreeNode[], children: IPivotLayoutHeadNode[]) {\n children?.forEach((node: IPivotLayoutHeadNode) => {\n const diemnsonNode: {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children: any;\n } = {\n dimensionKey: node.dimensionKey,\n indicatorKey: node.indicatorKey,\n value: node.value,\n hierarchyState: node.hierarchyState,\n children: undefined\n };\n tree.push(diemnsonNode);\n if (node.children) {\n diemnsonNode.children = [];\n generateLayoutTree(diemnsonNode.children, node.children);\n }\n });\n}\n//#endregion\n\n//#region 为方法getLayoutRowTreeCount提的工具方法\nexport function countLayoutTree(children: { children?: any }[], countParentNode: boolean) {\n let count = 0;\n children?.forEach((node: IPivotLayoutHeadNode) => {\n if (countParentNode) {\n count++;\n } else {\n if (!node.children || node.children.length === 0) {\n count++;\n }\n }\n if (node.children) {\n count += countLayoutTree(node.children, countParentNode);\n }\n });\n return count;\n}\n//#endregion\n\nexport function dealHeader(\n hd: IPivotLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n layoutMap: PivotHeaderLayoutMap\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign({}, <any>hd, indicatorInfo ?? dimensionInfo),\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n description: dimensionInfo?.description\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n // if (dimensionInfo.indicators) {\n // layoutMap.hideIndicatorName = dimensionInfo.hideIndicatorName ?? false;\n // layoutMap.indicatorsAsCol = dimensionInfo.indicatorsAsCol ?? true;\n // }\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n\n // 处理汇总小计跨维度层级的情况\n if ((hd as any).levelSpan > 1) {\n for (let i = 1; i < (hd as any).levelSpan; i++) {\n if (!_headerCellIds[row + i]) {\n _headerCellIds[row + i] = [];\n }\n _headerCellIds[row + i][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd as IPivotLayoutHeadNode).children?.length >= 1) {\n layoutMap\n ._addHeaders(_headerCellIds, row + ((hd as any).levelSpan ?? 1), (hd as IPivotLayoutHeadNode).children ?? [], [\n ...roots,\n ...Array((hd as any).levelSpan ?? 1).fill(id)\n ])\n .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n\n // if ((hd as any).levelSpan > 1) {\n // for (let i = 1; i < (hd as any).levelSpan; i++) {\n // _headerCellIds[r + i][layoutMap.colIndex] = id;\n // }\n // }\n }\n layoutMap.colIndex++;\n }\n}\n\nexport function dealHeaderForTreeMode(\n hd: IPivotLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n show: boolean,\n dimensions: (IDimension | string)[],\n layoutMap: PivotHeaderLayoutMap\n) {\n const id = hd.id;\n // const dimensionInfo: IDimension =\n // (this.rowsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension) ??\n // (this.columnsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension);\n const dimensionInfo: IDimension = dimensions.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension;\n\n const cell: HeaderData = {\n id,\n title: hd.value,\n field: hd.dimensionKey as FieldData,\n //如果不是整棵树的叶子节点,都靠左显示\n style:\n hd.level + 1 === totalLevel || typeof dimensionInfo?.headerStyle === 'function'\n ? dimensionInfo?.headerStyle\n : Object.assign({}, dimensionInfo?.headerStyle, { textAlign: 'left' }),\n headerType: dimensionInfo?.headerType ?? 'text',\n headerIcon: dimensionInfo?.headerIcon,\n define: Object.assign(<any>hd, {\n linkJump: (dimensionInfo as ILinkDimension)?.linkJump,\n linkDetect: (dimensionInfo as ILinkDimension)?.linkDetect,\n templateLink: (dimensionInfo as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: (dimensionInfo as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: (dimensionInfo as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: dimensionInfo?.headerCustomRender,\n headerCustomLayout: dimensionInfo?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!dimensionInfo?.disableHeaderHover,\n disableHeaderSelect: !!dimensionInfo?.disableHeaderSelect\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey as string,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.level + 1 === totalLevel ? undefined : hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n parentCellId: roots[roots.length - 1]\n };\n\n results[id] = cell;\n // this._cellIdDiemnsionMap.set(id, {\n // dimensionKey: hd.dimensionKey,\n // value: hd.value\n // });\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n if (hd.hierarchyState === HierarchyState.expand && (hd as IPivotLayoutHeadNode).children?.length >= 1) {\n //row传值 colIndex++和_addHeaders有区别\n show && layoutMap.colIndex++;\n layoutMap\n ._addHeadersForTreeMode(\n _headerCellIds,\n row,\n (hd as IPivotLayoutHeadNode).children ?? [],\n [...roots, id],\n totalLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show 且当前节点状态为展开 则传给子节点为show:true\n dimensions\n )\n .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n show && layoutMap.colIndex++;\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/pivot-layout-helper.ts"],"names":[],"mappings":"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","file":"pivot-layout-helper.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type {\n CellInfo,\n ColumnIconOption,\n FieldData,\n HeaderData,\n ICustomRender,\n IDimension,\n IIndicator,\n IRowDimension,\n LayoutObjectId\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport type { PivotHeaderLayoutMap } from './pivot-header-layout';\nimport type { ILinkDimension } from '../ts-types/pivot-table/dimension/link-dimension';\nimport type { IImageDimension } from '../ts-types/pivot-table/dimension/image-dimension';\n// import { sharedVar } from './pivot-header-layout';\n\ninterface IPivotLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // indicatorKey?: string;\n value: string;\n children: IPivotLayoutHeadNode[] | undefined;\n level: number;\n /** 节点跨占层数 如汇总节点跨几层维度 */\n levelSpan: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface IPivotLayoutDimensionHeadNode extends IPivotLayoutBaseHeadNode {\n dimensionKey: string;\n}\ninterface IPivotLayoutIndicatorHeadNode extends IPivotLayoutBaseHeadNode {\n indicatorKey: string;\n}\nexport type IPivotLayoutHeadNode = Either<IPivotLayoutDimensionHeadNode, IPivotLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n sharedVar: { seqId: number };\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n rowExpandLevel: number;\n hierarchyType: 'grid' | 'tree';\n tree: IPivotLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n levelSpan: 1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n\n cache: Map<number, any> = new Map();\n constructor(\n tree: IPivotLayoutHeadNode[],\n sharedVar: { seqId: number },\n hierarchyType: 'grid' | 'tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.rowExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.sharedVar = sharedVar;\n this.reset(tree);\n }\n\n reset(tree: IPivotLayoutHeadNode[], updateTreeNode = false) {\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.cache.clear();\n this.dimensionKeys = new NumberMap<string>();\n this.tree.children = tree as IPivotLayoutHeadNode[];\n // const re = { totalLevel: 0 };\n // if (updateTreeNode) this.updateTreeNode(this.tree, 0, re, this.tree);\n // else\n this.setTreeNode(this.tree, 0, this.tree);\n this.totalLevel = this.dimensionKeys.count();\n }\n setTreeNode(node: IPivotLayoutHeadNode, startIndex: number, parent: IPivotLayoutHeadNode): number {\n node.startIndex = startIndex;\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n !this.dimensionKeys.contain(node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey) &&\n this.dimensionKeys.put(node.level, node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey);\n if (!node.id) {\n node.id = ++this.sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid') {\n if (node.children?.length >= 1) {\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else {\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n this.setTreeNode(n, size, node);\n });\n } else if (!node.hierarchyState && node.level + 1 < this.rowExpandLevel && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n node.hierarchyState = HierarchyState.expand;\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n node.hierarchyState = HierarchyState.collapse;\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<IPivotLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n getTreePathByCellIds(ids: LayoutObjectId[]): Array<IPivotLayoutHeadNode> {\n const path: any[] = [];\n let nodes = this.tree.children;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n const pathNode = this.findNodeById(nodes, id);\n if (pathNode) {\n path.push(pathNode);\n nodes = pathNode.children;\n } else {\n break;\n }\n }\n // path.shift();\n return path;\n }\n findNodeById(nodes: IPivotLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: IPivotLayoutHeadNode, path: Array<IPivotLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return;\n }\n path.push(node);\n if (!node.children || node.children.length === 0 || node.level >= maxDeep) {\n return;\n }\n\n // const cIndex = index - node.startIndex;\n // for (let i = 0; i < node.children.length; i++) {\n // const element = node.children[i];\n // if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n // this.searchPath(cIndex, element, path, maxDeep);\n // break;\n // }\n // }\n\n // use dichotomy to optimize search performance\n const cIndex = index - node.startIndex;\n\n if (this.cache.has(node.level + 1)) {\n const cacheNode = this.cache.get(node.level + 1);\n if (cIndex >= cacheNode.startIndex && cIndex < cacheNode.startIndex + cacheNode.size) {\n this.searchPath(cIndex, cacheNode, path, maxDeep);\n return;\n }\n }\n\n let left = 0;\n let right = node.children.length - 1;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const element = node.children[middle];\n\n if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n this.cache.set(element.level, element);\n const deleteLevels: number[] = [];\n this.cache.forEach((node, key) => {\n if (key > element.level) {\n deleteLevels.push(key);\n }\n });\n deleteLevels.forEach(key => {\n this.cache.delete(key);\n });\n this.searchPath(cIndex, element, path, maxDeep);\n break;\n } else if (cIndex < element.startIndex) {\n right = middle - 1;\n } else {\n left = middle + 1;\n }\n }\n return;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: IPivotLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: IPivotLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n\n if (node.children && node.level < level) {\n parNode = node;\n for (let i = 0; i < node.children.length; i++) {\n if (\n (sourceIndex >= node.children[i].startInTotal &&\n sourceIndex <= node.children[i].startInTotal + node.children[i].size) ||\n (targetIndex >= node.children[i].startInTotal &&\n targetIndex <= node.children[i].startInTotal + node.children[i].size)\n ) {\n findTargetNode(node.children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const sourceColumns = parNode.children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(parNode.children, sourceColumns);\n }\n}\n\n//#region 为方法getLayoutRowTree提供的类型和工具方法\nexport type LayouTreeNode = {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children?: LayouTreeNode[];\n};\n\nexport function generateLayoutTree(tree: LayouTreeNode[], children: IPivotLayoutHeadNode[]) {\n children?.forEach((node: IPivotLayoutHeadNode) => {\n const diemnsonNode: {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children: any;\n } = {\n dimensionKey: node.dimensionKey,\n indicatorKey: node.indicatorKey,\n value: node.value,\n hierarchyState: node.hierarchyState,\n children: undefined\n };\n tree.push(diemnsonNode);\n if (node.children) {\n diemnsonNode.children = [];\n generateLayoutTree(diemnsonNode.children, node.children);\n }\n });\n}\n//#endregion\n\n//#region 为方法getLayoutRowTreeCount提的工具方法\nexport function countLayoutTree(children: { children?: any }[], countParentNode: boolean) {\n let count = 0;\n children?.forEach((node: IPivotLayoutHeadNode) => {\n if (countParentNode) {\n count++;\n } else {\n if (!node.children || node.children.length === 0) {\n count++;\n }\n }\n if (node.children) {\n count += countLayoutTree(node.children, countParentNode);\n }\n });\n return count;\n}\n//#endregion\n\nexport function dealHeader(\n hd: IPivotLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n layoutMap: PivotHeaderLayoutMap\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign({}, <any>hd, indicatorInfo ?? dimensionInfo),\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n description: dimensionInfo?.description\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n // if (dimensionInfo.indicators) {\n // layoutMap.hideIndicatorName = dimensionInfo.hideIndicatorName ?? false;\n // layoutMap.indicatorsAsCol = dimensionInfo.indicatorsAsCol ?? true;\n // }\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n\n // 处理汇总小计跨维度层级的情况\n if ((hd as any).levelSpan > 1) {\n for (let i = 1; i < (hd as any).levelSpan; i++) {\n if (!_headerCellIds[row + i]) {\n _headerCellIds[row + i] = [];\n }\n _headerCellIds[row + i][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd as IPivotLayoutHeadNode).children?.length >= 1) {\n layoutMap\n ._addHeaders(_headerCellIds, row + ((hd as any).levelSpan ?? 1), (hd as IPivotLayoutHeadNode).children ?? [], [\n ...roots,\n ...Array((hd as any).levelSpan ?? 1).fill(id)\n ])\n .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n\n // if ((hd as any).levelSpan > 1) {\n // for (let i = 1; i < (hd as any).levelSpan; i++) {\n // _headerCellIds[r + i][layoutMap.colIndex] = id;\n // }\n // }\n }\n layoutMap.colIndex++;\n }\n}\n\nexport function dealHeaderForTreeMode(\n hd: IPivotLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n show: boolean,\n dimensions: (IDimension | string)[],\n layoutMap: PivotHeaderLayoutMap\n) {\n const id = hd.id;\n // const dimensionInfo: IDimension =\n // (this.rowsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension) ??\n // (this.columnsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension);\n const dimensionInfo: IDimension = dimensions.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension;\n\n const cell: HeaderData = {\n id,\n title: hd.value,\n field: hd.dimensionKey as FieldData,\n //如果不是整棵树的叶子节点,都靠左显示\n style:\n hd.level + 1 === totalLevel || typeof dimensionInfo?.headerStyle === 'function'\n ? dimensionInfo?.headerStyle\n : Object.assign({}, dimensionInfo?.headerStyle, { textAlign: 'left' }),\n headerType: dimensionInfo?.headerType ?? 'text',\n headerIcon: dimensionInfo?.headerIcon,\n define: Object.assign(<any>hd, {\n linkJump: (dimensionInfo as ILinkDimension)?.linkJump,\n linkDetect: (dimensionInfo as ILinkDimension)?.linkDetect,\n templateLink: (dimensionInfo as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: (dimensionInfo as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: (dimensionInfo as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: dimensionInfo?.headerCustomRender,\n headerCustomLayout: dimensionInfo?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!dimensionInfo?.disableHeaderHover,\n disableHeaderSelect: !!dimensionInfo?.disableHeaderSelect\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey as string,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.level + 1 === totalLevel ? undefined : hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n parentCellId: roots[roots.length - 1]\n };\n\n results[id] = cell;\n // this._cellIdDiemnsionMap.set(id, {\n // dimensionKey: hd.dimensionKey,\n // value: hd.value\n // });\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n if (hd.hierarchyState === HierarchyState.expand && (hd as IPivotLayoutHeadNode).children?.length >= 1) {\n //row传值 colIndex++和_addHeaders有区别\n show && layoutMap.colIndex++;\n layoutMap\n ._addHeadersForTreeMode(\n _headerCellIds,\n row,\n (hd as IPivotLayoutHeadNode).children ?? [],\n [...roots, id],\n totalLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show 且当前节点状态为展开 则传给子节点为show:true\n dimensions\n )\n .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n show && layoutMap.colIndex++;\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n}\n"]}
@@ -43,10 +43,10 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
43
43
  get frozenRowCount(): number;
44
44
  get bottomFrozenRowCount(): number;
45
45
  get rightFrozenColCount(): number;
46
- get colCount(): number | undefined;
47
- get rowCount(): number | undefined;
48
- get bodyRowCount(): number | undefined;
49
- get bodyColCount(): number | undefined;
46
+ get colCount(): number;
47
+ get rowCount(): number;
48
+ get bodyRowCount(): number;
49
+ get bodyColCount(): number;
50
50
  get recordsCount(): number;
51
51
  set recordsCount(recordsCount: number);
52
52
  get headerObjects(): HeaderData[];
@@ -93,6 +93,7 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
93
93
  };
94
94
  setChartInstance(_col: number, _row: number, chartInstance: any): void;
95
95
  getChartInstance(_col: number, _row: number): any;
96
+ checkHasChart(): boolean;
96
97
  getAxisConfigInPivotChart(col: number, row: number): any;
97
98
  isEmpty(col: number, row: number): boolean;
98
99
  isAxisCell(col: number, row: number): boolean;
@@ -101,4 +102,5 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
101
102
  getChartDataId(col: number, row: number): any;
102
103
  release(): void;
103
104
  clearCellRangeMap(): void;
105
+ updateColumnTitle(col: number, row: number, title: string): void;
104
106
  }
@@ -2,7 +2,7 @@ import { isValid } from "@visactor/vutils";
2
2
 
3
3
  import { DefaultSparklineSpec } from "../tools/global";
4
4
 
5
- import { getChartDataId } from "./chart-helper/get-chart-spec";
5
+ import { checkHasChart, getChartDataId } from "./chart-helper/get-chart-spec";
6
6
 
7
7
  export class SimpleHeaderLayoutMap {
8
8
  constructor(table, columns, showHeader, hierarchyIndent) {
@@ -25,21 +25,21 @@ export class SimpleHeaderLayoutMap {
25
25
  this._showHeader = _showHeader;
26
26
  }
27
27
  isHeader(col, row) {
28
- return !!(this.transpose && col < this.headerLevelCount) || !this.transpose && row < this.headerLevelCount;
28
+ return !!(this.transpose && col >= 0 && col < this.headerLevelCount) || !this.transpose && row >= 0 && row < this.headerLevelCount;
29
29
  }
30
30
  getCellLocation(col, row) {
31
31
  return this.isHeader(col, row) ? this.transpose ? "rowHeader" : "columnHeader" : "body";
32
32
  }
33
33
  isRowHeader(col, row) {
34
- return !!(this.transpose && col < this.headerLevelCount);
34
+ return !!(this.transpose && col >= 0 && col <= this.headerLevelCount - 1);
35
35
  }
36
36
  isColumnHeader(col, row) {
37
- return !this.transpose && row < this.headerLevelCount;
37
+ return !this.transpose && row >= 0 && row <= this.headerLevelCount - 1;
38
38
  }
39
39
  isFrozenColumn(col, row) {
40
40
  if (isValid(row)) {
41
- if (col < this.frozenColCount && row >= this.frozenRowCount && row < this.rowCount - this.bottomFrozenRowCount) return !0;
42
- } else if (this.frozenColCount > 0 && col < this.frozenColCount) return !0;
41
+ if (col >= 0 && col < this.frozenColCount && row >= this.frozenRowCount && row < this.rowCount - this.bottomFrozenRowCount) return !0;
42
+ } else if (this.frozenColCount > 0 && col >= 0 && col < this.frozenColCount) return !0;
43
43
  return !1;
44
44
  }
45
45
  isRightFrozenColumn(col, row) {
@@ -50,8 +50,8 @@ export class SimpleHeaderLayoutMap {
50
50
  }
51
51
  isFrozenRow(col, row) {
52
52
  if (isValid(row)) {
53
- if (row < this.frozenRowCount && col >= this.frozenColCount && col < this.colCount - this.rightFrozenColCount) return !0;
54
- } else if (row = col, this.frozenRowCount > 0 && row < this.frozenRowCount) return !0;
53
+ if (row >= 0 && row < this.frozenRowCount && col >= this.frozenColCount && col < this.colCount - this.rightFrozenColCount) return !0;
54
+ } else if (row = col, this.frozenRowCount > 0 && row >= 0 && row < this.frozenRowCount) return !0;
55
55
  return !1;
56
56
  }
57
57
  isBottomFrozenRow(col, row) {
@@ -61,10 +61,10 @@ export class SimpleHeaderLayoutMap {
61
61
  return !1;
62
62
  }
63
63
  isLeftBottomCorner(col, row) {
64
- return col < this.rowHeaderLevelCount && row >= this.rowCount - this.bottomFrozenRowCount;
64
+ return col >= 0 && col < this.rowHeaderLevelCount && row >= this.rowCount - this.bottomFrozenRowCount;
65
65
  }
66
66
  isRightTopCorner(col, row) {
67
- return col >= this.colCount - this.rightFrozenColCount && row < this.columnHeaderLevelCount;
67
+ return col >= this.colCount - this.rightFrozenColCount && row >= 0 && row < this.columnHeaderLevelCount;
68
68
  }
69
69
  isRightBottomCorner(col, row) {
70
70
  return col >= this.colCount - this.rightFrozenColCount && row >= this.rowCount - this.bottomFrozenRowCount;
@@ -307,8 +307,20 @@ export class SimpleHeaderLayoutMap {
307
307
  if (this.transpose) cellRange = this.getCellRangeTranspose(col, row); else if (this.headerLevelCount <= row) {
308
308
  if (this.headerLevelCount <= row && (null === (_b = null === (_a = this.columnObjects[col]) || void 0 === _a ? void 0 : _a.define) || void 0 === _b ? void 0 : _b.mergeCell)) {
309
309
  const value = this.getBodyCellValue(col, row);
310
- for (let r = row - 1; r >= this.headerLevelCount && value === this.getBodyCellValue(col, r); r--) cellRange.start.row = r;
311
- for (let r = row + 1; r < this.rowCount && value === this.getBodyCellValue(col, r); r++) cellRange.end.row = r;
310
+ for (let r = row - 1; r >= this.headerLevelCount; r--) {
311
+ const last_Value = this.getBodyCellValue(col, r);
312
+ if ("boolean" == typeof this.columnObjects[col].define.mergeCell) {
313
+ if (value !== last_Value) break;
314
+ } else if (!this.columnObjects[col].define.mergeCell(value, last_Value)) break;
315
+ cellRange.start.row = r;
316
+ }
317
+ for (let r = row + 1; r < this.rowCount; r++) {
318
+ const next_Value = this.getBodyCellValue(col, r);
319
+ if ("boolean" == typeof this.columnObjects[col].define.mergeCell) {
320
+ if (value !== next_Value) break;
321
+ } else if (!this.columnObjects[col].define.mergeCell(value, next_Value)) break;
322
+ cellRange.end.row = r;
323
+ }
312
324
  }
313
325
  } else {
314
326
  const id = this.getCellId(col, row);
@@ -334,8 +346,20 @@ export class SimpleHeaderLayoutMap {
334
346
  if (this.headerLevelCount <= col || -1 === col && -1 === row) {
335
347
  if (this.headerLevelCount <= col && (null === (_b = null === (_a = this.columnObjects[row]) || void 0 === _a ? void 0 : _a.define) || void 0 === _b ? void 0 : _b.mergeCell)) {
336
348
  const value = this.getBodyCellValue(col, row);
337
- for (let c = col - 1; c >= this.headerLevelCount && value === this.getBodyCellValue(c, row); c--) result.start.col = c;
338
- for (let c = col + 1; c < (null !== (_c = this.colCount) && void 0 !== _c ? _c : 0) && value === this.getBodyCellValue(c, row); c++) result.end.col = c;
349
+ for (let c = col - 1; c >= this.headerLevelCount; c--) {
350
+ const last_Value = this.getBodyCellValue(c, row);
351
+ if ("boolean" == typeof this.columnObjects[row].define.mergeCell) {
352
+ if (value !== last_Value) break;
353
+ } else if (!this.columnObjects[row].define.mergeCell(value, last_Value)) break;
354
+ result.start.col = c;
355
+ }
356
+ for (let c = col + 1; c < (null !== (_c = this.colCount) && void 0 !== _c ? _c : 0); c++) {
357
+ const next_Value = this.getBodyCellValue(c, row);
358
+ if ("boolean" == typeof this.columnObjects[row].define.mergeCell) {
359
+ if (value !== next_Value) break;
360
+ } else if (!this.columnObjects[row].define.mergeCell(value, next_Value)) break;
361
+ result.end.col = c;
362
+ }
339
363
  }
340
364
  return result;
341
365
  }
@@ -501,6 +525,9 @@ export class SimpleHeaderLayoutMap {
501
525
  getChartInstance(_col, _row) {
502
526
  return (this.transpose ? this._columns[_row] : this._columns[_col]).chartInstance;
503
527
  }
528
+ checkHasChart() {
529
+ return checkHasChart(this);
530
+ }
504
531
  getAxisConfigInPivotChart(col, row) {}
505
532
  isEmpty(col, row) {
506
533
  return !1;
@@ -528,5 +555,9 @@ export class SimpleHeaderLayoutMap {
528
555
  clearCellRangeMap() {
529
556
  this._cellRangeMap.clear();
530
557
  }
558
+ updateColumnTitle(col, row, title) {
559
+ const define = this._table.internalProps.layoutMap.getHeader(col, row);
560
+ define.title = title, define.define.title = title;
561
+ }
531
562
  }
532
563
  //# sourceMappingURL=simple-header-layout.js.map