@visactor/vtable 0.9.1 → 0.9.2-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 (611) hide show
  1. package/cjs/ListTable.d.ts +2 -1
  2. package/cjs/ListTable.js +17 -13
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.d.ts +68 -0
  5. package/cjs/PivotChart.js +427 -0
  6. package/cjs/PivotChart.js.map +1 -0
  7. package/cjs/PivotTable.d.ts +2 -1
  8. package/cjs/PivotTable.js +18 -13
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/body-helper/style/MultilineTextStyle.js +2 -2
  11. package/cjs/body-helper/style/MultilineTextStyle.js.map +1 -1
  12. package/cjs/body-helper/style/ProgressBarStyle.js +15 -15
  13. package/cjs/body-helper/style/ProgressBarStyle.js.map +1 -1
  14. package/cjs/body-helper/style/Style.d.ts +0 -1
  15. package/cjs/body-helper/style/Style.js +25 -28
  16. package/cjs/body-helper/style/Style.js.map +1 -1
  17. package/cjs/components/axis/axis.d.ts +45 -0
  18. package/cjs/components/axis/axis.js +146 -0
  19. package/cjs/components/axis/axis.js.map +1 -0
  20. package/cjs/components/axis/band-scale.d.ts +18 -0
  21. package/cjs/components/axis/band-scale.js +54 -0
  22. package/cjs/components/axis/band-scale.js.map +1 -0
  23. package/cjs/components/axis/get-axis-attributes.d.ts +136 -0
  24. package/cjs/components/axis/get-axis-attributes.js +169 -0
  25. package/cjs/components/axis/get-axis-attributes.js.map +1 -0
  26. package/cjs/components/axis/label-overlap.d.ts +3 -0
  27. package/cjs/components/axis/label-overlap.js +46 -0
  28. package/cjs/components/axis/label-overlap.js.map +1 -0
  29. package/cjs/components/axis/linear-scale.d.ts +45 -0
  30. package/cjs/components/axis/linear-scale.js +120 -0
  31. package/cjs/components/axis/linear-scale.js.map +1 -0
  32. package/cjs/components/legend/get-legend-attributes.d.ts +5 -0
  33. package/cjs/components/legend/get-legend-attributes.js +90 -0
  34. package/cjs/components/legend/get-legend-attributes.js.map +1 -0
  35. package/cjs/components/legend/legend.d.ts +23 -0
  36. package/cjs/components/legend/legend.js +94 -0
  37. package/cjs/components/legend/legend.js.map +1 -0
  38. package/cjs/{menu → components/menu}/dom/BaseMenu.d.ts +2 -2
  39. package/cjs/components/menu/dom/BaseMenu.js.map +1 -0
  40. package/cjs/components/menu/dom/Menu.js.map +1 -0
  41. package/{es → cjs/components}/menu/dom/MenuHandler.d.ts +2 -2
  42. package/cjs/{menu → components/menu}/dom/MenuHandler.js +1 -1
  43. package/cjs/components/menu/dom/MenuHandler.js.map +1 -0
  44. package/cjs/{menu → components/menu}/dom/logic/MenuContainer.d.ts +2 -2
  45. package/cjs/{menu → components/menu}/dom/logic/MenuContainer.js +2 -2
  46. package/cjs/components/menu/dom/logic/MenuContainer.js.map +1 -0
  47. package/cjs/{menu → components/menu}/dom/logic/MenuElement.d.ts +2 -2
  48. package/cjs/{menu → components/menu}/dom/logic/MenuElement.js +4 -4
  49. package/cjs/components/menu/dom/logic/MenuElement.js.map +1 -0
  50. package/cjs/components/menu/dom/logic/MenuElementStyle.js.map +1 -0
  51. package/cjs/components/title/title.d.ts +12 -0
  52. package/cjs/components/title/title.js +66 -0
  53. package/cjs/components/title/title.js.map +1 -0
  54. package/cjs/{tooltip → components/tooltip}/BaseTooltip.d.ts +3 -3
  55. package/cjs/components/tooltip/BaseTooltip.js.map +1 -0
  56. package/cjs/components/tooltip/Tooltip.js.map +1 -0
  57. package/{es → cjs/components}/tooltip/TooltipHandler.d.ts +4 -4
  58. package/cjs/{tooltip → components/tooltip}/TooltipHandler.js +1 -1
  59. package/cjs/components/tooltip/TooltipHandler.js.map +1 -0
  60. package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElement.d.ts +4 -4
  61. package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElement.js +1 -1
  62. package/cjs/components/tooltip/logic/BubbleTooltipElement.js.map +1 -0
  63. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -0
  64. package/cjs/components/util/orient.d.ts +3 -0
  65. package/cjs/components/util/orient.js +14 -0
  66. package/cjs/components/util/orient.js.map +1 -0
  67. package/cjs/components/util/register.d.ts +3 -0
  68. package/cjs/components/util/register.js +15 -0
  69. package/cjs/components/util/register.js.map +1 -0
  70. package/cjs/components/util/tick-data/config.d.ts +1 -0
  71. package/cjs/components/util/tick-data/config.js +6 -0
  72. package/cjs/components/util/tick-data/config.js.map +1 -0
  73. package/cjs/components/util/tick-data/continuous.d.ts +2 -0
  74. package/cjs/components/util/tick-data/continuous.js +39 -0
  75. package/cjs/components/util/tick-data/continuous.js.map +1 -0
  76. package/cjs/components/util/tick-data/discrete/linear.d.ts +2 -0
  77. package/cjs/components/util/tick-data/discrete/linear.js +66 -0
  78. package/cjs/components/util/tick-data/discrete/linear.js.map +1 -0
  79. package/cjs/components/util/tick-data/discrete/polar-angle.d.ts +2 -0
  80. package/cjs/components/util/tick-data/discrete/polar-angle.js +46 -0
  81. package/cjs/components/util/tick-data/discrete/polar-angle.js.map +1 -0
  82. package/cjs/components/util/tick-data/index.d.ts +2 -0
  83. package/cjs/components/util/tick-data/index.js +17 -0
  84. package/cjs/components/util/tick-data/index.js.map +1 -0
  85. package/cjs/components/util/tick-data/util.d.ts +21 -0
  86. package/cjs/components/util/tick-data/util.js +115 -0
  87. package/cjs/components/util/tick-data/util.js.map +1 -0
  88. package/cjs/components/util/transform.d.ts +5 -0
  89. package/cjs/components/util/transform.js +45 -0
  90. package/cjs/components/util/transform.js.map +1 -0
  91. package/cjs/core/BaseTable.d.ts +19 -6
  92. package/cjs/core/BaseTable.js +103 -44
  93. package/cjs/core/BaseTable.js.map +1 -1
  94. package/cjs/core/TABLE_EVENT_TYPE.d.ts +3 -0
  95. package/cjs/core/TABLE_EVENT_TYPE.js +4 -1
  96. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  97. package/cjs/core/style.js +1 -1
  98. package/cjs/core/style.js.map +1 -1
  99. package/cjs/core/tableHelper.js +1 -2
  100. package/cjs/data/CachedDataSource.js +2 -1
  101. package/cjs/data/DataSource.js +2 -2
  102. package/cjs/data/DataSource.js.map +1 -1
  103. package/cjs/dataset/dataset.d.ts +12 -19
  104. package/cjs/dataset/dataset.js +168 -196
  105. package/cjs/dataset/dataset.js.map +1 -1
  106. package/cjs/dataset/statistics-helper.d.ts +68 -0
  107. package/cjs/dataset/statistics-helper.js +173 -0
  108. package/cjs/dataset/statistics-helper.js.map +1 -0
  109. package/cjs/dataset/util/zero-align.d.ts +10 -0
  110. package/cjs/dataset/util/zero-align.js +119 -0
  111. package/cjs/dataset/util/zero-align.js.map +1 -0
  112. package/cjs/event/EventHandler.js.map +1 -1
  113. package/cjs/event/EventTarget.d.ts +5 -5
  114. package/cjs/event/EventTarget.js +2 -2
  115. package/cjs/event/EventTarget.js.map +1 -1
  116. package/cjs/event/VChartEventProxy.d.ts +1 -0
  117. package/cjs/event/VChartEventProxy.js +1 -0
  118. package/cjs/event/VChartEventProxy.js.map +1 -0
  119. package/cjs/event/event.js +8 -5
  120. package/cjs/event/event.js.map +1 -1
  121. package/cjs/event/listener/table-group.js +8 -6
  122. package/cjs/event/listener/table-group.js.map +1 -1
  123. package/cjs/event/pivot-chart/axis-click.d.ts +2 -0
  124. package/cjs/event/pivot-chart/axis-click.js +42 -0
  125. package/cjs/event/pivot-chart/axis-click.js.map +1 -0
  126. package/cjs/event/sparkline-event.js.map +1 -1
  127. package/cjs/event/util.js +0 -1
  128. package/cjs/header-helper/header-helper.js +1 -1
  129. package/cjs/header-helper/header-helper.js.map +1 -1
  130. package/cjs/header-helper/style/MultilineTextHeaderStyle.js +2 -2
  131. package/cjs/header-helper/style/MultilineTextHeaderStyle.js.map +1 -1
  132. package/cjs/header-helper/style/Style.d.ts +0 -1
  133. package/cjs/header-helper/style/Style.js +25 -28
  134. package/cjs/header-helper/style/Style.js.map +1 -1
  135. package/cjs/index.d.ts +4 -3
  136. package/cjs/index.js +11 -2
  137. package/cjs/index.js.map +1 -1
  138. package/cjs/layout/index.js +2 -1
  139. package/cjs/layout/pivot-chart/get-axis-config.d.ts +2 -0
  140. package/cjs/layout/pivot-chart/get-axis-config.js +118 -0
  141. package/cjs/layout/pivot-chart/get-axis-config.js.map +1 -0
  142. package/cjs/layout/pivot-chart/get-chart-spec.d.ts +4 -0
  143. package/cjs/layout/pivot-chart/get-chart-spec.js +118 -0
  144. package/cjs/layout/pivot-chart/get-chart-spec.js.map +1 -0
  145. package/cjs/layout/pivot-header-layout.d.ts +13 -5
  146. package/cjs/layout/pivot-header-layout.js +68 -12
  147. package/cjs/layout/pivot-header-layout.js.map +1 -1
  148. package/cjs/layout/pivot-layout.d.ts +55 -8
  149. package/cjs/layout/pivot-layout.js +419 -89
  150. package/cjs/layout/pivot-layout.js.map +1 -1
  151. package/cjs/layout/simple-header-layout.d.ts +10 -0
  152. package/cjs/layout/simple-header-layout.js +40 -0
  153. package/cjs/layout/simple-header-layout.js.map +1 -1
  154. package/cjs/render/layout/container.js +13 -0
  155. package/cjs/render/layout/container.js.map +1 -1
  156. package/cjs/scenegraph/component/table-component.js +3 -3
  157. package/cjs/scenegraph/component/table-component.js.map +1 -1
  158. package/cjs/scenegraph/graphic/chart.d.ts +3 -0
  159. package/cjs/scenegraph/graphic/chart.js +21 -6
  160. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  161. package/cjs/scenegraph/graphic/contributions/chart-render.js +15 -3
  162. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  163. package/cjs/scenegraph/graphic/text.js +5 -5
  164. package/cjs/scenegraph/graphic/text.js.map +1 -1
  165. package/cjs/scenegraph/group-creater/cell-helper.d.ts +1 -1
  166. package/cjs/scenegraph/group-creater/cell-helper.js +21 -12
  167. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  168. package/cjs/scenegraph/group-creater/cell-type/chart-cell.d.ts +2 -1
  169. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +6 -5
  170. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  171. package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  172. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +1 -2
  173. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  174. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +2 -1
  175. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +2 -3
  176. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  177. package/cjs/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -2
  178. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +6 -18
  179. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  180. package/cjs/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  181. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +1 -2
  182. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  183. package/cjs/scenegraph/group-creater/column-helper.js +9 -30
  184. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  185. package/cjs/scenegraph/group-creater/column.js.map +1 -1
  186. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.d.ts +3 -0
  187. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +71 -0
  188. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -0
  189. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +31 -12
  190. package/cjs/scenegraph/group-creater/progress/proxy.js +117 -128
  191. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  192. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +2 -0
  193. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +112 -0
  194. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -0
  195. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +2 -0
  196. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +109 -0
  197. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -0
  198. package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.d.ts +2 -0
  199. package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.js +24 -0
  200. package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.js.map +1 -0
  201. package/cjs/scenegraph/layout/compute-col-width.d.ts +9 -1
  202. package/cjs/scenegraph/layout/compute-col-width.js +33 -23
  203. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  204. package/cjs/scenegraph/layout/compute-row-height.d.ts +3 -0
  205. package/cjs/scenegraph/layout/compute-row-height.js +173 -0
  206. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -0
  207. package/cjs/scenegraph/layout/move-cell.js +1 -1
  208. package/cjs/scenegraph/layout/move-cell.js.map +1 -1
  209. package/cjs/scenegraph/layout/update-cell.js +3 -2
  210. package/cjs/scenegraph/layout/update-cell.js.map +1 -1
  211. package/cjs/scenegraph/layout/update-height.js +4 -3
  212. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  213. package/cjs/scenegraph/layout/update-row.js +1 -1
  214. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  215. package/cjs/scenegraph/layout/update-width.js +4 -3
  216. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  217. package/cjs/scenegraph/refresh-node/update-chart.d.ts +3 -0
  218. package/cjs/scenegraph/refresh-node/update-chart.js +48 -5
  219. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  220. package/cjs/scenegraph/scenegraph.d.ts +13 -5
  221. package/cjs/scenegraph/scenegraph.js +163 -56
  222. package/cjs/scenegraph/scenegraph.js.map +1 -1
  223. package/cjs/scenegraph/stick-text/index.d.ts +1 -0
  224. package/cjs/scenegraph/stick-text/index.js +23 -7
  225. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  226. package/cjs/scenegraph/style/frame-border.js +1 -5
  227. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  228. package/cjs/scenegraph/utils/text-icon-layout.d.ts +2 -1
  229. package/cjs/scenegraph/utils/text-icon-layout.js +6 -5
  230. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  231. package/cjs/state/hover/col.js +4 -4
  232. package/cjs/state/hover/col.js.map +1 -1
  233. package/cjs/state/state.js +1 -1
  234. package/cjs/state/state.js.map +1 -1
  235. package/cjs/themes/DEFAULT.js +1 -2
  236. package/cjs/tools/LimitPromiseQueue.js +2 -1
  237. package/cjs/tools/NumberMap.d.ts +1 -0
  238. package/cjs/tools/NumberMap.js +3 -0
  239. package/cjs/tools/NumberMap.js.map +1 -1
  240. package/cjs/tools/calc.d.ts +3 -0
  241. package/cjs/tools/calc.js +11 -3
  242. package/cjs/tools/calc.js.map +1 -1
  243. package/cjs/tools/diff-cell.js +2 -2
  244. package/cjs/tools/dom.js +1 -1
  245. package/cjs/tools/env.js +1 -1
  246. package/cjs/ts-types/base-table.d.ts +41 -12
  247. package/cjs/ts-types/base-table.js.map +1 -1
  248. package/cjs/ts-types/column/style.d.ts +0 -1
  249. package/cjs/ts-types/column/style.js.map +1 -1
  250. package/cjs/ts-types/component/axis.d.ts +12 -0
  251. package/cjs/ts-types/component/axis.js +6 -0
  252. package/cjs/ts-types/component/axis.js.map +1 -0
  253. package/cjs/ts-types/component/legend.d.ts +5 -0
  254. package/cjs/ts-types/component/legend.js +6 -0
  255. package/cjs/ts-types/component/legend.js.map +1 -0
  256. package/cjs/ts-types/component/title.d.ts +47 -0
  257. package/cjs/ts-types/component/title.js +6 -0
  258. package/cjs/ts-types/component/title.js.map +1 -0
  259. package/cjs/ts-types/component/util.d.ts +1 -0
  260. package/cjs/ts-types/component/util.js +6 -0
  261. package/cjs/ts-types/component/util.js.map +1 -0
  262. package/cjs/ts-types/events.d.ts +100 -83
  263. package/cjs/ts-types/events.js.map +1 -1
  264. package/cjs/ts-types/list-table/layout-map/api.d.ts +4 -0
  265. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  266. package/cjs/ts-types/new-data-set.d.ts +18 -5
  267. package/cjs/ts-types/new-data-set.js +2 -2
  268. package/cjs/ts-types/new-data-set.js.map +1 -1
  269. package/cjs/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.d.ts +4 -0
  270. package/cjs/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js +3 -1
  271. package/cjs/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js.map +1 -1
  272. package/cjs/ts-types/pivot-table/corner.d.ts +3 -3
  273. package/cjs/ts-types/pivot-table/corner.js.map +1 -1
  274. package/cjs/ts-types/pivot-table/indicator/index.d.ts +1 -0
  275. package/cjs/ts-types/pivot-table/indicator/index.js.map +1 -1
  276. package/cjs/ts-types/pivot-table/title.d.ts +1 -1
  277. package/cjs/ts-types/pivot-table/title.js.map +1 -1
  278. package/cjs/ts-types/table-engine.d.ts +27 -3
  279. package/cjs/ts-types/table-engine.js.map +1 -1
  280. package/dist/vtable.js +29113 -17684
  281. package/dist/vtable.min.js +4 -2
  282. package/es/ListTable.d.ts +2 -1
  283. package/es/ListTable.js +17 -13
  284. package/es/ListTable.js.map +1 -1
  285. package/es/PivotChart.d.ts +68 -0
  286. package/es/PivotChart.js +437 -0
  287. package/es/PivotChart.js.map +1 -0
  288. package/es/PivotTable.d.ts +2 -1
  289. package/es/PivotTable.js +19 -14
  290. package/es/PivotTable.js.map +1 -1
  291. package/es/body-helper/style/MultilineTextStyle.js +2 -2
  292. package/es/body-helper/style/MultilineTextStyle.js.map +1 -1
  293. package/es/body-helper/style/ProgressBarStyle.js +15 -15
  294. package/es/body-helper/style/ProgressBarStyle.js.map +1 -1
  295. package/es/body-helper/style/Style.d.ts +0 -1
  296. package/es/body-helper/style/Style.js +25 -28
  297. package/es/body-helper/style/Style.js.map +1 -1
  298. package/es/components/axis/axis.d.ts +45 -0
  299. package/es/components/axis/axis.js +155 -0
  300. package/es/components/axis/axis.js.map +1 -0
  301. package/es/components/axis/band-scale.d.ts +18 -0
  302. package/es/components/axis/band-scale.js +46 -0
  303. package/es/components/axis/band-scale.js.map +1 -0
  304. package/es/components/axis/get-axis-attributes.d.ts +136 -0
  305. package/es/components/axis/get-axis-attributes.js +166 -0
  306. package/es/components/axis/get-axis-attributes.js.map +1 -0
  307. package/es/components/axis/label-overlap.d.ts +3 -0
  308. package/es/components/axis/label-overlap.js +39 -0
  309. package/es/components/axis/label-overlap.js.map +1 -0
  310. package/es/components/axis/linear-scale.d.ts +45 -0
  311. package/es/components/axis/linear-scale.js +104 -0
  312. package/es/components/axis/linear-scale.js.map +1 -0
  313. package/es/components/legend/get-legend-attributes.d.ts +5 -0
  314. package/es/components/legend/get-legend-attributes.js +84 -0
  315. package/es/components/legend/get-legend-attributes.js.map +1 -0
  316. package/es/components/legend/legend.d.ts +23 -0
  317. package/es/components/legend/legend.js +93 -0
  318. package/es/components/legend/legend.js.map +1 -0
  319. package/es/{menu → components/menu}/dom/BaseMenu.d.ts +2 -2
  320. package/es/components/menu/dom/BaseMenu.js.map +1 -0
  321. package/es/components/menu/dom/Menu.js.map +1 -0
  322. package/{cjs → es/components}/menu/dom/MenuHandler.d.ts +2 -2
  323. package/es/{menu → components/menu}/dom/MenuHandler.js +2 -2
  324. package/es/components/menu/dom/MenuHandler.js.map +1 -0
  325. package/es/{menu → components/menu}/dom/logic/MenuContainer.d.ts +2 -2
  326. package/es/{menu → components/menu}/dom/logic/MenuContainer.js +4 -4
  327. package/es/components/menu/dom/logic/MenuContainer.js.map +1 -0
  328. package/es/{menu → components/menu}/dom/logic/MenuElement.d.ts +2 -2
  329. package/es/{menu → components/menu}/dom/logic/MenuElement.js +9 -9
  330. package/es/components/menu/dom/logic/MenuElement.js.map +1 -0
  331. package/es/components/menu/dom/logic/MenuElementStyle.js.map +1 -0
  332. package/es/components/title/title.d.ts +12 -0
  333. package/es/components/title/title.js +61 -0
  334. package/es/components/title/title.js.map +1 -0
  335. package/es/{tooltip → components/tooltip}/BaseTooltip.d.ts +3 -3
  336. package/es/components/tooltip/BaseTooltip.js.map +1 -0
  337. package/es/components/tooltip/Tooltip.js.map +1 -0
  338. package/{cjs → es/components}/tooltip/TooltipHandler.d.ts +4 -4
  339. package/es/{tooltip → components/tooltip}/TooltipHandler.js +4 -4
  340. package/es/components/tooltip/TooltipHandler.js.map +1 -0
  341. package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElement.d.ts +4 -4
  342. package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElement.js +4 -4
  343. package/es/components/tooltip/logic/BubbleTooltipElement.js.map +1 -0
  344. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -0
  345. package/es/components/util/orient.d.ts +3 -0
  346. package/es/components/util/orient.js +8 -0
  347. package/es/components/util/orient.js.map +1 -0
  348. package/es/components/util/register.d.ts +3 -0
  349. package/es/components/util/register.js +8 -0
  350. package/es/components/util/register.js.map +1 -0
  351. package/es/components/util/tick-data/config.d.ts +1 -0
  352. package/es/components/util/tick-data/config.js +2 -0
  353. package/es/components/util/tick-data/config.js.map +1 -0
  354. package/es/components/util/tick-data/continuous.d.ts +2 -0
  355. package/es/components/util/tick-data/continuous.js +38 -0
  356. package/es/components/util/tick-data/continuous.js.map +1 -0
  357. package/es/components/util/tick-data/discrete/linear.d.ts +2 -0
  358. package/es/components/util/tick-data/discrete/linear.js +59 -0
  359. package/es/components/util/tick-data/discrete/linear.js.map +1 -0
  360. package/es/components/util/tick-data/discrete/polar-angle.d.ts +2 -0
  361. package/es/components/util/tick-data/discrete/polar-angle.js +39 -0
  362. package/es/components/util/tick-data/discrete/polar-angle.js.map +1 -0
  363. package/es/components/util/tick-data/index.d.ts +2 -0
  364. package/es/components/util/tick-data/index.js +19 -0
  365. package/es/components/util/tick-data/index.js.map +1 -0
  366. package/es/components/util/tick-data/util.d.ts +21 -0
  367. package/es/components/util/tick-data/util.js +104 -0
  368. package/es/components/util/tick-data/util.js.map +1 -0
  369. package/es/components/util/transform.d.ts +5 -0
  370. package/es/components/util/transform.js +34 -0
  371. package/es/components/util/transform.js.map +1 -0
  372. package/es/core/BaseTable.d.ts +19 -6
  373. package/es/core/BaseTable.js +107 -46
  374. package/es/core/BaseTable.js.map +1 -1
  375. package/es/core/TABLE_EVENT_TYPE.d.ts +3 -0
  376. package/es/core/TABLE_EVENT_TYPE.js +4 -1
  377. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  378. package/es/core/style.js +1 -1
  379. package/es/core/style.js.map +1 -1
  380. package/es/core/tableHelper.js +1 -2
  381. package/es/data/CachedDataSource.js +2 -1
  382. package/es/data/DataSource.js +2 -2
  383. package/es/data/DataSource.js.map +1 -1
  384. package/es/dataset/dataset.d.ts +12 -19
  385. package/es/dataset/dataset.js +161 -187
  386. package/es/dataset/dataset.js.map +1 -1
  387. package/es/dataset/statistics-helper.d.ts +68 -0
  388. package/es/dataset/statistics-helper.js +152 -0
  389. package/es/dataset/statistics-helper.js.map +1 -0
  390. package/es/dataset/util/zero-align.d.ts +10 -0
  391. package/es/dataset/util/zero-align.js +111 -0
  392. package/es/dataset/util/zero-align.js.map +1 -0
  393. package/es/event/EventHandler.js.map +1 -1
  394. package/es/event/EventTarget.d.ts +5 -5
  395. package/es/event/EventTarget.js +2 -2
  396. package/es/event/EventTarget.js.map +1 -1
  397. package/es/event/VChartEventProxy.d.ts +1 -0
  398. package/es/event/VChartEventProxy.js +1 -0
  399. package/es/event/VChartEventProxy.js.map +1 -0
  400. package/es/event/event.js +10 -5
  401. package/es/event/event.js.map +1 -1
  402. package/es/event/listener/table-group.js +8 -6
  403. package/es/event/listener/table-group.js.map +1 -1
  404. package/es/event/pivot-chart/axis-click.d.ts +2 -0
  405. package/es/event/pivot-chart/axis-click.js +36 -0
  406. package/es/event/pivot-chart/axis-click.js.map +1 -0
  407. package/es/event/sparkline-event.js.map +1 -1
  408. package/es/event/util.js +1 -2
  409. package/es/header-helper/header-helper.js +1 -1
  410. package/es/header-helper/header-helper.js.map +1 -1
  411. package/es/header-helper/style/MultilineTextHeaderStyle.js +2 -2
  412. package/es/header-helper/style/MultilineTextHeaderStyle.js.map +1 -1
  413. package/es/header-helper/style/Style.d.ts +0 -1
  414. package/es/header-helper/style/Style.js +25 -28
  415. package/es/header-helper/style/Style.js.map +1 -1
  416. package/es/index.d.ts +4 -3
  417. package/es/index.js +4 -2
  418. package/es/index.js.map +1 -1
  419. package/es/layout/index.js +2 -1
  420. package/es/layout/pivot-chart/get-axis-config.d.ts +2 -0
  421. package/es/layout/pivot-chart/get-axis-config.js +110 -0
  422. package/es/layout/pivot-chart/get-axis-config.js.map +1 -0
  423. package/es/layout/pivot-chart/get-chart-spec.d.ts +4 -0
  424. package/es/layout/pivot-chart/get-chart-spec.js +109 -0
  425. package/es/layout/pivot-chart/get-chart-spec.js.map +1 -0
  426. package/es/layout/pivot-header-layout.d.ts +13 -5
  427. package/es/layout/pivot-header-layout.js +67 -11
  428. package/es/layout/pivot-header-layout.js.map +1 -1
  429. package/es/layout/pivot-layout.d.ts +55 -8
  430. package/es/layout/pivot-layout.js +422 -87
  431. package/es/layout/pivot-layout.js.map +1 -1
  432. package/es/layout/simple-header-layout.d.ts +10 -0
  433. package/es/layout/simple-header-layout.js +40 -0
  434. package/es/layout/simple-header-layout.js.map +1 -1
  435. package/es/render/layout/container.js +13 -0
  436. package/es/render/layout/container.js.map +1 -1
  437. package/es/scenegraph/component/table-component.js +3 -3
  438. package/es/scenegraph/component/table-component.js.map +1 -1
  439. package/es/scenegraph/graphic/chart.d.ts +3 -0
  440. package/es/scenegraph/graphic/chart.js +22 -5
  441. package/es/scenegraph/graphic/chart.js.map +1 -1
  442. package/es/scenegraph/graphic/contributions/chart-render.js +15 -3
  443. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  444. package/es/scenegraph/graphic/text.js +5 -5
  445. package/es/scenegraph/graphic/text.js.map +1 -1
  446. package/es/scenegraph/group-creater/cell-helper.d.ts +1 -1
  447. package/es/scenegraph/group-creater/cell-helper.js +22 -10
  448. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  449. package/es/scenegraph/group-creater/cell-type/chart-cell.d.ts +2 -1
  450. package/es/scenegraph/group-creater/cell-type/chart-cell.js +5 -6
  451. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  452. package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  453. package/es/scenegraph/group-creater/cell-type/image-cell.js +0 -3
  454. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  455. package/es/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +2 -1
  456. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +1 -4
  457. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  458. package/es/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -2
  459. package/es/scenegraph/group-creater/cell-type/text-cell.js +3 -17
  460. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  461. package/es/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  462. package/es/scenegraph/group-creater/cell-type/video-cell.js +0 -3
  463. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  464. package/es/scenegraph/group-creater/column-helper.js +8 -29
  465. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  466. package/es/scenegraph/group-creater/column.js.map +1 -1
  467. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.d.ts +3 -0
  468. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +65 -0
  469. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -0
  470. package/es/scenegraph/group-creater/progress/proxy.d.ts +31 -12
  471. package/es/scenegraph/group-creater/progress/proxy.js +124 -130
  472. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  473. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +2 -0
  474. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +104 -0
  475. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -0
  476. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +2 -0
  477. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +102 -0
  478. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -0
  479. package/es/scenegraph/group-creater/progress/update-position/update-auto-row.d.ts +2 -0
  480. package/es/scenegraph/group-creater/progress/update-position/update-auto-row.js +18 -0
  481. package/es/scenegraph/group-creater/progress/update-position/update-auto-row.js.map +1 -0
  482. package/es/scenegraph/layout/compute-col-width.d.ts +9 -1
  483. package/es/scenegraph/layout/compute-col-width.js +31 -22
  484. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  485. package/es/scenegraph/layout/compute-row-height.d.ts +3 -0
  486. package/es/scenegraph/layout/compute-row-height.js +175 -0
  487. package/es/scenegraph/layout/compute-row-height.js.map +1 -0
  488. package/es/scenegraph/layout/move-cell.js +1 -1
  489. package/es/scenegraph/layout/move-cell.js.map +1 -1
  490. package/es/scenegraph/layout/update-cell.js +3 -1
  491. package/es/scenegraph/layout/update-cell.js.map +1 -1
  492. package/es/scenegraph/layout/update-height.js +4 -2
  493. package/es/scenegraph/layout/update-height.js.map +1 -1
  494. package/es/scenegraph/layout/update-row.js +1 -1
  495. package/es/scenegraph/layout/update-row.js.map +1 -1
  496. package/es/scenegraph/layout/update-width.js +4 -2
  497. package/es/scenegraph/layout/update-width.js.map +1 -1
  498. package/es/scenegraph/refresh-node/update-chart.d.ts +3 -0
  499. package/es/scenegraph/refresh-node/update-chart.js +45 -4
  500. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  501. package/es/scenegraph/scenegraph.d.ts +13 -5
  502. package/es/scenegraph/scenegraph.js +165 -58
  503. package/es/scenegraph/scenegraph.js.map +1 -1
  504. package/es/scenegraph/stick-text/index.d.ts +1 -0
  505. package/es/scenegraph/stick-text/index.js +21 -5
  506. package/es/scenegraph/stick-text/index.js.map +1 -1
  507. package/es/scenegraph/style/frame-border.js +1 -5
  508. package/es/scenegraph/style/frame-border.js.map +1 -1
  509. package/es/scenegraph/utils/text-icon-layout.d.ts +2 -1
  510. package/es/scenegraph/utils/text-icon-layout.js +4 -4
  511. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  512. package/es/state/hover/col.js +4 -4
  513. package/es/state/hover/col.js.map +1 -1
  514. package/es/state/state.js +1 -1
  515. package/es/state/state.js.map +1 -1
  516. package/es/themes/DEFAULT.js +1 -2
  517. package/es/tools/LimitPromiseQueue.js +2 -1
  518. package/es/tools/NumberMap.d.ts +1 -0
  519. package/es/tools/NumberMap.js +3 -0
  520. package/es/tools/NumberMap.js.map +1 -1
  521. package/es/tools/calc.d.ts +3 -0
  522. package/es/tools/calc.js +10 -0
  523. package/es/tools/calc.js.map +1 -1
  524. package/es/tools/diff-cell.js +1 -1
  525. package/es/tools/dom.js +1 -1
  526. package/es/tools/env.js +1 -1
  527. package/es/ts-types/base-table.d.ts +41 -12
  528. package/es/ts-types/base-table.js.map +1 -1
  529. package/es/ts-types/column/style.d.ts +0 -1
  530. package/es/ts-types/column/style.js.map +1 -1
  531. package/es/ts-types/component/axis.d.ts +12 -0
  532. package/es/ts-types/component/axis.js +2 -0
  533. package/es/ts-types/component/axis.js.map +1 -0
  534. package/es/ts-types/component/legend.d.ts +5 -0
  535. package/es/ts-types/component/legend.js +2 -0
  536. package/es/ts-types/component/legend.js.map +1 -0
  537. package/es/ts-types/component/title.d.ts +47 -0
  538. package/es/ts-types/component/title.js +2 -0
  539. package/es/ts-types/component/title.js.map +1 -0
  540. package/es/ts-types/component/util.d.ts +1 -0
  541. package/es/ts-types/component/util.js +2 -0
  542. package/es/ts-types/component/util.js.map +1 -0
  543. package/es/ts-types/events.d.ts +100 -83
  544. package/es/ts-types/events.js.map +1 -1
  545. package/es/ts-types/list-table/layout-map/api.d.ts +4 -0
  546. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  547. package/es/ts-types/new-data-set.d.ts +18 -5
  548. package/es/ts-types/new-data-set.js +2 -2
  549. package/es/ts-types/new-data-set.js.map +1 -1
  550. package/es/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.d.ts +4 -0
  551. package/es/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js +4 -0
  552. package/es/ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.js.map +1 -1
  553. package/es/ts-types/pivot-table/corner.d.ts +3 -3
  554. package/es/ts-types/pivot-table/corner.js.map +1 -1
  555. package/es/ts-types/pivot-table/indicator/index.d.ts +1 -0
  556. package/es/ts-types/pivot-table/indicator/index.js.map +1 -1
  557. package/es/ts-types/pivot-table/title.d.ts +1 -1
  558. package/es/ts-types/pivot-table/title.js.map +1 -1
  559. package/es/ts-types/table-engine.d.ts +27 -3
  560. package/es/ts-types/table-engine.js.map +1 -1
  561. package/package.json +13 -7
  562. package/cjs/menu/dom/BaseMenu.js.map +0 -1
  563. package/cjs/menu/dom/Menu.js.map +0 -1
  564. package/cjs/menu/dom/MenuHandler.js.map +0 -1
  565. package/cjs/menu/dom/logic/MenuContainer.js.map +0 -1
  566. package/cjs/menu/dom/logic/MenuElement.js.map +0 -1
  567. package/cjs/menu/dom/logic/MenuElementStyle.js.map +0 -1
  568. package/cjs/scenegraph/layout/auto-width.d.ts +0 -2
  569. package/cjs/scenegraph/layout/auto-width.js +0 -85
  570. package/cjs/scenegraph/layout/auto-width.js.map +0 -1
  571. package/cjs/tooltip/BaseTooltip.js.map +0 -1
  572. package/cjs/tooltip/Tooltip.js.map +0 -1
  573. package/cjs/tooltip/TooltipHandler.js.map +0 -1
  574. package/cjs/tooltip/logic/BubbleTooltipElement.js.map +0 -1
  575. package/cjs/tooltip/logic/BubbleTooltipElementStyle.js.map +0 -1
  576. package/dist/vtable.es5.js +0 -53155
  577. package/dist/vtable.es5.min.js +0 -3
  578. package/es/menu/dom/BaseMenu.js.map +0 -1
  579. package/es/menu/dom/Menu.js.map +0 -1
  580. package/es/menu/dom/MenuHandler.js.map +0 -1
  581. package/es/menu/dom/logic/MenuContainer.js.map +0 -1
  582. package/es/menu/dom/logic/MenuElement.js.map +0 -1
  583. package/es/menu/dom/logic/MenuElementStyle.js.map +0 -1
  584. package/es/scenegraph/layout/auto-width.d.ts +0 -2
  585. package/es/scenegraph/layout/auto-width.js +0 -82
  586. package/es/scenegraph/layout/auto-width.js.map +0 -1
  587. package/es/tooltip/BaseTooltip.js.map +0 -1
  588. package/es/tooltip/Tooltip.js.map +0 -1
  589. package/es/tooltip/TooltipHandler.js.map +0 -1
  590. package/es/tooltip/logic/BubbleTooltipElement.js.map +0 -1
  591. package/es/tooltip/logic/BubbleTooltipElementStyle.js.map +0 -1
  592. /package/cjs/{menu → components/menu}/dom/BaseMenu.js +0 -0
  593. /package/cjs/{menu → components/menu}/dom/Menu.d.ts +0 -0
  594. /package/cjs/{menu → components/menu}/dom/Menu.js +0 -0
  595. /package/cjs/{menu → components/menu}/dom/logic/MenuElementStyle.d.ts +0 -0
  596. /package/cjs/{menu → components/menu}/dom/logic/MenuElementStyle.js +0 -0
  597. /package/cjs/{tooltip → components/tooltip}/BaseTooltip.js +0 -0
  598. /package/cjs/{tooltip → components/tooltip}/Tooltip.d.ts +0 -0
  599. /package/cjs/{tooltip → components/tooltip}/Tooltip.js +0 -0
  600. /package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.d.ts +0 -0
  601. /package/cjs/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.js +0 -0
  602. /package/es/{menu → components/menu}/dom/BaseMenu.js +0 -0
  603. /package/es/{menu → components/menu}/dom/Menu.d.ts +0 -0
  604. /package/es/{menu → components/menu}/dom/Menu.js +0 -0
  605. /package/es/{menu → components/menu}/dom/logic/MenuElementStyle.d.ts +0 -0
  606. /package/es/{menu → components/menu}/dom/logic/MenuElementStyle.js +0 -0
  607. /package/es/{tooltip → components/tooltip}/BaseTooltip.js +0 -0
  608. /package/es/{tooltip → components/tooltip}/Tooltip.d.ts +0 -0
  609. /package/es/{tooltip → components/tooltip}/Tooltip.js +0 -0
  610. /package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.d.ts +0 -0
  611. /package/es/{tooltip → components/tooltip}/logic/BubbleTooltipElementStyle.js +0 -0
