@visactor/vtable 0.9.2 → 0.9.3-alpha.1

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 (664) hide show
  1. package/README.md +15 -15
  2. package/cjs/ListTable.d.ts +2 -1
  3. package/cjs/ListTable.js +17 -13
  4. package/cjs/ListTable.js.map +1 -1
  5. package/cjs/PivotChart.d.ts +69 -0
  6. package/cjs/PivotChart.js +445 -0
  7. package/cjs/PivotChart.js.map +1 -0
  8. package/cjs/PivotTable.d.ts +2 -1
  9. package/cjs/PivotTable.js +18 -13
  10. package/cjs/PivotTable.js.map +1 -1
  11. package/cjs/body-helper/style/MultilineTextStyle.js +2 -2
  12. package/cjs/body-helper/style/MultilineTextStyle.js.map +1 -1
  13. package/cjs/body-helper/style/ProgressBarStyle.js +15 -15
  14. package/cjs/body-helper/style/ProgressBarStyle.js.map +1 -1
  15. package/cjs/body-helper/style/Style.d.ts +0 -1
  16. package/cjs/body-helper/style/Style.js +25 -28
  17. package/cjs/body-helper/style/Style.js.map +1 -1
  18. package/cjs/chartModule.js +14 -0
  19. package/cjs/chartModule.js.map +1 -0
  20. package/cjs/components/axis/axis.d.ts +45 -0
  21. package/cjs/components/axis/axis.js +146 -0
  22. package/cjs/components/axis/axis.js.map +1 -0
  23. package/cjs/components/axis/band-scale.d.ts +18 -0
  24. package/cjs/components/axis/band-scale.js +54 -0
  25. package/cjs/components/axis/band-scale.js.map +1 -0
  26. package/cjs/components/axis/get-axis-attributes.d.ts +136 -0
  27. package/cjs/components/axis/get-axis-attributes.js +169 -0
  28. package/cjs/components/axis/get-axis-attributes.js.map +1 -0
  29. package/cjs/components/axis/label-overlap.d.ts +3 -0
  30. package/cjs/components/axis/label-overlap.js +46 -0
  31. package/cjs/components/axis/label-overlap.js.map +1 -0
  32. package/cjs/components/axis/linear-scale.d.ts +45 -0
  33. package/cjs/components/axis/linear-scale.js +120 -0
  34. package/cjs/components/axis/linear-scale.js.map +1 -0
  35. package/cjs/components/legend/get-legend-attributes.d.ts +5 -0
  36. package/cjs/components/legend/get-legend-attributes.js +90 -0
  37. package/cjs/components/legend/get-legend-attributes.js.map +1 -0
  38. package/cjs/components/legend/legend.d.ts +23 -0
  39. package/cjs/components/legend/legend.js +94 -0
  40. package/cjs/components/legend/legend.js.map +1 -0
  41. package/{es → cjs/components}/menu/dom/BaseMenu.d.ts +2 -2
  42. package/cjs/components/menu/dom/BaseMenu.js.map +1 -0
  43. package/cjs/components/menu/dom/Menu.js.map +1 -0
  44. package/cjs/{menu → components/menu}/dom/MenuHandler.d.ts +2 -2
  45. package/cjs/{menu → components/menu}/dom/MenuHandler.js +1 -1
  46. package/cjs/components/menu/dom/MenuHandler.js.map +1 -0
  47. package/cjs/{menu → components/menu}/dom/logic/MenuContainer.d.ts +2 -2
  48. package/cjs/{menu → components/menu}/dom/logic/MenuContainer.js +2 -2
  49. package/cjs/components/menu/dom/logic/MenuContainer.js.map +1 -0
  50. package/cjs/{menu → components/menu}/dom/logic/MenuElement.d.ts +2 -2
  51. package/cjs/{menu → components/menu}/dom/logic/MenuElement.js +4 -4
  52. package/cjs/components/menu/dom/logic/MenuElement.js.map +1 -0
  53. package/cjs/components/menu/dom/logic/MenuElementStyle.js.map +1 -0
  54. package/cjs/components/title/title.d.ts +12 -0
  55. package/cjs/components/title/title.js +66 -0
  56. package/cjs/components/title/title.js.map +1 -0
  57. package/{es → cjs/components}/tooltip/BaseTooltip.d.ts +3 -3
  58. package/cjs/components/tooltip/BaseTooltip.js.map +1 -0
  59. package/cjs/components/tooltip/Tooltip.js.map +1 -0
  60. package/cjs/{tooltip → components/tooltip}/TooltipHandler.d.ts +4 -4
  61. package/cjs/{tooltip → components/tooltip}/TooltipHandler.js +1 -1
  62. package/cjs/components/tooltip/TooltipHandler.js.map +1 -0
  63. package/{es → cjs/components}/tooltip/logic/BubbleTooltipElement.d.ts +4 -4
  64. package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElement.js +1 -1
  65. package/cjs/components/tooltip/logic/BubbleTooltipElement.js.map +1 -0
  66. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -0
  67. package/cjs/components/util/orient.d.ts +3 -0
  68. package/cjs/components/util/orient.js +14 -0
  69. package/cjs/components/util/orient.js.map +1 -0
  70. package/cjs/components/util/register.d.ts +3 -0
  71. package/cjs/components/util/register.js +15 -0
  72. package/cjs/components/util/register.js.map +1 -0
  73. package/cjs/components/util/tick-data/config.d.ts +1 -0
  74. package/cjs/components/util/tick-data/config.js +6 -0
  75. package/cjs/components/util/tick-data/config.js.map +1 -0
  76. package/cjs/components/util/tick-data/continuous.d.ts +2 -0
  77. package/cjs/components/util/tick-data/continuous.js +39 -0
  78. package/cjs/components/util/tick-data/continuous.js.map +1 -0
  79. package/cjs/components/util/tick-data/discrete/linear.d.ts +2 -0
  80. package/cjs/components/util/tick-data/discrete/linear.js +66 -0
  81. package/cjs/components/util/tick-data/discrete/linear.js.map +1 -0
  82. package/cjs/components/util/tick-data/discrete/polar-angle.d.ts +2 -0
  83. package/cjs/components/util/tick-data/discrete/polar-angle.js +46 -0
  84. package/cjs/components/util/tick-data/discrete/polar-angle.js.map +1 -0
  85. package/cjs/components/util/tick-data/index.d.ts +2 -0
  86. package/cjs/components/util/tick-data/index.js +17 -0
  87. package/cjs/components/util/tick-data/index.js.map +1 -0
  88. package/cjs/components/util/tick-data/util.d.ts +21 -0
  89. package/cjs/components/util/tick-data/util.js +115 -0
  90. package/cjs/components/util/tick-data/util.js.map +1 -0
  91. package/cjs/components/util/transform.d.ts +5 -0
  92. package/cjs/components/util/transform.js +45 -0
  93. package/cjs/components/util/transform.js.map +1 -0
  94. package/cjs/core/BaseTable.d.ts +18 -5
  95. package/cjs/core/BaseTable.js +115 -41
  96. package/cjs/core/BaseTable.js.map +1 -1
  97. package/cjs/core/TABLE_EVENT_TYPE.d.ts +5 -0
  98. package/cjs/core/TABLE_EVENT_TYPE.js +6 -1
  99. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  100. package/cjs/core/style.js +1 -1
  101. package/cjs/core/style.js.map +1 -1
  102. package/cjs/core/tableHelper.js +1 -2
  103. package/cjs/data/CachedDataSource.js +2 -1
  104. package/cjs/data/DataSource.js +2 -2
  105. package/cjs/data/DataSource.js.map +1 -1
  106. package/cjs/dataset/dataset-pivot-table.d.ts +60 -0
  107. package/cjs/dataset/dataset-pivot-table.js +387 -0
  108. package/cjs/dataset/dataset-pivot-table.js.map +1 -0
  109. package/cjs/dataset/dataset.d.ts +15 -19
  110. package/cjs/dataset/dataset.js +191 -200
  111. package/cjs/dataset/dataset.js.map +1 -1
  112. package/cjs/dataset/statistics-helper.d.ts +67 -0
  113. package/cjs/dataset/statistics-helper.js +173 -0
  114. package/cjs/dataset/statistics-helper.js.map +1 -0
  115. package/cjs/dataset/util/zero-align.d.ts +10 -0
  116. package/cjs/dataset/util/zero-align.js +119 -0
  117. package/cjs/dataset/util/zero-align.js.map +1 -0
  118. package/cjs/event/EventHandler.js.map +1 -1
  119. package/cjs/event/EventTarget.d.ts +5 -5
  120. package/cjs/event/EventTarget.js +2 -2
  121. package/cjs/event/EventTarget.js.map +1 -1
  122. package/cjs/event/VChartEventProxy.d.ts +1 -0
  123. package/cjs/event/VChartEventProxy.js +1 -0
  124. package/cjs/event/VChartEventProxy.js.map +1 -0
  125. package/cjs/event/event.js +7 -4
  126. package/cjs/event/event.js.map +1 -1
  127. package/cjs/event/listener/table-group.js +8 -6
  128. package/cjs/event/listener/table-group.js.map +1 -1
  129. package/cjs/event/pivot-chart/axis-click.d.ts +2 -0
  130. package/cjs/event/pivot-chart/axis-click.js +42 -0
  131. package/cjs/event/pivot-chart/axis-click.js.map +1 -0
  132. package/cjs/event/pivot-chart/axis-hover.d.ts +2 -0
  133. package/cjs/event/pivot-chart/axis-hover.js +41 -0
  134. package/cjs/event/pivot-chart/axis-hover.js.map +1 -0
  135. package/cjs/event/scroll.js +4 -3
  136. package/cjs/event/scroll.js.map +1 -1
  137. package/cjs/event/sparkline-event.js +1 -2
  138. package/cjs/event/sparkline-event.js.map +1 -1
  139. package/cjs/header-helper/header-helper.js +1 -1
  140. package/cjs/header-helper/header-helper.js.map +1 -1
  141. package/cjs/header-helper/style/MultilineTextHeaderStyle.js +2 -2
  142. package/cjs/header-helper/style/MultilineTextHeaderStyle.js.map +1 -1
  143. package/cjs/header-helper/style/Style.d.ts +0 -1
  144. package/cjs/header-helper/style/Style.js +25 -28
  145. package/cjs/header-helper/style/Style.js.map +1 -1
  146. package/cjs/index.d.ts +4 -3
  147. package/cjs/index.js +11 -2
  148. package/cjs/index.js.map +1 -1
  149. package/cjs/layout/chart-helper/get-axis-config.d.ts +2 -0
  150. package/cjs/layout/chart-helper/get-axis-config.js +128 -0
  151. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -0
  152. package/cjs/layout/chart-helper/get-chart-spec.d.ts +7 -0
  153. package/cjs/layout/chart-helper/get-chart-spec.js +141 -0
  154. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -0
  155. package/cjs/layout/index.js +2 -1
  156. package/cjs/layout/pivot-header-layout.d.ts +13 -5
  157. package/cjs/layout/pivot-header-layout.js +50 -14
  158. package/cjs/layout/pivot-header-layout.js.map +1 -1
  159. package/cjs/layout/pivot-layout.d.ts +55 -8
  160. package/cjs/layout/pivot-layout.js +406 -92
  161. package/cjs/layout/pivot-layout.js.map +1 -1
  162. package/cjs/layout/simple-header-layout.d.ts +10 -0
  163. package/cjs/layout/simple-header-layout.js +43 -2
  164. package/cjs/layout/simple-header-layout.js.map +1 -1
  165. package/cjs/plugins/{chartTypes.js → chartModules.js} +1 -1
  166. package/cjs/plugins/chartModules.js.map +1 -0
  167. package/cjs/register.d.ts +1 -1
  168. package/cjs/register.js +6 -6
  169. package/cjs/register.js.map +1 -1
  170. package/cjs/render/layout/text.d.ts +33 -4
  171. package/cjs/render/layout/text.js +9 -3
  172. package/cjs/render/layout/text.js.map +1 -1
  173. package/cjs/scenegraph/component/custom.js +17 -16
  174. package/cjs/scenegraph/component/custom.js.map +1 -1
  175. package/cjs/scenegraph/component/menu.d.ts +41 -0
  176. package/cjs/scenegraph/component/table-component.js +3 -3
  177. package/cjs/scenegraph/component/table-component.js.map +1 -1
  178. package/cjs/scenegraph/graphic/chart.d.ts +4 -1
  179. package/cjs/scenegraph/graphic/chart.js +29 -17
  180. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  181. package/cjs/scenegraph/graphic/contributions/chart-render.js +22 -3
  182. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  183. package/cjs/scenegraph/graphic/contributions/group-contribution-render.d.ts +9 -9
  184. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +48 -29
  185. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  186. package/cjs/scenegraph/graphic/contributions/image-contribution-render.d.ts +3 -3
  187. package/cjs/scenegraph/graphic/contributions/image-contribution-render.js +2 -2
  188. package/cjs/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
  189. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.d.ts +3 -3
  190. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +2 -2
  191. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  192. package/cjs/scenegraph/graphic/text.d.ts +15 -0
  193. package/cjs/scenegraph/group-creater/cell-helper.js +9 -3
  194. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  195. package/cjs/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
  196. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +6 -5
  197. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  198. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  199. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  200. package/cjs/scenegraph/group-creater/column.js.map +1 -1
  201. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.d.ts +3 -0
  202. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +71 -0
  203. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -0
  204. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +2 -2
  205. package/cjs/scenegraph/group-creater/progress/proxy.js +45 -55
  206. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  207. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +1 -0
  208. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +60 -26
  209. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  210. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +1 -0
  211. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +94 -40
  212. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  213. package/cjs/scenegraph/layout/compute-col-width.js +23 -15
  214. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  215. package/cjs/scenegraph/layout/compute-row-height.js +20 -9
  216. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  217. package/cjs/scenegraph/layout/move-cell.js +1 -1
  218. package/cjs/scenegraph/layout/move-cell.js.map +1 -1
  219. package/cjs/scenegraph/layout/update-cell.js +3 -2
  220. package/cjs/scenegraph/layout/update-cell.js.map +1 -1
  221. package/cjs/scenegraph/layout/update-height.js +1 -1
  222. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  223. package/cjs/scenegraph/layout/update-row.js +1 -1
  224. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  225. package/cjs/scenegraph/layout/update-width.js +34 -3
  226. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  227. package/cjs/scenegraph/refresh-node/update-chart.d.ts +3 -0
  228. package/cjs/scenegraph/refresh-node/update-chart.js +76 -7
  229. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  230. package/cjs/scenegraph/scenegraph.d.ts +8 -0
  231. package/cjs/scenegraph/scenegraph.js +118 -21
  232. package/cjs/scenegraph/scenegraph.js.map +1 -1
  233. package/cjs/scenegraph/stick-text/index.js +10 -8
  234. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  235. package/cjs/scenegraph/style/corner-cell.d.ts +3 -0
  236. package/cjs/scenegraph/style/corner-cell.js +29 -0
  237. package/cjs/scenegraph/style/corner-cell.js.map +1 -0
  238. package/cjs/scenegraph/style/frame-border.d.ts +1 -0
  239. package/cjs/scenegraph/style/frame-border.js +3 -7
  240. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  241. package/cjs/scenegraph/utils/get-cell-merge.js +2 -1
  242. package/cjs/scenegraph/utils/get-cell-merge.js.map +1 -1
  243. package/cjs/scenegraph/utils/text-icon-layout.js +1 -1
  244. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  245. package/cjs/state/state.js +1 -1
  246. package/cjs/state/state.js.map +1 -1
  247. package/cjs/themes/DARK.js +1 -2
  248. package/cjs/themes/theme.d.ts +10 -0
  249. package/cjs/themes/theme.js +50 -4
  250. package/cjs/themes/theme.js.map +1 -1
  251. package/cjs/tools/LimitPromiseQueue.js +2 -1
  252. package/cjs/tools/calc.d.ts +3 -0
  253. package/cjs/tools/calc.js +11 -3
  254. package/cjs/tools/calc.js.map +1 -1
  255. package/cjs/tools/debounce.js +1 -1
  256. package/cjs/tools/diff-cell.js +2 -2
  257. package/cjs/tools/dom.js +1 -1
  258. package/cjs/tools/env.js +1 -1
  259. package/cjs/ts-types/base-table.d.ts +29 -12
  260. package/cjs/ts-types/base-table.js.map +1 -1
  261. package/cjs/ts-types/column/style.d.ts +0 -1
  262. package/cjs/ts-types/column/style.js.map +1 -1
  263. package/cjs/ts-types/component/axis.d.ts +12 -0
  264. package/cjs/ts-types/component/axis.js +6 -0
  265. package/cjs/ts-types/component/axis.js.map +1 -0
  266. package/cjs/ts-types/component/legend.d.ts +5 -0
  267. package/cjs/ts-types/component/legend.js +6 -0
  268. package/cjs/ts-types/component/legend.js.map +1 -0
  269. package/cjs/ts-types/component/title.d.ts +47 -0
  270. package/cjs/ts-types/component/title.js +6 -0
  271. package/cjs/ts-types/component/title.js.map +1 -0
  272. package/cjs/ts-types/component/util.d.ts +1 -0
  273. package/cjs/ts-types/component/util.js +6 -0
  274. package/cjs/ts-types/component/util.js.map +1 -0
  275. package/cjs/ts-types/customElement.d.ts +2 -0
  276. package/cjs/ts-types/customElement.js.map +1 -1
  277. package/cjs/ts-types/events.d.ts +108 -83
  278. package/cjs/ts-types/events.js.map +1 -1
  279. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  280. package/cjs/ts-types/list-table/define/chart-define.d.ts +1 -1
  281. package/cjs/ts-types/list-table/define/chart-define.js.map +1 -1
  282. package/cjs/ts-types/list-table/layout-map/api.d.ts +4 -2
  283. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  284. package/cjs/ts-types/new-data-set.d.ts +21 -7
  285. package/cjs/ts-types/new-data-set.js +2 -2
  286. package/cjs/ts-types/new-data-set.js.map +1 -1
  287. package/cjs/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.d.ts +4 -0
  288. package/cjs/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js +3 -1
  289. package/cjs/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js.map +1 -1
  290. package/cjs/ts-types/pivot-table/corner.d.ts +3 -3
  291. package/cjs/ts-types/pivot-table/corner.js.map +1 -1
  292. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  293. package/cjs/ts-types/pivot-table/indicator/chart-indicator.d.ts +1 -1
  294. package/cjs/ts-types/pivot-table/indicator/chart-indicator.js.map +1 -1
  295. package/cjs/ts-types/pivot-table/indicator/index.d.ts +1 -0
  296. package/cjs/ts-types/pivot-table/indicator/index.js.map +1 -1
  297. package/cjs/ts-types/pivot-table/title.d.ts +1 -1
  298. package/cjs/ts-types/pivot-table/title.js.map +1 -1
  299. package/cjs/ts-types/table-engine.d.ts +27 -3
  300. package/cjs/ts-types/table-engine.js.map +1 -1
  301. package/cjs/ts-types/theme.d.ts +5 -0
  302. package/cjs/ts-types/theme.js.map +1 -1
  303. package/dist/vtable.js +37485 -24091
  304. package/dist/vtable.min.js +4 -2
  305. package/es/ListTable.d.ts +2 -1
  306. package/es/ListTable.js +17 -13
  307. package/es/ListTable.js.map +1 -1
  308. package/es/PivotChart.d.ts +69 -0
  309. package/es/PivotChart.js +455 -0
  310. package/es/PivotChart.js.map +1 -0
  311. package/es/PivotTable.d.ts +2 -1
  312. package/es/PivotTable.js +19 -14
  313. package/es/PivotTable.js.map +1 -1
  314. package/es/body-helper/style/MultilineTextStyle.js +2 -2
  315. package/es/body-helper/style/MultilineTextStyle.js.map +1 -1
  316. package/es/body-helper/style/ProgressBarStyle.js +15 -15
  317. package/es/body-helper/style/ProgressBarStyle.js.map +1 -1
  318. package/es/body-helper/style/Style.d.ts +0 -1
  319. package/es/body-helper/style/Style.js +25 -28
  320. package/es/body-helper/style/Style.js.map +1 -1
  321. package/es/{chartType.js → chartModule.js} +2 -2
  322. package/es/chartModule.js.map +1 -0
  323. package/es/components/axis/axis.d.ts +45 -0
  324. package/es/components/axis/axis.js +155 -0
  325. package/es/components/axis/axis.js.map +1 -0
  326. package/es/components/axis/band-scale.d.ts +18 -0
  327. package/es/components/axis/band-scale.js +46 -0
  328. package/es/components/axis/band-scale.js.map +1 -0
  329. package/es/components/axis/get-axis-attributes.d.ts +136 -0
  330. package/es/components/axis/get-axis-attributes.js +166 -0
  331. package/es/components/axis/get-axis-attributes.js.map +1 -0
  332. package/es/components/axis/label-overlap.d.ts +3 -0
  333. package/es/components/axis/label-overlap.js +39 -0
  334. package/es/components/axis/label-overlap.js.map +1 -0
  335. package/es/components/axis/linear-scale.d.ts +45 -0
  336. package/es/components/axis/linear-scale.js +104 -0
  337. package/es/components/axis/linear-scale.js.map +1 -0
  338. package/es/components/legend/get-legend-attributes.d.ts +5 -0
  339. package/es/components/legend/get-legend-attributes.js +84 -0
  340. package/es/components/legend/get-legend-attributes.js.map +1 -0
  341. package/es/components/legend/legend.d.ts +23 -0
  342. package/es/components/legend/legend.js +93 -0
  343. package/es/components/legend/legend.js.map +1 -0
  344. package/{cjs → es/components}/menu/dom/BaseMenu.d.ts +2 -2
  345. package/es/components/menu/dom/BaseMenu.js.map +1 -0
  346. package/es/components/menu/dom/Menu.js.map +1 -0
  347. package/es/{menu → components/menu}/dom/MenuHandler.d.ts +2 -2
  348. package/es/{menu → components/menu}/dom/MenuHandler.js +2 -2
  349. package/es/components/menu/dom/MenuHandler.js.map +1 -0
  350. package/es/{menu → components/menu}/dom/logic/MenuContainer.d.ts +2 -2
  351. package/es/{menu → components/menu}/dom/logic/MenuContainer.js +4 -4
  352. package/es/components/menu/dom/logic/MenuContainer.js.map +1 -0
  353. package/es/{menu → components/menu}/dom/logic/MenuElement.d.ts +2 -2
  354. package/es/{menu → components/menu}/dom/logic/MenuElement.js +9 -9
  355. package/es/components/menu/dom/logic/MenuElement.js.map +1 -0
  356. package/es/components/menu/dom/logic/MenuElementStyle.js.map +1 -0
  357. package/es/components/title/title.d.ts +12 -0
  358. package/es/components/title/title.js +61 -0
  359. package/es/components/title/title.js.map +1 -0
  360. package/{cjs → es/components}/tooltip/BaseTooltip.d.ts +3 -3
  361. package/es/components/tooltip/BaseTooltip.js.map +1 -0
  362. package/es/components/tooltip/Tooltip.js.map +1 -0
  363. package/es/{tooltip → components/tooltip}/TooltipHandler.d.ts +4 -4
  364. package/es/{tooltip → components/tooltip}/TooltipHandler.js +4 -4
  365. package/es/components/tooltip/TooltipHandler.js.map +1 -0
  366. package/{cjs → es/components}/tooltip/logic/BubbleTooltipElement.d.ts +4 -4
  367. package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElement.js +4 -4
  368. package/es/components/tooltip/logic/BubbleTooltipElement.js.map +1 -0
  369. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -0
  370. package/es/components/util/orient.d.ts +3 -0
  371. package/es/components/util/orient.js +8 -0
  372. package/es/components/util/orient.js.map +1 -0
  373. package/es/components/util/register.d.ts +3 -0
  374. package/es/components/util/register.js +8 -0
  375. package/es/components/util/register.js.map +1 -0
  376. package/es/components/util/tick-data/config.d.ts +1 -0
  377. package/es/components/util/tick-data/config.js +2 -0
  378. package/es/components/util/tick-data/config.js.map +1 -0
  379. package/es/components/util/tick-data/continuous.d.ts +2 -0
  380. package/es/components/util/tick-data/continuous.js +38 -0
  381. package/es/components/util/tick-data/continuous.js.map +1 -0
  382. package/es/components/util/tick-data/discrete/linear.d.ts +2 -0
  383. package/es/components/util/tick-data/discrete/linear.js +59 -0
  384. package/es/components/util/tick-data/discrete/linear.js.map +1 -0
  385. package/es/components/util/tick-data/discrete/polar-angle.d.ts +2 -0
  386. package/es/components/util/tick-data/discrete/polar-angle.js +39 -0
  387. package/es/components/util/tick-data/discrete/polar-angle.js.map +1 -0
  388. package/es/components/util/tick-data/index.d.ts +2 -0
  389. package/es/components/util/tick-data/index.js +19 -0
  390. package/es/components/util/tick-data/index.js.map +1 -0
  391. package/es/components/util/tick-data/util.d.ts +21 -0
  392. package/es/components/util/tick-data/util.js +104 -0
  393. package/es/components/util/tick-data/util.js.map +1 -0
  394. package/es/components/util/transform.d.ts +5 -0
  395. package/es/components/util/transform.js +34 -0
  396. package/es/components/util/transform.js.map +1 -0
  397. package/es/core/BaseTable.d.ts +18 -5
  398. package/es/core/BaseTable.js +119 -43
  399. package/es/core/BaseTable.js.map +1 -1
  400. package/es/core/TABLE_EVENT_TYPE.d.ts +5 -0
  401. package/es/core/TABLE_EVENT_TYPE.js +6 -1
  402. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  403. package/es/core/style.js +1 -1
  404. package/es/core/style.js.map +1 -1
  405. package/es/core/tableHelper.js +1 -2
  406. package/es/data/CachedDataSource.js +2 -1
  407. package/es/data/DataSource.js +2 -2
  408. package/es/data/DataSource.js.map +1 -1
  409. package/es/dataset/dataset-pivot-table.d.ts +60 -0
  410. package/es/dataset/dataset-pivot-table.js +378 -0
  411. package/es/dataset/dataset-pivot-table.js.map +1 -0
  412. package/es/dataset/dataset.d.ts +15 -19
  413. package/es/dataset/dataset.js +183 -190
  414. package/es/dataset/dataset.js.map +1 -1
  415. package/es/dataset/statistics-helper.d.ts +67 -0
  416. package/es/dataset/statistics-helper.js +152 -0
  417. package/es/dataset/statistics-helper.js.map +1 -0
  418. package/es/dataset/util/zero-align.d.ts +10 -0
  419. package/es/dataset/util/zero-align.js +111 -0
  420. package/es/dataset/util/zero-align.js.map +1 -0
  421. package/es/event/EventHandler.js.map +1 -1
  422. package/es/event/EventTarget.d.ts +5 -5
  423. package/es/event/EventTarget.js +2 -2
  424. package/es/event/EventTarget.js.map +1 -1
  425. package/es/event/VChartEventProxy.d.ts +1 -0
  426. package/es/event/VChartEventProxy.js +1 -0
  427. package/es/event/VChartEventProxy.js.map +1 -0
  428. package/es/event/event.js +10 -3
  429. package/es/event/event.js.map +1 -1
  430. package/es/event/listener/table-group.js +8 -6
  431. package/es/event/listener/table-group.js.map +1 -1
  432. package/es/event/pivot-chart/axis-click.d.ts +2 -0
  433. package/es/event/pivot-chart/axis-click.js +36 -0
  434. package/es/event/pivot-chart/axis-click.js.map +1 -0
  435. package/es/event/pivot-chart/axis-hover.d.ts +2 -0
  436. package/es/event/pivot-chart/axis-hover.js +33 -0
  437. package/es/event/pivot-chart/axis-hover.js.map +1 -0
  438. package/es/event/scroll.js +4 -3
  439. package/es/event/scroll.js.map +1 -1
  440. package/es/event/sparkline-event.js +1 -2
  441. package/es/event/sparkline-event.js.map +1 -1
  442. package/es/header-helper/header-helper.js +1 -1
  443. package/es/header-helper/header-helper.js.map +1 -1
  444. package/es/header-helper/style/MultilineTextHeaderStyle.js +2 -2
  445. package/es/header-helper/style/MultilineTextHeaderStyle.js.map +1 -1
  446. package/es/header-helper/style/Style.d.ts +0 -1
  447. package/es/header-helper/style/Style.js +25 -28
  448. package/es/header-helper/style/Style.js.map +1 -1
  449. package/es/index.d.ts +4 -3
  450. package/es/index.js +4 -2
  451. package/es/index.js.map +1 -1
  452. package/es/layout/chart-helper/get-axis-config.d.ts +2 -0
  453. package/es/layout/chart-helper/get-axis-config.js +120 -0
  454. package/es/layout/chart-helper/get-axis-config.js.map +1 -0
  455. package/es/layout/chart-helper/get-chart-spec.d.ts +7 -0
  456. package/es/layout/chart-helper/get-chart-spec.js +132 -0
  457. package/es/layout/chart-helper/get-chart-spec.js.map +1 -0
  458. package/es/layout/index.js +2 -1
  459. package/es/layout/pivot-header-layout.d.ts +13 -5
  460. package/es/layout/pivot-header-layout.js +50 -12
  461. package/es/layout/pivot-header-layout.js.map +1 -1
  462. package/es/layout/pivot-layout.d.ts +55 -8
  463. package/es/layout/pivot-layout.js +409 -90
  464. package/es/layout/pivot-layout.js.map +1 -1
  465. package/es/layout/simple-header-layout.d.ts +10 -0
  466. package/es/layout/simple-header-layout.js +44 -1
  467. package/es/layout/simple-header-layout.js.map +1 -1
  468. package/es/plugins/chartModules.js +2 -0
  469. package/es/plugins/chartModules.js.map +1 -0
  470. package/es/register.d.ts +1 -1
  471. package/es/register.js +3 -3
  472. package/es/register.js.map +1 -1
  473. package/es/render/layout/text.d.ts +33 -4
  474. package/es/render/layout/text.js +9 -3
  475. package/es/render/layout/text.js.map +1 -1
  476. package/es/scenegraph/component/custom.js +17 -16
  477. package/es/scenegraph/component/custom.js.map +1 -1
  478. package/es/scenegraph/component/menu.d.ts +41 -0
  479. package/es/scenegraph/component/table-component.js +3 -3
  480. package/es/scenegraph/component/table-component.js.map +1 -1
  481. package/es/scenegraph/graphic/chart.d.ts +4 -1
  482. package/es/scenegraph/graphic/chart.js +29 -15
  483. package/es/scenegraph/graphic/chart.js.map +1 -1
  484. package/es/scenegraph/graphic/contributions/chart-render.js +22 -3
  485. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  486. package/es/scenegraph/graphic/contributions/group-contribution-render.d.ts +9 -9
  487. package/es/scenegraph/graphic/contributions/group-contribution-render.js +48 -29
  488. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  489. package/es/scenegraph/graphic/contributions/image-contribution-render.d.ts +3 -3
  490. package/es/scenegraph/graphic/contributions/image-contribution-render.js +2 -2
  491. package/es/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
  492. package/es/scenegraph/graphic/contributions/rect-contribution-render.d.ts +3 -3
  493. package/es/scenegraph/graphic/contributions/rect-contribution-render.js +2 -2
  494. package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  495. package/es/scenegraph/graphic/text.d.ts +15 -0
  496. package/es/scenegraph/group-creater/cell-helper.js +10 -2
  497. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  498. package/es/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
  499. package/es/scenegraph/group-creater/cell-type/chart-cell.js +6 -5
  500. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  501. package/es/scenegraph/group-creater/column-helper.js +1 -1
  502. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  503. package/es/scenegraph/group-creater/column.js.map +1 -1
  504. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.d.ts +3 -0
  505. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +65 -0
  506. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -0
  507. package/es/scenegraph/group-creater/progress/proxy.d.ts +2 -2
  508. package/es/scenegraph/group-creater/progress/proxy.js +42 -55
  509. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  510. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +1 -0
  511. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +59 -23
  512. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  513. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +1 -0
  514. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +94 -37
  515. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  516. package/es/scenegraph/layout/compute-col-width.js +23 -15
  517. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  518. package/es/scenegraph/layout/compute-row-height.js +20 -9
  519. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  520. package/es/scenegraph/layout/move-cell.js +1 -1
  521. package/es/scenegraph/layout/move-cell.js.map +1 -1
  522. package/es/scenegraph/layout/update-cell.js +3 -1
  523. package/es/scenegraph/layout/update-cell.js.map +1 -1
  524. package/es/scenegraph/layout/update-height.js +1 -1
  525. package/es/scenegraph/layout/update-height.js.map +1 -1
  526. package/es/scenegraph/layout/update-row.js +1 -1
  527. package/es/scenegraph/layout/update-row.js.map +1 -1
  528. package/es/scenegraph/layout/update-width.js +35 -2
  529. package/es/scenegraph/layout/update-width.js.map +1 -1
  530. package/es/scenegraph/refresh-node/update-chart.d.ts +3 -0
  531. package/es/scenegraph/refresh-node/update-chart.js +70 -4
  532. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  533. package/es/scenegraph/scenegraph.d.ts +8 -0
  534. package/es/scenegraph/scenegraph.js +120 -21
  535. package/es/scenegraph/scenegraph.js.map +1 -1
  536. package/es/scenegraph/stick-text/index.js +10 -8
  537. package/es/scenegraph/stick-text/index.js.map +1 -1
  538. package/es/scenegraph/style/corner-cell.d.ts +3 -0
  539. package/es/scenegraph/style/corner-cell.js +25 -0
  540. package/es/scenegraph/style/corner-cell.js.map +1 -0
  541. package/es/scenegraph/style/frame-border.d.ts +1 -0
  542. package/es/scenegraph/style/frame-border.js +2 -6
  543. package/es/scenegraph/style/frame-border.js.map +1 -1
  544. package/es/scenegraph/utils/get-cell-merge.js +2 -1
  545. package/es/scenegraph/utils/get-cell-merge.js.map +1 -1
  546. package/es/scenegraph/utils/text-icon-layout.js +1 -1
  547. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  548. package/es/state/state.js +1 -1
  549. package/es/state/state.js.map +1 -1
  550. package/es/themes/DARK.js +1 -2
  551. package/es/themes/theme.d.ts +10 -0
  552. package/es/themes/theme.js +50 -4
  553. package/es/themes/theme.js.map +1 -1
  554. package/es/tools/LimitPromiseQueue.js +2 -1
  555. package/es/tools/calc.d.ts +3 -0
  556. package/es/tools/calc.js +10 -0
  557. package/es/tools/calc.js.map +1 -1
  558. package/es/tools/debounce.js +1 -1
  559. package/es/tools/diff-cell.js +1 -1
  560. package/es/tools/dom.js +1 -1
  561. package/es/tools/env.js +1 -1
  562. package/es/ts-types/base-table.d.ts +29 -12
  563. package/es/ts-types/base-table.js.map +1 -1
  564. package/es/ts-types/column/style.d.ts +0 -1
  565. package/es/ts-types/column/style.js.map +1 -1
  566. package/es/ts-types/component/axis.d.ts +12 -0
  567. package/es/ts-types/component/axis.js +2 -0
  568. package/es/ts-types/component/axis.js.map +1 -0
  569. package/es/ts-types/component/legend.d.ts +5 -0
  570. package/es/ts-types/component/legend.js +2 -0
  571. package/es/ts-types/component/legend.js.map +1 -0
  572. package/es/ts-types/component/title.d.ts +47 -0
  573. package/es/ts-types/component/title.js +2 -0
  574. package/es/ts-types/component/title.js.map +1 -0
  575. package/es/ts-types/component/util.d.ts +1 -0
  576. package/es/ts-types/component/util.js +2 -0
  577. package/es/ts-types/component/util.js.map +1 -0
  578. package/es/ts-types/customElement.d.ts +2 -0
  579. package/es/ts-types/customElement.js.map +1 -1
  580. package/es/ts-types/events.d.ts +108 -83
  581. package/es/ts-types/events.js.map +1 -1
  582. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  583. package/es/ts-types/list-table/define/chart-define.d.ts +1 -1
  584. package/es/ts-types/list-table/define/chart-define.js.map +1 -1
  585. package/es/ts-types/list-table/layout-map/api.d.ts +4 -2
  586. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  587. package/es/ts-types/new-data-set.d.ts +21 -7
  588. package/es/ts-types/new-data-set.js +2 -2
  589. package/es/ts-types/new-data-set.js.map +1 -1
  590. package/es/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.d.ts +4 -0
  591. package/es/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js +4 -0
  592. package/es/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js.map +1 -1
  593. package/es/ts-types/pivot-table/corner.d.ts +3 -3
  594. package/es/ts-types/pivot-table/corner.js.map +1 -1
  595. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  596. package/es/ts-types/pivot-table/indicator/chart-indicator.d.ts +1 -1
  597. package/es/ts-types/pivot-table/indicator/chart-indicator.js.map +1 -1
  598. package/es/ts-types/pivot-table/indicator/index.d.ts +1 -0
  599. package/es/ts-types/pivot-table/indicator/index.js.map +1 -1
  600. package/es/ts-types/pivot-table/title.d.ts +1 -1
  601. package/es/ts-types/pivot-table/title.js.map +1 -1
  602. package/es/ts-types/table-engine.d.ts +27 -3
  603. package/es/ts-types/table-engine.js.map +1 -1
  604. package/es/ts-types/theme.d.ts +5 -0
  605. package/es/ts-types/theme.js.map +1 -1
  606. package/package.json +14 -8
  607. package/cjs/chartType.js +0 -14
  608. package/cjs/chartType.js.map +0 -1
  609. package/cjs/menu/dom/BaseMenu.js.map +0 -1
  610. package/cjs/menu/dom/Menu.js.map +0 -1
  611. package/cjs/menu/dom/MenuHandler.js.map +0 -1
  612. package/cjs/menu/dom/logic/MenuContainer.js.map +0 -1
  613. package/cjs/menu/dom/logic/MenuElement.js.map +0 -1
  614. package/cjs/menu/dom/logic/MenuElementStyle.js.map +0 -1
  615. package/cjs/plugins/chartTypes.js.map +0 -1
  616. package/cjs/scenegraph/layout/auto-width.d.ts +0 -2
  617. package/cjs/scenegraph/layout/auto-width.js +0 -85
  618. package/cjs/scenegraph/layout/auto-width.js.map +0 -1
  619. package/cjs/tooltip/BaseTooltip.js.map +0 -1
  620. package/cjs/tooltip/Tooltip.js.map +0 -1
  621. package/cjs/tooltip/TooltipHandler.js.map +0 -1
  622. package/cjs/tooltip/logic/BubbleTooltipElement.js.map +0 -1
  623. package/cjs/tooltip/logic/BubbleTooltipElementStyle.js.map +0 -1
  624. package/es/chartType.js.map +0 -1
  625. package/es/menu/dom/BaseMenu.js.map +0 -1
  626. package/es/menu/dom/Menu.js.map +0 -1
  627. package/es/menu/dom/MenuHandler.js.map +0 -1
  628. package/es/menu/dom/logic/MenuContainer.js.map +0 -1
  629. package/es/menu/dom/logic/MenuElement.js.map +0 -1
  630. package/es/menu/dom/logic/MenuElementStyle.js.map +0 -1
  631. package/es/plugins/chartTypes.js +0 -2
  632. package/es/plugins/chartTypes.js.map +0 -1
  633. package/es/scenegraph/layout/auto-width.d.ts +0 -2
  634. package/es/scenegraph/layout/auto-width.js +0 -82
  635. package/es/scenegraph/layout/auto-width.js.map +0 -1
  636. package/es/tooltip/BaseTooltip.js.map +0 -1
  637. package/es/tooltip/Tooltip.js.map +0 -1
  638. package/es/tooltip/TooltipHandler.js.map +0 -1
  639. package/es/tooltip/logic/BubbleTooltipElement.js.map +0 -1
  640. package/es/tooltip/logic/BubbleTooltipElementStyle.js.map +0 -1
  641. /package/cjs/{chartType.d.ts → chartModule.d.ts} +0 -0
  642. /package/cjs/{menu → components/menu}/dom/BaseMenu.js +0 -0
  643. /package/cjs/{menu → components/menu}/dom/Menu.d.ts +0 -0
  644. /package/cjs/{menu → components/menu}/dom/Menu.js +0 -0
  645. /package/cjs/{menu → components/menu}/dom/logic/MenuElementStyle.d.ts +0 -0
  646. /package/cjs/{menu → components/menu}/dom/logic/MenuElementStyle.js +0 -0
  647. /package/cjs/{tooltip → components/tooltip}/BaseTooltip.js +0 -0
  648. /package/cjs/{tooltip → components/tooltip}/Tooltip.d.ts +0 -0
  649. /package/cjs/{tooltip → components/tooltip}/Tooltip.js +0 -0
  650. /package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.d.ts +0 -0
  651. /package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.js +0 -0
  652. /package/cjs/plugins/{chartTypes.d.ts → chartModules.d.ts} +0 -0
  653. /package/es/{chartType.d.ts → chartModule.d.ts} +0 -0
  654. /package/es/{menu → components/menu}/dom/BaseMenu.js +0 -0
  655. /package/es/{menu → components/menu}/dom/Menu.d.ts +0 -0
  656. /package/es/{menu → components/menu}/dom/Menu.js +0 -0
  657. /package/es/{menu → components/menu}/dom/logic/MenuElementStyle.d.ts +0 -0
  658. /package/es/{menu → components/menu}/dom/logic/MenuElementStyle.js +0 -0
  659. /package/es/{tooltip → components/tooltip}/BaseTooltip.js +0 -0
  660. /package/es/{tooltip → components/tooltip}/Tooltip.d.ts +0 -0
  661. /package/es/{tooltip → components/tooltip}/Tooltip.js +0 -0
  662. /package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.d.ts +0 -0
  663. /package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.js +0 -0
  664. /package/es/plugins/{chartTypes.d.ts → chartModules.d.ts} +0 -0
