@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
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":["import type { CellAddress, CellRange, CellType, FieldDef } from './table-engine';\nimport type { DropDownMenuEventArgs, MenuListItem, PivotInfo } from './menu';\n\nimport type { AnyFunction, IDimensionInfo, RectProps, SortOrder } from './common';\nimport type { IconFuncTypeEnum, CellInfo, HierarchyState } from '.';\nimport type { Icon } from '../scenegraph/graphic/icon';\n\nexport type KeyboardEventListener = (e: KeyboardEvent) => void;\nexport type AnyListener = AnyFunction;\nexport type EventListenerId = number;\n\nexport type SelectedCellEvent = CellAddress & {\n ranges: CellRange[];\n};\n\n// export type MouseCellEvent = CellAddress & {\n// event: MouseEvent | PointerEvent | TouchEvent;\n// };\n\nexport type MenuEvent = CellAddress & {\n dropDownMenu: MenuListItem[];\n pivotInfo: PivotInfo;\n};\n\nexport type TouchCellEvent = CellAddress & {\n event: TouchEvent;\n};\n\nexport type KeydownEvent = {\n keyCode: number;\n code: string;\n event: KeyboardEvent;\n cells?: CellInfo[][];\n stopCellMoving?: () => void;\n scaleRatio?: number;\n};\n\nexport type MousePointerCellEvent = CellAddress &\n CellInfo & {\n related?: CellAddress;\n scaleRatio?: number;\n targetIcon?: { name: string; position: RectProps; funcType: string };\n event?: MouseEvent | PointerEvent | TouchEvent;\n };\n// 多单元格的事件传出参数 需要将当前鼠标处的单元格的信息FocusedCellInfo也带着\nexport type MousePointerMultiCellEvent = MousePointerCellEvent & {\n cells: CellInfo[][];\n // menuKey?: string;\n};\n\nexport type MousePointerSparklineEvent = MousePointerCellEvent & {\n sparkline: {\n pointData: any;\n };\n};\n\nexport interface TableEventHandlersEventArgumentMap {\n selected_cell: [SelectedCellEvent];\n click_cell: [MousePointerCellEvent];\n dblclick_cell: [MousePointerCellEvent];\n mouseenter_table: [MousePointerCellEvent];\n mouseleave_table: [MousePointerCellEvent];\n mouseenter_cell: [MousePointerCellEvent];\n mouseleave_cell: [MousePointerCellEvent];\n mousemove_cell: [MousePointerCellEvent];\n mousedown_cell: [MousePointerCellEvent];\n mouseup_cell: [MousePointerCellEvent];\n contextmenu_cell: [MousePointerMultiCellEvent];\n keydown: [KeydownEvent];\n scroll: [\n {\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n }\n ];\n resize_column: [{ col: number; colWidth: number }];\n resize_column_end: [{ col: number; columns: number[] }];\n change_header_position: [{ source: CellAddress; target: CellAddress }];\n sort_click: [\n {\n field: FieldDef;\n order: SortOrder;\n }\n ];\n freeze_click: [{ col: number; row: number; fields: FieldDef[]; colCount: number }];\n dropdownmenu_click: [DropDownMenuEventArgs];\n copydata: [CellRange[]];\n\n mouseover_chart_symbol: [MousePointerSparklineEvent];\n\n drag_select_end: [MousePointerMultiCellEvent];\n\n drillmenu_click: [DrillMenuEventInfo];\n\n dropdown_icon_click: [CellAddress];\n dropdown_menu_clear: [CellAddress];\n\n show_menu: [\n {\n x: number;\n y: number;\n col: number;\n row: number;\n type: 'dropDown' | 'contextmenu' | 'custom';\n }\n ];\n hide_menu: [];\n icon_click: [\n {\n name: string;\n col: number;\n row: number;\n x: number;\n y: number;\n funcType?: IconFuncTypeEnum | string;\n icon: Icon;\n }\n ];\n\n pivot_sort_click: [\n {\n col: number;\n row: number;\n order: SortOrder;\n dimensionInfo: IDimensionInfo[];\n cellType: CellType;\n }\n ];\n tree_hierarchy_state_change: [\n {\n col: number;\n row: number;\n hierarchyState: HierarchyState;\n dimensionInfo?: IDimensionInfo[];\n /**整条数据-原始数据 */\n originData?: any;\n }\n ];\n}\nexport interface DrillMenuEventInfo {\n dimensionKey: string | number;\n dimensionTitle: string;\n drillDown: boolean;\n drillUp: boolean;\n col: number;\n row: number;\n}\nexport interface TableEventHandlersReturnMap {\n selected_cell: void;\n click_cell: void;\n dblclick_cell: void;\n mouseenter_table: void;\n mouseleave_table: void;\n mouseenter_cell: void;\n mouseleave_cell: void;\n mouseover_cell: void;\n mouseout_cell: void;\n mousemove_cell: void;\n mousedown_cell: boolean;\n mouseup_cell: void;\n contextmenu_cell: void;\n keydown: void;\n scroll: void;\n focus_table: void;\n blur_table: void;\n resize_column: void;\n resize_column_end: void;\n change_header_position: void;\n sort_click: void;\n freeze_click: void;\n dropdownmenu_click: void;\n copydata: string;\n mouseover_chart_symbol: void;\n drag_select_end: void;\n drillmenu_click: void;\n\n dropdown_icon_click: void;\n dropdown_menu_clear: void;\n\n show_menu: void;\n hide_menu: void;\n icon_click: void;\n\n pivot_sort_click: void;\n\n tree_hierarchy_state_change: void;\n}\n"]}
1
+ {"version":3,"sources":["ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":["import type { CellAddress, CellRange, CellType, FieldDef } from './table-engine';\nimport type { DropDownMenuEventArgs, MenuListItem, PivotInfo } from './menu';\n\nimport type { AnyFunction, IDimensionInfo, RectProps, SortOrder } from './common';\nimport type { IconFuncTypeEnum, CellInfo, HierarchyState } from '.';\nimport type { Icon } from '../scenegraph/graphic/icon';\n\nexport type KeyboardEventListener = (e: KeyboardEvent) => void;\nexport type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (\n args: TableEventHandlersEventArgumentMap[TYPE]\n) => TableEventHandlersReturnMap[TYPE]; //AnyFunction;\nexport type EventListenerId = number;\n\nexport type SelectedCellEvent = CellAddress & {\n ranges: CellRange[];\n};\n\n// export type MouseCellEvent = CellAddress & {\n// event: MouseEvent | PointerEvent | TouchEvent;\n// };\n\nexport type MenuEvent = CellAddress & {\n dropDownMenu: MenuListItem[];\n pivotInfo: PivotInfo;\n};\n\nexport type TouchCellEvent = CellAddress & {\n event: TouchEvent;\n};\n\nexport type KeydownEvent = {\n keyCode: number;\n code: string;\n event: KeyboardEvent;\n cells?: CellInfo[][];\n stopCellMoving?: () => void;\n scaleRatio?: number;\n};\n\nexport type MousePointerCellEvent = CellAddress &\n CellInfo & {\n related?: CellAddress;\n scaleRatio?: number;\n targetIcon?: { name: string; position: RectProps; funcType: string };\n event?: MouseEvent | PointerEvent | TouchEvent;\n };\n// 多单元格的事件传出参数 需要将当前鼠标处的单元格的信息FocusedCellInfo也带着\nexport type MousePointerMultiCellEvent = MousePointerCellEvent & {\n cells: CellInfo[][];\n // menuKey?: string;\n};\n\nexport type MousePointerSparklineEvent = MousePointerCellEvent & {\n sparkline: {\n pointData: any;\n };\n};\n\nexport interface TableEventHandlersEventArgumentMap {\n selected_cell: SelectedCellEvent;\n click_cell: MousePointerCellEvent;\n dblclick_cell: MousePointerCellEvent;\n mouseenter_table: MousePointerCellEvent;\n mouseleave_table: MousePointerCellEvent;\n mouseenter_cell: MousePointerCellEvent;\n mouseleave_cell: MousePointerCellEvent;\n mousemove_cell: MousePointerCellEvent;\n mousedown_cell: MousePointerCellEvent;\n mouseup_cell: MousePointerCellEvent;\n contextmenu_cell: MousePointerMultiCellEvent;\n keydown: KeydownEvent;\n scroll: {\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n };\n resize_column: { col: number; colWidth: number };\n resize_column_end: { col: number; columns: number[] };\n change_header_position: { source: CellAddress; target: CellAddress };\n sort_click: {\n field: FieldDef;\n order: SortOrder;\n };\n freeze_click: { col: number; row: number; fields: FieldDef[]; colCount: number };\n dropdownmenu_click: DropDownMenuEventArgs;\n copydata: CellRange[];\n\n mouseover_chart_symbol: MousePointerSparklineEvent;\n\n drag_select_end: MousePointerMultiCellEvent;\n\n drillmenu_click: DrillMenuEventInfo;\n\n dropdown_icon_click: CellAddress;\n dropdown_menu_clear: CellAddress;\n\n show_menu: {\n x: number;\n y: number;\n col: number;\n row: number;\n type: 'dropDown' | 'contextmenu' | 'custom';\n };\n hide_menu: [];\n icon_click: {\n name: string;\n col: number;\n row: number;\n x: number;\n y: number;\n funcType?: IconFuncTypeEnum | string;\n icon: Icon;\n };\n\n pivot_sort_click: {\n col: number;\n row: number;\n order: SortOrder;\n dimensionInfo: IDimensionInfo[];\n cellType: CellType;\n };\n tree_hierarchy_state_change: {\n col: number;\n row: number;\n hierarchyState: HierarchyState;\n dimensionInfo?: IDimensionInfo[];\n /**整条数据-原始数据 */\n originData?: any;\n };\n vchart_event_type: {\n eventName: string;\n col: number;\n row: number;\n chartEventArguments: any;\n };\n //datasource部分的事件\n change_order: [];\n source_length_update: number;\n\n legend_item_click: { model: any; value: any; event: PointerEvent };\n legend_item_hover: { model: any; value: any; event: PointerEvent };\n legend_item_unHover: { model: any; value: any; event: PointerEvent };\n}\nexport interface DrillMenuEventInfo {\n dimensionKey: string | number;\n dimensionTitle: string;\n drillDown: boolean;\n drillUp: boolean;\n col: number;\n row: number;\n}\nexport interface TableEventHandlersReturnMap {\n selected_cell: void;\n click_cell: void;\n dblclick_cell: void;\n mouseenter_table: void;\n mouseleave_table: void;\n mouseenter_cell: void;\n mouseleave_cell: void;\n mouseover_cell: void;\n mouseout_cell: void;\n mousemove_cell: void;\n mousedown_cell: boolean;\n mouseup_cell: void;\n contextmenu_cell: void;\n keydown: void;\n scroll: void;\n focus_table: void;\n blur_table: void;\n resize_column: void;\n resize_column_end: void;\n change_header_position: void;\n sort_click: void;\n freeze_click: void;\n dropdownmenu_click: void;\n copydata: string;\n mouseover_chart_symbol: void;\n drag_select_end: void;\n drillmenu_click: void;\n\n dropdown_icon_click: void;\n dropdown_menu_clear: void;\n\n show_menu: void;\n hide_menu: void;\n icon_click: void;\n\n pivot_sort_click: void;\n\n tree_hierarchy_state_change: void;\n\n vchart_event_type: void;\n //datasource部分的事件\n change_order: void;\n source_length_update: void;\n legend_item_click: void;\n legend_item_hover: void;\n legend_item_unHover: void;\n}\n"]}
@@ -21,6 +21,7 @@ export interface HeaderData extends WidthData {
21
21
  columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';
22
22
  showSort?: boolean;
23
23
  description?: string | ((args: CellInfo) => string);
24
+ isEmpty?: boolean;
24
25
  }
25
26
  export interface WidthData {
26
27
  width?: number | string;
@@ -37,6 +38,7 @@ export interface ColumnData extends WidthData {
37
38
  columnType: 'text' | 'link' | 'image' | 'video' | 'sparkline' | 'progressbar' | 'chart';
38
39
  chartType?: string;
39
40
  chartSpec?: any | ((arg0: CellInfo) => any);
41
+ chartInstance?: any;
40
42
  sparklineSpec?: SparklineSpec | ((arg0: CellInfo) => SparklineSpec);
41
43
  style: ColumnStyleOption | null | undefined;
42
44
  define: ColumnDefine;
@@ -52,6 +54,7 @@ export interface IndicatorData extends WidthData {
52
54
  columnType: 'text' | 'link' | 'image' | 'video' | 'sparkline' | 'progressbar' | 'chart';
53
55
  chartType?: string;
54
56
  chartSpec?: any | ((arg0: CustomRenderFunctionArg) => any);
57
+ chartInstance?: any;
55
58
  style?: ColumnStyleOption | null | undefined;
56
59
  define: ColumnDefine;
57
60
  icon?: string | ColumnIconOption | (string | ColumnIconOption)[] | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);
@@ -88,5 +91,6 @@ interface LayoutMapAPI {
88
91
  getHeaderCellAddressByField: (field: string) => CellAddress | undefined;
89
92
  getRecordIndexByRow: (col: number, row: number) => number;
90
93
  getRecordStartRowByRecordIndex: (index: number) => number;
94
+ getColumnWidthDefined: (col: number) => WidthData;
91
95
  }
92
96
  export type { LayoutMapAPI };
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/list-table/layout-map/api.ts"],"names":[],"mappings":"","file":"api.js","sourcesContent":["import type {\n CellAddress,\n CellRange,\n ColumnIconOption,\n ColumnStyle,\n ColumnStyleOption,\n // ColumnTypeOption,\n FieldDef,\n FieldFormat,\n HeaderStyleOption,\n LayoutObjectId,\n MenuListItem,\n IPivotTableCellHeaderPaths,\n CellInfo,\n // ICustomRenderFuc,\n // ICustomRenderObj,\n PivotInfo,\n FieldKeyDef,\n CustomRenderFunctionArg,\n SparklineSpec,\n HierarchyState\n} from '../../';\n\nimport type { HeaderDefine, ColumnDefine, ColumnBodyDefine } from '../define';\n\n// todo: 修改引用这些类型的路径\nexport type {\n HeaderDefine,\n ColumnDefine,\n ColumnBodyDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine\n} from '../define';\n\n/**\n * layout中组织表头的信息类 和HeaderDefine对应\n */\nexport interface HeaderData extends WidthData {\n id: LayoutObjectId;\n caption?: string | (() => string);\n /** @deprecated\n * 已废除该配置 标题中显示图标 现在请使用headerIcon进行配置\n */\n captionIcon?: ColumnIconOption;\n headerIcon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n icons?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n\n field: FieldDef;\n fieldKey?: FieldKeyDef;\n fieldFormat?: FieldFormat;\n style?: HeaderStyleOption | ColumnStyle | null | undefined;\n headerType: 'text' | 'link' | 'image' | 'video'; // headerType.BaseHeader;\n define: ColumnDefine;\n // sortIconPosition?: RectProps;\n // freezeIconPosition?: RectProps;\n /**存储图标的位置 坐标及宽高 是包括了boxWidth boxWidth 共getHitIcon方法使用 计算是否命中图标*/\n // iconPositionList?: { [key in IconFuncTypeEnum]?: RectProps & { icon: ColumnIconOption } };\n dropDownMenu?: MenuListItem[];\n pivotInfo?: PivotInfo;\n /**\n * 维度层级level 从0开始:第0层 第1层\n */\n hierarchyLevel?: number;\n /**\n * 维度总层级数\n */\n dimensionTotalLevel?: number;\n /**\n * 层级展开or折叠状态\n */\n hierarchyState?: HierarchyState;\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n\n showSort?: boolean;\n\n /**\n * 表头描述 鼠标hover会提示该信息\n */\n description?: string | ((args: CellInfo) => string);\n}\n\nexport interface WidthData {\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n}\n/**\n * layout中组织body列的信息类 和ColumnDefine对应\n */\nexport interface ColumnData extends WidthData {\n id: LayoutObjectId;\n field: FieldDef;\n fieldKey?: FieldKeyDef;\n fieldFormat?: FieldFormat;\n // icon?: ColumnIconOption | ColumnIconOption[];\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n\n columnType: 'text' | 'link' | 'image' | 'video' | 'sparkline' | 'progressbar' | 'chart'; //BaseColumn<T, any>;\n /** 如果是绘制图表库组件的图表类型 需要将注入的组件名称 写到chartType */\n chartType?: string;\n /** 如果是绘制图表库组件的图表类型 统一图表配置chartSpec */\n chartSpec?: any | ((arg0: CellInfo) => any);\n sparklineSpec?: SparklineSpec | ((arg0: CellInfo) => SparklineSpec);\n style: ColumnStyleOption | null | undefined;\n define: ColumnDefine;\n templateLink?: string;\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n /**存储图标的位置 坐标及宽高 是包括了boxWidth boxWidth 共getHitIcon方法使用 计算是否命中图标*/\n // iconPositionList?: { [key in IconFuncTypeEnum]?: RectProps & { icon: ColumnIconOption } };\n /**\n * 是否禁用调整列宽,如果是转置表格或者是透视表的指标是行方向指定 那该配置不生效\n */\n disableColumnResize?: boolean;\n}\n\nexport interface IndicatorData extends WidthData {\n id: LayoutObjectId;\n field: string | number;\n /**\n * 唯一标识一种指标\n */\n indicatorKey: string;\n // fieldKey: FieldKeyDef;\n fieldFormat?: FieldFormat;\n columnType: 'text' | 'link' | 'image' | 'video' | 'sparkline' | 'progressbar' | 'chart'; //BaseColumn<T, any>;\n chartType?: string;\n chartSpec?: any | ((arg0: CustomRenderFunctionArg) => any);\n style?: ColumnStyleOption | null | undefined;\n define: ColumnDefine;\n // headerIcon?:\n // | (string | ColumnIconOption)[]\n // | ((args: CellInfo) => (string | ColumnIconOption)[]);\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n sparklineSpec?: SparklineSpec | ((arg0: CustomRenderFunctionArg) => SparklineSpec);\n /**\n * 是否禁用调整列宽,如果是转置表格或者是透视表的指标是行方向指定 那该配置不生效\n */\n disableColumnResize?: boolean;\n}\n\n// Simple header\n\n// export interface GroupHeaderDefine extends HeaderDefine {\n// columns: HeadersDefine;\n// hideColumnsSubHeader?: boolean;\n// dropDownMenu?: MenuListItem[];\n// }\n// type Either<X, Y> =\n// | ({\n// [KX in keyof X]: X[KX];\n// } & {\n// [KY in Exclude<keyof Y, keyof X>]?: never;\n// })\n// | ({\n// [KY in keyof Y]: Y[KY];\n// } & {\n// [KX in Exclude<keyof X, keyof Y>]?: never;\n// });\n// export type HeaderColumnDefine = Either<GroupHeaderDefine, ColumnDefine>;\n// export type HeadersDefine = HeaderColumnDefine[];\n\n// Advanced layout\n\n// export interface HeaderCellDefine extends HeaderDefine {\n// colSpan?: number;\n// rowSpan?: number;\n// }\nexport type HeaderCellDefine = HeaderDefine & {\n colSpan?: number;\n rowSpan?: number;\n};\n\n// export interface CellDefine extends ColumnDefine {\n// colSpan?: number;\n// rowSpan?: number;\n// }\n\nexport type CellDefine = ColumnBodyDefine & {\n colSpan?: number;\n rowSpan?: number;\n};\n\nexport type ArrayLayoutDefine = CellDefine[][];\n/** @internal */\ninterface LayoutMapAPI {\n readonly headerLevelCount: number;\n readonly rowHeaderLevelCount: number;\n readonly columnHeaderLevelCount: number;\n readonly bodyRowCount: number;\n readonly colCount: number | undefined;\n readonly rowCount: number | undefined;\n readonly columnWidths: WidthData[];\n readonly headerObjects: HeaderData[];\n readonly columnObjects: ColumnData[] | IndicatorData[];\n // transpose: boolean;\n // showHeader: boolean;\n isHeader: (col: number, row: number) => boolean;\n // isHeaderNode(col: number, row: number): boolean; //是否为叶子表头\n /**获取单元格header对象 包括field style type 等 */\n getHeader: (col: number, row: number) => HeaderData;\n /**获取对应header的field */\n getHeaderField: (col: number, row: number) => FieldDef;\n // getHeaderFieldKey(col: number, row: number): FieldKeyDef;\n /**获取单元格column对象 包括field style type 等 */\n getBody: (col: number, row: number) => ColumnData | IndicatorData;\n /**获取单元格标识key */\n getCellId: (col: number, row: number) => LayoutObjectId;\n getCellRange: (col: number, row: number) => CellRange;\n // getCellRangeTranspose(col: number, row: number): CellRange;\n getBodyLayoutRangeById: (id: LayoutObjectId) => CellRange;\n getHeaderCellAdress: (id: number) => CellAddress | undefined;\n getHeaderCellAddressByField: (field: string) => CellAddress | undefined;\n getRecordIndexByRow: (col: number, row: number) => number;\n getRecordStartRowByRecordIndex: (index: number) => number;\n}\n\nexport type { LayoutMapAPI };\n"]}
1
+ {"version":3,"sources":["ts-types/list-table/layout-map/api.ts"],"names":[],"mappings":"","file":"api.js","sourcesContent":["import type {\n CellAddress,\n CellRange,\n ColumnIconOption,\n ColumnStyle,\n ColumnStyleOption,\n // ColumnTypeOption,\n FieldDef,\n FieldFormat,\n HeaderStyleOption,\n LayoutObjectId,\n MenuListItem,\n IPivotTableCellHeaderPaths,\n CellInfo,\n // ICustomRenderFuc,\n // ICustomRenderObj,\n PivotInfo,\n FieldKeyDef,\n CustomRenderFunctionArg,\n SparklineSpec,\n HierarchyState\n} from '../../';\n\nimport type { HeaderDefine, ColumnDefine, ColumnBodyDefine } from '../define';\n\n// todo: 修改引用这些类型的路径\nexport type {\n HeaderDefine,\n ColumnDefine,\n ColumnBodyDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine\n} from '../define';\n\n/**\n * layout中组织表头的信息类 和HeaderDefine对应\n */\nexport interface HeaderData extends WidthData {\n id: LayoutObjectId;\n caption?: string | (() => string);\n /** @deprecated\n * 已废除该配置 标题中显示图标 现在请使用headerIcon进行配置\n */\n captionIcon?: ColumnIconOption;\n headerIcon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n icons?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n\n field: FieldDef;\n fieldKey?: FieldKeyDef;\n fieldFormat?: FieldFormat;\n style?: HeaderStyleOption | ColumnStyle | null | undefined;\n headerType: 'text' | 'link' | 'image' | 'video'; // headerType.BaseHeader;\n define: ColumnDefine;\n // sortIconPosition?: RectProps;\n // freezeIconPosition?: RectProps;\n /**存储图标的位置 坐标及宽高 是包括了boxWidth boxWidth 共getHitIcon方法使用 计算是否命中图标*/\n // iconPositionList?: { [key in IconFuncTypeEnum]?: RectProps & { icon: ColumnIconOption } };\n dropDownMenu?: MenuListItem[];\n pivotInfo?: PivotInfo;\n /**\n * 维度层级level 从0开始:第0层 第1层\n */\n hierarchyLevel?: number;\n /**\n * 维度总层级数\n */\n dimensionTotalLevel?: number;\n /**\n * 层级展开or折叠状态\n */\n hierarchyState?: HierarchyState;\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n\n showSort?: boolean;\n\n /**\n * 表头描述 鼠标hover会提示该信息\n */\n description?: string | ((args: CellInfo) => string);\n\n // header内容为空\n isEmpty?: boolean;\n}\n\nexport interface WidthData {\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n}\n/**\n * layout中组织body列的信息类 和ColumnDefine对应\n */\nexport interface ColumnData extends WidthData {\n id: LayoutObjectId;\n field: FieldDef;\n fieldKey?: FieldKeyDef;\n fieldFormat?: FieldFormat;\n // icon?: ColumnIconOption | ColumnIconOption[];\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n\n columnType: 'text' | 'link' | 'image' | 'video' | 'sparkline' | 'progressbar' | 'chart'; //BaseColumn<T, any>;\n /** 如果是绘制图表库组件的图表类型 需要将注入的组件名称 写到chartType */\n chartType?: string;\n /** 如果是绘制图表库组件的图表类型 统一图表配置chartSpec */\n chartSpec?: any | ((arg0: CellInfo) => any);\n chartInstance?: any;\n sparklineSpec?: SparklineSpec | ((arg0: CellInfo) => SparklineSpec);\n style: ColumnStyleOption | null | undefined;\n define: ColumnDefine;\n templateLink?: string;\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n /**存储图标的位置 坐标及宽高 是包括了boxWidth boxWidth 共getHitIcon方法使用 计算是否命中图标*/\n // iconPositionList?: { [key in IconFuncTypeEnum]?: RectProps & { icon: ColumnIconOption } };\n /**\n * 是否禁用调整列宽,如果是转置表格或者是透视表的指标是行方向指定 那该配置不生效\n */\n disableColumnResize?: boolean;\n}\n\nexport interface IndicatorData extends WidthData {\n id: LayoutObjectId;\n field: string | number;\n /**\n * 唯一标识一种指标\n */\n indicatorKey: string;\n // fieldKey: FieldKeyDef;\n fieldFormat?: FieldFormat;\n columnType: 'text' | 'link' | 'image' | 'video' | 'sparkline' | 'progressbar' | 'chart'; //BaseColumn<T, any>;\n chartType?: string;\n chartSpec?: any | ((arg0: CustomRenderFunctionArg) => any);\n chartInstance?: any;\n style?: ColumnStyleOption | null | undefined;\n define: ColumnDefine;\n // headerIcon?:\n // | (string | ColumnIconOption)[]\n // | ((args: CellInfo) => (string | ColumnIconOption)[]);\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n sparklineSpec?: SparklineSpec | ((arg0: CustomRenderFunctionArg) => SparklineSpec);\n /**\n * 是否禁用调整列宽,如果是转置表格或者是透视表的指标是行方向指定 那该配置不生效\n */\n disableColumnResize?: boolean;\n}\n\n// Simple header\n\n// export interface GroupHeaderDefine extends HeaderDefine {\n// columns: HeadersDefine;\n// hideColumnsSubHeader?: boolean;\n// dropDownMenu?: MenuListItem[];\n// }\n// type Either<X, Y> =\n// | ({\n// [KX in keyof X]: X[KX];\n// } & {\n// [KY in Exclude<keyof Y, keyof X>]?: never;\n// })\n// | ({\n// [KY in keyof Y]: Y[KY];\n// } & {\n// [KX in Exclude<keyof X, keyof Y>]?: never;\n// });\n// export type HeaderColumnDefine = Either<GroupHeaderDefine, ColumnDefine>;\n// export type HeadersDefine = HeaderColumnDefine[];\n\n// Advanced layout\n\n// export interface HeaderCellDefine extends HeaderDefine {\n// colSpan?: number;\n// rowSpan?: number;\n// }\nexport type HeaderCellDefine = HeaderDefine & {\n colSpan?: number;\n rowSpan?: number;\n};\n\n// export interface CellDefine extends ColumnDefine {\n// colSpan?: number;\n// rowSpan?: number;\n// }\n\nexport type CellDefine = ColumnBodyDefine & {\n colSpan?: number;\n rowSpan?: number;\n};\n\nexport type ArrayLayoutDefine = CellDefine[][];\n/** @internal */\ninterface LayoutMapAPI {\n readonly headerLevelCount: number;\n readonly rowHeaderLevelCount: number;\n readonly columnHeaderLevelCount: number;\n readonly bodyRowCount: number;\n readonly colCount: number | undefined;\n readonly rowCount: number | undefined;\n readonly columnWidths: WidthData[];\n readonly headerObjects: HeaderData[];\n readonly columnObjects: ColumnData[] | IndicatorData[];\n // transpose: boolean;\n // showHeader: boolean;\n isHeader: (col: number, row: number) => boolean;\n // isHeaderNode(col: number, row: number): boolean; //是否为叶子表头\n /**获取单元格header对象 包括field style type 等 */\n getHeader: (col: number, row: number) => HeaderData;\n /**获取对应header的field */\n getHeaderField: (col: number, row: number) => FieldDef;\n // getHeaderFieldKey(col: number, row: number): FieldKeyDef;\n /**获取单元格column对象 包括field style type 等 */\n getBody: (col: number, row: number) => ColumnData | IndicatorData;\n /**获取单元格标识key */\n getCellId: (col: number, row: number) => LayoutObjectId;\n getCellRange: (col: number, row: number) => CellRange;\n // getCellRangeTranspose(col: number, row: number): CellRange;\n getBodyLayoutRangeById: (id: LayoutObjectId) => CellRange;\n getHeaderCellAdress: (id: number) => CellAddress | undefined;\n getHeaderCellAddressByField: (field: string) => CellAddress | undefined;\n getRecordIndexByRow: (col: number, row: number) => number;\n getRecordStartRowByRecordIndex: (index: number) => number;\n /** 从定义中获取一列配置项width的定义值 */\n getColumnWidthDefined: (col: number) => WidthData;\n}\n\nexport type { LayoutMapAPI };\n"]}
@@ -6,6 +6,7 @@ export interface TotalsStatus {
6
6
  isColSubTotal: boolean;
7
7
  }
8
8
  export declare enum AggregationType {
9
+ RECORD = "RECORD",
9
10
  SUM = "SUM",
10
11
  MIN = "MIN",
11
12
  MAX = "MAX",
@@ -55,13 +56,13 @@ export interface FilterRule {
55
56
  filterFunc?: (row: Record<string, any>) => boolean;
56
57
  }
57
58
  export type FilterRules = FilterRule[];
58
- export interface AggregationRule {
59
+ export interface AggregationRule<T extends AggregationType> {
59
60
  indicatorKey: string;
60
- field: string;
61
- aggregationType: AggregationType;
61
+ field: T extends AggregationType.RECORD ? string[] | string : string;
62
+ aggregationType: T;
62
63
  formatFun?: (num: number) => string;
63
64
  }
64
- export type AggregationRules = AggregationRule[];
65
+ export type AggregationRules = AggregationRule<AggregationType>[];
65
66
  export interface MappingRule {
66
67
  label?: LabelMapping;
67
68
  symbol?: SymbolMapping;
@@ -93,4 +94,16 @@ export interface IDataConfig {
93
94
  totals?: Totals;
94
95
  mappingRules?: MappingRules;
95
96
  derivedFieldRules?: DerivedFieldRules;
96
- }
97
+ collectValuesBy?: Record<string, CollectValueBy>;
98
+ isPivotChart?: boolean;
99
+ }
100
+ export type CollectValueBy = {
101
+ by: string[];
102
+ range?: boolean;
103
+ sumBy?: string[];
104
+ type?: 'xField' | 'yField' | undefined;
105
+ };
106
+ export type CollectedValue = {
107
+ max?: number;
108
+ min?: number;
109
+ } | Set<string>;
@@ -1,8 +1,8 @@
1
1
  export var AggregationType;
2
2
 
3
3
  !function(AggregationType) {
4
- AggregationType.SUM = "SUM", AggregationType.MIN = "MIN", AggregationType.MAX = "MAX",
5
- AggregationType.AVG = "AVG", AggregationType.COUNT = "COUNT";
4
+ AggregationType.RECORD = "RECORD", AggregationType.SUM = "SUM", AggregationType.MIN = "MIN",
5
+ AggregationType.MAX = "MAX", AggregationType.AVG = "AVG", AggregationType.COUNT = "COUNT";
6
6
  }(AggregationType || (AggregationType = {}));
7
7
 
8
8
  export var SortType;
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/new-data-set.ts"],"names":[],"mappings":"AAUA,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AACD,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACf,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB","file":"new-data-set.js","sourcesContent":["import type { SortOrder } from './common';\n\n//#region 总计小计\nexport interface TotalsStatus {\n isRowTotal: boolean;\n isRowSubTotal: boolean;\n isColTotal: boolean;\n isColSubTotal: boolean;\n}\n\nexport enum AggregationType {\n SUM = 'SUM',\n MIN = 'MIN',\n MAX = 'MAX',\n AVG = 'AVG',\n COUNT = 'COUNT'\n}\nexport enum SortType {\n ASC = 'ASC',\n DESC = 'DESC'\n}\nexport interface CalcTotals {\n aggregationType?: AggregationType; // 聚合方式\n // calcFunc?: (query: Record<string, any>, arr: Record<string, any>[]) => number;\n}\n\nexport interface Total {\n // 是否显示总计\n showGrandTotals: boolean;\n // 是否显示小计\n showSubTotals: boolean;\n // // 计算总计方法\n // calcGrandTotals?: CalcTotals;\n // // 计算小计方法\n // calcSubTotals?: CalcTotals;\n // 小计汇总维度定义\n subTotalsDimensions?: string[];\n // 默认'总计'\n grandTotalLabel?: string;\n // 默认'小计'\n subTotalLabel?: string;\n}\n\nexport interface Totals {\n row?: Total;\n column?: Total;\n}\n\n//#endregion 总计小计\n\n//#region 排序规则\n// export interface SortRule {\n// //排序维度\n// sortField: string;\n// //以下均为排序方法\n// //1. 指定排序类型\n// sortType?: SortType;\n// //2. 按维度成员指定排序\n// sortBy?: string[];\n// //3. 按指标值排序\n// sortByIndicator?: string;\n// //如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值\n// query?: string[];\n// //4. 自定义排序方法function\n// sortFunc?: (a: any, b: any) => number;\n// }\n//以下均为排序方法\n//1. 指定排序类型\nexport interface SortTypeRule {\n /**排序维度 */\n sortField: string;\n /**升序降序 ASC or DESC*/\n sortType?: SortType;\n}\n//2. 按维度成员指定排序\nexport interface SortByRule {\n /**排序维度 */\n sortField: string;\n /**根据指定具体顺序排序 */\n sortBy?: SortOrder[];\n}\n//3. 按指标值排序\nexport interface SortByIndicatorRule {\n /**排序维度 */\n sortField: string;\n /**排序根据某个指标值 */\n sortByIndicator?: string;\n /**如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值。例如按照办公用品下的纸张 ['办公用品', '纸张'] */\n query?: string[];\n}\n//4. 自定义排序方法function\nexport interface SortFuncRule {\n /**排序维度 */\n sortField: string;\n /**自定义排序函数 */\n sortFunc?: (a: any, b: any) => number;\n}\n//自定义排序方法参数\n// export interface SortFuncParam extends SortRule {\n// data: Array<string | Record<string, any>>;\n// }\nexport type SortRule = SortTypeRule | SortByRule | SortByIndicatorRule | SortFuncRule;\nexport type SortRules = SortRule[];\n//#endregion 排序规则\n\n//#region 过滤规则\nexport interface FilterRule {\n filterKey?: string;\n filteredValues?: unknown[];\n filterFunc?: (row: Record<string, any>) => boolean;\n}\nexport type FilterRules = FilterRule[];\n//#endregion 过滤规则\n\n//#region 聚合规则\nexport interface AggregationRule {\n /** 区别于field 重新起个key值,供配置indicators使用 */\n indicatorKey: string;\n field: string;\n aggregationType: AggregationType;\n /**计算结果格式化 */\n formatFun?: (num: number) => string;\n}\nexport type AggregationRules = AggregationRule[];\n//#endregion 聚合规则\n\n//#region 映射规则\nexport interface MappingRule {\n label?: LabelMapping;\n symbol?: SymbolMapping;\n bgColor?: MappingFuncRule;\n}\nexport type MappingRules = MappingRule[];\nexport interface LabelMapping {\n text?: MappingFuncRule;\n color?: MappingFuncRule;\n}\nexport interface SymbolMapping {\n shape?: 'circle' | 'rect';\n color?: MappingFuncRule;\n size?: MappingFuncRule;\n}\n\nexport type MappingFuncRule = {\n indicatorKey: string;\n mapping?: (table: any, value: number) => string;\n};\n\n//#endregion 映射规则\nexport interface DerivedFieldRule {\n fieldName?: string;\n derivedFunc?: (record: Record<string, any>) => any;\n}\nexport type DerivedFieldRules = DerivedFieldRule[];\n/**\n * 数据处理配置\n */\nexport interface IDataConfig {\n // rows: string[]; //行维度字段数组;\n // columns: string[]; //列维度字段数组;\n aggregationRules?: AggregationRules; //按照行列维度聚合值计算规则;\n // indicators?: string[]; //具体展示指标;\n // descriptions?: any[]; //字段标题及描述信息;\n sortRules?: SortRules; //排序规则;\n filterRules?: FilterRules; //过滤规则;\n totals?: Totals; //小计或总计;\n // indicatorsAsCol?: boolean;\n // hideIndicatorName?: boolean;\n\n mappingRules?: MappingRules;\n derivedFieldRules?: DerivedFieldRules;\n}\n"]}
1
+ {"version":3,"sources":["ts-types/new-data-set.ts"],"names":[],"mappings":"AAUA,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,kCAAe,CAAA;AACjB,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AACD,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACf,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB","file":"new-data-set.js","sourcesContent":["import type { SortOrder } from './common';\n\n//#region 总计小计\nexport interface TotalsStatus {\n isRowTotal: boolean;\n isRowSubTotal: boolean;\n isColTotal: boolean;\n isColSubTotal: boolean;\n}\n\nexport enum AggregationType {\n RECORD = 'RECORD',\n SUM = 'SUM',\n MIN = 'MIN',\n MAX = 'MAX',\n AVG = 'AVG',\n COUNT = 'COUNT'\n}\nexport enum SortType {\n ASC = 'ASC',\n DESC = 'DESC'\n}\nexport interface CalcTotals {\n aggregationType?: AggregationType; // 聚合方式\n // calcFunc?: (query: Record<string, any>, arr: Record<string, any>[]) => number;\n}\n\nexport interface Total {\n // 是否显示总计\n showGrandTotals: boolean;\n // 是否显示小计\n showSubTotals: boolean;\n // // 计算总计方法\n // calcGrandTotals?: CalcTotals;\n // // 计算小计方法\n // calcSubTotals?: CalcTotals;\n // 小计汇总维度定义\n subTotalsDimensions?: string[];\n // 默认'总计'\n grandTotalLabel?: string;\n // 默认'小计'\n subTotalLabel?: string;\n}\n\nexport interface Totals {\n row?: Total;\n column?: Total;\n}\n\n//#endregion 总计小计\n\n//#region 排序规则\n// export interface SortRule {\n// //排序维度\n// sortField: string;\n// //以下均为排序方法\n// //1. 指定排序类型\n// sortType?: SortType;\n// //2. 按维度成员指定排序\n// sortBy?: string[];\n// //3. 按指标值排序\n// sortByIndicator?: string;\n// //如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值\n// query?: string[];\n// //4. 自定义排序方法function\n// sortFunc?: (a: any, b: any) => number;\n// }\n//以下均为排序方法\n//1. 指定排序类型\nexport interface SortTypeRule {\n /**排序维度 */\n sortField: string;\n /**升序降序 ASC or DESC*/\n sortType?: SortType;\n}\n//2. 按维度成员指定排序\nexport interface SortByRule {\n /**排序维度 */\n sortField: string;\n /**根据指定具体顺序排序 */\n sortBy?: SortOrder[];\n}\n//3. 按指标值排序\nexport interface SortByIndicatorRule {\n /**排序维度 */\n sortField: string;\n /**排序根据某个指标值 */\n sortByIndicator?: string;\n /**如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值。例如按照办公用品下的纸张 ['办公用品', '纸张'] */\n query?: string[];\n}\n//4. 自定义排序方法function\nexport interface SortFuncRule {\n /**排序维度 */\n sortField: string;\n /**自定义排序函数 */\n sortFunc?: (a: any, b: any) => number;\n}\n//自定义排序方法参数\n// export interface SortFuncParam extends SortRule {\n// data: Array<string | Record<string, any>>;\n// }\nexport type SortRule = SortTypeRule | SortByRule | SortByIndicatorRule | SortFuncRule;\nexport type SortRules = SortRule[];\n//#endregion 排序规则\n\n//#region 过滤规则\nexport interface FilterRule {\n filterKey?: string;\n filteredValues?: unknown[];\n filterFunc?: (row: Record<string, any>) => boolean;\n}\nexport type FilterRules = FilterRule[];\n//#endregion 过滤规则\n\n//#region 聚合规则\nexport interface AggregationRule<T extends AggregationType> {\n /** 区别于field 重新起个key值,供配置indicators使用 */\n indicatorKey: string;\n // 可以收集单个字段的聚合结果,或者收集多个字段的聚合结果\n field: T extends AggregationType.RECORD ? string[] | string : string;\n aggregationType: T;\n /**计算结果格式化 */\n formatFun?: (num: number) => string;\n}\nexport type AggregationRules = AggregationRule<AggregationType>[];\n//#endregion 聚合规则\n\n//#region 映射规则\nexport interface MappingRule {\n label?: LabelMapping;\n symbol?: SymbolMapping;\n bgColor?: MappingFuncRule;\n}\nexport type MappingRules = MappingRule[];\nexport interface LabelMapping {\n text?: MappingFuncRule;\n color?: MappingFuncRule;\n}\nexport interface SymbolMapping {\n shape?: 'circle' | 'rect';\n color?: MappingFuncRule;\n size?: MappingFuncRule;\n}\n\nexport type MappingFuncRule = {\n indicatorKey: string;\n mapping?: (table: any, value: number) => string;\n};\n\n//#endregion 映射规则\nexport interface DerivedFieldRule {\n fieldName?: string;\n derivedFunc?: (record: Record<string, any>) => any;\n}\nexport type DerivedFieldRules = DerivedFieldRule[];\n/**\n * 数据处理配置\n */\nexport interface IDataConfig {\n // rows: string[]; //行维度字段数组;\n // columns: string[]; //列维度字段数组;\n aggregationRules?: AggregationRules; //按照行列维度聚合值计算规则;\n // indicators?: string[]; //具体展示指标;\n // descriptions?: any[]; //字段标题及描述信息;\n sortRules?: SortRules; //排序规则;\n filterRules?: FilterRules; //过滤规则;\n totals?: Totals; //小计或总计;\n // indicatorsAsCol?: boolean;\n // hideIndicatorName?: boolean;\n\n mappingRules?: MappingRules;\n derivedFieldRules?: DerivedFieldRules;\n\n collectValuesBy?: Record<string, CollectValueBy>;\n isPivotChart?: boolean;\n}\n\n/** 在处理数据的过程中 去额外收集某个维度的维度值范围 可为离散值或者连续值范围 */\nexport type CollectValueBy = {\n // field: string;\n by: string[];\n /** 是否计算一个range范围 true的话对应的收集数据的结果为{max:number,min:number} */\n range?: boolean;\n /** 收集是按照sumBy字段相同的进行分组聚合 聚合结果求最大最小值;如果不设置该值 则按单条数据求最大最小值 */\n sumBy?: string[];\n /** 帮助计算列宽使用 如果是chart图表 收集的是xFiled的维度值 可以根据维度值的个数乘于图元宽度计算一个最优列宽*/\n type?: 'xField' | 'yField' | undefined;\n};\nexport type CollectedValue = { max?: number; min?: number } | Set<string>;\n"]}
@@ -3,4 +3,8 @@ export interface PivotTableEvents extends TableEvents {
3
3
  PIVOT_SORT_CLICK: 'pivot_sort_click';
4
4
  DRILLMENU_CLICK: 'drillmenu_click';
5
5
  }
6
+ export interface PivotChartEvents extends TableEvents {
7
+ VCHART_EVENT_TYPE: 'vchart_event_type';
8
+ }
6
9
  export declare const PIVOT_TABLE_EVENT_TYPE: PivotTableEvents;
10
+ export declare const PIVOT_CHART_EVENT_TYPE: PivotChartEvents;
@@ -6,4 +6,8 @@ export const PIVOT_TABLE_EVENT_TYPE = extend(TABLE_EVENT_TYPE, {
6
6
  PIVOT_SORT_CLICK: "pivot_sort_click",
7
7
  DRILLMENU_CLICK: "drillmenu_click"
8
8
  });
9
+
10
+ export const PIVOT_CHART_EVENT_TYPE = extend(TABLE_EVENT_TYPE, {
11
+ VCHART_EVENT_TYPE: "vchart_event_type"
12
+ });
9
13
  //# sourceMappingURL=PIVOT_TABLE_EVENT_TYPE.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAa5C,MAAM,CAAC,MAAM,sBAAsB,GAAqB,MAAM,CAAC,gBAAgB,EAAE;IAC/E,gBAAgB,EAAE,kBAA2B;IAC7C,eAAe,EAAE,iBAA0B;CAC5C,CAAC,CAAC","file":"PIVOT_TABLE_EVENT_TYPE.js","sourcesContent":["import type { TableEvents } from '../../core/TABLE_EVENT_TYPE';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { extend } from '../../tools/helper';\n\nexport interface PivotTableEvents extends TableEvents {\n /**\n * 透视表中排序图标点击事件\n */\n PIVOT_SORT_CLICK: 'pivot_sort_click';\n /**\n * 下钻按钮点击事件\n */\n DRILLMENU_CLICK: 'drillmenu_click';\n}\n\nexport const PIVOT_TABLE_EVENT_TYPE: PivotTableEvents = extend(TABLE_EVENT_TYPE, {\n PIVOT_SORT_CLICK: 'pivot_sort_click' as const,\n DRILLMENU_CLICK: 'drillmenu_click' as const\n});\n"]}
1
+ {"version":3,"sources":["ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmB5C,MAAM,CAAC,MAAM,sBAAsB,GAAqB,MAAM,CAAC,gBAAgB,EAAE;IAC/E,gBAAgB,EAAE,kBAA2B;IAC7C,eAAe,EAAE,iBAA0B;CAC5C,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAqB,MAAM,CAAC,gBAAgB,EAAE;IAC/E,iBAAiB,EAAE,mBAA4B;CAChD,CAAC,CAAC","file":"PIVOT_TABLE_EVENT_TYPE.js","sourcesContent":["import type { TableEvents } from '../../core/TABLE_EVENT_TYPE';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { extend } from '../../tools/helper';\n\nexport interface PivotTableEvents extends TableEvents {\n /**\n * 透视表中排序图标点击事件\n */\n PIVOT_SORT_CLICK: 'pivot_sort_click';\n /**\n * 下钻按钮点击事件\n */\n DRILLMENU_CLICK: 'drillmenu_click';\n}\n\nexport interface PivotChartEvents extends TableEvents {\n /**\n * 代理vchart中的事件\n */\n VCHART_EVENT_TYPE: 'vchart_event_type';\n}\nexport const PIVOT_TABLE_EVENT_TYPE: PivotTableEvents = extend(TABLE_EVENT_TYPE, {\n PIVOT_SORT_CLICK: 'pivot_sort_click' as const,\n DRILLMENU_CLICK: 'drillmenu_click' as const\n});\nexport const PIVOT_CHART_EVENT_TYPE: PivotChartEvents = extend(TABLE_EVENT_TYPE, {\n VCHART_EVENT_TYPE: 'vchart_event_type' as const\n});\n"]}
@@ -5,15 +5,15 @@ interface IBasicCornerDefine {
5
5
  }
6
6
  interface ITextCornerDefine extends IBasicCornerDefine {
7
7
  headerType?: 'text';
8
- headerStyle?: ITextStyleOption;
8
+ headerStyle?: Omit<ITextStyleOption, 'textStick'>;
9
9
  }
10
10
  interface IImageCornerDefine extends IBasicCornerDefine {
11
11
  headerType: 'image';
12
- headerStyle?: IImageStyleOption;
12
+ headerStyle?: Omit<IImageStyleOption, 'textStick'>;
13
13
  }
14
14
  interface ILinkCornerDefine extends IBasicCornerDefine {
15
15
  headerType: 'link';
16
- headerStyle?: ITextStyleOption;
16
+ headerStyle?: Omit<ITextStyleOption, 'textStick'>;
17
17
  }
18
18
  export type ICornerDefine = IImageCornerDefine | ILinkCornerDefine | ITextCornerDefine;
19
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/pivot-table/corner.ts"],"names":[],"mappings":"","file":"corner.js","sourcesContent":["import type { IImageStyleOption, ITextStyleOption, IStyleOption } from '../column';\nimport type { ShowColumnRowType } from '../table-engine';\n\ninterface IBasicCornerDefine {\n titleOnDimension?: ShowColumnRowType; //角头标题是否显示列维度名称 否则显示行维度名称\n // headerStyle?: HeaderStyleOption | null; //角头标题的样式\n // headerType?: HeaderTypeOption | null; //角头标题的类型\n}\n\ninterface ITextCornerDefine extends IBasicCornerDefine {\n headerType?: 'text';\n headerStyle?: ITextStyleOption;\n}\n\ninterface IImageCornerDefine extends IBasicCornerDefine {\n headerType: 'image';\n headerStyle?: IImageStyleOption;\n}\n\ninterface ILinkCornerDefine extends IBasicCornerDefine {\n headerType: 'link';\n headerStyle?: ITextStyleOption;\n}\n\nexport type ICornerDefine = IImageCornerDefine | ILinkCornerDefine | ITextCornerDefine;\n"]}
1
+ {"version":3,"sources":["ts-types/pivot-table/corner.ts"],"names":[],"mappings":"","file":"corner.js","sourcesContent":["import type { IImageStyleOption, ITextStyleOption, IStyleOption } from '../column';\nimport type { ShowColumnRowType } from '../table-engine';\n\ninterface IBasicCornerDefine {\n titleOnDimension?: ShowColumnRowType; //角头标题是否显示列维度名称 否则显示行维度名称\n // headerStyle?: HeaderStyleOption | null; //角头标题的样式\n // headerType?: HeaderTypeOption | null; //角头标题的类型\n}\n\ninterface ITextCornerDefine extends IBasicCornerDefine {\n headerType?: 'text';\n headerStyle?: Omit<ITextStyleOption, 'textStick'>;\n}\n\ninterface IImageCornerDefine extends IBasicCornerDefine {\n headerType: 'image';\n headerStyle?: Omit<IImageStyleOption, 'textStick'>;\n}\n\ninterface ILinkCornerDefine extends IBasicCornerDefine {\n headerType: 'link';\n headerStyle?: Omit<ITextStyleOption, 'textStick'>;\n}\n\nexport type ICornerDefine = IImageCornerDefine | ILinkCornerDefine | ITextCornerDefine;\n"]}
@@ -7,3 +7,4 @@ import type { ISparklineColumnIndicator } from './sparkline-indicator';
7
7
  export type HeaderIndicator = ILinkHeaderIndicator | IImageHeaderIndicator | ITextHeaderIndicator;
8
8
  export type ColumnIndicator = ILinkColumnIndicator | IImageColumnIndicator | ISparklineColumnIndicator | IProgressbarColumnIndicator | IChartColumnIndicator | ITextColumnIndicator;
9
9
  export type IIndicator = HeaderIndicator & ColumnIndicator;
10
+ export type IChartIndicator = HeaderIndicator & IChartColumnIndicator;
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/pivot-table/indicator/index.ts"],"names":[],"mappings":"","file":"index.js","sourcesContent":["import type { IChartColumnIndicator } from './chart-indicator';\nimport type { IImageColumnIndicator, IImageHeaderIndicator } from './image-indicator';\nimport type { ILinkColumnIndicator, ILinkHeaderIndicator } from './link-indicator';\nimport type { ITextColumnIndicator, ITextHeaderIndicator } from './multilinetext-indicator';\nimport type { IProgressbarColumnIndicator } from './progress-indicator';\nimport type { ISparklineColumnIndicator } from './sparkline-indicator';\n\nexport type HeaderIndicator = ILinkHeaderIndicator | IImageHeaderIndicator | ITextHeaderIndicator;\n\nexport type ColumnIndicator =\n | ILinkColumnIndicator\n | IImageColumnIndicator\n | ISparklineColumnIndicator\n | IProgressbarColumnIndicator\n | IChartColumnIndicator\n | ITextColumnIndicator;\n\nexport type IIndicator = HeaderIndicator & ColumnIndicator;\n"]}
1
+ {"version":3,"sources":["ts-types/pivot-table/indicator/index.ts"],"names":[],"mappings":"","file":"index.js","sourcesContent":["import type { IChartColumnIndicator } from './chart-indicator';\nimport type { IImageColumnIndicator, IImageHeaderIndicator } from './image-indicator';\nimport type { ILinkColumnIndicator, ILinkHeaderIndicator } from './link-indicator';\nimport type { ITextColumnIndicator, ITextHeaderIndicator } from './multilinetext-indicator';\nimport type { IProgressbarColumnIndicator } from './progress-indicator';\nimport type { ISparklineColumnIndicator } from './sparkline-indicator';\n\nexport type HeaderIndicator = ILinkHeaderIndicator | IImageHeaderIndicator | ITextHeaderIndicator;\n\nexport type ColumnIndicator =\n | ILinkColumnIndicator\n | IImageColumnIndicator\n | ISparklineColumnIndicator\n | IProgressbarColumnIndicator\n | IChartColumnIndicator\n | ITextColumnIndicator;\n\nexport type IIndicator = HeaderIndicator & ColumnIndicator;\n\nexport type IChartIndicator = HeaderIndicator & IChartColumnIndicator;\n"]}
@@ -3,7 +3,7 @@ type IBasicTitleDefine = {
3
3
  title: true | string;
4
4
  };
5
5
  type ITextTitleDefine = IBasicTitleDefine & {
6
- headerType: 'text';
6
+ headerType?: 'text';
7
7
  headerStyle: ITextStyleOption;
8
8
  };
9
9
  type IImageTitleDefine = IBasicTitleDefine & {
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/pivot-table/title.ts"],"names":[],"mappings":"","file":"title.js","sourcesContent":["import type { IImageStyleOption, ITextStyleOption } from '../column';\n\ntype IBasicTitleDefine = {\n /** 显示表头标题。默认为true,显示内容则由各级的维度名称组合而成,如'地区|省份'。 */\n title: true | string;\n};\n\ntype ITextTitleDefine = IBasicTitleDefine & {\n headerType: 'text';\n headerStyle: ITextStyleOption;\n};\n\ntype IImageTitleDefine = IBasicTitleDefine & {\n headerType: 'image';\n headerStyle: IImageStyleOption;\n};\n\ntype ILinkTitleDefine = IBasicTitleDefine & {\n headerType: 'link';\n headerStyle: ITextStyleOption;\n};\n\nexport type ITitleDefine = ITextTitleDefine | IImageTitleDefine | ILinkTitleDefine;\n"]}
1
+ {"version":3,"sources":["ts-types/pivot-table/title.ts"],"names":[],"mappings":"","file":"title.js","sourcesContent":["import type { IImageStyleOption, ITextStyleOption } from '../column';\n\ntype IBasicTitleDefine = {\n /** 显示表头标题。默认为true,显示内容则由各级的维度名称组合而成,如'地区|省份'。 */\n title: true | string;\n};\n\ntype ITextTitleDefine = IBasicTitleDefine & {\n headerType?: 'text';\n headerStyle: ITextStyleOption;\n};\n\ntype IImageTitleDefine = IBasicTitleDefine & {\n headerType: 'image';\n headerStyle: IImageStyleOption;\n};\n\ntype ILinkTitleDefine = IBasicTitleDefine & {\n headerType: 'link';\n headerStyle: ITextStyleOption;\n};\n\nexport type ITitleDefine = ITextTitleDefine | IImageTitleDefine | ILinkTitleDefine;\n"]}
@@ -6,8 +6,9 @@ import type { Rect } from '../tools/Rect';
6
6
  import type { BaseTableAPI, BaseTableConstructorOptions } from './base-table';
7
7
  import type { IDataConfig } from './new-data-set';
8
8
  import type { Either } from '../tools/helper';
9
- import type { ICornerDefine, IDimension, IIndicator, ITitleDefine } from './pivot-table';
9
+ import type { IChartIndicator, ICornerDefine, IDimension, IIndicator, ITitleDefine } from './pivot-table';
10
10
  import type { ColumnsDefine } from './list-table';
11
+ import type { ITableAxisOption } from './component/axis';
11
12
  export interface CellAddress {
12
13
  col: number;
13
14
  row: number;
@@ -29,9 +30,10 @@ export type FieldDef = string | number | string[];
29
30
  export type FieldKeyDef = string | number;
30
31
  export type FieldFormat = FieldGetter | FieldAssessor;
31
32
  export type FieldData = MaybePromiseOrUndefined;
32
- export type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth' | 'standard-aeolus';
33
+ export type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth';
34
+ export type HeightModeDef = 'standard' | 'adaptive' | 'autoHeight';
33
35
  export type ShowColumnRowType = 'column' | 'row' | 'none';
34
- export type CellType = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader';
36
+ export type CellType = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader' | 'bottomFrozen' | 'rightFrozen';
35
37
  export interface TableKeyboardOptions {
36
38
  selectAllOnCtrlA?: boolean;
37
39
  copySelected?: boolean;
@@ -106,6 +108,23 @@ export interface PivotTableConstructorOptions extends BaseTableConstructorOption
106
108
  enableDataAnalysis?: boolean;
107
109
  indicatorTitle?: string;
108
110
  }
111
+ export interface PivotChartConstructorOptions extends BaseTableConstructorOptions {
112
+ columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';
113
+ columnTree?: IHeaderTreeDefine[];
114
+ rowTree?: IHeaderTreeDefine[];
115
+ rows?: (IDimension | string)[];
116
+ columns?: (IDimension | string)[];
117
+ indicators?: (IChartIndicator | string)[];
118
+ indicatorsAsCol?: boolean;
119
+ hideIndicatorName?: boolean;
120
+ corner?: ICornerDefine;
121
+ showColumnHeader?: boolean;
122
+ showRowHeader?: boolean;
123
+ columnHeaderTitle?: ITitleDefine;
124
+ rowHeaderTitle?: ITitleDefine;
125
+ indicatorTitle?: string;
126
+ axes: ITableAxisOption[];
127
+ }
109
128
  export interface PivotTableAPI extends BaseTableAPI {
110
129
  options: PivotTableConstructorOptions;
111
130
  pivotSortState: PivotSortState[];
@@ -114,6 +133,11 @@ export interface PivotTableAPI extends BaseTableAPI {
114
133
  getPivotSortState: (col: number, row: number) => SortOrder;
115
134
  toggleHierarchyState: (col: number, row: number) => void;
116
135
  }
136
+ export interface PivotChartAPI extends BaseTableAPI {
137
+ options: PivotTableConstructorOptions;
138
+ isListTable: () => false;
139
+ isPivotTable: () => true;
140
+ }
117
141
  export type SetPasteValueTestData = CellAddress & {
118
142
  table: BaseTableAPI;
119
143
  record: any;
@@ -1 +1 @@
1
- {"version":3,"sources":["ts-types/table-engine.ts"],"names":[],"mappings":"AAiPA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB","file":"table-engine.js","sourcesContent":["import type { RectProps, MaybePromiseOrUndefined, IDimensionInfo, SortOrder } from './common';\nimport type { SvgIcon } from './icon';\nexport type { HeaderData } from './list-table/layout-map/api';\nexport type LayoutObjectId = number | string;\nimport type { Rect } from '../tools/Rect';\nimport type { BaseTableAPI, BaseTableConstructorOptions } from './base-table';\nimport type { IDataConfig } from './new-data-set';\nimport type { Either } from '../tools/helper';\nimport type { ICornerDefine, IDimension, IIndicator, ITitleDefine } from './pivot-table';\nimport type { ColumnsDefine } from './list-table';\n\nexport interface CellAddress {\n col: number;\n row: number;\n rect?: RectProps;\n x?: number;\n y?: number;\n}\nexport interface CellRange {\n start: CellAddress;\n end: CellAddress;\n}\n\nexport type FieldGetter = (record: any) => any;\nexport type FieldSetter = (record: any, value: any) => void;\nexport interface FieldAssessor {\n get: FieldGetter;\n set: FieldSetter;\n}\n\nexport type FieldDef = string | number | string[];\nexport type FieldKeyDef = string | number;\nexport type FieldFormat = FieldGetter | FieldAssessor;\n\nexport type FieldData = MaybePromiseOrUndefined;\n\nexport type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth' | 'standard-aeolus';\nexport type ShowColumnRowType = 'column' | 'row' | 'none';\nexport type CellType = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader';\n\nexport interface TableKeyboardOptions {\n // moveCellOnTab?: boolean;\n // moveCellOnEnter?: boolean;\n // deleteCellValueOnDel?: boolean;\n\n /** 开启快捷键全选 默认:false */\n selectAllOnCtrlA?: boolean;\n /** 快捷键复制 */\n copySelected?: boolean; //这个copy是和浏览器的快捷键一致的\n}\nexport interface DataSourceAPI {\n clearCurrentIndexedData: () => void;\n length: number;\n get: (index: number) => MaybePromiseOrUndefined;\n getField: <F extends FieldDef>(index: number, field: F) => FieldData;\n hasField: (index: number, field: FieldDef) => boolean;\n sort: (field: FieldDef, order: SortOrder, orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1) => void;\n clearSortedMap: () => void;\n updatePager: (pagerConf: IPagerConf) => void;\n getIndexKey: (index: number) => number | number[];\n /** 数据是否为树形结构 且可以展开收起 */\n enableHierarchyState: boolean;\n}\n\nexport interface SortState {\n /** 排序依据字段 */\n field: FieldDef;\n\n fieldKey?: FieldKeyDef;\n /** 排序规则 */\n order: SortOrder;\n}\nexport interface PivotSortState {\n col: number;\n row: number;\n order: SortOrder;\n}\n\n/**\n * 分页配置\n */\nexport interface IPagerConf {\n /** 数据总条数 */\n totalCount?: number;\n /** 每页显示数据条数 */\n perPageCount: number;\n /** 每页显示条数 */\n currentPage?: number;\n}\nexport type HeaderValues = Map<any, any>;\nexport interface ListTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 是否显示表头\n */\n showHeader?: boolean;\n /**\n * Simple header property\n */\n columns?: ColumnsDefine; //请不要再这个上面修改配置,这里相当于是一个原始值备份,有一个内部专用的protectspace.columns\n /**\n *@deprecated 已废弃 请使用columns\n */\n header?: ColumnsDefine;\n\n transpose?: boolean; //是否转置\n /**\n * 展示为tree的列 层级缩进值\n */\n hierarchyIndent?: number;\n /** 展开层数 默认为1只显示根节点*/\n hierarchyExpandLevel?: number;\n\n /** 分页配置 */\n pagerConf?: IPagerConf;\n\n /**\n * 排序状态\n */\n sortState?: SortState | SortState[];\n}\n\nexport interface ListTableAPI extends BaseTableAPI {\n options: ListTableConstructorOptions;\n sortState: SortState[] | SortState | null;\n // internalProps: ListTableProtected;\n isListTable: () => true;\n isPivotTable: () => false;\n}\nexport interface PivotTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 设置排序状态,只对应按钮展示效果 无数据排序逻辑 */\n pivotSortState?: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[];\n\n //#region layout中挪到外层的属性\n /**层级维度结构显示形式 */\n rowHierarchyType?: 'grid' | 'tree';\n /**展开层数 */\n rowExpandLevel?: number;\n /**子层级维度缩进距离 */\n rowHierarchyIndent?: number;\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 指标在具体维度展示的层级顺序,从0开始 ———有数据分析的透视表才需要配置这个 */\n indicatorIndex?: number;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 指标维度key 注意非具体指标key 数据分析的透视表才需要配置这个 */\n // indicatorDimensionKey?: string;\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimensionTitle组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimensionTitle组合名\n */\n rowHeaderTitle?: ITitleDefine;\n //#endregion\n /** 数据分析相关配置 ———有数据分析的透视表才需要配置这个 */\n dataConfig?: IDataConfig;\n /** 是否开始数据分析 ———有数据分析的透视表才需要配置这个 */\n enableDataAnalysis?: boolean;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n}\n\nexport interface PivotTableAPI extends BaseTableAPI {\n options: PivotTableConstructorOptions;\n // internalProps: PivotTableProtected;\n pivotSortState: PivotSortState[];\n isListTable: () => false;\n isPivotTable: () => true;\n getPivotSortState: (col: number, row: number) => SortOrder;\n toggleHierarchyState: (col: number, row: number) => void;\n}\n\nexport type SetPasteValueTestData = CellAddress & {\n table: BaseTableAPI;\n record: any;\n value: string;\n\n oldValue: any;\n};\n\nexport interface InlineAPI {\n width: (arg: { ctx: CanvasRenderingContext2D }) => number;\n font: () => string | null;\n color: () => string | null;\n canDraw: () => boolean;\n onReady: (callback: Function) => void;\n\n draw: (opt: any) => void;\n canBreak: () => boolean;\n}\n\nexport interface CellContext {\n readonly col: number;\n readonly row: number;\n /**format之后的值 */\n readonly value: FieldData;\n /**原始值 */\n readonly dataValue: FieldData;\n showIcon?: SvgIcon;\n getContext: () => CanvasRenderingContext2D;\n toCurrentContext: () => CellContext;\n getDrawRect: () => RectProps | null;\n getRect: () => RectProps;\n setRectFilter: (rectFilter: (base: RectProps) => RectProps) => void;\n updateRect: (rect: Rect | RectProps) => void;\n updateDrawRect: (rect: Rect | RectProps) => void;\n}\n\nexport enum Placement {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right'\n}\n\nexport enum HierarchyState {\n expand = 'expand',\n collapse = 'collapse',\n none = 'none'\n}\nexport type IHeaderTreeDefine = Either<IDimensionHeaderNode, IIndicatorHeaderNode>;\nexport interface IIndicatorHeaderNode {\n /**\n * 指标的key值 对应数据集的字段名\n */\n indicatorKey: string | number;\n /**\n * 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示\n */\n value?: string;\n}\nexport interface IDimensionHeaderNode {\n /**\n * 维度的唯一标识,对应数据集的字段名称\n */\n dimensionKey: string | number;\n /** 维度成员值 */\n value: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n /** 折叠状态 TODO */\n hierarchyState?: HierarchyState;\n}\n"]}
1
+ {"version":3,"sources":["ts-types/table-engine.ts"],"names":[],"mappings":"AAqSA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB","file":"table-engine.js","sourcesContent":["import type { RectProps, MaybePromiseOrUndefined, IDimensionInfo, SortOrder } from './common';\nimport type { SvgIcon } from './icon';\nexport type { HeaderData } from './list-table/layout-map/api';\nexport type LayoutObjectId = number | string;\nimport type { Rect } from '../tools/Rect';\nimport type { BaseTableAPI, BaseTableConstructorOptions } from './base-table';\nimport type { IDataConfig } from './new-data-set';\nimport type { Either } from '../tools/helper';\nimport type { IChartIndicator, ICornerDefine, IDimension, IIndicator, ITitleDefine } from './pivot-table';\nimport type { ColumnsDefine } from './list-table';\nimport type { ICellAxisOption, ITableAxisOption } from './component/axis';\n\nexport interface CellAddress {\n col: number;\n row: number;\n rect?: RectProps;\n x?: number;\n y?: number;\n}\nexport interface CellRange {\n start: CellAddress;\n end: CellAddress;\n}\n\nexport type FieldGetter = (record: any) => any;\nexport type FieldSetter = (record: any, value: any) => void;\nexport interface FieldAssessor {\n get: FieldGetter;\n set: FieldSetter;\n}\n\nexport type FieldDef = string | number | string[];\nexport type FieldKeyDef = string | number;\nexport type FieldFormat = FieldGetter | FieldAssessor;\n\nexport type FieldData = MaybePromiseOrUndefined;\n\nexport type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth';\nexport type HeightModeDef = 'standard' | 'adaptive' | 'autoHeight';\nexport type ShowColumnRowType = 'column' | 'row' | 'none';\nexport type CellType = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader' | 'bottomFrozen' | 'rightFrozen';\n\nexport interface TableKeyboardOptions {\n // moveCellOnTab?: boolean;\n // moveCellOnEnter?: boolean;\n // deleteCellValueOnDel?: boolean;\n\n /** 开启快捷键全选 默认:false */\n selectAllOnCtrlA?: boolean;\n /** 快捷键复制 */\n copySelected?: boolean; //这个copy是和浏览器的快捷键一致的\n}\nexport interface DataSourceAPI {\n clearCurrentIndexedData: () => void;\n length: number;\n get: (index: number) => MaybePromiseOrUndefined;\n getField: <F extends FieldDef>(index: number, field: F) => FieldData;\n hasField: (index: number, field: FieldDef) => boolean;\n sort: (field: FieldDef, order: SortOrder, orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1) => void;\n clearSortedMap: () => void;\n updatePager: (pagerConf: IPagerConf) => void;\n getIndexKey: (index: number) => number | number[];\n /** 数据是否为树形结构 且可以展开收起 */\n enableHierarchyState: boolean;\n}\n\nexport interface SortState {\n /** 排序依据字段 */\n field: FieldDef;\n\n fieldKey?: FieldKeyDef;\n /** 排序规则 */\n order: SortOrder;\n}\nexport interface PivotSortState {\n col: number;\n row: number;\n order: SortOrder;\n}\n\n/**\n * 分页配置\n */\nexport interface IPagerConf {\n /** 数据总条数 */\n totalCount?: number;\n /** 每页显示数据条数 */\n perPageCount: number;\n /** 每页显示条数 */\n currentPage?: number;\n}\nexport type HeaderValues = Map<any, any>;\nexport interface ListTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 是否显示表头\n */\n showHeader?: boolean;\n /**\n * Simple header property\n */\n columns?: ColumnsDefine; //请不要再这个上面修改配置,这里相当于是一个原始值备份,有一个内部专用的protectspace.columns\n /**\n *@deprecated 已废弃 请使用columns\n */\n header?: ColumnsDefine;\n\n transpose?: boolean; //是否转置\n /**\n * 展示为tree的列 层级缩进值\n */\n hierarchyIndent?: number;\n /** 展开层数 默认为1只显示根节点*/\n hierarchyExpandLevel?: number;\n\n /** 分页配置 */\n pagerConf?: IPagerConf;\n\n /**\n * 排序状态\n */\n sortState?: SortState | SortState[];\n}\n\nexport interface ListTableAPI extends BaseTableAPI {\n options: ListTableConstructorOptions;\n sortState: SortState[] | SortState | null;\n // internalProps: ListTableProtected;\n isListTable: () => true;\n isPivotTable: () => false;\n}\nexport interface PivotTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 设置排序状态,只对应按钮展示效果 无数据排序逻辑 */\n pivotSortState?: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[];\n\n //#region layout中挪到外层的属性\n /**层级维度结构显示形式 */\n rowHierarchyType?: 'grid' | 'tree';\n /**展开层数 */\n rowExpandLevel?: number;\n /**子层级维度缩进距离 */\n rowHierarchyIndent?: number;\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 指标在具体维度展示的层级顺序,从0开始 ———有数据分析的透视表才需要配置这个 */\n indicatorIndex?: number;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 指标维度key 注意非具体指标key 数据分析的透视表才需要配置这个 */\n // indicatorDimensionKey?: string;\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimensionTitle组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimensionTitle组合名\n */\n rowHeaderTitle?: ITitleDefine;\n //#endregion\n /** 数据分析相关配置 ———有数据分析的透视表才需要配置这个 */\n dataConfig?: IDataConfig;\n /** 是否开始数据分析 ———有数据分析的透视表才需要配置这个 */\n enableDataAnalysis?: boolean;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n}\nexport interface PivotChartConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IChartIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimensionTitle组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimensionTitle组合名\n */\n rowHeaderTitle?: ITitleDefine;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n\n axes: ITableAxisOption[];\n}\nexport interface PivotTableAPI extends BaseTableAPI {\n options: PivotTableConstructorOptions;\n // internalProps: PivotTableProtected;\n pivotSortState: PivotSortState[];\n isListTable: () => false;\n isPivotTable: () => true;\n getPivotSortState: (col: number, row: number) => SortOrder;\n toggleHierarchyState: (col: number, row: number) => void;\n}\nexport interface PivotChartAPI extends BaseTableAPI {\n options: PivotTableConstructorOptions;\n // internalProps: PivotTableProtected;\n isListTable: () => false;\n isPivotTable: () => true;\n}\nexport type SetPasteValueTestData = CellAddress & {\n table: BaseTableAPI;\n record: any;\n value: string;\n\n oldValue: any;\n};\n\nexport interface InlineAPI {\n width: (arg: { ctx: CanvasRenderingContext2D }) => number;\n font: () => string | null;\n color: () => string | null;\n canDraw: () => boolean;\n onReady: (callback: Function) => void;\n\n draw: (opt: any) => void;\n canBreak: () => boolean;\n}\n\nexport interface CellContext {\n readonly col: number;\n readonly row: number;\n /**format之后的值 */\n readonly value: FieldData;\n /**原始值 */\n readonly dataValue: FieldData;\n showIcon?: SvgIcon;\n getContext: () => CanvasRenderingContext2D;\n toCurrentContext: () => CellContext;\n getDrawRect: () => RectProps | null;\n getRect: () => RectProps;\n setRectFilter: (rectFilter: (base: RectProps) => RectProps) => void;\n updateRect: (rect: Rect | RectProps) => void;\n updateDrawRect: (rect: Rect | RectProps) => void;\n}\n\nexport enum Placement {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right'\n}\n\nexport enum HierarchyState {\n expand = 'expand',\n collapse = 'collapse',\n none = 'none'\n}\nexport type IHeaderTreeDefine = Either<IDimensionHeaderNode, IIndicatorHeaderNode>;\nexport interface IIndicatorHeaderNode {\n /**\n * 指标的key值 对应数据集的字段名\n */\n indicatorKey: string | number;\n /**\n * 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示\n */\n value?: string;\n}\nexport interface IDimensionHeaderNode {\n /**\n * 维度的唯一标识,对应数据集的字段名称\n */\n dimensionKey: string | number;\n /** 维度成员值 */\n value: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n /** 折叠状态 TODO */\n hierarchyState?: HierarchyState;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vtable",
3
- "version": "0.9.1",
3
+ "version": "0.9.2-alpha.1",
4
4
  "description": "canvas table width high performance",
5
5
  "keywords": [
6
6
  "grid",
@@ -35,14 +35,20 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@visactor/vrender": "0.11.0-alpha.3",
38
+ "@visactor/vrender": "0.12.3",
39
39
  "@visactor/vutils": "0.9.0-alpha.2",
40
40
  "@visactor/vrender-components": "0.11.0-alpha.3",
41
41
  "cssfontparser": "^1.2.1",
42
- "@visactor/vscale": "0.9.0-alpha.2"
42
+ "@visactor/vscale": "0.9.0-alpha.2",
43
+ "@visactor/vdataset": "0.11.1",
44
+ "d3-dsv": "^3.0.1",
45
+ "d3-array": "3.2.3",
46
+ "d3-geo": "^3.0.1",
47
+ "d3-hexbin": "^0.2.2",
48
+ "d3-hierarchy": "^3.1.1"
43
49
  },
44
50
  "devDependencies": {
45
- "@visactor/vchart": "1.0.0",
51
+ "@visactor/vchart": "1.1.0-beta.7",
46
52
  "@rushstack/eslint-patch": "~1.1.4",
47
53
  "react": "16.13.0",
48
54
  "react-dom": "16.13.0",
@@ -82,8 +88,8 @@
82
88
  "form-data": "~4.0.0",
83
89
  "axios": "~1.4.0",
84
90
  "@internal/bundler": "0.0.1",
85
- "@internal/ts-config": "0.0.1",
86
- "@internal/eslint-config": "0.0.1"
91
+ "@internal/eslint-config": "0.0.1",
92
+ "@internal/ts-config": "0.0.1"
87
93
  },
88
94
  "unpkg": "latest",
89
95
  "unpkgFiles": [
@@ -100,7 +106,7 @@
100
106
  "build": "bundle --clean",
101
107
  "dev": "bundle --clean -f es -w",
102
108
  "start": "vite ./vite",
103
- "test": "jest",
109
+ "test": "jest --silent",
104
110
  "test-cov": "jest --coverage",
105
111
  "ci": "node github-ci.js"
106
112
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["menu/dom/BaseMenu.ts"],"names":[],"mappings":";;;AAKA,MAAsB,QAAQ;IAI5B,YAAY,KAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IACO,eAAe;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAErD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAGD,eAAe,CAAC,GAAW,EAAE,GAAW,EAAE,gBAAkC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACzE,CAAC;IACD,iBAAiB;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,WAAW,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,kBAAkB,CAAC,CAAS,EAAE,CAAS;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,WAAW,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;CACF;AArCD,4BAqCC","file":"BaseMenu.js","sourcesContent":["import type { MenuInstanceInfo } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { MenuContainer } from './logic/MenuContainer';\nimport type { MenuElement } from './logic/MenuElement';\n\nexport abstract class BaseMenu {\n protected _table: BaseTableAPI;\n /** 弹出的菜单显示内容 */\n private _menuElement?: MenuElement | MenuContainer;\n constructor(table: BaseTableAPI) {\n this._table = table;\n }\n dispose(): void {\n this.unbindMenuElement();\n if (this._menuElement) {\n this._menuElement.dispose();\n }\n this._menuElement = undefined;\n }\n private _getMenuElement(): MenuElement | MenuContainer {\n if (this._menuElement) {\n return this._menuElement;\n }\n this._menuElement = this.createMenuElementInternal();\n\n return this._menuElement;\n }\n /** 继承的具体类来实现 可以返回 MenuElement 或者 MenuContainer */\n abstract createMenuElementInternal(): MenuElement | MenuContainer;\n bindMenuElement(col: number, row: number, menuInstanceInfo: MenuInstanceInfo): boolean {\n const menuElement = this._getMenuElement();\n return menuElement.bindToCell(this._table, col, row, menuInstanceInfo);\n }\n unbindMenuElement(): void {\n const menuElement = this._getMenuElement();\n menuElement.unbindFromCell();\n }\n /** 鼠标坐标位置 是否位于下拉菜单内 */\n pointInMenuElement(x: number, y: number): boolean {\n const menuElement = this._getMenuElement();\n return menuElement.pointInMenuElement(x, y);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["menu/dom/Menu.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AACtC,yDAAsD;AACtD,qDAAkD;AAElD,MAAa,IAAK,SAAQ,mBAAQ;IAChC,yBAAyB;QACvB,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAJD,oBAIC;AACD,MAAa,SAAU,SAAQ,mBAAQ;IACrC,yBAAyB;QACvB,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,8BAIC","file":"Menu.js","sourcesContent":["import { BaseMenu } from './BaseMenu';\nimport { MenuContainer } from './logic/MenuContainer';\nimport { MenuElement } from './logic/MenuElement';\n\nexport class Menu extends BaseMenu {\n createMenuElementInternal(): MenuElement {\n return new MenuElement(this._table);\n }\n}\nexport class Container extends BaseMenu {\n createMenuElementInternal(): MenuContainer {\n return new MenuContainer(this._table);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["menu/dom/MenuHandler.ts"],"names":[],"mappings":"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","file":"MenuHandler.js","sourcesContent":["import type { CellRange, DropDownMenuOptions, MenuInstanceInfo, MenuInstanceType } from '../../ts-types';\nimport type { BaseMenu } from './BaseMenu';\nimport { Container, Menu } from './Menu';\nimport { cellInRange } from '../../tools/helper';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\n// import { DEFAULTFONT } from '../../tools/global';\n// import { getFontSize } from '../../tools/canvases';\n\nconst MENU_INSTANCE_FACTORY = {\n 'dropdown-menu': function (table: BaseTableAPI): BaseMenu {\n return new Menu(table);\n },\n 'context-menu': function (table: BaseTableAPI): BaseMenu {\n return new Menu(table);\n },\n container(table: BaseTableAPI): BaseMenu {\n return new Container(table);\n }\n};\n\n/** 获取下拉菜单展示内容及坐标位置 */\nfunction getMenuInstanceInfo(\n table: BaseTableAPI,\n col: number,\n row: number,\n type: MenuInstanceType,\n dropDownMenuOptions?: DropDownMenuOptions\n): MenuInstanceInfo | null {\n const { lineHeight, textBaseline, textStick } = table._getCellStyle(col, row);\n // table.internalProps.layoutMap.getHeader(col, row).style ?? {};\n // const lineHeight = getFontSize(table.getContext(), font).height;\n let rect = table.getCellRangeRelativeRect(table.getCellRange(col, row));\n if (textStick) {\n rect = table.getVisibleCellRangeRelativeRect({ col, row });\n }\n\n let { left, right, bottom, top, width, height } = rect;\n if (table.isHeader(col, row)) {\n ({ left, right, bottom, top, width, height } = table.internalProps.headerHelper.getDropDownIconRect(\n rect,\n // paddingArray[1]\n lineHeight as number,\n textBaseline || 'middle'\n ));\n }\n if (dropDownMenuOptions?.content) {\n //如果有指定的下拉菜单内容\n return {\n type,\n position: dropDownMenuOptions.position,\n referencePosition: dropDownMenuOptions.referencePosition ?? {\n rect: {\n left,\n right,\n top,\n bottom,\n width,\n height\n }\n },\n content: dropDownMenuOptions.content\n };\n } // 没有指定的下拉菜单 从headerLayout中获取下拉菜单内容\n else if (type === 'dropdown-menu') {\n // 获取下拉菜单信息及位置 注:这里逻辑特指内置的下拉菜单\n const { dropDownMenu = table.globalDropDownMenu, pivotInfo } = table._getHeaderLayoutMap(col, row);\n\n // const x = (left + right) / 2;\n // const y = bottom;\n\n return {\n type,\n // position: {\n // x,\n // y,\n // },\n referencePosition: {\n rect: {\n left,\n right,\n top,\n bottom,\n width,\n height\n }\n },\n content: dropDownMenu,\n pivotInfo\n };\n }\n // else if (type === 'context-menu') {\n // // 获取右键菜单信息及位置\n // const abstractPos = table._getMouseAbstractPoint(event, false);\n // let menu = null;\n // if (abstractPos && typeof table.options.contextmenu === 'function') {\n // menu = table.options.contextmenu(table.getHeaderField(col, row) as string, row);\n // } else if (abstractPos && Array.isArray(table.options.contextmenu)) {\n // menu = table.options.contextmenu;\n // }\n // return {\n // position: {\n // x: abstractPos.x,\n // y: abstractPos.y,\n // },\n // type,\n // content: menu,\n // };\n // }\n return null;\n}\n\ntype AttachInfo = {\n instance?: BaseMenu;\n range: CellRange;\n};\n\nexport class MenuHandler {\n private _table: BaseTableAPI;\n private _menuInstances?: { [type: string]: BaseMenu };\n private _attachInfo?: AttachInfo | null;\n constructor(table: BaseTableAPI) {\n this._table = table;\n this._menuInstances = {};\n this._bindTableEvent(table);\n }\n dispose(): void {\n const menuInstances = this._menuInstances;\n for (const k in menuInstances) {\n menuInstances[k].dispose();\n }\n delete this._menuInstances;\n this._attachInfo = null;\n }\n _bindToCell(col: number, row: number, type: MenuInstanceType, dropDownMenuOptions?: DropDownMenuOptions): void {\n const info = this._attachInfo;\n const instanceInfo = this._getMenuInstanceInfo(col, row, type, dropDownMenuOptions);\n if (info && (!instanceInfo || info.instance !== instanceInfo.instance)) {\n info.instance?.unbindMenuElement();\n this._attachInfo = null;\n }\n if (!instanceInfo) {\n return;\n }\n const { instance, info: menuInstanceInfo } = instanceInfo;\n const attach = instance && instance.bindMenuElement(col, row, menuInstanceInfo);\n if (attach) {\n const range = this._table.getCellRange(col, row);\n this._attachInfo = { range, instance };\n }\n }\n _unbindFromCell(): void {\n const info = this._attachInfo;\n if (!info) {\n return;\n }\n const { instance } = info;\n instance?.unbindMenuElement();\n this._attachInfo = null;\n // this._table.showHoverIcon = undefined;\n }\n _isBindToCell(col: number, row: number): boolean {\n const info = this._attachInfo;\n if (!info) {\n return false;\n }\n return cellInRange(info.range, col, row);\n }\n /** 鼠标坐标位置 是否位于下拉菜单内 */\n pointInMenuElement(x: number, y: number) {\n if (!this._attachInfo) {\n return false;\n }\n const info = this._attachInfo;\n const { instance } = info;\n return instance.pointInMenuElement(x, y);\n }\n _bindTableEvent(table: BaseTableAPI): void {\n // 监听按钮点击事件\n // 三种情况:\n // 1. 没有菜单,点击弹出菜单\n // 2. 已显示菜单,点击关闭菜单\n // 3. 已显示菜单,点击其他菜单按钮,关闭当前菜单,显示另一菜单\n table.listen(TABLE_EVENT_TYPE.DROPDOWN_ICON_CLICK, e => {\n if (this._attachInfo) {\n if (this._isBindToCell(e.col, e.row)) {\n this._unbindFromCell();\n } else {\n this._bindToCell(e.col, e.row, 'dropdown-menu');\n }\n } else {\n this._bindToCell(e.col, e.row, 'dropdown-menu');\n }\n });\n // 监听菜单清除事件\n table.listen(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLEAR, e => {\n this._unbindFromCell();\n });\n // 监听右键菜单\n table.listen(TABLE_EVENT_TYPE.CONTEXTMENU_CELL, e => {\n if (table.internalProps.menu?.renderMode === 'html') {\n // 获取右键菜单信息及位置\n const abstractPos = table._getMouseAbstractPoint(e.event, false);\n let menu = null;\n if (abstractPos && typeof table.internalProps.menu?.contextMenuItems === 'function') {\n menu = table.internalProps.menu.contextMenuItems(table.getHeaderField(e.col, e.row) as string, e.row);\n } else if (abstractPos && Array.isArray(table.internalProps.menu?.contextMenuItems)) {\n menu = table.internalProps.menu?.contextMenuItems;\n }\n this._bindToCell(e.col, e.row, 'context-menu', {\n content: menu,\n position: { x: abstractPos.x, y: abstractPos.y }\n });\n }\n });\n }\n _getMenuInstanceInfo(\n col: number,\n row: number,\n type: MenuInstanceType,\n dropDownMenuOptions?: DropDownMenuOptions\n ): {\n instance?: BaseMenu;\n type: MenuInstanceType;\n info: MenuInstanceInfo;\n } | null {\n const table = this._table;\n const menuInstances = this._menuInstances;\n\n const info = getMenuInstanceInfo(table, col, row, type, dropDownMenuOptions);\n if (!info) {\n return null;\n }\n\n // const { type } = info;\n const instance =\n (menuInstances && menuInstances[type]) ||\n (menuInstances && (menuInstances[type] = MENU_INSTANCE_FACTORY[type](table)));\n\n return {\n instance,\n type,\n info\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["menu/dom/logic/MenuContainer.ts"],"names":[],"mappings":"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","file":"MenuContainer.js","sourcesContent":["import { EventHandler } from '../../../event/EventHandler';\nimport type { MenuInstanceInfo, Placement, RectProps } from '../../../ts-types';\nimport { createElement } from '../../../tools/dom';\nimport { TABLE_EVENT_TYPE } from '../../../core/TABLE_EVENT_TYPE';\nimport type { PivotHeaderLayoutMap } from '../../../layout/pivot-header-layout';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\n\nconst CLASSNAME = 'vtable__menu-element';\nconst HIDDEN_CLASSNAME = `${CLASSNAME}--hidden`;\nconst SHOWN_CLASSNAME = `${CLASSNAME}--shown`;\n\nfunction createMenuDomElement(): HTMLElement {\n const rootElement = createElement('div', [CLASSNAME, HIDDEN_CLASSNAME]);\n return rootElement;\n}\n\nexport class MenuContainer {\n private _handler: EventHandler;\n private _rootElement?: HTMLElement;\n private _menuInstanceInfo?: MenuInstanceInfo;\n constructor(table: BaseTableAPI) {\n this._handler = new EventHandler();\n this._rootElement = createMenuDomElement();\n\n // 绑定交互事件\n this._rootElement?.addEventListener('mousedown', e => {\n e.stopPropagation();\n e.preventDefault();\n });\n this._rootElement?.addEventListener('click', e => {\n e.stopPropagation();\n e.preventDefault();\n if (this._rootElement.classList.contains(HIDDEN_CLASSNAME)) {\n return;\n }\n // console.log('menu mousedown', e);\n // 触发菜单条目点击事件\n const { col, row, dropDownIndex, menuKey, text, hasChildren } = e.target as any;\n if (typeof dropDownIndex !== 'number' || hasChildren) {\n e.stopPropagation();\n return;\n }\n // const field = table.getHeaderField(col, row);\n const field = table.isPivotTable()\n ? (table.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotDimensionInfo(col, row)\n : table.getHeaderField(col, row);\n\n const highlight = table._dropDownMenuIsHighlight(col, row, dropDownIndex);\n table.fireListeners(TABLE_EVENT_TYPE.DROPDOWNMENU_CLICK, {\n col,\n row,\n field: <string>field,\n menuKey,\n // fieldKey,\n // dropDownIndex,\n text,\n highlight,\n cellType: table.getCellType(col, row)\n });\n\n table.fireListeners(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLEAR, null); // 清除菜单\n table.fireListeners(TABLE_EVENT_TYPE.HIDE_MENU); // 清除菜单\n // table.invalidateCell(col, row); // 更新状态图表\n e.stopPropagation();\n });\n this._rootElement?.addEventListener('mousemove', e => {\n if (this._rootElement.classList.contains(HIDDEN_CLASSNAME)) {\n return;\n }\n // console.log('menu mousemove', e);\n // table.hoverIcon = undefined;\n\n e.stopPropagation();\n });\n // this._rootElement?.addEventListener('mouseenter', () => {\n // if (this._rootElement.classList.contains(HIDDEN_CLASSNAME)) return;\n // if (!table.hoverIcon) return;\n // // console.log('menu mousemove', e);\n // table.showHoverIcon = table.hoverIcon;\n // table.hoverIcon = undefined; // 避免在hover icon后不能交互表格区域\n // table.invalidateCell(table.showHoverIcon.col, table.showHoverIcon.row);\n // // console.log('showHoverIcon', table.showHoverIcon);\n // });\n // this._rootElement?.addEventListener('blur', () => {\n // // table.fireListeners(LG_EVENT_TYPE.DROPDOWN_MENU_CLEAR, null); // 清除菜单\n // table.showHoverIcon = undefined;\n // });\n }\n get rootElement() {\n return this._rootElement;\n }\n dispose(): void {\n this.unbindFromCell();\n\n const rootElement = this._rootElement;\n if (rootElement?.parentElement) {\n rootElement.parentElement.removeChild(rootElement);\n }\n\n this._handler.dispose();\n delete this._rootElement;\n // delete this._messageElement;\n }\n bindToCell(table: BaseTableAPI, col: number, row: number, menuInstanceInfo: MenuInstanceInfo): boolean {\n const rootElement = this._rootElement;\n this._menuInstanceInfo = menuInstanceInfo;\n // const messageElement = this._messageElement;\n\n rootElement?.classList.remove(SHOWN_CLASSNAME);\n rootElement?.classList.add(HIDDEN_CLASSNAME);\n\n if (this._canBindToCell(table, col, row)) {\n rootElement.innerHTML = '';\n rootElement.appendChild(<HTMLElement>menuInstanceInfo.content);\n\n const binded = this._bindCell(table, col, row, menuInstanceInfo.position, menuInstanceInfo.referencePosition);\n\n if (binded) {\n rootElement?.classList.add(SHOWN_CLASSNAME);\n rootElement?.classList.remove(HIDDEN_CLASSNAME);\n return true;\n }\n } else {\n this.unbindFromCell();\n }\n return false;\n }\n unbindFromCell(): void {\n const rootElement = this._rootElement;\n this._menuInstanceInfo = undefined;\n if (rootElement?.parentElement) {\n // rootElement.parentElement.removeChild(rootElement);\n rootElement.classList.remove(SHOWN_CLASSNAME);\n rootElement.classList.add(HIDDEN_CLASSNAME);\n }\n }\n _canBindToCell(table: BaseTableAPI, col: number, row: number): boolean {\n const rect = table.getCellRangeRelativeRect({ col, row });\n const element = table.getElement();\n const { top, bottom, left, right } = rect;\n const { frozenRowCount, frozenColCount } = table;\n if (row >= frozenRowCount && frozenRowCount > 0) {\n const frozenRect = table.getCellRangeRelativeRect({ col, row: frozenRowCount - 1 });\n if (bottom < frozenRect.bottom) {\n return false;\n }\n } else if (bottom < 0) {\n return false;\n }\n if (col >= frozenColCount && frozenColCount > 0) {\n const frozenRect = table.getCellRangeRelativeRect({ col: frozenColCount - 1, row });\n if (right < frozenRect.right) {\n //整个是被冻结列盖住的 不需要提示toolTip\n return false;\n }\n } else if (right < 0) {\n return false;\n }\n const { offsetHeight, offsetWidth } = element;\n if (offsetHeight < top) {\n return false;\n }\n if (offsetWidth < left) {\n return false;\n }\n return true;\n }\n _bindCell(\n table: BaseTableAPI,\n col: number,\n row: number,\n position: { x: number; y: number },\n referencePosition: { rect: RectProps; placement?: Placement }\n ): boolean {\n const rootElement = this._rootElement;\n const element = table.getElement();\n const { width: containerWidth, height: containerHeight } = table.internalProps.element.getBoundingClientRect();\n if (rootElement) {\n if (rootElement.parentElement !== element) {\n element.appendChild(rootElement); // 之前在做dom边缘躲避的时候放到了table.getParentElement()上,但发现不是相对定位导致位置错位\n }\n rootElement.style.left = `0px`;\n //设置最宽尺寸\n const maxWidth = containerWidth * 0.8;\n rootElement.style.maxWidth = `${maxWidth}px`;\n //计算弹出框的宽度\n const rootElementWidth = rootElement.clientWidth;\n const rootElementHeight = rootElement.clientHeight;\n let rootElementLeft;\n let rootElementTop;\n if (position) {\n rootElementLeft = position.x;\n rootElementTop = position.y;\n }\n if (referencePosition) {\n rootElementLeft = referencePosition.rect.right - rootElementWidth;\n rootElementTop = referencePosition.rect.bottom;\n }\n // rootElementLeft = position.x - rootElementWidth;\n // let leftStyle = rootElementLeft;\n // 检测下方能否容纳,不能容纳向上偏移\n if (rootElementTop + rootElementHeight > containerHeight) {\n rootElementTop = containerHeight - rootElementHeight;\n rootElementLeft += rootElementWidth - 2;\n }\n // 偏移后上方超出canvas范围,居中显示\n if (rootElementTop < 0) {\n rootElementTop = rootElementTop / 2;\n }\n rootElement.style.top = `${rootElementTop}px`;\n\n // 判断如果超出左右范围则靠边显示\n if (rootElementLeft < 0) {\n rootElementLeft = 0;\n } else if (rootElementLeft + rootElementWidth > containerWidth) {\n rootElementLeft = containerWidth - rootElementWidth;\n }\n rootElement.style.left = `${rootElementLeft}px`;\n\n return true;\n }\n return false;\n }\n /** 鼠标坐标位置 是否位于下拉菜单内 */\n pointInMenuElement(x: number, y: number): boolean {\n const rootElement = this._rootElement;\n\n const { x: rootLeft, y: rootTop, width: rootWidth, height: rootHeight } = rootElement.getBoundingClientRect();\n if (x > rootLeft - 5 && x < rootLeft + rootWidth + 5 && y > rootTop - 5 && y < rootTop + rootHeight + 5) {\n return true;\n }\n\n return false;\n }\n}\n"]}