@@ -0,0 +1,104 @@
1
+ import { TextMeasure, degreeToRadian, isValidNumber, AABBBounds, get, polarToCartesian } from "@visactor/vutils";
2
+
3
+ import { getTextBounds } from "@visactor/vrender";
4
+
5
+ const DEFAULT_TEXT_FONT_FAMILY = "PingFang SC,Microsoft Yahei,system-ui,-apple-system,segoe ui,Roboto,Helvetica,Arial,sans-serif, apple color emoji,segoe ui emoji,segoe ui symbol", DEFAULT_TEXT_FONT_SIZE = 14, initTextMeasure = (textSpec, option, useNaiveCanvas) => new TextMeasure(Object.assign({
6
+ defaultFontParams: {
7
+ fontFamily: DEFAULT_TEXT_FONT_FAMILY,
8
+ fontSize: 14
9
+ },
10
+ getTextBounds: useNaiveCanvas ? void 0 : getTextBounds,
11
+ specialCharSet: "-/: .,@%'\"~" + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase()
12
+ }, null != option ? option : {}), textSpec);
13
+
14
+ export const radians = angle => isValidNumber(angle) ? degreeToRadian(angle) : null;
15
+
16
+ export const convertDomainToTickData = (domain, op) => domain.map(((t, index) => ({
17
+ index: index,
18
+ value: t,
19
+ label: op.labelFormatter ? op.labelFormatter(t) : `${t}`
20
+ })));
21
+
22
+ export const labelOverlap = (prevLabel, nextLabel, gap = 0) => {
23
+ const prevBounds = new AABBBounds(prevLabel).expand(gap / 2), nextBounds = new AABBBounds(nextLabel).expand(gap / 2);
24
+ return prevBounds.intersects(nextBounds);
25
+ };
26
+
27
+ export const labelDistance = (prevLabel, nextLabel) => {
28
+ let horizontal = 0;
29
+ prevLabel.x2 < nextLabel.x1 ? horizontal = nextLabel.x1 - prevLabel.x2 : nextLabel.x2 < prevLabel.x1 && (horizontal = prevLabel.x1 - nextLabel.x2);
30
+ let vertical = 0;
31
+ return prevLabel.y2 < nextLabel.y1 ? vertical = nextLabel.y1 - prevLabel.y2 : nextLabel.y2 < prevLabel.y1 && (vertical = prevLabel.y1 - nextLabel.y2),
32
+ [ horizontal, vertical ];
33
+ };
34
+
35
+ export function intersect(a, b, sep) {
36
+ return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);
37
+ }
38
+
39
+ export function hasOverlap(items, pad) {
40
+ for (let b, i = 1, n = items.length, a = items[0]; i < n; a = b, ++i) if (b = items[i],
41
+ intersect(a.AABBBounds, b.AABBBounds, pad)) return !0;
42
+ return !1;
43
+ }
44
+
45
+ const MIN_TICK_GAP = 12;
46
+
47
+ export const getCartesianLabelBounds = (scale, domain, op) => {
48
+ var _a;
49
+ const {labelStyle: labelStyle, axisOrientType: axisOrientType, labelFlush: labelFlush, labelFormatter: labelFormatter, startAngle: startAngle = 0} = op, labelAngle = null !== (_a = labelStyle.angle) && void 0 !== _a ? _a : 0, isHorizontal = [ "bottom", "top" ].includes(axisOrientType), isVertical = [ "left", "right" ].includes(axisOrientType);
50
+ let orientAngle = startAngle;
51
+ var angle;
52
+ isHorizontal ? orientAngle = 0 : isVertical && (orientAngle = isValidNumber(angle = -90) ? degreeToRadian(angle) : null);
53
+ const textMeasure = initTextMeasure(labelStyle), labelBoundsList = domain.map(((v, i) => {
54
+ var _a, _b;
55
+ const str = labelFormatter ? labelFormatter(v) : `${v}`, {width: width, height: height} = textMeasure.quickMeasure(str), textWidth = Math.max(width, 12), textHeight = Math.max(height, 12), pos = scale.scale(v);
56
+ let align, baseline, textX = Math.cos(orientAngle) * pos, textY = -Math.sin(orientAngle) * pos;
57
+ align = labelFlush && isHorizontal && 0 === i ? "left" : labelFlush && isHorizontal && i === domain.length - 1 ? "right" : null !== (_a = labelStyle.textAlign) && void 0 !== _a ? _a : "center",
58
+ "right" === align ? textX -= textWidth : "center" === align && (textX -= textWidth / 2),
59
+ baseline = labelFlush && isVertical && 0 === i ? "top" : labelFlush && isVertical && i === domain.length - 1 ? "bottom" : null !== (_b = labelStyle.textBaseline) && void 0 !== _b ? _b : "middle",
60
+ "bottom" === baseline ? textY -= textHeight : "middle" === baseline && (textY -= textHeight / 2);
61
+ return (new AABBBounds).set(textX, textY, textX + textWidth, textY + textHeight).rotate(labelAngle, textX + textWidth / 2, textY + textHeight / 2);
62
+ }));
63
+ return labelBoundsList;
64
+ };
65
+
66
+ export const getPolarAngleLabelBounds = (scale, domain, op) => {
67
+ var _a;
68
+ const {labelStyle: labelStyle, getRadius: getRadius, axisSpec: axisSpec, labelFormatter: labelFormatter} = op, radius = null == getRadius ? void 0 : getRadius(), labelAngle = null !== (_a = labelStyle.angle) && void 0 !== _a ? _a : 0, labelOffset = getAxisLabelOffset(axisSpec), textMeasure = initTextMeasure(labelStyle);
69
+ return domain.map((v => {
70
+ const str = labelFormatter ? labelFormatter(v) : `${v}`, {width: width, height: height} = textMeasure.quickMeasure(str), textWidth = Math.max(width, 12), textHeight = Math.max(height, 12), angle = scale.scale(v);
71
+ let textX = 0, textY = 0;
72
+ const orient = angleLabelOrientAttribute(angle), {x: x, y: y} = polarToCartesian({
73
+ x: 0,
74
+ y: 0
75
+ }, radius + labelOffset, angle);
76
+ textX = x + ("right" === orient.align ? -textWidth : "center" === orient.align ? -textWidth / 2 : 0),
77
+ textY = y + ("bottom" === orient.baseline ? -textHeight : "middle" === orient.baseline ? -textHeight / 2 : 0);
78
+ return (new AABBBounds).set(textX, textY, textX + textWidth, textY + textHeight).rotate(labelAngle, textX + textWidth / 2, textY + textHeight / 2);
79
+ }));
80
+ };
81
+
82
+ export function getAxisLabelOffset(axisSpec) {
83
+ let labelOffset = 0;
84
+ return get(axisSpec, "tick.visible") && (labelOffset += get(axisSpec, "tick.tickSize")),
85
+ get(axisSpec, "label.visible") && (labelOffset += get(axisSpec, "label.space")),
86
+ labelOffset;
87
+ }
88
+
89
+ export function angleLabelOrientAttribute(angle) {
90
+ let align = "center", baseline = "middle";
91
+ return align = (angle = normalizeAngle(angle)) >= Math.PI * (5 / 3) || angle <= Math.PI * (1 / 3) ? "left" : angle >= Math.PI * (2 / 3) && angle <= Math.PI * (4 / 3) ? "right" : "center",
92
+ baseline = angle >= Math.PI * (7 / 6) && angle <= Math.PI * (11 / 6) ? "bottom" : angle >= Math.PI * (1 / 6) && angle <= Math.PI * (5 / 6) ? "top" : "middle",
93
+ {
94
+ align: align,
95
+ baseline: baseline
96
+ };
97
+ }
98
+
99
+ export function normalizeAngle(angle) {
100
+ for (;angle < 0; ) angle += 2 * Math.PI;
101
+ for (;angle >= 2 * Math.PI; ) angle -= 2 * Math.PI;
102
+ return angle;
103
+ }
104
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/util/tick-data/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { IBoundsLike, ITextMeasureOption } from '@visactor/vutils';\nimport { TextMeasure, degreeToRadian, isValidNumber, AABBBounds, get, polarToCartesian } from '@visactor/vutils';\nimport { getTextBounds, type IGraphic } from '@visactor/vrender';\n\nconst DEFAULT_TEXT_FONT_FAMILY =\n // eslint-disable-next-line max-len\n 'PingFang SC,Microsoft Yahei,system-ui,-apple-system,segoe ui,Roboto,Helvetica,Arial,sans-serif, apple color emoji,segoe ui emoji,segoe ui symbol';\n\nconst DEFAULT_TEXT_FONT_SIZE = 14;\n\nconst initTextMeasure = (\n textSpec?: Partial<any>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<any> => {\n return new TextMeasure<any>(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n\nexport const radians = (angle?: number) => {\n if (!isValidNumber(angle)) {\n return null;\n }\n return degreeToRadian(angle);\n};\n\nexport const convertDomainToTickData = (domain: any[], op: any): any[] => {\n const ticks = domain.map((t: number, index: number) => {\n return {\n index,\n value: t,\n label: op.labelFormatter ? op.labelFormatter(t) : `${t}`\n };\n });\n return ticks;\n};\n\n/** 判断两个label是否有重叠情况 */\nexport const labelOverlap = (prevLabel: AABBBounds, nextLabel: AABBBounds, gap: number = 0): boolean => {\n const prevBounds = new AABBBounds(prevLabel).expand(gap / 2);\n const nextBounds = new AABBBounds(nextLabel).expand(gap / 2);\n return prevBounds.intersects(nextBounds);\n};\n\n/** 判断两个不相交的label相隔的距离 */\nexport const labelDistance = (prevLabel: AABBBounds, nextLabel: AABBBounds): [number, number] => {\n let horizontal = 0;\n if (prevLabel.x2 < nextLabel.x1) {\n horizontal = nextLabel.x1 - prevLabel.x2;\n } else if (nextLabel.x2 < prevLabel.x1) {\n horizontal = prevLabel.x1 - nextLabel.x2;\n }\n\n let vertical = 0;\n if (prevLabel.y2 < nextLabel.y1) {\n vertical = nextLabel.y1 - prevLabel.y2;\n } else if (nextLabel.y2 < prevLabel.y1) {\n vertical = prevLabel.y1 - nextLabel.y2;\n }\n\n return [horizontal, vertical];\n};\n\nexport function intersect(a: IBoundsLike, b: IBoundsLike, sep: number) {\n return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\n}\n\nexport interface ILabelItem<T> extends Pick<IGraphic, 'AABBBounds'> {\n value?: T;\n}\n\nexport function hasOverlap<T>(items: ILabelItem<T>[], pad: number): boolean {\n for (let i = 1, n = items.length, a = items[0], b; i < n; a = b, ++i) {\n b = items[i];\n if (intersect(a.AABBBounds, b.AABBBounds, pad)) {\n return true;\n }\n }\n return false;\n}\n\nconst MIN_TICK_GAP = 12;\n\nexport const getCartesianLabelBounds = (scale: IBaseScale, domain: any[], op: any): AABBBounds[] => {\n const { labelStyle, axisOrientType, labelFlush, labelFormatter, startAngle = 0 } = op;\n const labelAngle = labelStyle.angle ?? 0;\n const isHorizontal = ['bottom', 'top'].includes(axisOrientType);\n const isVertical = ['left', 'right'].includes(axisOrientType);\n let orientAngle = startAngle;\n if (isHorizontal) {\n orientAngle = 0;\n } else if (isVertical) {\n orientAngle = radians(-90);\n }\n\n const textMeasure = initTextMeasure(labelStyle);\n const labelBoundsList = domain.map((v: any, i: number) => {\n const str = labelFormatter ? labelFormatter(v) : `${v}`;\n\n // 估算文本宽高\n const { width, height } = textMeasure.quickMeasure(str);\n const textWidth = Math.max(width, MIN_TICK_GAP);\n const textHeight = Math.max(height, MIN_TICK_GAP);\n\n // 估算文本位置\n const pos = scale.scale(v);\n let textX = Math.cos(orientAngle) * pos;\n let textY = -Math.sin(orientAngle) * pos;\n\n let align: any;\n if (labelFlush && isHorizontal && i === 0) {\n align = 'left';\n } else if (labelFlush && isHorizontal && i === domain.length - 1) {\n align = 'right';\n } else {\n align = labelStyle.textAlign ?? 'center';\n }\n if (align === 'right') {\n textX -= textWidth;\n } else if (align === 'center') {\n textX -= textWidth / 2;\n }\n\n let baseline: any;\n if (labelFlush && isVertical && i === 0) {\n baseline = 'top';\n } else if (labelFlush && isVertical && i === domain.length - 1) {\n baseline = 'bottom';\n } else {\n baseline = labelStyle.textBaseline ?? 'middle';\n }\n if (baseline === 'bottom') {\n textY -= textHeight;\n } else if (baseline === 'middle') {\n textY -= textHeight / 2;\n }\n\n // 计算 label 包围盒\n const bounds = new AABBBounds()\n .set(textX, textY, textX + textWidth, textY + textHeight)\n .rotate(labelAngle, textX + textWidth / 2, textY + textHeight / 2);\n return bounds;\n });\n\n return labelBoundsList;\n};\n\nexport const getPolarAngleLabelBounds = (scale: IBaseScale, domain: any[], op: any): AABBBounds[] => {\n const { labelStyle, getRadius, axisSpec, labelFormatter } = op;\n const radius = getRadius?.();\n const labelAngle = labelStyle.angle ?? 0;\n\n const labelOffset = getAxisLabelOffset(axisSpec);\n\n const textMeasure = initTextMeasure(labelStyle);\n const labelBoundsList = domain.map((v: any) => {\n const str = labelFormatter ? labelFormatter(v) : `${v}`;\n\n // 估算文本宽高\n const { width, height } = textMeasure.quickMeasure(str);\n const textWidth = Math.max(width, MIN_TICK_GAP);\n const textHeight = Math.max(height, MIN_TICK_GAP);\n\n // 估算文本位置\n const angle = scale.scale(v);\n let textX = 0;\n let textY = 0;\n const orient = angleLabelOrientAttribute(angle);\n const { x, y } = polarToCartesian({ x: 0, y: 0 }, radius + labelOffset, angle);\n textX = x + (orient.align === 'right' ? -textWidth : orient.align === 'center' ? -textWidth / 2 : 0);\n textY = y + (orient.baseline === 'bottom' ? -textHeight : orient.baseline === 'middle' ? -textHeight / 2 : 0);\n\n // 计算 label 包围盒\n const bounds = new AABBBounds()\n .set(textX, textY, textX + textWidth, textY + textHeight)\n .rotate(labelAngle, textX + textWidth / 2, textY + textHeight / 2);\n return bounds;\n });\n\n return labelBoundsList;\n};\n\nexport function getAxisLabelOffset(axisSpec: any) {\n let labelOffset = 0;\n if (get(axisSpec, 'tick.visible')) {\n labelOffset += get(axisSpec, 'tick.tickSize');\n }\n\n if (get(axisSpec, 'label.visible')) {\n labelOffset += get(axisSpec, 'label.space');\n }\n\n return labelOffset;\n}\n\nexport function angleLabelOrientAttribute(angle: number) {\n let align: any = 'center';\n let baseline: any = 'middle';\n\n angle = normalizeAngle(angle);\n\n // left: 5/3 - 1/3; right: 2/3 - 4/3; center: 5/3 - 1/3 & 2/3 - 4/3\n if (angle >= Math.PI * (5 / 3) || angle <= Math.PI * (1 / 3)) {\n align = 'left';\n } else if (angle >= Math.PI * (2 / 3) && angle <= Math.PI * (4 / 3)) {\n align = 'right';\n } else {\n align = 'center';\n }\n\n // bottom: 7/6 - 11/6; top: 1/6 - 5/6; middle: 11/6 - 1/6 & 5/6 - 7/6\n if (angle >= Math.PI * (7 / 6) && angle <= Math.PI * (11 / 6)) {\n baseline = 'bottom';\n } else if (angle >= Math.PI * (1 / 6) && angle <= Math.PI * (5 / 6)) {\n baseline = 'top';\n } else {\n baseline = 'middle';\n }\n\n return { align, baseline };\n}\n\nexport function normalizeAngle(angle: number): number {\n while (angle < 0) {\n angle += Math.PI * 2;\n }\n while (angle >= Math.PI * 2) {\n angle -= Math.PI * 2;\n }\n return angle;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function transformLegendTitleAttributes(title: any): any;
2
+ export declare function transformToGraphic(style: any): any;
3
+ export declare function transformComponentStyle(cfg?: any): any;
4
+ export declare function transformStateStyle(stateStyle: any): any;
5
+ export declare function transformAxisLineStyle(lineCfg: any): any;
@@ -0,0 +1,34 @@
1
+ import { degreeToRadian, isEmpty, merge } from "@visactor/vutils";
2
+
3
+ export function transformLegendTitleAttributes(title) {
4
+ var _a, _b;
5
+ const transformedTitle = Object.assign({}, title);
6
+ return isEmpty(title.style) || (transformedTitle.textStyle = transformToGraphic(title.style)),
7
+ isEmpty(title.textStyle) || merge(transformedTitle.textStyle, transformToGraphic(title.textStyle)),
8
+ (null === (_a = title.shape) || void 0 === _a ? void 0 : _a.style) && transformToGraphic(transformedTitle.shape.style),
9
+ (null === (_b = title.background) || void 0 === _b ? void 0 : _b.style) && transformToGraphic(transformedTitle.background.style),
10
+ transformedTitle;
11
+ }
12
+
13
+ export function transformToGraphic(style) {
14
+ return isEmpty(style) || style.angle && (style.angle = degreeToRadian(style.angle)),
15
+ style;
16
+ }
17
+
18
+ export function transformComponentStyle(cfg = {}) {
19
+ return isEmpty(cfg.style) || (cfg.style = transformToGraphic(cfg.style)), isEmpty(cfg.state) || Object.keys(cfg.state).forEach((key => {
20
+ isEmpty(cfg.state[key]) || (cfg.state[key] = transformToGraphic(cfg.state[key]));
21
+ })), cfg;
22
+ }
23
+
24
+ export function transformStateStyle(stateStyle) {
25
+ return isEmpty(stateStyle) ? null : (Object.keys(stateStyle).forEach((key => {
26
+ isEmpty(stateStyle[key]) || (stateStyle[key] = transformToGraphic(stateStyle[key]));
27
+ })), stateStyle);
28
+ }
29
+
30
+ export function transformAxisLineStyle(lineCfg) {
31
+ return transformComponentStyle(lineCfg), transformComponentStyle(lineCfg.startSymbol),
32
+ transformComponentStyle(lineCfg.endSymbol), lineCfg;
33
+ }
34
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/util/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,UAAU,8BAA8B,CAAC,KAAU;;IACvD,MAAM,gBAAgB,qBACjB,KAAK,CACT,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACzB,gBAAgB,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC9D;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC7B,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;KACxE;IAED,IAAI,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,EAAE;QACtB,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAClD;IAED,IAAI,MAAA,KAAK,CAAC,UAAU,0CAAE,KAAK,EAAE;QAC3B,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACvD;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAU;IAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAW,EAAE;IACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACvB,GAAG,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC3C;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;aACrD;QACH,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAe;IACjD,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;YAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SACvD;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAY;IACjD,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,OAAO,CAAC;AACjB,CAAC","file":"transform.js","sourcesContent":["import { degreeToRadian, isEmpty, merge } from '@visactor/vutils';\n\nexport function transformLegendTitleAttributes(title: any) {\n const transformedTitle = {\n ...title\n };\n if (!isEmpty(title.style)) {\n transformedTitle.textStyle = transformToGraphic(title.style);\n }\n if (!isEmpty(title.textStyle)) {\n merge(transformedTitle.textStyle, transformToGraphic(title.textStyle));\n }\n\n if (title.shape?.style) {\n transformToGraphic(transformedTitle.shape.style);\n }\n\n if (title.background?.style) {\n transformToGraphic(transformedTitle.background.style);\n }\n return transformedTitle;\n}\n\nexport function transformToGraphic(style: any) {\n if (isEmpty(style)) {\n return style;\n }\n if (style.angle) {\n style.angle = degreeToRadian(style.angle);\n }\n\n return style;\n}\n\nexport function transformComponentStyle(cfg: any = {}) {\n if (!isEmpty(cfg.style)) {\n cfg.style = transformToGraphic(cfg.style);\n }\n\n if (!isEmpty(cfg.state)) {\n Object.keys(cfg.state).forEach(key => {\n if (!isEmpty(cfg.state[key])) {\n cfg.state[key] = transformToGraphic(cfg.state[key]);\n }\n });\n }\n\n return cfg;\n}\n\nexport function transformStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n Object.keys(stateStyle).forEach(key => {\n if (!isEmpty(stateStyle[key])) {\n stateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return stateStyle;\n}\n\nexport function transformAxisLineStyle(lineCfg: any) {\n transformComponentStyle(lineCfg);\n transformComponentStyle(lineCfg.startSymbol);\n transformComponentStyle(lineCfg.endSymbol);\n\n return lineCfg;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { CellAddress, CellRange, TableEventHandlersEventArgumentMap, TableEventHandlersReturnMap, TableKeyboardOptions, DropDownMenuHighlightInfo, MenuListItem, WidthModeDef, ICustomRender, ICellHeaderPaths, HeaderData, FullExtendStyle, FieldDef, ColumnTypeOption, SortState, IPagerConf, ICustomLayout, CellInfo, CellStyle, DropDownMenuOptions, FieldFormat, FieldData, MaybePromiseOrUndefined, MousePointerCellEvent, DropDownMenuEventInfo, HierarchyState, FieldKeyDef, CellType, LayoutObjectId } from '../ts-types';
1
+ import type { CellAddress, CellRange, TableEventHandlersEventArgumentMap, TableEventHandlersReturnMap, TableKeyboardOptions, DropDownMenuHighlightInfo, MenuListItem, WidthModeDef, ICustomRender, ICellHeaderPaths, HeaderData, FullExtendStyle, FieldDef, ColumnTypeOption, SortState, IPagerConf, ICustomLayout, CellInfo, CellStyle, DropDownMenuOptions, FieldFormat, FieldData, MaybePromiseOrUndefined, MousePointerCellEvent, DropDownMenuEventInfo, HierarchyState, FieldKeyDef, CellType, LayoutObjectId, HeightModeDef } from '../ts-types';
2
2
  import type { ColumnIconOption } from '../ts-types';
3
3
  import { TABLE_EVENT_TYPE } from './TABLE_EVENT_TYPE';
4
4
  import { EventTarget } from '../event/EventTarget';
@@ -14,6 +14,7 @@ import { type ITextSize } from '@visactor/vutils';
14
14
  import type { ColumnData, ColumnDefine, ColumnsDefine, IndicatorData } from '../ts-types/list-table/layout-map/api';
15
15
  import type { TooltipOptions } from '../ts-types/tooltip';
16
16
  import type { BaseTableAPI, BaseTableConstructorOptions, IBaseTableProtected } from '../ts-types/base-table';
17
+ import { DataSet } from '@visactor/vdataset';
17
18
  export declare abstract class BaseTable extends EventTarget implements BaseTableAPI {
18
19
  internalProps: IBaseTableProtected;
19
20
  showFrozenIcon: boolean;
@@ -30,15 +31,18 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
30
31
  tableX: number;
31
32
  tableY: number;
32
33
  _widthMode: WidthModeDef;
34
+ _heightMode: HeightModeDef;
35
+ _autoFillWidth: boolean;
33
36
  customRender?: ICustomRender;
34
37
  canvasWidth?: number;
35
38
  canvasHeight?: number;
39
+ dataSet: DataSet;
36
40
  scenegraph: Scenegraph;
37
41
  stateManeger?: StateManeger;
38
42
  eventManeger?: EventManeger;
39
43
  _pixelRatio: number;
40
- _cellToBeInvalidatedNextFrame: Set<string>;
41
- _willNextFrameInvalidate: boolean;
44
+ bottomFrozenRowCount: number;
45
+ rightFrozenColCount: number;
42
46
  static get EVENT_TYPE(): typeof TABLE_EVENT_TYPE;
43
47
  readonly options: BaseTableConstructorOptions;
44
48
  version: string;
@@ -97,6 +101,10 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
97
101
  set keyboardOptions(keyboardOptions: TableKeyboardOptions | null);
98
102
  get widthMode(): WidthModeDef;
99
103
  set widthMode(widthMode: WidthModeDef);
104
+ get heightMode(): HeightModeDef;
105
+ set heightMode(heightMode: HeightModeDef);
106
+ get autoFillWidth(): boolean;
107
+ set autoFillWidth(autoFillWidth: boolean);
100
108
  private _colWidthDefineToPxWidth;
101
109
  private _calculateAutoColWidthExpr;
102
110
  private _getColWidthLimits;
@@ -114,7 +122,7 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
114
122
  getColWidth(col: number): number;
115
123
  setColWidth(col: number, width: string | number, clearCache?: boolean, skipCheckFrozen?: boolean): void;
116
124
  _clearColRangeWidthsMap(col?: number): void;
117
- _clearRowRangeHeightsMap(row: number): void;
125
+ _clearRowRangeHeightsMap(row?: number): void;
118
126
  _getColContentWidth(col: number): number;
119
127
  _setColContentWidth(col: number, width: string | number): void;
120
128
  getAllRowsHeight(): number;
@@ -170,10 +178,12 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
170
178
  dispose: () => void;
171
179
  }): void;
172
180
  dispose(): void;
173
- fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(type: TYPE, ...event: TableEventHandlersEventArgumentMap[TYPE]): TableEventHandlersReturnMap[TYPE][];
181
+ fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(type: TYPE, event: TableEventHandlersEventArgumentMap[TYPE]): TableEventHandlersReturnMap[TYPE][];
174
182
  updateOption(options: BaseTableConstructorOptions): void;
175
183
  getFrozenRowsHeight(): number;
176
184
  getFrozenColsWidth(): number;
185
+ getBottomFrozenRowsHeight(): number;
186
+ getRightFrozenColsWidth(): number;
177
187
  getDrawRange(): Rect;
178
188
  _getMouseAbstractPoint(evt: TouchEvent | MouseEvent | undefined, isAddScroll?: boolean): {
179
189
  x: number;
@@ -209,7 +219,8 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
209
219
  selectCell(col: number, row: number): void;
210
220
  abstract isListTable(): boolean;
211
221
  abstract isPivotTable(): boolean;
212
- protected abstract getSortFuncFromHeaderOption(columns: ColumnsDefine | undefined, field: FieldDef, fieldKey?: FieldKeyDef): ((v1: any, v2: any, order: string) => 0 | 1 | -1) | undefined;
222
+ abstract isPivotChart(): boolean;
223
+ protected abstract _getSortFuncFromHeaderOption(columns: ColumnsDefine | undefined, field: FieldDef, fieldKey?: FieldKeyDef): ((v1: any, v2: any, order: string) => 0 | 1 | -1) | undefined;
213
224
  abstract refreshHeader(): void;
214
225
  abstract refreshRowColCount(): void;
215
226
  abstract getHierarchyState(col: number, row: number): HierarchyState | null;
@@ -260,6 +271,8 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
260
271
  isColumnHeader(col: number, row: number): boolean;
261
272
  isRowHeader(col: number, row: number): boolean;
262
273
  isCornerHeader(col: number, row: number): boolean;
274
+ isRightFrozenColumn(col: number, row: number): boolean;
275
+ isBottomFrozenRow(col: number, row: number): boolean;
263
276
  getCellInfo(col: number, row: number): MousePointerCellEvent;
264
277
  _hasField(field: FieldDef, col: number, row: number): boolean;
265
278
  _getCellStyle(col: number, row: number): FullExtendStyle;
@@ -34,7 +34,7 @@ import { BodyHelper } from "../body-helper/body-helper";
34
34
 
35
35
  import { HeaderHelper } from "../header-helper/header-helper";
36
36
 
37
- import { TooltipHandler } from "../tooltip/TooltipHandler";
37
+ import { TooltipHandler } from "../components/tooltip/TooltipHandler";
38
38
 
39
39
  import { isBoolean } from "@visactor/vutils";
40
40
 
@@ -48,27 +48,36 @@ import { IconCache } from "../plugins/icons";
48
48
 
49
49
  import { _applyColWidthLimits, _getScrollableVisibleRect, _getTargetFrozenColAt, _getTargetFrozenRowAt, _setDataSource, _setRecords, _toPxWidth, createRootElement, getStyleTheme, isAutoDefine, updateRootElementPadding } from "./tableHelper";
50
50
 
51
- import { MenuHandler } from "../menu/dom/MenuHandler";
51
+ import { MenuHandler } from "../components/menu/dom/MenuHandler";
52
52
 
53
53
  import { FocusInput } from "./FouseInput";
54
54
 
55
55
  import { defaultPixelRatio } from "../tools/pixel-ratio";
56
56
 
57
+ import { TableLegend } from "../components/legend/legend";
58
+
59
+ import { DataSet } from "@visactor/vdataset";
60
+
61
+ import { Title } from "../components/title/title";
62
+
57
63
  const {toBoxArray: toBoxArray} = utilStyle, {isTouchEvent: isTouchEvent} = event, rangeReg = /^\$(\d+)\$(\d+)$/;
58
64
 
59
65
  importStyle();
60
66
 
67
+ const EMPTY_STYLE = {};
68
+
61
69
  export class BaseTable extends EventTarget {
62
70
  static get EVENT_TYPE() {
63
71
  return TABLE_EVENT_TYPE;
64
72
  }
65
73
  constructor(options = {}) {
66
- var _a, _b, _c, _d, _e, _f, _g, _h;
67
- super(), this.showFrozenIcon = !0, this.showSort = !0, this.version = "0.9.1", this.id = `VTable${Date.now()}`,
74
+ var _a, _b, _c, _d, _e, _f, _g;
75
+ super(), this.showFrozenIcon = !0, this.showSort = !0, this.bottomFrozenRowCount = 0,
76
+ this.rightFrozenColCount = 0, this.version = "0.9.2-alpha.1", this.id = `VTable${Date.now()}`,
68
77
  this.throttleInvalidate = throttle2(this.invalidate.bind(this), 200);
69
- const {frozenColCount: frozenColCount = 0, defaultRowHeight: defaultRowHeight = 40, defaultHeaderRowHeight: defaultHeaderRowHeight, defaultColWidth: defaultColWidth = 80, defaultHeaderColWidth: defaultHeaderColWidth, widthMode: widthMode = "standard", keyboardOptions: keyboardOptions, parentElement: parentElement, columnResizeMode: columnResizeMode, dragHeaderMode: dragHeaderMode, showFrozenIcon: showFrozenIcon, allowFrozenColCount: allowFrozenColCount, padding: padding, hover: hover, menu: menu, select: click, customRender: customRender, pixelRatio: pixelRatio = defaultPixelRatio} = options;
70
- this.options = options, this._widthMode = widthMode, this.customRender = customRender,
71
- this.padding = {
78
+ const {frozenColCount: frozenColCount = 0, defaultRowHeight: defaultRowHeight = 40, defaultHeaderRowHeight: defaultHeaderRowHeight, defaultColWidth: defaultColWidth = 80, defaultHeaderColWidth: defaultHeaderColWidth, widthMode: widthMode = "standard", heightMode: heightMode = "standard", autoFillWidth: autoFillWidth = !1, keyboardOptions: keyboardOptions, parentElement: parentElement, columnResizeMode: columnResizeMode, dragHeaderMode: dragHeaderMode, showFrozenIcon: showFrozenIcon, allowFrozenColCount: allowFrozenColCount, padding: padding, hover: hover, menu: menu, select: click, customRender: customRender, pixelRatio: pixelRatio = defaultPixelRatio} = options;
79
+ this.options = options, this._widthMode = widthMode, this._heightMode = heightMode,
80
+ this._autoFillWidth = autoFillWidth, this.customRender = customRender, this.padding = {
72
81
  top: 0,
73
82
  right: 0,
74
83
  left: 0,
@@ -80,7 +89,6 @@ export class BaseTable extends EventTarget {
80
89
  this.tableNoFrameHeight = 0;
81
90
  const internalProps = this.internalProps = {};
82
91
  void 0 !== showFrozenIcon && (this.showFrozenIcon = showFrozenIcon), "number" == typeof allowFrozenColCount && allowFrozenColCount <= 0 && (this.showFrozenIcon = !1),
83
- internalProps.autoRowHeight = null !== (_a = options.autoRowHeight) && void 0 !== _a && _a,
84
92
  internalProps.handler = new EventHandler, internalProps.element = createRootElement(this.padding),
85
93
  internalProps.focusControl = new FocusInput(this, internalProps.element), internalProps.pixelRatio = pixelRatio,
86
94
  internalProps.canvas = document.createElement("canvas"), internalProps.element.appendChild(internalProps.canvas),
@@ -97,23 +105,29 @@ export class BaseTable extends EventTarget {
97
105
  var _a;
98
106
  return this._.canvas.width / (null !== (_a = this._.context.pixelRatio) && void 0 !== _a ? _a : window.devicePixelRatio);
99
107
  }
100
- }, internalProps.cellTextOverflows = {}, internalProps.focusedTable = !1, internalProps.theme = themes.of(null !== (_b = options.theme) && void 0 !== _b ? _b : themes.DEFAULT),
108
+ }, internalProps.cellTextOverflows = {}, internalProps.focusedTable = !1, internalProps.theme = themes.of(null !== (_a = options.theme) && void 0 !== _a ? _a : themes.DEFAULT),
101
109
  parentElement ? (parentElement.innerHTML = "", parentElement.appendChild(internalProps.element),
102
- this._updateSize()) : this._updateSize(), this._cellToBeInvalidatedNextFrame = new Set,
103
- this._willNextFrameInvalidate = !1, this.options = options, internalProps.theme = themes.of(null !== (_c = options.theme) && void 0 !== _c ? _c : themes.DEFAULT),
110
+ this._updateSize()) : this._updateSize(), this.options = options, internalProps.theme = themes.of(null !== (_b = options.theme) && void 0 !== _b ? _b : themes.DEFAULT),
104
111
  internalProps.bodyHelper = new BodyHelper(this), internalProps.headerHelper = new HeaderHelper(this),
105
- internalProps.autoWrapText = options.autoWrapText, internalProps.allowFrozenColCount = null !== (_d = options.allowFrozenColCount) && void 0 !== _d ? _d : internalProps.colCount,
106
- internalProps.limitMaxAutoWidth = null !== (_e = options.limitMaxAutoWidth) && void 0 !== _e ? _e : 450,
107
- this.scenegraph = new Scenegraph(this), this.stateManeger = new StateManeger(this),
108
- this.eventManeger = new EventManeger(this), internalProps.tooltip = Object.assign({
112
+ internalProps.autoWrapText = options.autoWrapText, internalProps.allowFrozenColCount = null !== (_c = options.allowFrozenColCount) && void 0 !== _c ? _c : internalProps.colCount,
113
+ internalProps.limitMaxAutoWidth = null !== (_d = options.limitMaxAutoWidth) && void 0 !== _d ? _d : 450,
114
+ this.dataSet = new DataSet, this.scenegraph = new Scenegraph(this), this.stateManeger = new StateManeger(this),
115
+ this.eventManeger = new EventManeger(this), options.legends && (internalProps.legends = new TableLegend(options.legends, this),
116
+ this.scenegraph.tableGroup.setAttributes({
117
+ x: this.tableX,
118
+ y: this.tableY
119
+ })), options.title && (internalProps.title = new Title(options.title, this), this.scenegraph.tableGroup.setAttributes({
120
+ x: this.tableX,
121
+ y: this.tableY
122
+ })), internalProps.tooltip = Object.assign({
109
123
  renderMode: "html",
110
124
  isShowOverflowTextTooltip: !1,
111
125
  confine: !0
112
126
  }, options.tooltip), "html" === internalProps.tooltip.renderMode && (internalProps.tooltipHandler = new TooltipHandler(this, internalProps.tooltip.confine)),
113
127
  internalProps.menu = Object.assign({
114
128
  renderMode: "html"
115
- }, options.menu), Array.isArray(null === (_f = options.menu) || void 0 === _f ? void 0 : _f.dropDownMenuHighlight) && this.setDropDownMenuHighlight(null === (_g = options.menu) || void 0 === _g ? void 0 : _g.dropDownMenuHighlight),
116
- Array.isArray(null === (_h = options.menu) || void 0 === _h ? void 0 : _h.defaultHeaderMenuItems) && (this.globalDropDownMenu = options.menu.defaultHeaderMenuItems),
129
+ }, options.menu), Array.isArray(null === (_e = options.menu) || void 0 === _e ? void 0 : _e.dropDownMenuHighlight) && this.setDropDownMenuHighlight(null === (_f = options.menu) || void 0 === _f ? void 0 : _f.dropDownMenuHighlight),
130
+ Array.isArray(null === (_g = options.menu) || void 0 === _g ? void 0 : _g.defaultHeaderMenuItems) && (this.globalDropDownMenu = options.menu.defaultHeaderMenuItems),
117
131
  "html" === internalProps.menu.renderMode && (internalProps.menuHandler = new MenuHandler(this)),
118
132
  this.headerStyleCache = new Map, this.bodyStyleCache = new Map;
119
133
  }
@@ -242,6 +256,18 @@ export class BaseTable extends EventTarget {
242
256
  set widthMode(widthMode) {
243
257
  widthMode !== this._widthMode && (this._widthMode = widthMode);
244
258
  }
259
+ get heightMode() {
260
+ return this._heightMode;
261
+ }
262
+ set heightMode(heightMode) {
263
+ heightMode !== this._heightMode && (this._heightMode = heightMode);
264
+ }
265
+ get autoFillWidth() {
266
+ return this._autoFillWidth;
267
+ }
268
+ set autoFillWidth(autoFillWidth) {
269
+ autoFillWidth !== this._autoFillWidth && (this._autoFillWidth = autoFillWidth);
270
+ }
245
271
  _colWidthDefineToPxWidth(width) {
246
272
  return isAutoDefine(width) ? _toPxWidth(this, this._calculateAutoColWidthExpr()) : _toPxWidth(this, width);
247
273
  }
@@ -326,7 +352,7 @@ export class BaseTable extends EventTarget {
326
352
  widths.forEach(((value, index) => this.setColWidth(index, value)));
327
353
  }
328
354
  getColsWidth(startCol, endCol) {
329
- var _a;
355
+ var _a, _b;
330
356
  endCol = Math.min(endCol, this.colCount - 1);
331
357
  const cachedColWidth = this._colRangeWidthsMap.get(`$${startCol}$${endCol}`);
332
358
  if (null != cachedColWidth) return cachedColWidth;
@@ -334,13 +360,13 @@ export class BaseTable extends EventTarget {
334
360
  if (null != cachedLowerColWidth) {
335
361
  const width = this.colWidthsMap.get(endCol);
336
362
  let adjustW;
337
- adjustW = width ? "adaptive" === this.widthMode || this.transpose ? Number(width) : this._adjustColWidth(endCol, this._colWidthDefineToPxWidth(width)) : 0;
363
+ adjustW = width ? "adaptive" === this.widthMode || this.transpose ? Number(width) : this._adjustColWidth(endCol, this._colWidthDefineToPxWidth(width)) : this.isRowHeader(endCol, 0) || this.isCornerHeader(endCol, 0) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_a = this.defaultHeaderColWidth[endCol]) && void 0 !== _a ? _a : this.internalProps.defaultColWidth : this.defaultHeaderColWidth : this.internalProps.defaultColWidth;
338
364
  const addWidth = cachedLowerColWidth + adjustW;
339
365
  return startCol >= 0 && endCol >= 0 && !Number.isNaN(addWidth) && this._colRangeWidthsMap.set(`$${startCol}$${endCol}`, Math.round(addWidth)),
340
366
  Math.round(addWidth);
341
367
  }
342
368
  let w = 0;
343
- for (let col = startCol; col <= endCol; col++) w += this.isRowHeader(col, 0) || this.isCornerHeader(col, 0) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_a = this.defaultHeaderColWidth[col]) && void 0 !== _a ? _a : this.internalProps.defaultColWidth : this.defaultHeaderColWidth : this.internalProps.defaultColWidth;
369
+ for (let col = startCol; col <= endCol; col++) w += this.isRowHeader(col, 0) || this.isCornerHeader(col, 0) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_b = this.defaultHeaderColWidth[col]) && void 0 !== _b ? _b : this.internalProps.defaultColWidth : this.defaultHeaderColWidth : this.internalProps.defaultColWidth;
344
370
  this.colWidthsMap.each(startCol, endCol, ((width, col) => {
345
371
  var _a;
346
372
  w += ("adaptive" === this.widthMode || this.transpose ? Number(width) : this._adjustColWidth(col, this._colWidthDefineToPxWidth(width))) - (this.isRowHeader(col, 0) || this.isCornerHeader(col, 0) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_a = this.defaultHeaderColWidth[col]) && void 0 !== _a ? _a : this.internalProps.defaultColWidth : this.defaultHeaderColWidth : this.internalProps.defaultColWidth);
@@ -354,8 +380,8 @@ export class BaseTable extends EventTarget {
354
380
  Math.round(w);
355
381
  }
356
382
  getRowHeight(row) {
357
- var _a;
358
- return this.rowHeightsMap.get(row) || (this.isColumnHeader(0, row) || this.isCornerHeader(0, row) ? Array.isArray(this.defaultHeaderRowHeight) ? null !== (_a = this.defaultHeaderRowHeight[row]) && void 0 !== _a ? _a : this.internalProps.defaultRowHeight : this.defaultHeaderRowHeight : this.internalProps.defaultRowHeight);
383
+ var _a, _b;
384
+ return this.rowHeightsMap.get(row) ? this.rowHeightsMap.get(row) : this.isColumnHeader(0, row) || this.isCornerHeader(0, row) ? Array.isArray(this.defaultHeaderRowHeight) ? null !== (_a = this.defaultHeaderRowHeight[row]) && void 0 !== _a ? _a : this.internalProps.defaultRowHeight : this.defaultHeaderRowHeight : this.isBottomFrozenRow(this.rowHeaderLevelCount, row) ? Array.isArray(this.defaultHeaderRowHeight) ? null !== (_b = this.defaultHeaderRowHeight[row]) && void 0 !== _b ? _b : this.internalProps.defaultRowHeight : this.defaultHeaderRowHeight : this.internalProps.defaultRowHeight;
359
385
  }
360
386
  setRowHeight(row, height, clearCache) {
361
387
  this.rowHeightsMap.put(row, Math.round(height)), clearCache && this._clearRowRangeHeightsMap(row);
@@ -366,7 +392,7 @@ export class BaseTable extends EventTarget {
366
392
  this._rowRangeHeightsMap.set(`$0$${row}`, Math.round((null !== (_a = this._rowRangeHeightsMap.get("$0$" + (row - 1))) && void 0 !== _a ? _a : 0) + rowHeight));
367
393
  }
368
394
  getRowsHeight(startRow, endRow) {
369
- var _a, _b, _c;
395
+ var _a, _b;
370
396
  const cachedRowHeight = this._rowRangeHeightsMap.get(`$${startRow}$${endRow}`);
371
397
  if (null != cachedRowHeight) return cachedRowHeight;
372
398
  const cachedLowerRowHeight = this._rowRangeHeightsMap.get(`$${startRow}$${endRow - 1}`);
@@ -376,14 +402,14 @@ export class BaseTable extends EventTarget {
376
402
  height;
377
403
  }
378
404
  let h = 0;
379
- for (let i = startRow; i <= endRow; i++) h += this.rowHeightsMap.get(i) || (this.isColumnHeader(0, i) || this.isCornerHeader(0, i) ? Array.isArray(this.defaultHeaderRowHeight) ? null !== (_c = this.defaultHeaderRowHeight[i]) && void 0 !== _c ? _c : this.internalProps.defaultRowHeight : this.defaultHeaderRowHeight : this.internalProps.defaultRowHeight);
405
+ for (let i = startRow; i <= endRow; i++) h += this.getRowHeight(i);
380
406
  return startRow >= 0 && endRow >= 0 && h > 0 && this._rowRangeHeightsMap.set(`$${startRow}$${endRow}`, Math.round(h)),
381
407
  Math.round(h);
382
408
  }
383
409
  getColWidthDefine(col) {
384
- var _a;
410
+ var _a, _b;
385
411
  const width = this.colWidthsMap.get(col);
386
- return "number" == typeof width && width <= 0 ? 0 : width || (this.isRowHeader(col, 0) || this.isCornerHeader(col, 0) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_a = this.defaultHeaderColWidth[col]) && void 0 !== _a ? _a : this.defaultColWidth : this.defaultHeaderColWidth : this.defaultColWidth);
412
+ return "number" == typeof width && width <= 0 ? 0 : width || (this.isRowHeader(col, 0) || this.isCornerHeader(col, 0) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_a = this.defaultHeaderColWidth[col]) && void 0 !== _a ? _a : this.defaultColWidth : this.defaultHeaderColWidth : this.isRightFrozenColumn(col, this.columnHeaderLevelCount) ? Array.isArray(this.defaultHeaderColWidth) ? null !== (_b = this.defaultHeaderColWidth[col]) && void 0 !== _b ? _b : this.defaultColWidth : this.defaultHeaderColWidth : this.defaultColWidth);
387
413
  }
388
414
  getColWidth(col) {
389
415
  const width = this.getColWidthDefine(col);
@@ -406,12 +432,14 @@ export class BaseTable extends EventTarget {
406
432
  }
407
433
  }
408
434
  _clearRowRangeHeightsMap(row) {
409
- const keys = this._rowRangeHeightsMap.keys();
410
- for (const key of keys) {
411
- const reg = rangeReg.exec(key);
412
- if (reg) {
413
- const start = Number(reg[1]), end = Number(reg[2]);
414
- row >= start && row <= end && this._rowRangeHeightsMap.delete(key);
435
+ if ("number" != typeof row) this._rowRangeHeightsMap.clear(); else {
436
+ const keys = this._rowRangeHeightsMap.keys();
437
+ for (const key of keys) {
438
+ const reg = rangeReg.exec(key);
439
+ if (reg) {
440
+ const start = Number(reg[1]), end = Number(reg[2]);
441
+ row >= start && row <= end && this._rowRangeHeightsMap.delete(key);
442
+ }
415
443
  }
416
444
  }
417
445
  }
@@ -515,7 +543,7 @@ export class BaseTable extends EventTarget {
515
543
  return this.getCellsRectWidth(cellRange.start.col, cellRange.start.row, cellRange.end.col, cellRange.end.row);
516
544
  }
517
545
  isFrozenCell(col, row) {
518
- const {frozenRowCount: frozenRowCount, frozenColCount: frozenColCount} = this.internalProps, isFrozenRow = frozenRowCount > 0 && row < frozenRowCount, isFrozenCol = frozenColCount > 0 && col < frozenColCount;
546
+ const {frozenRowCount: frozenRowCount, frozenColCount: frozenColCount} = this.internalProps, isFrozenRow = frozenRowCount > 0 && row < frozenRowCount || this.isBottomFrozenRow(col, row), isFrozenCol = frozenColCount > 0 && col < frozenColCount || this.isRightFrozenColumn(col, row);
519
547
  return isFrozenRow || isFrozenCol ? {
520
548
  row: isFrozenRow,
521
549
  col: isFrozenCol
@@ -654,20 +682,21 @@ export class BaseTable extends EventTarget {
654
682
  const {parentElement: parentElement} = internalProps.element;
655
683
  parentElement && parentElement.removeChild(internalProps.element);
656
684
  }
657
- fireListeners(type, ...event) {
658
- return super.fireListeners(type, ...event);
685
+ fireListeners(type, event) {
686
+ return super.fireListeners(type, event);
659
687
  }
660
688
  updateOption(options) {
661
- var _a, _b, _c, _d;
689
+ var _a, _b, _c;
662
690
  this.options = options;
663
- const {frozenColCount: frozenColCount = 0, defaultRowHeight: defaultRowHeight = 40, defaultHeaderRowHeight: defaultHeaderRowHeight, defaultColWidth: defaultColWidth = 80, defaultHeaderColWidth: defaultHeaderColWidth = 80, keyboardOptions: keyboardOptions, columnResizeMode: columnResizeMode, dragHeaderMode: dragHeaderMode, showFrozenIcon: showFrozenIcon, allowFrozenColCount: allowFrozenColCount, padding: padding, hover: hover, menu: menu, select: click, pixelRatio: pixelRatio, widthMode: widthMode} = options;
691
+ const {frozenColCount: frozenColCount = 0, defaultRowHeight: defaultRowHeight = 40, defaultHeaderRowHeight: defaultHeaderRowHeight, defaultColWidth: defaultColWidth = 80, defaultHeaderColWidth: defaultHeaderColWidth = 80, keyboardOptions: keyboardOptions, columnResizeMode: columnResizeMode, dragHeaderMode: dragHeaderMode, showFrozenIcon: showFrozenIcon, allowFrozenColCount: allowFrozenColCount, padding: padding, hover: hover, menu: menu, select: click, pixelRatio: pixelRatio, widthMode: widthMode, heightMode: heightMode, autoFillWidth: autoFillWidth, customRender: customRender} = options;
664
692
  pixelRatio && pixelRatio !== this.internalProps.pixelRatio && (this.internalProps.pixelRatio = pixelRatio),
665
693
  padding && ("number" == typeof padding ? (this.padding.top = padding, this.padding.left = padding,
666
694
  this.padding.bottom = padding, this.padding.right = padding) : (padding.top && (this.padding.top = padding.top),
667
695
  padding.bottom && (this.padding.bottom = padding.bottom), padding.left && (this.padding.left = padding.left),
668
696
  padding.right && (this.padding.right = padding.right))), this.showFrozenIcon = "boolean" != typeof showFrozenIcon || showFrozenIcon,
669
697
  "number" == typeof allowFrozenColCount && allowFrozenColCount <= 0 && (this.showFrozenIcon = !1),
670
- this.widthMode = null != widthMode ? widthMode : "standard";
698
+ this.widthMode = null != widthMode ? widthMode : "standard", this.heightMode = null != heightMode ? heightMode : "standard",
699
+ this.autoFillWidth = null != autoFillWidth && autoFillWidth, this.customRender = customRender;
671
700
  const internalProps = this.internalProps;
672
701
  "node" !== Env.mode && updateRootElementPadding(internalProps.element, this.padding),
673
702
  internalProps.frozenColCount = frozenColCount, internalProps.defaultRowHeight = defaultRowHeight,
@@ -675,18 +704,28 @@ export class BaseTable extends EventTarget {
675
704
  internalProps.defaultColWidth = defaultColWidth, internalProps.defaultHeaderColWidth = null != defaultHeaderColWidth ? defaultHeaderColWidth : defaultColWidth,
676
705
  internalProps.keyboardOptions = keyboardOptions, internalProps.columnResizeMode = columnResizeMode,
677
706
  internalProps.dragHeaderMode = dragHeaderMode, internalProps.cellTextOverflows = {},
678
- internalProps.theme = themes.of(null !== (_a = options.theme) && void 0 !== _a ? _a : themes.DEFAULT),
679
- internalProps.autoRowHeight = null !== (_b = options.autoRowHeight) && void 0 !== _b && _b,
680
- internalProps.autoWrapText = options.autoWrapText, internalProps.allowFrozenColCount = null !== (_c = options.allowFrozenColCount) && void 0 !== _c ? _c : internalProps.colCount,
681
- internalProps.limitMaxAutoWidth = null !== (_d = options.limitMaxAutoWidth) && void 0 !== _d ? _d : 450,
682
- internalProps.tooltip = Object.assign({
707
+ internalProps._rowHeightsMap = new NumberMap, internalProps._rowRangeHeightsMap = new Map,
708
+ internalProps._colRangeWidthsMap = new Map, this.colWidthsMap = new NumberMap, this.colContentWidthsMap = new NumberMap,
709
+ this.colWidthsLimit = {}, internalProps.theme = themes.of(null !== (_a = options.theme) && void 0 !== _a ? _a : themes.DEFAULT),
710
+ internalProps.autoWrapText = options.autoWrapText, internalProps.allowFrozenColCount = null !== (_b = options.allowFrozenColCount) && void 0 !== _b ? _b : internalProps.colCount,
711
+ internalProps.limitMaxAutoWidth = null !== (_c = options.limitMaxAutoWidth) && void 0 !== _c ? _c : 450,
712
+ this.dataSet = new DataSet, this.scenegraph.clearCells(), this.stateManeger.initState(),
713
+ options.legends && (internalProps.legends = new TableLegend(options.legends, this),
714
+ this.scenegraph.tableGroup.setAttributes({
715
+ x: this.tableX,
716
+ y: this.tableY
717
+ })), options.title && (internalProps.title = new Title(options.title, this), this.scenegraph.tableGroup.setAttributes({
718
+ x: this.tableX,
719
+ y: this.tableY
720
+ })), internalProps.tooltip = Object.assign({
683
721
  renderMode: "html",
684
722
  isShowOverflowTextTooltip: !1,
685
723
  confine: !0
686
724
  }, options.tooltip), "html" !== internalProps.tooltip.renderMode || internalProps.tooltipHandler || (internalProps.tooltipHandler = new TooltipHandler(this, internalProps.tooltip.confine)),
687
725
  internalProps.menu = Object.assign({
688
726
  renderMode: "html"
689
- }, options.menu), "html" !== internalProps.menu.renderMode || internalProps.menuHandler || (internalProps.menuHandler = new MenuHandler(this));
727
+ }, options.menu), "html" !== internalProps.menu.renderMode || internalProps.menuHandler || (internalProps.menuHandler = new MenuHandler(this)),
728
+ this.headerStyleCache = new Map, this.bodyStyleCache = new Map;
690
729
  }
691
730
  getFrozenRowsHeight() {
692
731
  return this.getRowsHeight(0, this.frozenRowCount - 1);
@@ -694,6 +733,18 @@ export class BaseTable extends EventTarget {
694
733
  getFrozenColsWidth() {
695
734
  return this.getColsWidth(0, this.frozenColCount - 1);
696
735
  }
736
+ getBottomFrozenRowsHeight() {
737
+ if (this.bottomFrozenRowCount > 0) {
738
+ return this.getRowsHeight(this.rowCount - this.bottomFrozenRowCount, this.rowCount - 1);
739
+ }
740
+ return 0;
741
+ }
742
+ getRightFrozenColsWidth() {
743
+ if (this.rightFrozenColCount > 0) {
744
+ return this.getColsWidth(this.colCount - this.rightFrozenColCount, this.colCount - 1);
745
+ }
746
+ return 0;
747
+ }
697
748
  getDrawRange() {
698
749
  const width = Math.min(this.tableNoFrameWidth, this.getAllColsWidth()), height = Math.min(this.tableNoFrameHeight, this.getAllRowsHeight());
699
750
  return new Rect(this.tableX, this.tableY, width, height);
@@ -971,7 +1022,7 @@ export class BaseTable extends EventTarget {
971
1022
  let order, field, fieldKey;
972
1023
  if (Array.isArray(this.sortState) ? 0 !== this.sortState.length && ({order: order, field: field, fieldKey: fieldKey} = null === (_a = this.sortState) || void 0 === _a ? void 0 : _a[0]) : ({order: order, field: field, fieldKey: fieldKey} = this.sortState),
973
1024
  order && field && "normal" !== order) {
974
- const sortFunc = this.getSortFuncFromHeaderOption(void 0, field, fieldKey);
1025
+ const sortFunc = this._getSortFuncFromHeaderOption(void 0, field, fieldKey);
975
1026
  let hd;
976
1027
  hd = fieldKey ? this.internalProps.layoutMap.headerObjects.find((col => col && col.fieldKey === fieldKey)) : this.internalProps.layoutMap.headerObjects.find((col => col && col.field === field)),
977
1028
  (null === (_b = null == hd ? void 0 : hd.define) || void 0 === _b ? void 0 : _b.sort) && this.dataSource.sort(hd.field, order, null != sortFunc ? sortFunc : defaultOrderFn);
@@ -1006,6 +1057,14 @@ export class BaseTable extends EventTarget {
1006
1057
  var _a;
1007
1058
  return null === (_a = this.internalProps.layoutMap) || void 0 === _a ? void 0 : _a.isCornerHeader(col, row);
1008
1059
  }
1060
+ isRightFrozenColumn(col, row) {
1061
+ var _a;
1062
+ return null === (_a = this.internalProps.layoutMap) || void 0 === _a ? void 0 : _a.isRightFrozenColumn(col, row);
1063
+ }
1064
+ isBottomFrozenRow(col, row) {
1065
+ var _a;
1066
+ return null === (_a = this.internalProps.layoutMap) || void 0 === _a ? void 0 : _a.isBottomFrozenRow(col, row);
1067
+ }
1009
1068
  getCellInfo(col, row) {
1010
1069
  const colDef = this.isHeader(col, row) ? this.getHeaderDefine(col, row) : this.getBodyColumnDefine(col, row);
1011
1070
  return {
@@ -1037,7 +1096,9 @@ export class BaseTable extends EventTarget {
1037
1096
  if (layoutMap.isHeader(col, row)) {
1038
1097
  let cacheStyle = this.headerStyleCache.get(`${col}-${row}`);
1039
1098
  if (cacheStyle) return cacheStyle;
1040
- const hd = layoutMap.getHeader(col, row), styleClass = this.internalProps.headerHelper.getStyleClass(hd.headerType), {style: style} = hd;
1099
+ const hd = layoutMap.getHeader(col, row);
1100
+ if (!hd || hd.isEmpty) return EMPTY_STYLE;
1101
+ const styleClass = this.internalProps.headerHelper.getStyleClass(hd.headerType), {style: style} = hd;
1041
1102
  return cacheStyle = headerStyleContents.of(style, layoutMap.isColumnHeader(col, row) ? this.theme.headerStyle : layoutMap.isRowHeader(col, row) ? this.theme.rowHeaderStyle : this.theme.cornerHeaderStyle, {
1042
1103
  col: col,
1043
1104
  row: row,