@@ -36,9 +36,11 @@ import { createColGroup } from "../column";
36
36
 
37
37
  import { createComplexColumn } from "../column-helper";
38
38
 
39
- import { dynamicSetX } from "./update-position/dynamic-set-x";
39
+ import { createGroupForFirstScreen } from "./create-group-for-first-screen";
40
40
 
41
- import { dynamicSetY } from "./update-position/dynamic-set-y";
41
+ import { dynamicSetX, updateColContent } from "./update-position/dynamic-set-x";
42
+
43
+ import { dynamicSetY, updateRowContent } from "./update-position/dynamic-set-y";
42
44
 
43
45
  import { updateAutoRow } from "./update-position/update-auto-row";
44
46
 
@@ -50,7 +52,7 @@ export class SceneProxy {
50
52
  this.table.options.maintainedDataCount && (this.rowLimit = this.table.options.maintainedDataCount);
51
53
  }
52
54
  setParamsForColumn() {
53
- this.bodyLeftCol = this.table.rowHeaderLevelCount, this.bodyRightCol = this.table.colCount - 1;
55
+ this.bodyLeftCol = this.table.rowHeaderLevelCount, this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;
54
56
  const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);
55
57
  this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1, this.colStart = this.bodyLeftCol;
56
58
  const defaultColWidth = this.table.defaultColWidth;
@@ -63,8 +65,7 @@ export class SceneProxy {
63
65
  this.colUpdatePos = this.bodyRightCol;
64
66
  }
65
67
  setParamsForRow() {
66
- this.bodyTopRow = this.table.columnHeaderLevelCount, this.bodyBottomRow = this.table.rowCount - 1,
67
- this.bodyLeftCol = 0, this.bodyRightCol = this.table.colCount - 1;
68
+ this.bodyTopRow = this.table.columnHeaderLevelCount, this.bodyBottomRow = this.table.rowCount - 1 - this.table.bottomFrozenRowCount;
68
69
  const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1);
69
70
  this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1, this.rowStart = this.bodyTopRow;
70
71
  const defaultRowHeight = this.table.defaultRowHeight;
@@ -76,30 +77,9 @@ export class SceneProxy {
76
77
  this.firstScreenRowLimit = this.bodyTopRow + Math.ceil(heightLimit / defaultRowHeight),
77
78
  this.rowUpdatePos = this.bodyBottomRow;
78
79
  }
79
- createGroupForFirstScreen(cornerHeaderGroup, colHeaderGroup, rowHeaderGroup, bodyGroup, xOrigin, yOrigin) {
80
- var _a, _b, _c, _d;
80
+ createGroupForFirstScreen(cornerHeaderGroup, colHeaderGroup, rowHeaderGroup, rightFrozenGroup, bottomFrozenGroup, bodyGroup, xOrigin, yOrigin) {
81
81
  return __awaiter(this, void 0, void 0, (function*() {
82
- this.setParamsForRow(), this.setParamsForColumn(), this.table.internalProps._colWidthsMap.clear(),
83
- this.table._clearColRangeWidthsMap(), computeColsWidth(this.table, 0, Math.min(this.firstScreenColLimit, this.table.colCount - 1)),
84
- this.table.internalProps._rowHeightsMap.clear(), this.table._clearRowRangeHeightsMap(),
85
- computeRowsHeight(this.table, 0, Math.min(this.firstScreenRowLimit, this.table.rowCount - 1)),
86
- this.table.scenegraph.colHeaderGroup.setAttribute("x", this.table.getFrozenColsWidth()),
87
- this.table.scenegraph.rowHeaderGroup.setAttribute("y", this.table.getFrozenRowsHeight()),
88
- this.table.scenegraph.bodyGroup.setAttributes({
89
- x: this.table.getFrozenColsWidth(),
90
- y: this.table.getFrozenRowsHeight()
91
- }), createColGroup(cornerHeaderGroup, xOrigin, yOrigin, 0, this.table.rowHeaderLevelCount - 1, 0, this.table.columnHeaderLevelCount - 1, "cornerHeader", this.table),
92
- createColGroup(colHeaderGroup, xOrigin, yOrigin, this.table.rowHeaderLevelCount, Math.min(this.firstScreenColLimit, this.table.colCount - 1), 0, this.table.columnHeaderLevelCount - 1, "columnHeader", this.table),
93
- createColGroup(rowHeaderGroup, xOrigin, yOrigin, 0, this.table.rowHeaderLevelCount - 1, this.table.columnHeaderLevelCount, Math.min(this.firstScreenRowLimit, this.table.rowCount - 1), "rowHeader", this.table),
94
- createColGroup(bodyGroup, xOrigin, yOrigin, this.table.rowHeaderLevelCount, Math.min(this.firstScreenColLimit, this.table.colCount - 1), this.table.columnHeaderLevelCount, Math.min(this.firstScreenRowLimit, this.table.rowCount - 1), "body", this.table),
95
- bodyGroup.firstChild ? (this.currentRow = null !== (_b = null === (_a = bodyGroup.firstChild) || void 0 === _a ? void 0 : _a.rowNumber) && void 0 !== _b ? _b : this.totalRow,
96
- this.rowEnd = this.currentRow, this.rowUpdatePos = this.rowEnd, this.referenceRow = this.rowStart + Math.floor((this.rowEnd - this.rowStart) / 2),
97
- this.currentCol = null !== (_d = null === (_c = bodyGroup.lastChild) || void 0 === _c ? void 0 : _c.col) && void 0 !== _d ? _d : this.totalCol,
98
- this.colEnd = this.currentCol, this.colUpdatePos = this.colEnd, this.referenceCol = this.colStart + Math.floor((this.colEnd - this.colStart) / 2),
99
- yield this.progress()) : (this.currentRow = this.totalRow, this.rowEnd = this.currentRow,
100
- this.rowUpdatePos = this.rowEnd, this.referenceRow = this.rowStart + Math.floor((this.rowEnd - this.rowStart) / 2),
101
- this.currentCol = this.totalCol, this.colEnd = this.currentCol, this.colUpdatePos = this.colEnd,
102
- this.referenceCol = this.colStart + Math.floor((this.colEnd - this.colStart) / 2));
82
+ yield createGroupForFirstScreen(cornerHeaderGroup, colHeaderGroup, rowHeaderGroup, rightFrozenGroup, bottomFrozenGroup, bodyGroup, xOrigin, yOrigin, this);
103
83
  }));
104
84
  }
105
85
  createColGroupForFirstScreen(rowHeaderGroup, bodyGroup, xOrigin, yOrigin, table) {
@@ -140,10 +120,23 @@ export class SceneProxy {
140
120
  }
141
121
  createRowCellGroup(onceCount) {
142
122
  const endRow = Math.min(this.totalRow, this.currentRow + onceCount);
143
- computeRowsHeight(this.table, this.currentRow + 1, endRow);
123
+ if (computeRowsHeight(this.table, this.currentRow + 1, endRow), this.table.rowHeaderLevelCount) {
124
+ let maxHeight = 0;
125
+ for (let col = 0; col < this.table.rowHeaderLevelCount; col++) {
126
+ const colGroup = this.table.scenegraph.getColGroup(col), cellType = "rowHeader", {height: height} = createComplexColumn(colGroup, col, colGroup.attribute.width, this.currentRow + 1, endRow, this.table.scenegraph.mergeMap, this.table.internalProps.defaultRowHeight, this.table, cellType);
127
+ maxHeight = Math.max(maxHeight, height), this.table.scenegraph.rowHeaderGroup.setAttribute("height", maxHeight);
128
+ }
129
+ }
130
+ if (this.table.rightFrozenColCount) {
131
+ let maxHeight = 0;
132
+ for (let col = this.table.colCount - this.table.rightFrozenColCount; col < this.table.colCount; col++) {
133
+ const colGroup = this.table.scenegraph.getColGroup(col), cellType = "rowHeader", {height: height} = createComplexColumn(colGroup, col, colGroup.attribute.width, this.currentRow + 1, endRow, this.table.scenegraph.mergeMap, this.table.internalProps.defaultRowHeight, this.table, cellType);
134
+ maxHeight = Math.max(maxHeight, height), this.table.scenegraph.rightFrozenGroup.setAttribute("height", maxHeight);
135
+ }
136
+ }
144
137
  let maxHeight = 0;
145
138
  for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {
146
- const colGroup = this.table.scenegraph.getColGroup(col), cellType = col < this.table.rowHeaderLevelCount ? "rowHeader" : "body", {height: height} = createComplexColumn(colGroup, col, colGroup.attribute.width, this.currentRow + 1, endRow, this.table.scenegraph.mergeMap, this.table.internalProps.defaultRowHeight, this.table, cellType);
139
+ const colGroup = this.table.scenegraph.getColGroup(col), cellType = "body", {height: height} = createComplexColumn(colGroup, col, colGroup.attribute.width, this.currentRow + 1, endRow, this.table.scenegraph.mergeMap, this.table.internalProps.defaultRowHeight, this.table, cellType);
147
140
  maxHeight = Math.max(maxHeight, height);
148
141
  }
149
142
  this.table.scenegraph.bodyGroup.setAttribute("height", maxHeight), this.currentRow = endRow,
@@ -152,7 +145,14 @@ export class SceneProxy {
152
145
  }
153
146
  createColGroup(onceCount) {
154
147
  const endCol = Math.min(this.totalCol, this.currentCol + onceCount);
155
- computeColsWidth(this.table, this.currentCol + 1, endCol);
148
+ if (computeColsWidth(this.table, this.currentCol + 1, endCol), this.table.columnHeaderLevelCount) {
149
+ const lastColumnGroup = this.table.scenegraph.colHeaderGroup.lastChild instanceof Group ? this.table.scenegraph.colHeaderGroup.lastChild : this.table.scenegraph.colHeaderGroup.lastChild._prev, xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width, yOrigin = lastColumnGroup.attribute.y;
150
+ createColGroup(this.table.scenegraph.colHeaderGroup, xOrigin, yOrigin, this.currentCol + 1, endCol, 0, this.table.columnHeaderLevelCount - 1, "columnHeader", this.table);
151
+ }
152
+ if (this.table.bottomFrozenRowCount) {
153
+ const lastColumnGroup = this.table.scenegraph.bottomFrozenGroup.lastChild instanceof Group ? this.table.scenegraph.bottomFrozenGroup.lastChild : this.table.scenegraph.bottomFrozenGroup.lastChild._prev, xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width, yOrigin = lastColumnGroup.attribute.y;
154
+ createColGroup(this.table.scenegraph.bottomFrozenGroup, xOrigin, yOrigin, this.currentCol + 1, endCol, this.table.rowCount - this.table.bottomFrozenRowCount, this.table.rowCount - 1, "columnHeader", this.table);
155
+ }
156
156
  const lastColumnGroup = this.table.scenegraph.bodyGroup.lastChild instanceof Group ? this.table.scenegraph.bodyGroup.lastChild : this.table.scenegraph.bodyGroup.lastChild._prev, xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width, yOrigin = lastColumnGroup.attribute.y;
157
157
  createColGroup(this.table.scenegraph.bodyGroup, xOrigin, yOrigin, this.currentCol + 1, endCol, this.rowStart, this.rowEnd, "body", this.table),
158
158
  this.currentCol = endCol, this.colEnd = endCol, this.colUpdatePos = this.colEnd,
@@ -189,12 +189,8 @@ export class SceneProxy {
189
189
  }
190
190
  updateCellGroups(count) {
191
191
  const distRow = Math.min(this.bodyBottomRow, this.rowUpdatePos + count);
192
- this.table.internalProps.autoRowHeight && computeRowsHeight(this.table, this.rowUpdatePos, distRow);
193
- for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) for (let row = this.rowUpdatePos; row <= distRow; row++) {
194
- const cellGroup = this.highPerformanceGetCell(col, row);
195
- this.updateCellGroupContent(cellGroup);
196
- }
197
- this.table.internalProps.autoRowHeight && updateAutoRow(this.bodyLeftCol, this.bodyRightCol, this.rowUpdatePos, distRow, this.table, this.rowUpdateDirection),
192
+ "autoHeight" === this.table.heightMode && computeRowsHeight(this.table, this.rowUpdatePos, distRow),
193
+ updateRowContent(this.rowUpdatePos, distRow, this), "autoHeight" === this.table.heightMode && updateAutoRow(this.bodyLeftCol, this.bodyRightCol, this.rowUpdatePos, distRow, this.table, this.rowUpdateDirection),
198
194
  this.rowUpdatePos = distRow + 1;
199
195
  }
200
196
  updateColCellGroupsAsync() {
@@ -204,16 +200,7 @@ export class SceneProxy {
204
200
  }
205
201
  updateColGroups(count) {
206
202
  const distCol = Math.min(this.bodyRightCol, this.colUpdatePos + count);
207
- for (let col = this.colUpdatePos; col <= distCol; col++) {
208
- const colGroup = this.table.scenegraph.getColGroup(col);
209
- if (colGroup) {
210
- let cellGroup = colGroup.firstChild;
211
- for (;cellGroup; ) {
212
- cellGroup = this.updateCellGroupContent(cellGroup)._next;
213
- }
214
- colGroup.needUpdate = !1;
215
- }
216
- }
203
+ computeColsWidth(this.table, this.colUpdatePos, distCol), updateColContent(this.colUpdatePos, distCol, this),
217
204
  this.colUpdatePos = distCol + 1;
218
205
  }
219
206
  updateCellGroupPosition(cellGroup, newRow, y) {
@@ -231,31 +218,31 @@ export class SceneProxy {
231
218
  this.highPerformanceGetCell(col, row).needUpdate = !0;
232
219
  }
233
220
  let syncTopRow, syncBottomRow;
234
- this.table.internalProps.autoRowHeight ? (syncTopRow = this.rowStart, syncBottomRow = this.rowEnd) : (syncTopRow = Math.max(this.bodyTopRow, this.screenTopRow - 2 * this.screenRowCount),
221
+ "autoHeight" === this.table.heightMode ? (syncTopRow = this.rowStart, syncBottomRow = this.rowEnd) : (syncTopRow = Math.max(this.bodyTopRow, this.screenTopRow - 2 * this.screenRowCount),
235
222
  syncBottomRow = Math.min(this.bodyBottomRow, this.screenTopRow + 3 * this.screenRowCount)),
236
- console.log("sort更新同步范围", syncTopRow, syncBottomRow), this.table.internalProps.autoRowHeight && computeRowsHeight(this.table, syncTopRow, syncBottomRow);
223
+ console.log("sort更新同步范围", syncTopRow, syncBottomRow), "autoHeight" === this.table.heightMode && computeRowsHeight(this.table, syncTopRow, syncBottomRow);
237
224
  for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) for (let row = syncTopRow; row <= syncBottomRow; row++) {
238
225
  const cellGroup = this.highPerformanceGetCell(col, row);
239
226
  this.updateCellGroupContent(cellGroup);
240
227
  }
241
228
  if (console.log("updateAutoRow", this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up"),
242
- this.table.internalProps.autoRowHeight && updateAutoRow(this.bodyLeftCol, this.bodyRightCol, syncTopRow, syncBottomRow, this.table, this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up"),
229
+ "autoHeight" === this.table.heightMode && updateAutoRow(this.bodyLeftCol, this.bodyRightCol, syncTopRow, syncBottomRow, this.table, this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up"),
243
230
  this.rowUpdatePos = this.rowStart, this.rowUpdateDirection = this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up",
244
231
  this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow && this.rowStart === this.table.scenegraph.proxy.bodyTopRow) ; else if (this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow) {
245
232
  const top = this.table.getAllRowsHeight() - this.table.scenegraph.height;
246
233
  this.updateBody(top);
247
234
  } else this.rowStart === this.table.scenegraph.proxy.bodyTopRow && this.updateBody(0);
248
- this.table.internalProps.autoRowHeight || (yield this.progress());
235
+ "autoHeight" !== this.table.heightMode && (yield this.progress());
249
236
  }));
250
237
  }
251
- highPerformanceGetCell(col, row, rowStart = this.rowStart, rowEnd = this.rowEnd, getShadow) {
252
- if (row < rowStart || row > rowEnd) return emptyGroup;
253
- if (row < this.rowStart || row > this.rowEnd || col < this.colStart || col > this.colEnd) return emptyGroup;
238
+ highPerformanceGetCell(col, row, getShadow) {
239
+ if (row >= this.table.columnHeaderLevelCount && row < this.table.rowCount - this.table.bottomFrozenRowCount && (row < this.rowStart || row > this.rowEnd)) return emptyGroup;
240
+ if (col >= this.table.rowHeaderLevelCount && col < this.table.colCount - this.table.rightFrozenColCount && (col < this.colStart || col > this.colEnd)) return emptyGroup;
254
241
  if (this.cellCache.get(col)) {
255
242
  const cacheCellGoup = this.cellCache.get(col);
256
243
  if ((cacheCellGoup._next || cacheCellGoup._prev) && Math.abs(cacheCellGoup.row - row) < row) {
257
244
  let cellGroup = getCellByCache(cacheCellGoup, row);
258
- return cellGroup || (cellGroup = this.table.scenegraph.getCell(col, row, getShadow)),
245
+ return cellGroup && (getShadow || "shadow-cell" !== cellGroup.role) || (cellGroup = this.table.scenegraph.getCell(col, row, getShadow)),
259
246
  cellGroup.row && this.cellCache.set(col, cellGroup), cellGroup;
260
247
  }
261
248
  const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);
@@ -1 +1 @@
1
- {"version":3,"sources":["scenegraph/group-creater/progress/proxy.ts"],"names":[],"mappings":"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","file":"proxy.js","sourcesContent":["import type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { Group } from '../../graphic/group';\nimport { computeColsWidth } from '../../layout/compute-col-width';\nimport { computeRowsHeight } from '../../layout/compute-row-height';\nimport { emptyGroup } from '../../utils/empty-group';\nimport { createColGroup } from '../column';\nimport { createComplexColumn } from '../column-helper';\nimport { dynamicSetX } from './update-position/dynamic-set-x';\nimport { dynamicSetY } from './update-position/dynamic-set-y';\nimport { updateAutoRow } from './update-position/update-auto-row';\n\nexport class SceneProxy {\n table: BaseTableAPI;\n mode: 'column' | 'row' | 'pivot' = 'column';\n\n rowLimit = 1000;\n currentRow = 0; // 目前渐进生成的row number\n totalRow: number; // 渐进完成最后一行的row number\n yLimitTop: number; // y > yLimitTop动态更新,否则直接修改xy\n yLimitBottom: number; // y < yLimitBottom动态更新,否则直接修改xy\n rowStart = 0; // 当前维护的部分第一行的row number\n rowEnd = 0; // 当前维护的部分最后一行的row number\n referenceRow = 0; // 当前维护的部分中间一行的row number,认为referenceRow对应当前屏幕显示范围的第一行\n bodyTopRow: number; // table body部分的第一行row number\n bodyBottomRow: number; // table body部分的最后一行row number\n screenRowCount: number; // 预计屏幕范围内显示的row count\n firstScreenRowLimit: number; // 首屏同步加载部分最后一行的row number\n taskRowCount: number; // 一次任务生成/更新的row count\n rowUpdatePos: number; // 异步任务目前更新到的行的row number\n rowUpdateDirection: 'up' | 'down'; // 当前行更新的方向\n screenTopRow: number = 0; // 当前屏幕范围内显示的第一行的row number\n\n colLimit = 1000;\n bodyLeftCol: number; // table body部分的第一列col number\n bodyRightCol: number; // table body部分的最后一列col number\n totalCol: number; // 渐进完成最后一列的col number\n colStart: number; // 当前维护的部分第一列的col number\n colEnd: number; // 当前维护的部分最后一列的col number\n taskColCount: number; // 一次任务生成/更新的col count\n xLimitLeft: number; // x > xLimitLeft动态更新,否则直接修改xy\n xLimitRight: number; // x < xLimitRight动态更新,否则直接修改xy\n screenColCount: number; // 预计屏幕范围内显示的col count\n firstScreenColLimit: number; // 首屏同步加载部分最后一列的col number\n colUpdatePos: number; // 异步任务目前更新到的列的col number\n currentCol: number; // 目前渐进生成的col number\n referenceCol: number; // 当前维护的部分中间一列的col number,认为referenceCol对应当前屏幕显示范围的第一列\n screenLeftCol: number = 0; // 当前屏幕范围内显示的第一列的col number\n colUpdateDirection: 'left' | 'right'; // 当前列更新方向\n\n cellCache: Map<number, Group> = new Map(); // 单元格位置快速查找缓存\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n\n if (this.table.internalProps.transpose) {\n this.mode = 'row';\n } else if (this.table.isPivotTable()) {\n this.mode = 'pivot';\n }\n if (this.table.options.maintainedDataCount) {\n this.rowLimit = this.table.options.maintainedDataCount;\n }\n }\n\n setParamsForColumn() {\n this.bodyLeftCol = this.table.rowHeaderLevelCount;\n this.bodyRightCol = this.table.colCount - 1;\n\n // compute the column info about progress creation\n const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n this.colStart = this.bodyLeftCol;\n const defaultColWidth = this.table.defaultColWidth;\n this.taskColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth) * 1;\n\n // 确定动态更新限制\n const totalBodyWidth = defaultColWidth * totalActualBodyColCount;\n const totalWidth = defaultColWidth * (this.bodyRightCol - this.bodyLeftCol + 1);\n this.xLimitLeft = totalBodyWidth / 2;\n this.xLimitRight = totalWidth - totalBodyWidth / 2;\n\n // 确定首屏高度范围\n const widthLimit = this.table.tableNoFrameWidth * 5;\n this.screenColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth);\n this.firstScreenColLimit = this.bodyLeftCol + Math.ceil(widthLimit / defaultColWidth);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.colUpdatePos = this.bodyRightCol;\n }\n\n setParamsForRow() {\n this.bodyTopRow = this.table.columnHeaderLevelCount;\n this.bodyBottomRow = this.table.rowCount - 1;\n this.bodyLeftCol = 0;\n this.bodyRightCol = this.table.colCount - 1;\n\n // 计算渐进加载数量\n const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1); // 渐进加载总row数量\n this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1; // 目标渐进完成的row\n this.rowStart = this.bodyTopRow;\n const defaultRowHeight = this.table.defaultRowHeight;\n this.taskRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight) * 1;\n\n // 确定动态更新限制\n const totalBodyHeight = defaultRowHeight * totalActualBodyRowCount;\n const totalHeight = defaultRowHeight * (this.bodyBottomRow - this.bodyTopRow + 1);\n this.yLimitTop = totalBodyHeight / 2;\n this.yLimitBottom = totalHeight - totalBodyHeight / 2;\n // this.bottomOffset = totalHeight - totalBodyHeight / 2;\n\n // 确定首屏高度范围\n const heightLimit = this.table.tableNoFrameHeight * 5;\n this.screenRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight);\n this.firstScreenRowLimit = this.bodyTopRow + Math.ceil(heightLimit / defaultRowHeight);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.rowUpdatePos = this.bodyBottomRow;\n }\n\n async createGroupForFirstScreen(\n cornerHeaderGroup: Group,\n colHeaderGroup: Group,\n rowHeaderGroup: Group,\n bodyGroup: Group,\n xOrigin: number,\n yOrigin: number\n ) {\n // compute parameters\n this.setParamsForRow();\n this.setParamsForColumn();\n\n // compute colums width in first screen\n this.table.internalProps._colWidthsMap.clear();\n this.table._clearColRangeWidthsMap();\n computeColsWidth(this.table, 0, Math.min(this.firstScreenColLimit, this.table.colCount - 1));\n\n // compute rows height in first screen\n this.table.internalProps._rowHeightsMap.clear();\n this.table._clearRowRangeHeightsMap();\n computeRowsHeight(this.table, 0, Math.min(this.firstScreenRowLimit, this.table.rowCount - 1));\n\n // update colHeaderGroup rowHeaderGroup bodyGroup position\n this.table.scenegraph.colHeaderGroup.setAttribute('x', this.table.getFrozenColsWidth());\n this.table.scenegraph.rowHeaderGroup.setAttribute('y', this.table.getFrozenRowsHeight());\n this.table.scenegraph.bodyGroup.setAttributes({\n x: this.table.getFrozenColsWidth(),\n y: this.table.getFrozenRowsHeight()\n });\n\n // create cornerHeaderGroup\n createColGroup(\n cornerHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n this.table.rowHeaderLevelCount - 1, // colEnd\n 0, // rowStart\n this.table.columnHeaderLevelCount - 1, // rowEnd\n 'cornerHeader', // CellType\n this.table\n );\n\n // create colHeaderGroup\n createColGroup(\n colHeaderGroup,\n xOrigin,\n yOrigin,\n this.table.rowHeaderLevelCount, // colStart\n Math.min(this.firstScreenColLimit, this.table.colCount - 1), // colEnd\n 0, // rowStart\n this.table.columnHeaderLevelCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n\n // create rowHeaderGroup\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n this.table.rowHeaderLevelCount - 1, // colEnd\n this.table.columnHeaderLevelCount, // rowStart\n Math.min(this.firstScreenRowLimit, this.table.rowCount - 1), // rowEnd\n 'rowHeader', // isHeader\n this.table\n );\n\n // create bodyGroup\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n this.table.rowHeaderLevelCount, // colStart\n Math.min(this.firstScreenColLimit, this.table.colCount - 1), // colEnd\n this.table.columnHeaderLevelCount, // rowStart\n Math.min(this.firstScreenRowLimit, this.table.rowCount - 1), // rowEnd\n 'body', // isHeader\n this.table\n );\n\n // update progress information\n if (!bodyGroup.firstChild) {\n // 无数据\n this.currentRow = this.totalRow;\n this.rowEnd = this.currentRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = this.rowStart + Math.floor((this.rowEnd - this.rowStart) / 2);\n\n this.currentCol = this.totalCol;\n this.colEnd = this.currentCol;\n this.colUpdatePos = this.colEnd;\n this.referenceCol = this.colStart + Math.floor((this.colEnd - this.colStart) / 2);\n } else {\n this.currentRow = (bodyGroup.firstChild as Group)?.rowNumber ?? this.totalRow;\n this.rowEnd = this.currentRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = this.rowStart + Math.floor((this.rowEnd - this.rowStart) / 2);\n\n this.currentCol = (bodyGroup.lastChild as Group)?.col ?? this.totalCol;\n this.colEnd = this.currentCol;\n this.colUpdatePos = this.colEnd;\n this.referenceCol = this.colStart + Math.floor((this.colEnd - this.colStart) / 2);\n\n // 开始异步任务\n await this.progress();\n }\n }\n\n async createColGroupForFirstScreen(\n rowHeaderGroup: Group,\n bodyGroup: Group,\n xOrigin: number,\n yOrigin: number,\n table: BaseTableAPI\n ) {\n this.setParamsForRow();\n this.setParamsForColumn();\n\n // compute row height in first screen\n computeRowsHeight(table, this.table.columnHeaderLevelCount, Math.min(this.firstScreenRowLimit, table.rowCount - 1));\n\n // 生成首屏单元格\n // rowHeader\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.rowHeaderLevelCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table,\n this.firstScreenRowLimit\n );\n // body\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount, // colStart\n table.colCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'body', // isHeader\n table,\n this.firstScreenRowLimit\n );\n\n // 更新row信息\n if (!bodyGroup.firstChild) {\n // 无数据\n this.currentRow = this.totalRow;\n this.rowEnd = this.currentRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = Math.floor((this.rowEnd - this.rowStart) / 2);\n } else {\n this.currentRow = (bodyGroup.firstChild as Group)?.rowNumber ?? this.totalRow;\n this.rowEnd = this.currentRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = Math.floor((this.rowEnd - this.rowStart) / 2);\n // 开始异步任务\n await this.progress();\n }\n }\n\n // async progress() {\n // if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // // 先更新\n // await this.updateCellGroupsAsync();\n // await this.progress();\n // } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // // 先更新没有需要更新的节点,在生成新节点\n // await this.createRow();\n // await this.progress();\n // }\n // }\n async progress() {\n return new Promise<void>((resolve, reject) => {\n setTimeout(async () => {\n if (this.colUpdatePos < this.colEnd) {\n await this.updateColCellGroupsAsync();\n await this.progress();\n } else if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // 先更新\n await this.updateRowCellGroupsAsync();\n await this.progress();\n } else if (this.currentCol < this.totalCol) {\n await this.createCol();\n await this.progress();\n } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // 先更新没有需要更新的节点,在生成新节点\n await this.createRow();\n await this.progress();\n }\n resolve();\n }, 0);\n });\n }\n\n async createRow() {\n if (!this.taskRowCount) {\n return;\n }\n console.log('createRow', this.currentRow, this.currentRow + this.taskRowCount);\n this.createRowCellGroup(this.taskRowCount);\n }\n\n async createCol() {\n if (!this.taskColCount) {\n return;\n }\n console.log('createCol', this.currentCol, this.currentCol + this.taskColCount);\n this.createColGroup(this.taskRowCount);\n }\n\n createRowCellGroup(onceCount: number) {\n const endRow = Math.min(this.totalRow, this.currentRow + onceCount);\n // compute rows height\n computeRowsHeight(this.table, this.currentRow + 1, endRow);\n\n // create row cellGroup\n let maxHeight = 0;\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = col < this.table.rowHeaderLevelCount ? 'rowHeader' : 'body';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n }\n this.table.scenegraph.bodyGroup.setAttribute('height', maxHeight);\n\n this.currentRow = endRow;\n this.rowEnd = endRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = this.rowStart + Math.floor((endRow - this.rowStart) / 2);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n createColGroup(onceCount: number) {\n // compute rows height\n const endCol = Math.min(this.totalCol, this.currentCol + onceCount);\n computeColsWidth(this.table, this.currentCol + 1, endCol);\n\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bodyGroup.lastChild instanceof Group\n ? this.table.scenegraph.bodyGroup.lastChild\n : this.table.scenegraph.bodyGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bodyGroup\n createColGroup(\n this.table.scenegraph.bodyGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.rowStart, // rowStart\n this.rowEnd, // rowEnd\n 'body', // isHeader\n this.table\n );\n\n this.currentCol = endCol;\n this.colEnd = endCol;\n this.colUpdatePos = this.colEnd;\n this.referenceCol = this.colStart + Math.floor((endCol - this.colStart) / 2);\n console.log('async', this.referenceCol, this.colStart, this.colEnd);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n async setY(y: number) {\n if (y < this.yLimitTop && this.rowStart === this.bodyTopRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else if (y > this.yLimitBottom && this.rowEnd === this.bodyBottomRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else {\n // 执行动态更新节点\n this.dynamicSetY(y);\n }\n }\n\n async setX(x: number) {\n if (x < this.xLimitLeft && this.colStart === this.bodyLeftCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else if (x > this.xLimitRight && this.colEnd === this.bodyRightCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else {\n // 执行动态更新节点\n this.dynamicSetX(x);\n }\n }\n\n async dynamicSetY(y: number) {\n dynamicSetY(y, this);\n }\n async dynamicSetX(x: number) {\n dynamicSetX(x, this);\n }\n\n updateBody(y: number) {\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n }\n\n async updateRowCellGroupsAsync() {\n this.updateCellGroups(this.taskRowCount);\n }\n\n updateCellGroups(count: number) {\n const distRow = Math.min(this.bodyBottomRow, this.rowUpdatePos + count);\n // console.log('updateCellGroups', this.rowUpdatePos, distRow);\n if (this.table.internalProps.autoRowHeight) {\n computeRowsHeight(this.table, this.rowUpdatePos, distRow);\n }\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = this.rowUpdatePos; row <= distRow; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n this.updateCellGroupContent(cellGroup);\n }\n }\n\n if (this.table.internalProps.autoRowHeight) {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n }\n\n this.rowUpdatePos = distRow + 1;\n }\n\n async updateColCellGroupsAsync() {\n this.updateColGroups(this.taskRowCount);\n }\n\n updateColGroups(count: number) {\n const distCol = Math.min(this.bodyRightCol, this.colUpdatePos + count);\n // console.log('updateCellGroups', this.colUpdatePos, distCol);\n for (let col = this.colUpdatePos; col <= distCol; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n if (colGroup) {\n // colGroup.forEachChildren((cellGroup: Group) => {\n // this.updateCellGroupContent(cellGroup);\n // });\n // for (let row = (colGroup.firstChild as Group).row; row <= (colGroup.lastChild as Group).row; row++) {\n // const cellGroup = this.highPerformanceGetCell(colGroup.col, row);\n // this.updateCellGroupContent(cellGroup);\n // }\n let cellGroup = colGroup.firstChild;\n while (cellGroup) {\n // this.updateCellGroupContent(cellGroup as Group);\n // cellGroup = cellGroup._next;\n const newCellGroup = this.updateCellGroupContent(cellGroup as Group);\n cellGroup = newCellGroup._next;\n }\n colGroup.needUpdate = false;\n }\n }\n this.colUpdatePos = distCol + 1;\n }\n\n updateCellGroupPosition(cellGroup: Group, newRow: number, y: number) {\n // 更新位置&row\n cellGroup.row = newRow;\n cellGroup.setAttribute('y', y);\n (cellGroup as any).needUpdate = true;\n (cellGroup as any).needUpdateForAutoRowHeight = true;\n }\n\n updateCellGroupContent(cellGroup: Group) {\n if (!cellGroup.needUpdate) {\n return cellGroup;\n }\n\n const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n // 更新内容\n // const textMark = cellGroup.firstChild as WrapText;\n // const autoWrapText = Array.isArray(textMark.attribute.text);\n // const textStr: string = this.table.getCellValue(cellGroup.col, cellGroup.row);\n // let text;\n // if (autoWrapText) {\n // text = String(textStr).replace(/\\r?\\n/g, '\\n').replace(/\\r/g, '\\n').split('\\n');\n // } else {\n // text = textStr;\n // }\n\n // textMark.setAttribute('text', text);\n\n cellGroup.needUpdate = false;\n return newCellGroup || cellGroup;\n }\n\n async sortCell() {\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = this.rowStart; row <= this.rowEnd; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n cellGroup.needUpdate = true;\n }\n }\n\n // 更新同步范围\n let syncTopRow;\n let syncBottomRow;\n if (this.table.internalProps.autoRowHeight) {\n syncTopRow = this.rowStart;\n syncBottomRow = this.rowEnd;\n } else {\n syncTopRow = Math.max(this.bodyTopRow, this.screenTopRow - this.screenRowCount * 2);\n syncBottomRow = Math.min(this.bodyBottomRow, this.screenTopRow + this.screenRowCount * 3);\n }\n console.log('sort更新同步范围', syncTopRow, syncBottomRow);\n if (this.table.internalProps.autoRowHeight) {\n computeRowsHeight(this.table, syncTopRow, syncBottomRow);\n }\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = syncTopRow; row <= syncBottomRow; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n this.updateCellGroupContent(cellGroup);\n }\n }\n console.log('updateAutoRow', this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up');\n if (this.table.internalProps.autoRowHeight) {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n syncTopRow, // rowStart\n syncBottomRow, // rowEnd\n this.table,\n this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up' // 跳转到底部时,从下向上对齐\n );\n }\n this.rowUpdatePos = this.rowStart;\n this.rowUpdateDirection = this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up';\n\n if (\n this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow &&\n this.rowStart === this.table.scenegraph.proxy.bodyTopRow\n ) {\n // 全量更新,do nothing\n } else if (this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow) {\n const totalHeight = this.table.getAllRowsHeight();\n const top = totalHeight - this.table.scenegraph.height;\n this.updateBody(top);\n } else if (this.rowStart === this.table.scenegraph.proxy.bodyTopRow) {\n this.updateBody(0);\n }\n\n if (!this.table.internalProps.autoRowHeight) {\n await this.progress();\n }\n }\n\n highPerformanceGetCell(\n col: number,\n row: number,\n rowStart: number = this.rowStart,\n rowEnd: number = this.rowEnd,\n getShadow?: boolean\n ) {\n if (row < rowStart || row > rowEnd) {\n return emptyGroup;\n }\n if (row < this.rowStart || row > this.rowEnd || col < this.colStart || col > this.colEnd) {\n return emptyGroup;\n }\n if (this.cellCache.get(col)) {\n const cacheCellGoup = this.cellCache.get(col);\n if ((cacheCellGoup._next || cacheCellGoup._prev) && Math.abs(cacheCellGoup.row - row) < row) {\n // 由缓存单元格向前后查找要快于从头查找\n let cellGroup = getCellByCache(cacheCellGoup, row);\n if (!cellGroup) {\n cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n }\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n}\n\nfunction getCellByCache(cacheCellGroup: Group, row: number): Group | null {\n if (!cacheCellGroup) {\n return null;\n }\n if (cacheCellGroup.row === row) {\n return cacheCellGroup;\n } else if (cacheCellGroup.row > row) {\n return getCellByCache(cacheCellGroup._prev as Group, row);\n }\n return getCellByCache(cacheCellGroup._next as Group, row);\n}\n"]}
1
+ {"version":3,"sources":["scenegraph/group-creater/progress/proxy.ts"],"names":[],"mappings":"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","file":"proxy.js","sourcesContent":["import type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { Group } from '../../graphic/group';\nimport { computeColsWidth } from '../../layout/compute-col-width';\nimport { computeRowsHeight } from '../../layout/compute-row-height';\nimport { emptyGroup } from '../../utils/empty-group';\nimport { createColGroup } from '../column';\nimport { createComplexColumn } from '../column-helper';\nimport { createGroupForFirstScreen } from './create-group-for-first-screen';\nimport { dynamicSetX, updateColContent } from './update-position/dynamic-set-x';\nimport { dynamicSetY, updateRowContent } from './update-position/dynamic-set-y';\nimport { updateAutoRow } from './update-position/update-auto-row';\n\nexport class SceneProxy {\n table: BaseTableAPI;\n mode: 'column' | 'row' | 'pivot' = 'column';\n\n rowLimit = 1000;\n currentRow = 0; // 目前渐进生成的row number\n totalRow: number; // 渐进完成最后一行的row number\n yLimitTop: number; // y > yLimitTop动态更新,否则直接修改xy\n yLimitBottom: number; // y < yLimitBottom动态更新,否则直接修改xy\n rowStart = 0; // 当前维护的部分第一行的row number\n rowEnd = 0; // 当前维护的部分最后一行的row number\n referenceRow = 0; // 当前维护的部分中间一行的row number,认为referenceRow对应当前屏幕显示范围的第一行\n bodyTopRow: number; // table body部分的第一行row number\n bodyBottomRow: number; // table body部分的最后一行row number\n screenRowCount: number; // 预计屏幕范围内显示的row count\n firstScreenRowLimit: number; // 首屏同步加载部分最后一行的row number\n taskRowCount: number; // 一次任务生成/更新的row count\n rowUpdatePos: number; // 异步任务目前更新到的行的row number\n rowUpdateDirection: 'up' | 'down'; // 当前行更新的方向\n screenTopRow: number = 0; // 当前屏幕范围内显示的第一行的row number\n\n colLimit = 1000;\n bodyLeftCol: number; // table body部分的第一列col number\n bodyRightCol: number; // table body部分的最后一列col number\n totalCol: number; // 渐进完成最后一列的col number\n colStart: number; // 当前维护的部分第一列的col number\n colEnd: number; // 当前维护的部分最后一列的col number\n taskColCount: number; // 一次任务生成/更新的col count\n xLimitLeft: number; // x > xLimitLeft动态更新,否则直接修改xy\n xLimitRight: number; // x < xLimitRight动态更新,否则直接修改xy\n screenColCount: number; // 预计屏幕范围内显示的col count\n firstScreenColLimit: number; // 首屏同步加载部分最后一列的col number\n colUpdatePos: number; // 异步任务目前更新到的列的col number\n currentCol: number; // 目前渐进生成的col number\n referenceCol: number; // 当前维护的部分中间一列的col number,认为referenceCol对应当前屏幕显示范围的第一列\n screenLeftCol: number = 0; // 当前屏幕范围内显示的第一列的col number\n colUpdateDirection: 'left' | 'right'; // 当前列更新方向\n\n cellCache: Map<number, Group> = new Map(); // 单元格位置快速查找缓存\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n\n if (this.table.internalProps.transpose) {\n this.mode = 'row';\n } else if (this.table.isPivotTable()) {\n this.mode = 'pivot';\n }\n if (this.table.options.maintainedDataCount) {\n this.rowLimit = this.table.options.maintainedDataCount;\n }\n }\n\n setParamsForColumn() {\n this.bodyLeftCol = this.table.rowHeaderLevelCount;\n // this.bodyRightCol = this.table.colCount - 1;\n this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n\n // compute the column info about progress creation\n const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n this.colStart = this.bodyLeftCol;\n const defaultColWidth = this.table.defaultColWidth;\n this.taskColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth) * 1;\n\n // 确定动态更新限制\n const totalBodyWidth = defaultColWidth * totalActualBodyColCount;\n const totalWidth = defaultColWidth * (this.bodyRightCol - this.bodyLeftCol + 1);\n this.xLimitLeft = totalBodyWidth / 2;\n this.xLimitRight = totalWidth - totalBodyWidth / 2;\n\n // 确定首屏高度范围\n const widthLimit = this.table.tableNoFrameWidth * 5;\n this.screenColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth);\n this.firstScreenColLimit = this.bodyLeftCol + Math.ceil(widthLimit / defaultColWidth);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.colUpdatePos = this.bodyRightCol;\n }\n\n setParamsForRow() {\n this.bodyTopRow = this.table.columnHeaderLevelCount;\n this.bodyBottomRow = this.table.rowCount - 1 - this.table.bottomFrozenRowCount;\n // this.bodyLeftCol = 0;\n // this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n\n // 计算渐进加载数量\n const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1); // 渐进加载总row数量\n this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1; // 目标渐进完成的row\n this.rowStart = this.bodyTopRow;\n const defaultRowHeight = this.table.defaultRowHeight;\n this.taskRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight) * 1;\n\n // 确定动态更新限制\n const totalBodyHeight = defaultRowHeight * totalActualBodyRowCount;\n const totalHeight = defaultRowHeight * (this.bodyBottomRow - this.bodyTopRow + 1);\n this.yLimitTop = totalBodyHeight / 2;\n this.yLimitBottom = totalHeight - totalBodyHeight / 2;\n // this.bottomOffset = totalHeight - totalBodyHeight / 2;\n\n // 确定首屏高度范围\n const heightLimit = this.table.tableNoFrameHeight * 5;\n this.screenRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight);\n this.firstScreenRowLimit = this.bodyTopRow + Math.ceil(heightLimit / defaultRowHeight);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.rowUpdatePos = this.bodyBottomRow;\n }\n\n async createGroupForFirstScreen(\n cornerHeaderGroup: Group,\n colHeaderGroup: Group,\n rowHeaderGroup: Group,\n rightFrozenGroup: Group,\n bottomFrozenGroup: Group,\n bodyGroup: Group,\n xOrigin: number,\n yOrigin: number\n ) {\n await createGroupForFirstScreen(\n cornerHeaderGroup,\n colHeaderGroup,\n rowHeaderGroup,\n rightFrozenGroup,\n bottomFrozenGroup,\n bodyGroup,\n xOrigin,\n yOrigin,\n this\n );\n }\n\n async createColGroupForFirstScreen(\n rowHeaderGroup: Group,\n bodyGroup: Group,\n xOrigin: number,\n yOrigin: number,\n table: BaseTableAPI\n ) {\n this.setParamsForRow();\n this.setParamsForColumn();\n\n // compute row height in first screen\n computeRowsHeight(table, this.table.columnHeaderLevelCount, Math.min(this.firstScreenRowLimit, table.rowCount - 1));\n\n // 生成首屏单元格\n // rowHeader\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.rowHeaderLevelCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table,\n this.firstScreenRowLimit\n );\n // body\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount, // colStart\n table.colCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'body', // isHeader\n table,\n this.firstScreenRowLimit\n );\n\n // 更新row信息\n if (!bodyGroup.firstChild) {\n // 无数据\n this.currentRow = this.totalRow;\n this.rowEnd = this.currentRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = Math.floor((this.rowEnd - this.rowStart) / 2);\n } else {\n this.currentRow = (bodyGroup.firstChild as Group)?.rowNumber ?? this.totalRow;\n this.rowEnd = this.currentRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = Math.floor((this.rowEnd - this.rowStart) / 2);\n // 开始异步任务\n await this.progress();\n }\n }\n\n // async progress() {\n // if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // // 先更新\n // await this.updateCellGroupsAsync();\n // await this.progress();\n // } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // // 先更新没有需要更新的节点,在生成新节点\n // await this.createRow();\n // await this.progress();\n // }\n // }\n async progress() {\n return new Promise<void>((resolve, reject) => {\n setTimeout(async () => {\n if (this.colUpdatePos < this.colEnd) {\n await this.updateColCellGroupsAsync();\n await this.progress();\n } else if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // 先更新\n await this.updateRowCellGroupsAsync();\n await this.progress();\n } else if (this.currentCol < this.totalCol) {\n await this.createCol();\n await this.progress();\n } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // 先更新没有需要更新的节点,在生成新节点\n await this.createRow();\n await this.progress();\n }\n resolve();\n }, 0);\n });\n }\n\n async createRow() {\n if (!this.taskRowCount) {\n return;\n }\n console.log('createRow', this.currentRow, this.currentRow + this.taskRowCount);\n this.createRowCellGroup(this.taskRowCount);\n }\n\n async createCol() {\n if (!this.taskColCount) {\n return;\n }\n console.log('createCol', this.currentCol, this.currentCol + this.taskColCount);\n this.createColGroup(this.taskRowCount);\n }\n\n createRowCellGroup(onceCount: number) {\n const endRow = Math.min(this.totalRow, this.currentRow + onceCount);\n // compute rows height\n computeRowsHeight(this.table, this.currentRow + 1, endRow);\n\n if (this.table.rowHeaderLevelCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = 0; col < this.table.rowHeaderLevelCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'rowHeader';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n this.table.scenegraph.rowHeaderGroup.setAttribute('height', maxHeight);\n }\n }\n\n if (this.table.rightFrozenColCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = this.table.colCount - this.table.rightFrozenColCount; col < this.table.colCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'rowHeader';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n this.table.scenegraph.rightFrozenGroup.setAttribute('height', maxHeight);\n }\n }\n\n // create body row cellGroup\n let maxHeight = 0;\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'body';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n }\n this.table.scenegraph.bodyGroup.setAttribute('height', maxHeight);\n\n this.currentRow = endRow;\n this.rowEnd = endRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = this.rowStart + Math.floor((endRow - this.rowStart) / 2);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n createColGroup(onceCount: number) {\n // compute rows height\n const endCol = Math.min(this.totalCol, this.currentCol + onceCount);\n computeColsWidth(this.table, this.currentCol + 1, endCol);\n\n if (this.table.columnHeaderLevelCount) {\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.colHeaderGroup.lastChild instanceof Group\n ? this.table.scenegraph.colHeaderGroup.lastChild\n : this.table.scenegraph.colHeaderGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create colHeaderGroup\n createColGroup(\n this.table.scenegraph.colHeaderGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n 0, // rowStart\n this.table.columnHeaderLevelCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n }\n if (this.table.bottomFrozenRowCount) {\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bottomFrozenGroup.lastChild instanceof Group\n ? this.table.scenegraph.bottomFrozenGroup.lastChild\n : this.table.scenegraph.bottomFrozenGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bottomFrozenGroup\n createColGroup(\n this.table.scenegraph.bottomFrozenGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.table.rowCount - this.table.bottomFrozenRowCount, // rowStart\n this.table.rowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n }\n\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bodyGroup.lastChild instanceof Group\n ? this.table.scenegraph.bodyGroup.lastChild\n : this.table.scenegraph.bodyGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bodyGroup\n createColGroup(\n this.table.scenegraph.bodyGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.rowStart, // rowStart\n this.rowEnd, // rowEnd\n 'body', // isHeader\n this.table\n );\n\n this.currentCol = endCol;\n this.colEnd = endCol;\n this.colUpdatePos = this.colEnd;\n this.referenceCol = this.colStart + Math.floor((endCol - this.colStart) / 2);\n console.log('async', this.referenceCol, this.colStart, this.colEnd);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n async setY(y: number) {\n if (y < this.yLimitTop && this.rowStart === this.bodyTopRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else if (y > this.yLimitBottom && this.rowEnd === this.bodyBottomRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else {\n // 执行动态更新节点\n this.dynamicSetY(y);\n }\n }\n\n async setX(x: number) {\n if (x < this.xLimitLeft && this.colStart === this.bodyLeftCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else if (x > this.xLimitRight && this.colEnd === this.bodyRightCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else {\n // 执行动态更新节点\n this.dynamicSetX(x);\n }\n }\n\n async dynamicSetY(y: number) {\n dynamicSetY(y, this);\n }\n async dynamicSetX(x: number) {\n dynamicSetX(x, this);\n }\n\n updateBody(y: number) {\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n }\n\n async updateRowCellGroupsAsync() {\n this.updateCellGroups(this.taskRowCount);\n }\n\n updateCellGroups(count: number) {\n const distRow = Math.min(this.bodyBottomRow, this.rowUpdatePos + count);\n // console.log('updateCellGroups', this.rowUpdatePos, distRow);\n if (this.table.heightMode === 'autoHeight') {\n computeRowsHeight(this.table, this.rowUpdatePos, distRow);\n }\n\n updateRowContent(this.rowUpdatePos, distRow, this);\n\n if (this.table.heightMode === 'autoHeight') {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n }\n\n this.rowUpdatePos = distRow + 1;\n }\n\n async updateColCellGroupsAsync() {\n this.updateColGroups(this.taskRowCount);\n }\n\n updateColGroups(count: number) {\n const distCol = Math.min(this.bodyRightCol, this.colUpdatePos + count);\n // console.log('updateCellGroups', this.colUpdatePos, distCol);\n // for (let col = this.colUpdatePos; col <= distCol; col++) {\n // const colGroup = this.table.scenegraph.getColGroup(col);\n // if (colGroup) {\n // // colGroup.forEachChildren((cellGroup: Group) => {\n // // this.updateCellGroupContent(cellGroup);\n // // });\n // // for (let row = (colGroup.firstChild as Group).row; row <= (colGroup.lastChild as Group).row; row++) {\n // // const cellGroup = this.highPerformanceGetCell(colGroup.col, row);\n // // this.updateCellGroupContent(cellGroup);\n // // }\n // let cellGroup = colGroup.firstChild;\n // while (cellGroup) {\n // // this.updateCellGroupContent(cellGroup as Group);\n // // cellGroup = cellGroup._next;\n // const newCellGroup = this.updateCellGroupContent(cellGroup as Group);\n // cellGroup = newCellGroup._next;\n // }\n // colGroup.needUpdate = false;\n // }\n // }\n computeColsWidth(this.table, this.colUpdatePos, distCol);\n updateColContent(this.colUpdatePos, distCol, this);\n this.colUpdatePos = distCol + 1;\n }\n\n updateCellGroupPosition(cellGroup: Group, newRow: number, y: number) {\n // 更新位置&row\n cellGroup.row = newRow;\n cellGroup.setAttribute('y', y);\n (cellGroup as any).needUpdate = true;\n (cellGroup as any).needUpdateForAutoRowHeight = true;\n }\n\n updateCellGroupContent(cellGroup: Group) {\n if (!cellGroup.needUpdate) {\n return cellGroup;\n }\n\n const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n // 更新内容\n // const textMark = cellGroup.firstChild as WrapText;\n // const autoWrapText = Array.isArray(textMark.attribute.text);\n // const textStr: string = this.table.getCellValue(cellGroup.col, cellGroup.row);\n // let text;\n // if (autoWrapText) {\n // text = String(textStr).replace(/\\r?\\n/g, '\\n').replace(/\\r/g, '\\n').split('\\n');\n // } else {\n // text = textStr;\n // }\n\n // textMark.setAttribute('text', text);\n\n cellGroup.needUpdate = false;\n return newCellGroup || cellGroup;\n }\n\n async sortCell() {\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = this.rowStart; row <= this.rowEnd; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n cellGroup.needUpdate = true;\n }\n }\n\n // 更新同步范围\n let syncTopRow;\n let syncBottomRow;\n if (this.table.heightMode === 'autoHeight') {\n syncTopRow = this.rowStart;\n syncBottomRow = this.rowEnd;\n } else {\n syncTopRow = Math.max(this.bodyTopRow, this.screenTopRow - this.screenRowCount * 2);\n syncBottomRow = Math.min(this.bodyBottomRow, this.screenTopRow + this.screenRowCount * 3);\n }\n console.log('sort更新同步范围', syncTopRow, syncBottomRow);\n if (this.table.heightMode === 'autoHeight') {\n computeRowsHeight(this.table, syncTopRow, syncBottomRow);\n }\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = syncTopRow; row <= syncBottomRow; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n this.updateCellGroupContent(cellGroup);\n }\n }\n console.log('updateAutoRow', this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up');\n if (this.table.heightMode === 'autoHeight') {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n syncTopRow, // rowStart\n syncBottomRow, // rowEnd\n this.table,\n this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up' // 跳转到底部时,从下向上对齐\n );\n }\n this.rowUpdatePos = this.rowStart;\n this.rowUpdateDirection = this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up';\n\n if (\n this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow &&\n this.rowStart === this.table.scenegraph.proxy.bodyTopRow\n ) {\n // 全量更新,do nothing\n } else if (this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow) {\n const totalHeight = this.table.getAllRowsHeight();\n const top = totalHeight - this.table.scenegraph.height;\n this.updateBody(top);\n } else if (this.rowStart === this.table.scenegraph.proxy.bodyTopRow) {\n this.updateBody(0);\n }\n\n if (this.table.heightMode !== 'autoHeight') {\n await this.progress();\n }\n }\n\n highPerformanceGetCell(\n col: number,\n row: number,\n // rowStart: number = this.rowStart,\n // rowEnd: number = this.rowEnd,\n getShadow?: boolean\n ) {\n // if (row < rowStart || row > rowEnd) {\n // return emptyGroup;\n // }\n // if (row < this.rowStart || row > this.rowEnd || col < this.colStart || col > this.colEnd) {\n // return emptyGroup;\n // }\n\n if (\n row >= this.table.columnHeaderLevelCount && // not column header\n row < this.table.rowCount - this.table.bottomFrozenRowCount && // not bottom frozen\n (row < this.rowStart || row > this.rowEnd) // not in proxy row range\n ) {\n return emptyGroup;\n }\n\n if (\n col >= this.table.rowHeaderLevelCount && // not row header\n col < this.table.colCount - this.table.rightFrozenColCount && // not right frozen\n (col < this.colStart || col > this.colEnd) // not in proxy col range\n ) {\n return emptyGroup;\n }\n\n if (this.cellCache.get(col)) {\n const cacheCellGoup = this.cellCache.get(col);\n if ((cacheCellGoup._next || cacheCellGoup._prev) && Math.abs(cacheCellGoup.row - row) < row) {\n // 由缓存单元格向前后查找要快于从头查找\n let cellGroup = getCellByCache(cacheCellGoup, row);\n if (!cellGroup || (!getShadow && cellGroup.role === 'shadow-cell')) {\n cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n }\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n}\n\nfunction getCellByCache(cacheCellGroup: Group, row: number): Group | null {\n if (!cacheCellGroup) {\n return null;\n }\n if (cacheCellGroup.row === row) {\n return cacheCellGroup;\n } else if (cacheCellGroup.row > row) {\n return getCellByCache(cacheCellGroup._prev as Group, row);\n }\n return getCellByCache(cacheCellGroup._next as Group, row);\n}\n"]}
@@ -1,2 +1,3 @@
1
1
  import type { SceneProxy } from '../proxy';
2
2
  export declare function dynamicSetX(x: number, proxy: SceneProxy): Promise<void>;
3
+ export declare function updateColContent(syncLeftCol: number, syncRightCol: number, proxy: SceneProxy): void;
@@ -26,6 +26,10 @@ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, gener
26
26
 
27
27
  import { computeColsWidth } from "../../../layout/compute-col-width";
28
28
 
29
+ import { getCellMergeInfo } from "../../../utils/get-cell-merge";
30
+
31
+ import { updateCell } from "../../cell-helper";
32
+
29
33
  export function dynamicSetX(x, proxy) {
30
34
  return __awaiter(this, void 0, void 0, (function*() {
31
35
  const screenLeft = proxy.table.getTargetColAt(x + proxy.table.scenegraph.rowHeaderGroup.attribute.width);
@@ -41,25 +45,14 @@ export function dynamicSetX(x, proxy) {
41
45
  function moveColumn(count, direction, screenLeftCol, proxy) {
42
46
  return __awaiter(this, void 0, void 0, (function*() {
43
47
  "left" === direction && proxy.colEnd + count > proxy.bodyRightCol ? count = proxy.bodyRightCol - proxy.colEnd : "right" === direction && proxy.colStart - count < proxy.bodyLeftCol && (count = proxy.colStart - proxy.bodyLeftCol);
44
- const bodyGroup = proxy.table.scenegraph.bodyGroup;
48
+ proxy.table.scenegraph.bodyGroup;
45
49
  if (count < proxy.colEnd - proxy.colStart) {
46
50
  const startCol = "left" === direction ? proxy.colStart : proxy.colEnd - count + 1, endCol = "left" === direction ? proxy.colStart + count - 1 : proxy.colEnd, distStartCol = "left" === direction ? proxy.colEnd + 1 : proxy.colStart - count, distEndCol = "left" === direction ? proxy.colEnd + count : proxy.colStart - 1;
47
- computeColsWidth(proxy.table, distStartCol, distEndCol);
48
- for (let col = startCol; col <= endCol; col++) if ("left" === direction) {
49
- const colGroup = bodyGroup.firstChild;
50
- updateColGroupPosition(colGroup, bodyGroup.lastChild.col + 1, bodyGroup.lastChild.attribute.x + bodyGroup.lastChild.attribute.width),
51
- bodyGroup.appendChild(colGroup);
52
- } else {
53
- const colGroup = bodyGroup.lastChild;
54
- updateColGroupPosition(colGroup, bodyGroup.firstChild.col - 1, bodyGroup.firstChild.attribute.x - proxy.table.getColWidth(bodyGroup.firstChild.col - 1)),
55
- bodyGroup.insertBefore(colGroup, bodyGroup.firstChild);
56
- }
51
+ computeColsWidth(proxy.table, distStartCol, distEndCol), updatePartColPosition(startCol, endCol, direction, proxy);
57
52
  const syncLeftCol = Math.max(proxy.bodyLeftCol, screenLeftCol - 1 * proxy.screenColCount), syncRightCol = Math.min(proxy.bodyRightCol, screenLeftCol + 2 * proxy.screenColCount);
58
- for (let col = syncLeftCol; col <= syncRightCol; col++) {
59
- updateColGroupContent(proxy.table.scenegraph.getColGroup(col), proxy);
60
- }
61
53
  proxy.colStart = "left" === direction ? proxy.colStart + count : proxy.colStart - count,
62
54
  proxy.colEnd = "left" === direction ? proxy.colEnd + count : proxy.colEnd - count,
55
+ checkFirstColMerge(distStartCol, proxy), updateColContent(syncLeftCol, syncRightCol, proxy),
63
56
  proxy.currentCol = "left" === direction ? proxy.currentCol + count : proxy.currentCol - count,
64
57
  proxy.totalCol = "left" === direction ? proxy.totalCol + count : proxy.totalCol - count,
65
58
  proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2),
@@ -70,16 +63,10 @@ function moveColumn(count, direction, screenLeftCol, proxy) {
70
63
  computeColsWidth(proxy.table, distStartCol, distEndCol);
71
64
  const distStartColY = proxy.table.getColsWidth(proxy.bodyLeftCol, distStartCol - 1);
72
65
  console.log("distStartColY", proxy.bodyLeftCol, distStartCol - 1, distStartColY),
73
- bodyGroup.forEachChildren(((colGroup, index) => {
74
- "group" === colGroup.type && updateColGroupPosition(colGroup, "left" === direction ? colGroup.col + count : colGroup.col - count, 0 === index ? distStartColY : colGroup._prev.attribute.x + proxy.table.getColWidth(colGroup._prev.col));
75
- }));
66
+ updateAllColPosition(distStartColY, count, direction, proxy);
76
67
  const syncLeftCol = Math.max(proxy.bodyLeftCol, screenLeftCol - 1 * proxy.screenRowCount), syncRightCol = Math.min(proxy.bodyRightCol, screenLeftCol + 2 * proxy.screenRowCount);
77
- for (let col = syncLeftCol; col <= syncRightCol; col++) {
78
- updateColGroupContent(proxy.table.scenegraph.getColGroup(col), proxy);
79
- }
80
- const cellGroup = proxy.table.scenegraph.getCell(screenLeftCol, 0);
81
- cellGroup.AABBBounds.width(), console.log("leftCell", cellGroup.col, cellGroup.globalAABBBounds, cellGroup),
82
- proxy.colStart = distStartCol, proxy.colEnd = distEndCol, proxy.currentCol = "left" === direction ? proxy.currentCol + count : proxy.currentCol - count,
68
+ proxy.colStart = distStartCol, proxy.colEnd = distEndCol, checkFirstColMerge(distStartCol, proxy),
69
+ updateColContent(syncLeftCol, syncRightCol, proxy), proxy.currentCol = "left" === direction ? proxy.currentCol + count : proxy.currentCol - count,
83
70
  proxy.totalCol = "left" === direction ? proxy.totalCol + count : proxy.totalCol - count,
84
71
  proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2),
85
72
  proxy.colUpdatePos = proxy.colStart, proxy.colUpdateDirection = distEndCol > proxy.bodyRightCol - (proxy.colEnd - proxy.colStart + 1) ? "right" : "left",
@@ -101,4 +88,53 @@ function updateColGroupContent(colGroup, proxy) {
101
88
  }
102
89
  colGroup.needUpdate = !1;
103
90
  }
91
+
92
+ function updatePartColPosition(startCol, endCol, direction, proxy) {
93
+ for (let col = startCol; col <= endCol; col++) proxy.table.scenegraph.bodyGroup.childrenCount > 0 && updateColPosition(proxy.table.scenegraph.bodyGroup, direction, proxy),
94
+ proxy.table.scenegraph.colHeaderGroup.childrenCount > 0 && updateColPosition(proxy.table.scenegraph.bodyGroup, direction, proxy),
95
+ proxy.table.scenegraph.bottomFrozenGroup.childrenCount > 0 && updateColPosition(proxy.table.scenegraph.bodyGroup, direction, proxy);
96
+ }
97
+
98
+ function updateColPosition(containerGroup, direction, proxy) {
99
+ if ("left" === direction) {
100
+ const colGroup = containerGroup.firstChild;
101
+ updateColGroupPosition(colGroup, containerGroup.lastChild.col + 1, containerGroup.lastChild.attribute.x + containerGroup.lastChild.attribute.width),
102
+ containerGroup.appendChild(colGroup);
103
+ } else {
104
+ const colGroup = containerGroup.lastChild;
105
+ updateColGroupPosition(colGroup, containerGroup.firstChild.col - 1, containerGroup.firstChild.attribute.x - proxy.table.getColWidth(containerGroup.firstChild.col - 1)),
106
+ containerGroup.insertBefore(colGroup, containerGroup.firstChild);
107
+ }
108
+ }
109
+
110
+ export function updateColContent(syncLeftCol, syncRightCol, proxy) {
111
+ for (let col = syncLeftCol; col <= syncRightCol; col++) {
112
+ updateColGroupContent(proxy.table.scenegraph.getColGroup(col), proxy);
113
+ updateColGroupContent(proxy.table.scenegraph.getColGroup(col, !0), proxy);
114
+ updateColGroupContent(proxy.table.scenegraph.getColGroupInBottom(col), proxy);
115
+ }
116
+ }
117
+
118
+ function updateAllColPosition(distStartColY, count, direction, proxy) {
119
+ proxy.table.scenegraph.colHeaderGroup.forEachChildren(((colGroup, index) => {
120
+ "group" === colGroup.type && updateColGroupPosition(colGroup, "left" === direction ? colGroup.col + count : colGroup.col - count, 0 === index ? distStartColY : colGroup._prev.attribute.x + proxy.table.getColWidth(colGroup._prev.col));
121
+ })), proxy.table.scenegraph.bottomFrozenGroup.forEachChildren(((colGroup, index) => {
122
+ "group" === colGroup.type && updateColGroupPosition(colGroup, "left" === direction ? colGroup.col + count : colGroup.col - count, 0 === index ? distStartColY : colGroup._prev.attribute.x + proxy.table.getColWidth(colGroup._prev.col));
123
+ })), proxy.table.scenegraph.bodyGroup.forEachChildren(((colGroup, index) => {
124
+ "group" === colGroup.type && updateColGroupPosition(colGroup, "left" === direction ? colGroup.col + count : colGroup.col - count, 0 === index ? distStartColY : colGroup._prev.attribute.x + proxy.table.getColWidth(colGroup._prev.col));
125
+ }));
126
+ }
127
+
128
+ function checkFirstColMerge(col, proxy) {
129
+ for (let row = 0; row < proxy.table.rowCount; row++) {
130
+ if (row >= proxy.table.columnHeaderLevelCount && row < proxy.rowStart || row > proxy.rowEnd && row < proxy.table.rowCount - proxy.table.bottomFrozenRowCount) continue;
131
+ const range = getCellMergeInfo(proxy.table, col, row);
132
+ if (range && range.start.row !== row) {
133
+ const oldCellGroup = proxy.highPerformanceGetCell(col, row, !0), newCellGroup = updateCell(range.start.col, range.start.row, proxy.table, !0);
134
+ newCellGroup.col = col, newCellGroup.row = row, newCellGroup.setAttribute("x", proxy.table.getColsWidth(proxy.table.rowHeaderLevelCount, range.start.col - 1)),
135
+ oldCellGroup.parent.insertAfter(newCellGroup, oldCellGroup), oldCellGroup.parent.removeChild(oldCellGroup),
136
+ oldCellGroup.needUpdate = !1, newCellGroup.needUpdate = !1, proxy.cellCache.get(col) && proxy.cellCache.set(col, newCellGroup);
137
+ }
138
+ }
139
+ }
104
140
  //# sourceMappingURL=dynamic-set-x.js.map