@visactor/vtable 0.9.1-alpha.4 → 0.9.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 (431) hide show
  1. package/cjs/ListTable.js +15 -4
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotTable.d.ts +2 -1
  4. package/cjs/PivotTable.js +15 -3
  5. package/cjs/PivotTable.js.map +1 -1
  6. package/cjs/body-helper/body-helper.d.ts +1 -0
  7. package/cjs/body-helper/body-helper.js +6 -3
  8. package/cjs/body-helper/body-helper.js.map +1 -1
  9. package/cjs/body-helper/style/ProgressBarStyle.js +14 -8
  10. package/cjs/body-helper/style/ProgressBarStyle.js.map +1 -1
  11. package/cjs/body-helper/style/Style.d.ts +3 -0
  12. package/cjs/body-helper/style/Style.js +21 -14
  13. package/cjs/body-helper/style/Style.js.map +1 -1
  14. package/cjs/core/BaseTable.d.ts +4 -1
  15. package/cjs/core/BaseTable.js +31 -20
  16. package/cjs/core/BaseTable.js.map +1 -1
  17. package/cjs/core/tableHelper.js +11 -6
  18. package/cjs/core/tableHelper.js.map +1 -1
  19. package/cjs/data/DataSource.d.ts +4 -1
  20. package/cjs/data/DataSource.js +3 -3
  21. package/cjs/data/DataSource.js.map +1 -1
  22. package/cjs/event/event.d.ts +14 -19
  23. package/cjs/event/event.js +12 -329
  24. package/cjs/event/event.js.map +1 -1
  25. package/cjs/event/listener/container-dom.d.ts +2 -0
  26. package/cjs/event/listener/container-dom.js +42 -0
  27. package/cjs/event/listener/container-dom.js.map +1 -0
  28. package/cjs/event/listener/scroll-bar.d.ts +2 -0
  29. package/cjs/event/listener/scroll-bar.js +44 -0
  30. package/cjs/event/listener/scroll-bar.js.map +1 -0
  31. package/cjs/event/listener/table-group.d.ts +2 -0
  32. package/cjs/event/listener/table-group.js +262 -0
  33. package/cjs/event/listener/table-group.js.map +1 -0
  34. package/cjs/event/listener/touch.d.ts +2 -0
  35. package/cjs/event/listener/touch.js +76 -0
  36. package/cjs/event/listener/touch.js.map +1 -0
  37. package/cjs/event/scroll.d.ts +2 -0
  38. package/cjs/event/scroll.js +32 -4
  39. package/cjs/event/scroll.js.map +1 -1
  40. package/cjs/event/util.d.ts +16 -0
  41. package/cjs/event/util.js +30 -0
  42. package/cjs/event/util.js.map +1 -0
  43. package/cjs/header-helper/header-helper.d.ts +5 -6
  44. package/cjs/header-helper/header-helper.js +19 -22
  45. package/cjs/header-helper/header-helper.js.map +1 -1
  46. package/cjs/icons.js +11 -11
  47. package/cjs/icons.js.map +1 -1
  48. package/cjs/index.d.ts +1 -1
  49. package/cjs/index.js +1 -1
  50. package/cjs/index.js.map +1 -1
  51. package/cjs/layout/index.js +1 -2
  52. package/cjs/layout/pivot-header-layout.d.ts +4 -1
  53. package/cjs/layout/pivot-header-layout.js +15 -14
  54. package/cjs/layout/pivot-header-layout.js.map +1 -1
  55. package/cjs/layout/simple-header-layout.d.ts +13 -1
  56. package/cjs/layout/simple-header-layout.js +12 -1
  57. package/cjs/layout/simple-header-layout.js.map +1 -1
  58. package/cjs/render/layout/container.js +1 -1
  59. package/cjs/render/layout/container.js.map +1 -1
  60. package/cjs/render/layout/element.d.ts +1 -1
  61. package/cjs/render/layout/element.js.map +1 -1
  62. package/cjs/render/layout/rect.d.ts +2 -2
  63. package/cjs/render/layout/rect.js +2 -2
  64. package/cjs/render/layout/rect.js.map +1 -1
  65. package/cjs/scenegraph/component/custom.js +18 -7
  66. package/cjs/scenegraph/component/custom.js.map +1 -1
  67. package/cjs/scenegraph/component/menu.js +2 -2
  68. package/cjs/scenegraph/component/menu.js.map +1 -1
  69. package/cjs/scenegraph/component/table-component.d.ts +3 -3
  70. package/cjs/scenegraph/component/table-component.js +36 -26
  71. package/cjs/scenegraph/component/table-component.js.map +1 -1
  72. package/cjs/scenegraph/graphic/chart.d.ts +1 -0
  73. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  74. package/cjs/scenegraph/graphic/contributions/chart-render.js +7 -2
  75. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  76. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  77. package/cjs/scenegraph/graphic/group.d.ts +4 -0
  78. package/cjs/scenegraph/graphic/group.js +6 -0
  79. package/cjs/scenegraph/graphic/group.js.map +1 -1
  80. package/cjs/scenegraph/graphic/text.js +7 -7
  81. package/cjs/scenegraph/graphic/text.js.map +1 -1
  82. package/cjs/scenegraph/group-creater/cell-helper.d.ts +3 -4
  83. package/cjs/scenegraph/group-creater/cell-helper.js +25 -18
  84. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  85. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +6 -4
  86. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  87. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +11 -1
  88. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  89. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +12 -9
  90. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  91. package/cjs/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
  92. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +7 -4
  93. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  94. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +1 -1
  95. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  96. package/cjs/scenegraph/group-creater/column-helper.d.ts +3 -3
  97. package/cjs/scenegraph/group-creater/column-helper.js +22 -11
  98. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  99. package/cjs/scenegraph/group-creater/column.d.ts +0 -6
  100. package/cjs/scenegraph/group-creater/column.js +3 -12
  101. package/cjs/scenegraph/group-creater/column.js.map +1 -1
  102. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +0 -2
  103. package/cjs/scenegraph/group-creater/progress/proxy.js +23 -19
  104. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  105. package/cjs/scenegraph/layout/auto-height.js +1 -1
  106. package/cjs/scenegraph/layout/auto-height.js.map +1 -1
  107. package/cjs/scenegraph/layout/auto-width.js +1 -1
  108. package/cjs/scenegraph/layout/auto-width.js.map +1 -1
  109. package/cjs/scenegraph/layout/compute-col-width.d.ts +1 -1
  110. package/cjs/scenegraph/layout/compute-col-width.js +28 -8
  111. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  112. package/cjs/scenegraph/layout/frozen.d.ts +3 -0
  113. package/cjs/scenegraph/layout/frozen.js +66 -0
  114. package/cjs/scenegraph/layout/frozen.js.map +1 -0
  115. package/cjs/scenegraph/layout/move-cell.js +5 -1
  116. package/cjs/scenegraph/layout/move-cell.js.map +1 -1
  117. package/cjs/scenegraph/layout/update-cell.js +3 -3
  118. package/cjs/scenegraph/layout/update-cell.js.map +1 -1
  119. package/cjs/scenegraph/layout/update-height.js +4 -4
  120. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  121. package/cjs/scenegraph/layout/update-row.d.ts +3 -0
  122. package/cjs/scenegraph/layout/update-row.js +81 -0
  123. package/cjs/scenegraph/layout/update-row.js.map +1 -0
  124. package/cjs/scenegraph/layout/update-width.js +5 -5
  125. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  126. package/cjs/scenegraph/refresh-node/update-chart.d.ts +2 -0
  127. package/cjs/scenegraph/refresh-node/update-chart.js +26 -0
  128. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -0
  129. package/cjs/scenegraph/scenegraph.d.ts +15 -3
  130. package/cjs/scenegraph/scenegraph.js +86 -95
  131. package/cjs/scenegraph/scenegraph.js.map +1 -1
  132. package/cjs/scenegraph/select/create-select-border.js +1 -0
  133. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  134. package/cjs/scenegraph/stick-text/index.js +52 -40
  135. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  136. package/cjs/scenegraph/style/frame-border.d.ts +1 -1
  137. package/cjs/scenegraph/style/frame-border.js +7 -7
  138. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  139. package/cjs/scenegraph/utils/deal-promise-data.d.ts +2 -0
  140. package/cjs/scenegraph/utils/deal-promise-data.js +14 -0
  141. package/cjs/scenegraph/utils/deal-promise-data.js.map +1 -0
  142. package/cjs/scenegraph/utils/empty-group.d.ts +2 -0
  143. package/cjs/scenegraph/utils/empty-group.js +10 -0
  144. package/cjs/scenegraph/utils/empty-group.js.map +1 -0
  145. package/cjs/scenegraph/utils/get-hierarchy-offset.d.ts +2 -0
  146. package/cjs/scenegraph/utils/get-hierarchy-offset.js +27 -0
  147. package/cjs/scenegraph/utils/get-hierarchy-offset.js.map +1 -0
  148. package/cjs/scenegraph/utils/padding.d.ts +1 -1
  149. package/cjs/scenegraph/utils/padding.js +3 -3
  150. package/cjs/scenegraph/utils/padding.js.map +1 -1
  151. package/cjs/scenegraph/utils/text-icon-layout.d.ts +3 -2
  152. package/cjs/scenegraph/utils/text-icon-layout.js +24 -19
  153. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  154. package/cjs/scenegraph/utils/text-pos.js +1 -1
  155. package/cjs/scenegraph/utils/text-pos.js.map +1 -1
  156. package/cjs/state/cell-move/adjust-header.js +9 -2
  157. package/cjs/state/cell-move/adjust-header.js.map +1 -1
  158. package/cjs/state/cell-move/index.js +9 -3
  159. package/cjs/state/cell-move/index.js.map +1 -1
  160. package/cjs/state/frozen/index.d.ts +2 -0
  161. package/cjs/state/{pin → frozen}/index.js +2 -2
  162. package/cjs/state/frozen/index.js.map +1 -0
  163. package/cjs/state/state.d.ts +1 -1
  164. package/cjs/state/state.js +16 -12
  165. package/cjs/state/state.js.map +1 -1
  166. package/cjs/themes/ARCO.js +1 -1
  167. package/cjs/themes/ARCO.js.map +1 -1
  168. package/cjs/themes/BRIGHT.js +1 -1
  169. package/cjs/themes/BRIGHT.js.map +1 -1
  170. package/cjs/themes/DARK.js +1 -1
  171. package/cjs/themes/DARK.js.map +1 -1
  172. package/cjs/themes/DEFAULT.js +1 -1
  173. package/cjs/themes/DEFAULT.js.map +1 -1
  174. package/cjs/themes/theme.d.ts +1 -1
  175. package/cjs/themes/theme.js +6 -6
  176. package/cjs/themes/theme.js.map +1 -1
  177. package/cjs/tools/LimitPromiseQueue.js +1 -2
  178. package/cjs/tools/NumberMap.js +1 -1
  179. package/cjs/tools/Rect.js +1 -1
  180. package/cjs/tools/calc.js +1 -1
  181. package/cjs/tools/debounce.js +1 -1
  182. package/cjs/tools/diff-cell.d.ts +10 -0
  183. package/cjs/tools/diff-cell.js +49 -0
  184. package/cjs/tools/diff-cell.js.map +1 -0
  185. package/cjs/tools/dom.js +1 -1
  186. package/cjs/tools/env.js +1 -1
  187. package/cjs/tools/helper.d.ts +11 -0
  188. package/cjs/tools/helper.js +7 -2
  189. package/cjs/tools/helper.js.map +1 -1
  190. package/cjs/tooltip/BaseTooltip.js +1 -1
  191. package/cjs/tooltip/Tooltip.js +2 -1
  192. package/cjs/tooltip/TooltipHandler.js +1 -1
  193. package/cjs/ts-types/base-table.d.ts +8 -2
  194. package/cjs/ts-types/base-table.js +1 -1
  195. package/cjs/ts-types/base-table.js.map +1 -1
  196. package/cjs/ts-types/common.js +1 -1
  197. package/cjs/ts-types/customElement.d.ts +11 -2
  198. package/cjs/ts-types/customElement.js +1 -1
  199. package/cjs/ts-types/customElement.js.map +1 -1
  200. package/cjs/ts-types/customLayout.js +1 -1
  201. package/cjs/ts-types/events.js +1 -1
  202. package/cjs/ts-types/icon.d.ts +4 -5
  203. package/cjs/ts-types/icon.js +6 -6
  204. package/cjs/ts-types/icon.js.map +1 -1
  205. package/cjs/ts-types/list-table/define/basic-define.d.ts +4 -1
  206. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  207. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  208. package/cjs/ts-types/theme.d.ts +1 -1
  209. package/cjs/ts-types/theme.js.map +1 -1
  210. package/dist/vtable.es5.js +53155 -0
  211. package/dist/vtable.es5.min.js +3 -0
  212. package/dist/vtable.js +17155 -21633
  213. package/dist/vtable.min.js +15 -3
  214. package/es/ListTable.js +16 -3
  215. package/es/ListTable.js.map +1 -1
  216. package/es/PivotTable.d.ts +2 -1
  217. package/es/PivotTable.js +16 -2
  218. package/es/PivotTable.js.map +1 -1
  219. package/es/body-helper/body-helper.d.ts +1 -0
  220. package/es/body-helper/body-helper.js +6 -3
  221. package/es/body-helper/body-helper.js.map +1 -1
  222. package/es/body-helper/style/ProgressBarStyle.js +14 -8
  223. package/es/body-helper/style/ProgressBarStyle.js.map +1 -1
  224. package/es/body-helper/style/Style.d.ts +3 -0
  225. package/es/body-helper/style/Style.js +21 -14
  226. package/es/body-helper/style/Style.js.map +1 -1
  227. package/es/core/BaseTable.d.ts +4 -1
  228. package/es/core/BaseTable.js +31 -21
  229. package/es/core/BaseTable.js.map +1 -1
  230. package/es/core/tableHelper.js +11 -7
  231. package/es/core/tableHelper.js.map +1 -1
  232. package/es/data/DataSource.d.ts +4 -1
  233. package/es/data/DataSource.js +4 -2
  234. package/es/data/DataSource.js.map +1 -1
  235. package/es/event/event.d.ts +14 -19
  236. package/es/event/event.js +16 -333
  237. package/es/event/event.js.map +1 -1
  238. package/es/event/listener/container-dom.d.ts +2 -0
  239. package/es/event/listener/container-dom.js +40 -0
  240. package/es/event/listener/container-dom.js.map +1 -0
  241. package/es/event/listener/scroll-bar.d.ts +2 -0
  242. package/es/event/listener/scroll-bar.js +37 -0
  243. package/es/event/listener/scroll-bar.js.map +1 -0
  244. package/es/event/listener/table-group.d.ts +2 -0
  245. package/es/event/listener/table-group.js +265 -0
  246. package/es/event/listener/table-group.js.map +1 -0
  247. package/es/event/listener/touch.d.ts +2 -0
  248. package/es/event/listener/touch.js +67 -0
  249. package/es/event/listener/touch.js.map +1 -0
  250. package/es/event/scroll.d.ts +2 -0
  251. package/es/event/scroll.js +29 -3
  252. package/es/event/scroll.js.map +1 -1
  253. package/es/event/util.d.ts +16 -0
  254. package/es/event/util.js +24 -0
  255. package/es/event/util.js.map +1 -0
  256. package/es/header-helper/header-helper.d.ts +5 -6
  257. package/es/header-helper/header-helper.js +22 -24
  258. package/es/header-helper/header-helper.js.map +1 -1
  259. package/es/icons.js +11 -11
  260. package/es/icons.js.map +1 -1
  261. package/es/index.d.ts +1 -1
  262. package/es/index.js +1 -1
  263. package/es/index.js.map +1 -1
  264. package/es/layout/index.js +1 -2
  265. package/es/layout/pivot-header-layout.d.ts +4 -1
  266. package/es/layout/pivot-header-layout.js +17 -13
  267. package/es/layout/pivot-header-layout.js.map +1 -1
  268. package/es/layout/simple-header-layout.d.ts +13 -1
  269. package/es/layout/simple-header-layout.js +12 -1
  270. package/es/layout/simple-header-layout.js.map +1 -1
  271. package/es/render/layout/container.js +1 -1
  272. package/es/render/layout/container.js.map +1 -1
  273. package/es/render/layout/element.d.ts +1 -1
  274. package/es/render/layout/element.js.map +1 -1
  275. package/es/render/layout/rect.d.ts +2 -2
  276. package/es/render/layout/rect.js +2 -2
  277. package/es/render/layout/rect.js.map +1 -1
  278. package/es/scenegraph/component/custom.js +20 -9
  279. package/es/scenegraph/component/custom.js.map +1 -1
  280. package/es/scenegraph/component/menu.js +2 -2
  281. package/es/scenegraph/component/menu.js.map +1 -1
  282. package/es/scenegraph/component/table-component.d.ts +3 -3
  283. package/es/scenegraph/component/table-component.js +36 -26
  284. package/es/scenegraph/component/table-component.js.map +1 -1
  285. package/es/scenegraph/graphic/chart.d.ts +1 -0
  286. package/es/scenegraph/graphic/chart.js.map +1 -1
  287. package/es/scenegraph/graphic/contributions/chart-render.js +7 -2
  288. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  289. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  290. package/es/scenegraph/graphic/group.d.ts +4 -0
  291. package/es/scenegraph/graphic/group.js +6 -0
  292. package/es/scenegraph/graphic/group.js.map +1 -1
  293. package/es/scenegraph/graphic/text.js +7 -7
  294. package/es/scenegraph/graphic/text.js.map +1 -1
  295. package/es/scenegraph/group-creater/cell-helper.d.ts +3 -4
  296. package/es/scenegraph/group-creater/cell-helper.js +28 -17
  297. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  298. package/es/scenegraph/group-creater/cell-type/chart-cell.js +6 -4
  299. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  300. package/es/scenegraph/group-creater/cell-type/image-cell.js +12 -2
  301. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  302. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +13 -10
  303. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  304. package/es/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
  305. package/es/scenegraph/group-creater/cell-type/text-cell.js +7 -4
  306. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  307. package/es/scenegraph/group-creater/cell-type/video-cell.js +1 -1
  308. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  309. package/es/scenegraph/group-creater/column-helper.d.ts +3 -3
  310. package/es/scenegraph/group-creater/column-helper.js +25 -10
  311. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  312. package/es/scenegraph/group-creater/column.d.ts +0 -6
  313. package/es/scenegraph/group-creater/column.js +3 -12
  314. package/es/scenegraph/group-creater/column.js.map +1 -1
  315. package/es/scenegraph/group-creater/progress/proxy.d.ts +0 -2
  316. package/es/scenegraph/group-creater/progress/proxy.js +22 -21
  317. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  318. package/es/scenegraph/layout/auto-height.js +1 -1
  319. package/es/scenegraph/layout/auto-height.js.map +1 -1
  320. package/es/scenegraph/layout/auto-width.js +2 -2
  321. package/es/scenegraph/layout/auto-width.js.map +1 -1
  322. package/es/scenegraph/layout/compute-col-width.d.ts +1 -1
  323. package/es/scenegraph/layout/compute-col-width.js +30 -10
  324. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  325. package/es/scenegraph/layout/frozen.d.ts +3 -0
  326. package/es/scenegraph/layout/frozen.js +58 -0
  327. package/es/scenegraph/layout/frozen.js.map +1 -0
  328. package/es/scenegraph/layout/move-cell.js +5 -1
  329. package/es/scenegraph/layout/move-cell.js.map +1 -1
  330. package/es/scenegraph/layout/update-cell.js +4 -4
  331. package/es/scenegraph/layout/update-cell.js.map +1 -1
  332. package/es/scenegraph/layout/update-height.js +5 -5
  333. package/es/scenegraph/layout/update-height.js.map +1 -1
  334. package/es/scenegraph/layout/update-row.d.ts +3 -0
  335. package/es/scenegraph/layout/update-row.js +73 -0
  336. package/es/scenegraph/layout/update-row.js.map +1 -0
  337. package/es/scenegraph/layout/update-width.js +6 -6
  338. package/es/scenegraph/layout/update-width.js.map +1 -1
  339. package/es/scenegraph/refresh-node/update-chart.d.ts +2 -0
  340. package/es/scenegraph/refresh-node/update-chart.js +20 -0
  341. package/es/scenegraph/refresh-node/update-chart.js.map +1 -0
  342. package/es/scenegraph/scenegraph.d.ts +15 -3
  343. package/es/scenegraph/scenegraph.js +92 -94
  344. package/es/scenegraph/scenegraph.js.map +1 -1
  345. package/es/scenegraph/select/create-select-border.js +1 -0
  346. package/es/scenegraph/select/create-select-border.js.map +1 -1
  347. package/es/scenegraph/stick-text/index.js +52 -40
  348. package/es/scenegraph/stick-text/index.js.map +1 -1
  349. package/es/scenegraph/style/frame-border.d.ts +1 -1
  350. package/es/scenegraph/style/frame-border.js +9 -9
  351. package/es/scenegraph/style/frame-border.js.map +1 -1
  352. package/es/scenegraph/utils/deal-promise-data.d.ts +2 -0
  353. package/es/scenegraph/utils/deal-promise-data.js +8 -0
  354. package/es/scenegraph/utils/deal-promise-data.js.map +1 -0
  355. package/es/scenegraph/utils/empty-group.d.ts +2 -0
  356. package/es/scenegraph/utils/empty-group.js +6 -0
  357. package/es/scenegraph/utils/empty-group.js.map +1 -0
  358. package/es/scenegraph/utils/get-hierarchy-offset.d.ts +2 -0
  359. package/es/scenegraph/utils/get-hierarchy-offset.js +19 -0
  360. package/es/scenegraph/utils/get-hierarchy-offset.js.map +1 -0
  361. package/es/scenegraph/utils/padding.d.ts +1 -1
  362. package/es/scenegraph/utils/padding.js +1 -1
  363. package/es/scenegraph/utils/padding.js.map +1 -1
  364. package/es/scenegraph/utils/text-icon-layout.d.ts +3 -2
  365. package/es/scenegraph/utils/text-icon-layout.js +27 -19
  366. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  367. package/es/scenegraph/utils/text-pos.js +2 -2
  368. package/es/scenegraph/utils/text-pos.js.map +1 -1
  369. package/es/state/cell-move/adjust-header.js +9 -2
  370. package/es/state/cell-move/adjust-header.js.map +1 -1
  371. package/es/state/cell-move/index.js +9 -3
  372. package/es/state/cell-move/index.js.map +1 -1
  373. package/es/state/frozen/index.d.ts +2 -0
  374. package/es/state/{pin → frozen}/index.js +1 -1
  375. package/es/state/frozen/index.js.map +1 -0
  376. package/es/state/state.d.ts +1 -1
  377. package/es/state/state.js +16 -12
  378. package/es/state/state.js.map +1 -1
  379. package/es/themes/ARCO.js +1 -1
  380. package/es/themes/ARCO.js.map +1 -1
  381. package/es/themes/BRIGHT.js +1 -1
  382. package/es/themes/BRIGHT.js.map +1 -1
  383. package/es/themes/DARK.js +1 -1
  384. package/es/themes/DARK.js.map +1 -1
  385. package/es/themes/DEFAULT.js +1 -1
  386. package/es/themes/DEFAULT.js.map +1 -1
  387. package/es/themes/theme.d.ts +1 -1
  388. package/es/themes/theme.js +6 -6
  389. package/es/themes/theme.js.map +1 -1
  390. package/es/tools/LimitPromiseQueue.js +1 -2
  391. package/es/tools/NumberMap.js +1 -1
  392. package/es/tools/Rect.js +1 -1
  393. package/es/tools/calc.js +1 -1
  394. package/es/tools/debounce.js +1 -1
  395. package/es/tools/diff-cell.d.ts +10 -0
  396. package/es/tools/diff-cell.js +42 -0
  397. package/es/tools/diff-cell.js.map +1 -0
  398. package/es/tools/dom.js +1 -1
  399. package/es/tools/env.js +1 -1
  400. package/es/tools/helper.d.ts +11 -0
  401. package/es/tools/helper.js +4 -0
  402. package/es/tools/helper.js.map +1 -1
  403. package/es/tooltip/BaseTooltip.js +1 -1
  404. package/es/tooltip/Tooltip.js +2 -1
  405. package/es/tooltip/TooltipHandler.js +1 -1
  406. package/es/ts-types/base-table.d.ts +8 -2
  407. package/es/ts-types/base-table.js +1 -1
  408. package/es/ts-types/base-table.js.map +1 -1
  409. package/es/ts-types/common.js +1 -1
  410. package/es/ts-types/customElement.d.ts +11 -2
  411. package/es/ts-types/customElement.js +1 -1
  412. package/es/ts-types/customElement.js.map +1 -1
  413. package/es/ts-types/customLayout.js +1 -1
  414. package/es/ts-types/events.js +1 -1
  415. package/es/ts-types/icon.d.ts +4 -5
  416. package/es/ts-types/icon.js +6 -6
  417. package/es/ts-types/icon.js.map +1 -1
  418. package/es/ts-types/list-table/define/basic-define.d.ts +4 -1
  419. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  420. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  421. package/es/ts-types/theme.d.ts +1 -1
  422. package/es/ts-types/theme.js.map +1 -1
  423. package/package.json +9 -9
  424. package/cjs/scenegraph/component/menu.d.ts +0 -41
  425. package/cjs/scenegraph/graphic/text.d.ts +0 -16
  426. package/cjs/state/pin/index.d.ts +0 -2
  427. package/cjs/state/pin/index.js.map +0 -1
  428. package/es/scenegraph/component/menu.d.ts +0 -41
  429. package/es/scenegraph/graphic/text.d.ts +0 -16
  430. package/es/state/pin/index.d.ts +0 -2
  431. package/es/state/pin/index.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { isValid } from "@visactor/vutils";
2
+
3
+ import { TABLE_EVENT_TYPE } from "../../core/TABLE_EVENT_TYPE";
4
+
5
+ import { handleWhell } from "../scroll";
6
+
7
+ import { browser } from "../../tools/helper";
8
+
9
+ export function bindContainerDomListener(eventManeger) {
10
+ const table = eventManeger.table, stateManeger = table.stateManeger, handler = table.internalProps.handler;
11
+ handler.on(table.getElement(), "blur", (e => {
12
+ console.log("blur"), eventManeger.dealTableHover();
13
+ })), handler.on(table.getElement(), "wheel", (e => {
14
+ handleWhell(e, stateManeger);
15
+ })), handler.on(table.getElement(), "keydown", (e => {
16
+ var _a, _b;
17
+ if ((null === (_a = table.keyboardOptions) || void 0 === _a ? void 0 : _a.selectAllOnCtrlA) && "a" === e.key && (e.ctrlKey || e.metaKey) && (e.preventDefault(),
18
+ eventManeger.deelTableSelectAll()), table.hasListeners(TABLE_EVENT_TYPE.KEYDOWN)) {
19
+ const cellsEvent = {
20
+ keyCode: null !== (_b = e.keyCode) && void 0 !== _b ? _b : e.which,
21
+ code: e.code,
22
+ event: e,
23
+ cells: table.getSelectedCellInfos(),
24
+ scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth
25
+ };
26
+ table.fireListeners(TABLE_EVENT_TYPE.KEYDOWN, cellsEvent);
27
+ }
28
+ })), handler.on(table.getElement(), "copy", (e => {
29
+ var _a;
30
+ if (null === (_a = table.keyboardOptions) || void 0 === _a ? void 0 : _a.copySelected) {
31
+ const data = table.getCopyValue();
32
+ isValid(data) && (e.preventDefault(), browser.IE ? window.clipboardData.setData("Text", data) : e.clipboardData.setData("text/plain", data));
33
+ }
34
+ })), handler.on(table.getElement(), "contextmenu", (e => {
35
+ e.preventDefault();
36
+ })), handler.on(table.getParentElement(), "resize", (() => {
37
+ table.resize();
38
+ }));
39
+ }
40
+ //# sourceMappingURL=container-dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["event/listener/container-dom.ts"],"names":[],"mappings":"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","file":"container-dom.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { EventHandler } from '../EventHandler';\nimport type { KeydownEvent } from '../../ts-types';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { handleWhell } from '../scroll';\nimport { browser } from '../../tools/helper';\nimport type { EventManeger } from '../event';\n\nexport function bindContainerDomListener(eventManeger: EventManeger) {\n const table = eventManeger.table;\n const stateManeger = table.stateManeger;\n const handler: EventHandler = table.internalProps.handler;\n\n handler.on(table.getElement(), 'blur', (e: MouseEvent) => {\n console.log('blur');\n eventManeger.dealTableHover();\n // eventManeger.dealTableSelect();\n });\n\n handler.on(table.getElement(), 'wheel', (e: WheelEvent) => {\n handleWhell(e, stateManeger);\n });\n\n // 监听键盘事件\n handler.on(table.getElement(), 'keydown', (e: KeyboardEvent) => {\n if (table.keyboardOptions?.selectAllOnCtrlA) {\n // 处理全选\n if (e.key === 'a' && (e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n //全选\n eventManeger.deelTableSelectAll();\n }\n }\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.KEYDOWN)) {\n const cellsEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e,\n cells: table.getSelectedCellInfos(),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n table.fireListeners(TABLE_EVENT_TYPE.KEYDOWN, cellsEvent);\n }\n });\n\n handler.on(table.getElement(), 'copy', (e: KeyboardEvent) => {\n if (table.keyboardOptions?.copySelected) {\n const data = table.getCopyValue();\n if (isValid(data)) {\n e.preventDefault();\n if (browser.IE) {\n (window as any).clipboardData.setData('Text', data); // IE\n } else {\n (e as any).clipboardData.setData('text/plain', data); // Chrome, Firefox\n }\n }\n }\n });\n\n handler.on(table.getElement(), 'contextmenu', (e: any) => {\n e.preventDefault();\n });\n\n handler.on(table.getParentElement(), 'resize', () => {\n table.resize();\n });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { EventManeger } from '../event';
2
+ export declare function bindScrollBarListener(eventManeger: EventManeger): void;
@@ -0,0 +1,37 @@
1
+ import { throttle } from "../../tools/util";
2
+
3
+ import { InteractionState } from "../../ts-types";
4
+
5
+ export function bindScrollBarListener(eventManeger) {
6
+ const table = eventManeger.table, stateManeger = table.stateManeger, scenegraph = table.scenegraph;
7
+ scenegraph.component.vScrollBar.addEventListener("pointerover", (e => {
8
+ stateManeger.showVerticalScrollBar();
9
+ })), scenegraph.component.hScrollBar.addEventListener("pointerover", (e => {
10
+ stateManeger.showHorizontalScrollBar();
11
+ })), scenegraph.component.vScrollBar.addEventListener("pointerout", (e => {
12
+ stateManeger.interactionState !== InteractionState.scrolling && stateManeger.hideVerticalScrollBar();
13
+ })), scenegraph.component.hScrollBar.addEventListener("pointerout", (e => {
14
+ stateManeger.interactionState !== InteractionState.scrolling && stateManeger.hideHorizontalScrollBar();
15
+ })), scenegraph.component.vScrollBar._slider.addEventListener("pointerdown", (() => {
16
+ stateManeger.interactionState !== InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.scrolling);
17
+ })), scenegraph.component.vScrollBar.addEventListener("pointerup", (() => {
18
+ stateManeger.interactionState === InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.default);
19
+ })), scenegraph.component.vScrollBar.addEventListener("pointerupoutside", (() => {
20
+ stateManeger.interactionState === InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.default);
21
+ })), scenegraph.component.hScrollBar._slider.addEventListener("pointerdown", (() => {
22
+ stateManeger.interactionState !== InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.scrolling);
23
+ })), scenegraph.component.hScrollBar.addEventListener("pointerup", (() => {
24
+ stateManeger.interactionState === InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.default);
25
+ })), scenegraph.component.hScrollBar.addEventListener("pointerupoutside", (() => {
26
+ stateManeger.interactionState === InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.default);
27
+ }));
28
+ const throttleVerticalWheel = throttle(stateManeger.updateVerticalScrollBar, 20), throttleHorizontalWheel = throttle(stateManeger.updateHorizontalScrollBar, 20);
29
+ scenegraph.component.vScrollBar.addEventListener("scroll", (e => {
30
+ const ratio = e.detail.value[0] / (1 - e.detail.value[1] + e.detail.value[0]);
31
+ throttleVerticalWheel(ratio, e);
32
+ })), scenegraph.component.hScrollBar.addEventListener("scroll", (e => {
33
+ const ratio = e.detail.value[0] / (1 - e.detail.value[1] + e.detail.value[0]);
34
+ throttleHorizontalWheel(ratio);
35
+ }));
36
+ }
37
+ //# sourceMappingURL=scroll-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["event/listener/scroll-bar.ts"],"names":[],"mappings":"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","file":"scroll-bar.js","sourcesContent":["import { throttle } from '../../tools/util';\nimport { InteractionState } from '../../ts-types';\nimport type { EventManeger } from '../event';\n\nexport function bindScrollBarListener(eventManeger: EventManeger) {\n const table = eventManeger.table;\n const stateManeger = table.stateManeger;\n const scenegraph = table.scenegraph;\n\n // 监听滚动条组件pointover事件\n scenegraph.component.vScrollBar.addEventListener('pointerover', (e: any) => {\n stateManeger.showVerticalScrollBar();\n });\n scenegraph.component.hScrollBar.addEventListener('pointerover', (e: any) => {\n stateManeger.showHorizontalScrollBar();\n });\n scenegraph.component.vScrollBar.addEventListener('pointerout', (e: any) => {\n if (stateManeger.interactionState === InteractionState.scrolling) {\n return;\n }\n stateManeger.hideVerticalScrollBar();\n });\n scenegraph.component.hScrollBar.addEventListener('pointerout', (e: any) => {\n if (stateManeger.interactionState === InteractionState.scrolling) {\n return;\n }\n stateManeger.hideHorizontalScrollBar();\n });\n // 目前ScrollBar的pointerdown事件回调内有e.stopPropagation,因此无法通过vScrollBar监听,先使用_slider监听\n (scenegraph.component.vScrollBar as any)._slider.addEventListener('pointerdown', () => {\n if (stateManeger.interactionState !== InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.scrolling);\n }\n });\n scenegraph.component.vScrollBar.addEventListener('pointerup', () => {\n if (stateManeger.interactionState === InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.default);\n }\n });\n scenegraph.component.vScrollBar.addEventListener('pointerupoutside', () => {\n if (stateManeger.interactionState === InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.default);\n }\n });\n // 目前ScrollBar的pointerdown事件回调内有e.stopPropagation,因此无法通过hScrollBar监听,先使用_slider监听\n (scenegraph.component.hScrollBar as any)._slider.addEventListener('pointerdown', () => {\n if (stateManeger.interactionState !== InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.scrolling);\n }\n });\n scenegraph.component.hScrollBar.addEventListener('pointerup', () => {\n if (stateManeger.interactionState === InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.default);\n }\n });\n scenegraph.component.hScrollBar.addEventListener('pointerupoutside', () => {\n if (stateManeger.interactionState === InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.default);\n }\n });\n\n const throttleVerticalWheel = throttle(stateManeger.updateVerticalScrollBar, 20);\n const throttleHorizontalWheel = throttle(stateManeger.updateHorizontalScrollBar, 20);\n\n // 监听滚动条组件scroll事件\n scenegraph.component.vScrollBar.addEventListener('scroll', (e: any) => {\n const ratio = e.detail.value[0] / (1 - e.detail.value[1] + e.detail.value[0]);\n throttleVerticalWheel(ratio, e);\n });\n\n scenegraph.component.hScrollBar.addEventListener('scroll', (e: any) => {\n const ratio = e.detail.value[0] / (1 - e.detail.value[1] + e.detail.value[0]);\n throttleHorizontalWheel(ratio);\n });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { EventManeger } from '../event';
2
+ export declare function bindTableGroupListener(eventManeger: EventManeger): void;
@@ -0,0 +1,265 @@
1
+ import { InteractionState } from "../../ts-types";
2
+
3
+ import { getCellEventArgsSet } from "../util";
4
+
5
+ import { TABLE_EVENT_TYPE } from "../../core/TABLE_EVENT_TYPE";
6
+
7
+ import { isValid } from "@visactor/vutils";
8
+
9
+ import { getIconAndPositionFromTarget } from "../../scenegraph/utils/icon";
10
+
11
+ import { cellInRanges } from "../../tools/helper";
12
+
13
+ import { Rect } from "../../tools/Rect";
14
+
15
+ export function bindTableGroupListener(eventManeger) {
16
+ const table = eventManeger.table, stateManeger = table.stateManeger;
17
+ table.scenegraph.tableGroup.addEventListener("pointermove", (e => {
18
+ var _a, _b, _c, _d;
19
+ eventManeger.touchSetTimeout && (clearTimeout(eventManeger.touchSetTimeout), eventManeger.touchSetTimeout = void 0);
20
+ const eventArgsSet = getCellEventArgsSet(e);
21
+ if (stateManeger.interactionState !== InteractionState.scrolling) if (stateManeger.interactionState !== InteractionState.grabing) {
22
+ if (eventManeger.checkColumnResize(eventArgsSet) ? stateManeger.updateCursor("col-resize") : stateManeger.updateCursor(),
23
+ table.hasListeners(TABLE_EVENT_TYPE.MOUSELEAVE_CELL)) {
24
+ const cellGoup = null === (_a = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target;
25
+ "cell" !== (null == cellGoup ? void 0 : cellGoup.role) || -1 === table.stateManeger.hover.cellPos.col || -1 === table.stateManeger.hover.cellPos.row || cellGoup.col === table.stateManeger.hover.cellPos.col && cellGoup.row === table.stateManeger.hover.cellPos.row || table.fireListeners(TABLE_EVENT_TYPE.MOUSELEAVE_CELL, {
26
+ col: table.stateManeger.hover.cellPos.col,
27
+ row: table.stateManeger.hover.cellPos.row,
28
+ cellRange: table.getCellRangeRelativeRect({
29
+ col: table.stateManeger.hover.cellPos.col,
30
+ row: table.stateManeger.hover.cellPos.row
31
+ }),
32
+ scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,
33
+ event: e.nativeEvent
34
+ });
35
+ }
36
+ if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEENTER_CELL)) {
37
+ const cellGoup = null === (_b = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target;
38
+ "cell" === (null == cellGoup ? void 0 : cellGoup.role) && isValid(cellGoup.col) && isValid(cellGoup.row) && (cellGoup.col !== table.stateManeger.hover.cellPos.col || cellGoup.row !== table.stateManeger.hover.cellPos.row) && table.fireListeners(TABLE_EVENT_TYPE.MOUSEENTER_CELL, {
39
+ col: cellGoup.col,
40
+ row: cellGoup.row,
41
+ cellRange: table.getCellRangeRelativeRect({
42
+ col: cellGoup.col,
43
+ row: cellGoup.row
44
+ }),
45
+ scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,
46
+ event: e.nativeEvent
47
+ });
48
+ }
49
+ if (eventManeger.dealIconHover(eventArgsSet), eventManeger.dealTableHover(eventArgsSet),
50
+ eventArgsSet.eventArgs && table.hasListeners(TABLE_EVENT_TYPE.MOUSEMOVE_CELL)) {
51
+ let icon, position;
52
+ if (null === (_c = eventArgsSet.eventArgs) || void 0 === _c ? void 0 : _c.target) {
53
+ const iconInfo = getIconAndPositionFromTarget(null === (_d = eventArgsSet.eventArgs) || void 0 === _d ? void 0 : _d.target);
54
+ iconInfo && (icon = iconInfo.icon, position = iconInfo.position);
55
+ }
56
+ table.fireListeners(TABLE_EVENT_TYPE.MOUSEMOVE_CELL, {
57
+ col: eventArgsSet.eventArgs.col,
58
+ row: eventArgsSet.eventArgs.row,
59
+ x: eventArgsSet.abstractPos.x,
60
+ y: eventArgsSet.abstractPos.y,
61
+ event: e.nativeEvent,
62
+ targetIcon: icon ? {
63
+ name: icon.name,
64
+ position: position,
65
+ funcType: icon.attribute.funcType
66
+ } : void 0
67
+ });
68
+ }
69
+ } else stateManeger.isResizeCol() ? (eventManeger.dealColumnResize(eventArgsSet),
70
+ eventArgsSet.eventArgs && table.hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN) && table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN, {
71
+ col: table.stateManeger.columnResize.col,
72
+ colWidth: table.getColWidth(table.stateManeger.columnResize.col)
73
+ })) : stateManeger.isMoveCol() ? eventManeger.dealColumnMover(eventArgsSet) : eventManeger.dealTableSelect(eventArgsSet);
74
+ })), table.scenegraph.tableGroup.addEventListener("pointerout", (e => {
75
+ var _a;
76
+ const eventArgsSet = getCellEventArgsSet(e), cellGoup = null === (_a = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target;
77
+ "table" === (null == cellGoup ? void 0 : cellGoup.role) && eventManeger.dealTableHover();
78
+ })), table.scenegraph.tableGroup.addEventListener("pointerover", (e => {
79
+ var _a;
80
+ const eventArgsSet = getCellEventArgsSet(e), cellGoup = null === (_a = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target;
81
+ if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEOVER_CHART_SYMBOL) && "symbol" === cellGoup.type) {
82
+ const cellGroup = e.composedPath().find((p => "cell" === p.roll));
83
+ if (cellGroup) {
84
+ const {col: col, row: row} = cellGroup, eventInfo = {
85
+ col: col,
86
+ row: row,
87
+ field: table.getHeaderField(col, row),
88
+ value: table.getCellValue(col, row),
89
+ dataValue: table.getCellOriginValue(col, row),
90
+ cellHeaderPaths: table.internalProps.layoutMap.getCellHeaderPaths(col, row),
91
+ caption: table.getBodyColumnDefine(col, row).caption,
92
+ cellRange: table.getCellRelativeRect(col, row),
93
+ event: e.nativeEvent,
94
+ sparkline: {
95
+ pointData: void 0
96
+ },
97
+ scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth
98
+ };
99
+ table.fireListeners(TABLE_EVENT_TYPE.MOUSEOVER_CHART_SYMBOL, eventInfo);
100
+ }
101
+ }
102
+ })), table.scenegraph.tableGroup.addEventListener("pointerleave", (e => {
103
+ stateManeger.updateInteractionState(InteractionState.default), eventManeger.dealTableHover(),
104
+ stateManeger.updateCursor();
105
+ const target = e.target;
106
+ target && !target.isDescendantsOf(table.scenegraph.tableGroup) && table.fireListeners(TABLE_EVENT_TYPE.MOUSELEAVE_TABLE, {
107
+ col: -1,
108
+ row: -1,
109
+ event: e.nativeEvent
110
+ });
111
+ })), table.scenegraph.tableGroup.addEventListener("pointerupoutside", (e => {
112
+ console.log("pointerupoutside"), stateManeger.updateInteractionState(InteractionState.default),
113
+ eventManeger.dealTableHover(), eventManeger.dealTableSelect();
114
+ })), table.scenegraph.tableGroup.addEventListener("pointerdown", (e => {
115
+ var _a, _b, _c, _d;
116
+ if (0 !== e.button) return;
117
+ const eventArgsSet = getCellEventArgsSet(e);
118
+ if (stateManeger.interactionState !== InteractionState.default) return;
119
+ stateManeger.menu.isShow && eventArgsSet.eventArgs && eventArgsSet.eventArgs.target !== (null === (_a = stateManeger.residentHoverIcon) || void 0 === _a ? void 0 : _a.icon) && stateManeger.hideMenu();
120
+ if (!((null === (_d = null === (_c = null === (_b = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target) || void 0 === _c ? void 0 : _c.role) || void 0 === _d ? void 0 : _d.startsWith("icon")) ? eventArgsSet.eventArgs.target : void 0)) if ("touch" === e.pointerType) eventManeger.touchEnd = !1,
121
+ eventManeger.touchSetTimeout = setTimeout((() => {
122
+ eventManeger.isTouchdown = !1, eventManeger.touchMove = !0, (eventManeger.touchEnd || !eventManeger.checkColumnResize(eventArgsSet, !0)) && (eventManeger.touchEnd || !eventManeger.chechColumnMover(eventArgsSet)) ? eventManeger.dealTableSelect(eventArgsSet) && !eventManeger.touchEnd && stateManeger.updateInteractionState(InteractionState.grabing) : stateManeger.updateInteractionState(InteractionState.grabing);
123
+ }), 500); else {
124
+ if (eventManeger.checkColumnResize(eventArgsSet, !0)) return void stateManeger.updateInteractionState(InteractionState.grabing);
125
+ if (eventManeger.chechColumnMover(eventArgsSet)) return void stateManeger.updateInteractionState(InteractionState.grabing);
126
+ eventManeger.dealTableSelect(eventArgsSet) && stateManeger.updateInteractionState(InteractionState.grabing);
127
+ }
128
+ if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL)) {
129
+ const eventArgsSet = getCellEventArgsSet(e);
130
+ eventArgsSet.eventArgs && table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL, {
131
+ col: eventArgsSet.eventArgs.col,
132
+ row: eventArgsSet.eventArgs.row,
133
+ event: e.nativeEvent
134
+ });
135
+ }
136
+ })), table.scenegraph.tableGroup.addEventListener("pointerup", (e => {
137
+ if (0 === e.button) {
138
+ if ("grabing" === stateManeger.interactionState) {
139
+ if (stateManeger.updateInteractionState(InteractionState.default), stateManeger.isResizeCol()) {
140
+ if (table.stateManeger.endResizeCol(), table.hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END)) {
141
+ const columns = [];
142
+ for (let col = 0; col < table.colCount; col++) columns.push(table.getColWidth(col));
143
+ table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, {
144
+ col: table.stateManeger.columnResize.col,
145
+ columns: columns
146
+ });
147
+ }
148
+ } else if (stateManeger.isMoveCol()) {
149
+ table.stateManeger.endMoveCol();
150
+ const eventArgsSet = getCellEventArgsSet(e);
151
+ eventArgsSet.eventArgs && table.hasListeners(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION) && table.fireListeners(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, {
152
+ target: {
153
+ col: eventArgsSet.eventArgs.col,
154
+ row: eventArgsSet.eventArgs.row
155
+ },
156
+ source: {
157
+ col: table.stateManeger.columnMove.colSource,
158
+ row: table.stateManeger.columnMove.colSource
159
+ }
160
+ });
161
+ } else if (stateManeger.isSelecting()) {
162
+ table.stateManeger.endSelectCells();
163
+ const eventArgsSet = getCellEventArgsSet(e);
164
+ if (eventArgsSet.eventArgs && table.hasListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END)) {
165
+ const cellsEvent = {
166
+ event: e.nativeEvent,
167
+ cells: [],
168
+ col: eventArgsSet.eventArgs.target.col,
169
+ row: eventArgsSet.eventArgs.target.row,
170
+ scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth
171
+ };
172
+ cellsEvent.cells = table.getSelectedCellInfos(), table.fireListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END, cellsEvent);
173
+ }
174
+ }
175
+ } else stateManeger.interactionState === InteractionState.scrolling && stateManeger.updateInteractionState(InteractionState.default);
176
+ if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEUP_CELL)) {
177
+ const eventArgsSet = getCellEventArgsSet(e);
178
+ eventArgsSet.eventArgs && table.fireListeners(TABLE_EVENT_TYPE.MOUSEUP_CELL, {
179
+ col: eventArgsSet.eventArgs.col,
180
+ row: eventArgsSet.eventArgs.row,
181
+ event: e.nativeEvent
182
+ });
183
+ }
184
+ }
185
+ })), table.scenegraph.tableGroup.addEventListener("rightdown", (e => {
186
+ var _a, _b;
187
+ const eventArgsSet = getCellEventArgsSet(e);
188
+ if (eventArgsSet.eventArgs) {
189
+ stateManeger.triggerContextMenu(eventArgsSet.eventArgs.col, eventArgsSet.eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);
190
+ const {col: col, row: row} = eventArgsSet.eventArgs;
191
+ if (table.hasListeners(TABLE_EVENT_TYPE.CONTEXTMENU_CELL)) {
192
+ const cellInfo = table.getCellInfo(col, row);
193
+ let icon, position;
194
+ if (null === (_a = eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target) {
195
+ const iconInfo = getIconAndPositionFromTarget(null === (_b = eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target);
196
+ iconInfo && (icon = iconInfo.icon, position = iconInfo.position);
197
+ }
198
+ const cellsEvent = Object.assign(Object.assign({}, cellInfo), {
199
+ event: e.nativeEvent,
200
+ cells: [],
201
+ targetIcon: icon ? {
202
+ name: icon.name,
203
+ position: position,
204
+ funcType: icon.attribute.funcType
205
+ } : void 0
206
+ });
207
+ cellInRanges(table.stateManeger.select.ranges, col, row) ? cellsEvent.cells = table.getSelectedCellInfos() : cellsEvent.cells = [ [ cellInfo ] ],
208
+ table.fireListeners(TABLE_EVENT_TYPE.CONTEXTMENU_CELL, cellsEvent);
209
+ }
210
+ }
211
+ })), table.scenegraph.tableGroup.addEventListener("click", (e => {
212
+ var _a, _b;
213
+ if (console.log("click", e), table.stateManeger.columnResize.resizing || table.stateManeger.columnMove.moving) return;
214
+ const eventArgsSet = getCellEventArgsSet(e);
215
+ if (eventManeger.dealIconClick(e, eventArgsSet), !(null == eventArgsSet ? void 0 : eventArgsSet.eventArgs)) return;
216
+ const {col: col, row: row} = eventArgsSet.eventArgs;
217
+ if (table.hasListeners(TABLE_EVENT_TYPE.CLICK_CELL)) {
218
+ const cellInfo = table.getCellInfo(col, row);
219
+ let icon, position;
220
+ if (null === (_a = eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target) {
221
+ const iconInfo = getIconAndPositionFromTarget(null === (_b = eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target);
222
+ iconInfo && (icon = iconInfo.icon, position = iconInfo.position);
223
+ }
224
+ const cellsEvent = Object.assign(Object.assign({}, cellInfo), {
225
+ event: e.nativeEvent,
226
+ cells: [],
227
+ targetIcon: icon ? {
228
+ name: icon.name,
229
+ position: position,
230
+ funcType: icon.attribute.funcType
231
+ } : void 0
232
+ });
233
+ table.fireListeners(TABLE_EVENT_TYPE.CLICK_CELL, cellsEvent);
234
+ }
235
+ })), table.scenegraph.stage.addEventListener("click", (e => {
236
+ console.log("stage click");
237
+ const target = e.target;
238
+ target && !target.isDescendantsOf(table.scenegraph.tableGroup) && target !== table.scenegraph.tableGroup && (console.log("pointerup outside table"),
239
+ stateManeger.updateInteractionState(InteractionState.default), eventManeger.dealTableHover(),
240
+ eventManeger.dealTableSelect(), stateManeger.updateCursor());
241
+ })), table.scenegraph.tableGroup.addEventListener("dblclick", (e => {
242
+ var _a, _b;
243
+ const eventArgsSet = getCellEventArgsSet(e), bounds = eventArgsSet.eventArgs.targetCell.globalAABBBounds, {col: col, row: row} = eventArgsSet.eventArgs, value = table.getCellValue(col, row);
244
+ if (table.internalProps.focusControl.setFocusRect(new Rect(bounds.x1 + table.scrollLeft, bounds.y1 + table.scrollTop, bounds.x2 - bounds.x1, bounds.y2 - bounds.y1), value),
245
+ table.hasListeners(TABLE_EVENT_TYPE.DBLCLICK_CELL)) {
246
+ const cellInfo = table.getCellInfo(col, row);
247
+ let icon, position;
248
+ if (null === (_a = eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target) {
249
+ const iconInfo = getIconAndPositionFromTarget(null === (_b = eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target);
250
+ iconInfo && (icon = iconInfo.icon, position = iconInfo.position);
251
+ }
252
+ const cellsEvent = Object.assign(Object.assign({}, cellInfo), {
253
+ event: e.nativeEvent,
254
+ cells: [],
255
+ targetIcon: icon ? {
256
+ name: icon.name,
257
+ position: position,
258
+ funcType: icon.attribute.funcType
259
+ } : void 0
260
+ });
261
+ table.fireListeners(TABLE_EVENT_TYPE.DBLCLICK_CELL, cellsEvent);
262
+ }
263
+ }));
264
+ }
265
+ //# sourceMappingURL=table-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["event/listener/table-group.ts"],"names":[],"mappings":"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","file":"table-group.js","sourcesContent":["import type { FederatedPointerEvent } from '@visactor/vrender';\nimport type { MousePointerMultiCellEvent, MousePointerSparklineEvent } from '../../ts-types';\nimport { InteractionState } from '../../ts-types';\nimport type { SceneEvent } from '../util';\nimport { getCellEventArgsSet } from '../util';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport type { Group } from '../../scenegraph/graphic/group';\nimport { isValid } from '@visactor/vutils';\nimport { getIconAndPositionFromTarget } from '../../scenegraph/utils/icon';\nimport { cellInRanges } from '../../tools/helper';\nimport { Rect } from '../../tools/Rect';\nimport type { EventManeger } from '../event';\n\nexport function bindTableGroupListener(eventManeger: EventManeger) {\n const table = eventManeger.table;\n const stateManeger = table.stateManeger;\n table.scenegraph.tableGroup.addEventListener('pointermove', (e: FederatedPointerEvent) => {\n // console.log('scenegraph pointermove',e.type);\n // const eventArgsSet: SceneEvent = (table as any).getCellEventArgsSet(e);\n if (eventManeger.touchSetTimeout) {\n clearTimeout(eventManeger.touchSetTimeout);\n eventManeger.touchSetTimeout = undefined;\n }\n const eventArgsSet = getCellEventArgsSet(e);\n\n if (stateManeger.interactionState === InteractionState.scrolling) {\n return;\n }\n if (stateManeger.interactionState === InteractionState.grabing) {\n if (stateManeger.isResizeCol()) {\n eventManeger.dealColumnResize(eventArgsSet);\n if (eventArgsSet.eventArgs && (table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN, {\n col: table.stateManeger.columnResize.col,\n colWidth: table.getColWidth(table.stateManeger.columnResize.col)\n });\n }\n } else if (stateManeger.isMoveCol()) {\n eventManeger.dealColumnMover(eventArgsSet);\n } else {\n eventManeger.dealTableSelect(eventArgsSet);\n }\n return;\n }\n // if (stateManeger.menu.isShow && stateManeger.menu.bounds.inPoint(e.x, e.y)) {\n // eventManeger.dealMenuHover(eventArgsSet);\n // return;\n // }\n // 更新列宽调整pointer\n if (eventManeger.checkColumnResize(eventArgsSet)) {\n stateManeger.updateCursor('col-resize');\n } else {\n stateManeger.updateCursor();\n }\n\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.MOUSELEAVE_CELL)) {\n const cellGoup = eventArgsSet?.eventArgs?.target as unknown as Group;\n if (\n cellGoup?.role === 'cell' &&\n table.stateManeger.hover.cellPos.col !== -1 &&\n table.stateManeger.hover.cellPos.row !== -1 &&\n (cellGoup.col !== table.stateManeger.hover.cellPos.col || cellGoup.row !== table.stateManeger.hover.cellPos.row)\n ) {\n table.fireListeners(TABLE_EVENT_TYPE.MOUSELEAVE_CELL, {\n col: table.stateManeger.hover.cellPos.col,\n row: table.stateManeger.hover.cellPos.row,\n cellRange: table.getCellRangeRelativeRect({\n col: table.stateManeger.hover.cellPos.col,\n row: table.stateManeger.hover.cellPos.row\n }),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,\n event: e.nativeEvent\n });\n }\n }\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.MOUSEENTER_CELL)) {\n const cellGoup = eventArgsSet?.eventArgs?.target as unknown as Group;\n if (\n cellGoup?.role === 'cell' &&\n isValid(cellGoup.col) &&\n isValid(cellGoup.row) &&\n (cellGoup.col !== table.stateManeger.hover.cellPos.col || cellGoup.row !== table.stateManeger.hover.cellPos.row)\n ) {\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEENTER_CELL, {\n col: cellGoup.col,\n row: cellGoup.row,\n cellRange: table.getCellRangeRelativeRect({\n col: cellGoup.col,\n row: cellGoup.row\n }),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,\n event: e.nativeEvent\n });\n }\n }\n eventManeger.dealIconHover(eventArgsSet);\n eventManeger.dealTableHover(eventArgsSet);\n\n // 触发MOUSEMOVE_CELL\n if (eventArgsSet.eventArgs && (table as any).hasListeners(TABLE_EVENT_TYPE.MOUSEMOVE_CELL)) {\n let icon;\n let position;\n if (eventArgsSet.eventArgs?.target) {\n const iconInfo = getIconAndPositionFromTarget(eventArgsSet.eventArgs?.target);\n if (iconInfo) {\n icon = iconInfo.icon;\n position = iconInfo.position;\n }\n }\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEMOVE_CELL, {\n col: eventArgsSet.eventArgs.col,\n row: eventArgsSet.eventArgs.row,\n x: eventArgsSet.abstractPos.x,\n y: eventArgsSet.abstractPos.y,\n event: e.nativeEvent,\n targetIcon: icon\n ? {\n name: icon.name,\n position: position,\n funcType: (icon as any).attribute.funcType\n }\n : undefined\n });\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('pointerout', (e: FederatedPointerEvent) => {\n const eventArgsSet = getCellEventArgsSet(e);\n const cellGoup = eventArgsSet?.eventArgs?.target as unknown as Group;\n if (cellGoup?.role === 'table') {\n eventManeger.dealTableHover();\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('pointerover', (e: FederatedPointerEvent) => {\n const eventArgsSet = getCellEventArgsSet(e);\n const cellGoup = eventArgsSet?.eventArgs?.target as unknown as Group;\n // console.log('pointerover', cellGoup);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.MOUSEOVER_CHART_SYMBOL) && cellGoup.type === 'symbol') {\n const cellGroup = e.composedPath().find(p => (p as any).roll === 'cell');\n if (cellGroup) {\n const { col, row } = cellGroup as unknown as Group;\n const eventInfo: MousePointerSparklineEvent = {\n col,\n row,\n field: table.getHeaderField(col, row),\n value: table.getCellValue(col, row),\n dataValue: table.getCellOriginValue(col, row),\n cellHeaderPaths: table.internalProps.layoutMap.getCellHeaderPaths(col, row),\n caption: table.getBodyColumnDefine(col, row).caption,\n cellRange: table.getCellRelativeRect(col, row),\n event: e.nativeEvent,\n sparkline: {\n pointData: undefined // chartPoint.pointData,\n },\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEOVER_CHART_SYMBOL, eventInfo);\n }\n }\n //MOUSEENTER_CELL 不能在这里触发 引发在单元格内移动会触发多次的问题【迷你图的单元格中】\n // if ((table as any).hasListeners(DG_EVENT_TYPE.MOUSEENTER_CELL)) {\n // const eventArgsSet = getCellEventArgsSet(e);\n // const cellGoup = eventArgsSet?.eventArgs?.target as unknown as Group;\n // console.log('hover cell', table.stateManeger.hover.cellPos);\n // if (\n // cellGoup?.role === 'cell' &&\n // (cellGoup.col !== table.stateManeger.hover.cellPos.col ||\n // cellGoup.row !== table.stateManeger.hover.cellPos.row)\n // ) {\n // table.fireListeners(DG_EVENT_TYPE.MOUSEENTER_CELL, {\n // col: cellGoup.col,\n // row: cellGoup.row,\n // cellRange: table.getCellRangeRelativeRect({\n // col: cellGoup.col,\n // row: cellGoup.row,\n // }),\n // scaleRatio:\n // table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,\n // event: e.nativeEvent,\n // });\n // }\n // }\n });\n // table.scenegraph.tableGroup.addEventListener('pointerenter', (e: FederatedPointerEvent) => {\n // console.log('pointerenter', e.target);\n // 触发MOUSEOVER_CELL\n // const eventArgsSet = getCellEventArgsSet(e);\n // if ((eventArgsSet?.eventArgs?.target as unknown as Group)?.role === 'cell') {\n // table.fireListeners(DG_EVENT_TYPE.MOUSEENTER_CELL, {\n // col: (eventArgsSet.eventArgs.target as unknown as Group).col,\n // row: (eventArgsSet.eventArgs.target as unknown as Group).row,\n // cellRange: table.getCellRangeRelativeRect({\n // col: (eventArgsSet.eventArgs.target as unknown as Group).col,\n // row: (eventArgsSet.eventArgs.target as unknown as Group).row,\n // }),\n // scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,\n // event: e.nativeEvent,\n // });\n // }\n // });\n table.scenegraph.tableGroup.addEventListener('pointerleave', (e: FederatedPointerEvent) => {\n stateManeger.updateInteractionState(InteractionState.default);\n eventManeger.dealTableHover();\n stateManeger.updateCursor();\n const target = e.target;\n if (target && !target.isDescendantsOf(table.scenegraph.tableGroup)) {\n table.fireListeners(TABLE_EVENT_TYPE.MOUSELEAVE_TABLE, {\n col: -1,\n row: -1,\n event: e.nativeEvent\n });\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('pointerupoutside', (e: FederatedPointerEvent) => {\n console.log('pointerupoutside');\n stateManeger.updateInteractionState(InteractionState.default);\n eventManeger.dealTableHover();\n eventManeger.dealTableSelect();\n });\n\n table.scenegraph.tableGroup.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n if (e.button !== 0) {\n // 只处理左键\n return;\n }\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n\n if (stateManeger.interactionState !== InteractionState.default) {\n return;\n }\n\n // 处理menu\n if (\n stateManeger.menu.isShow &&\n eventArgsSet.eventArgs &&\n (eventArgsSet.eventArgs.target as any) !== stateManeger.residentHoverIcon?.icon\n ) {\n // 点击在menu外,且不是下拉菜单的icon,移除menu\n stateManeger.hideMenu();\n }\n const hitIcon = (eventArgsSet?.eventArgs?.target as any)?.role?.startsWith('icon')\n ? eventArgsSet.eventArgs.target\n : undefined;\n if (!hitIcon) {\n if (e.pointerType === 'touch') {\n eventManeger.touchEnd = false;\n eventManeger.touchSetTimeout = setTimeout(() => {\n eventManeger.isTouchdown = false;\n eventManeger.touchMove = true;\n // 处理列宽调整\n if (!eventManeger.touchEnd && eventManeger.checkColumnResize(eventArgsSet, true)) {\n // eventManeger.startColumnResize(e);\n // eventManeger._resizing = true;\n stateManeger.updateInteractionState(InteractionState.grabing);\n return;\n }\n\n // 处理column mover\n if (!eventManeger.touchEnd && eventManeger.chechColumnMover(eventArgsSet)) {\n stateManeger.updateInteractionState(InteractionState.grabing);\n return;\n }\n\n // 处理单元格选择\n if (eventManeger.dealTableSelect(eventArgsSet) && !eventManeger.touchEnd) {\n // 先执行单选逻辑,再更新为grabing模式\n // stateManeger.interactionState = 'grabing';\n stateManeger.updateInteractionState(InteractionState.grabing);\n // console.log('DRAG_SELECT_START');\n }\n }, 500);\n } else {\n // 处理列宽调整\n if (eventManeger.checkColumnResize(eventArgsSet, true)) {\n // eventManeger.startColumnResize(e);\n // eventManeger._resizing = true;\n stateManeger.updateInteractionState(InteractionState.grabing);\n return;\n }\n\n // 处理column mover\n if (eventManeger.chechColumnMover(eventArgsSet)) {\n stateManeger.updateInteractionState(InteractionState.grabing);\n return;\n }\n\n // 处理单元格选择\n if (eventManeger.dealTableSelect(eventArgsSet)) {\n // 先执行单选逻辑,再更新为grabing模式\n // stateManeger.interactionState = 'grabing';\n stateManeger.updateInteractionState(InteractionState.grabing);\n // console.log('DRAG_SELECT_START');\n }\n }\n }\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL)) {\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n if (eventArgsSet.eventArgs) {\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL, {\n col: eventArgsSet.eventArgs.col,\n row: eventArgsSet.eventArgs.row,\n event: e.nativeEvent\n });\n }\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('pointerup', (e: FederatedPointerEvent) => {\n // console.log('pointerup');\n if (e.button !== 0) {\n // 只处理左键\n return;\n }\n if (stateManeger.interactionState === 'grabing') {\n // stateManeger.interactionState = 'default';\n stateManeger.updateInteractionState(InteractionState.default);\n // eventManeger._resizing = false;\n if (stateManeger.isResizeCol()) {\n table.stateManeger.endResizeCol();\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END)) {\n // RESIZE_COLUMN_END事件触发,返回所有列宽\n const columns = [];\n // 返回所有列宽信息\n for (let col = 0; col < table.colCount; col++) {\n columns.push(table.getColWidth(col));\n }\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, {\n col: table.stateManeger.columnResize.col,\n columns\n });\n }\n } else if (stateManeger.isMoveCol()) {\n table.stateManeger.endMoveCol();\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n if (eventArgsSet.eventArgs && (table as any).hasListeners(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION)) {\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, {\n target: { col: eventArgsSet.eventArgs.col, row: eventArgsSet.eventArgs.row },\n source: {\n col: table.stateManeger.columnMove.colSource,\n row: table.stateManeger.columnMove.colSource //TODO row\n }\n });\n }\n } else if (stateManeger.isSelecting()) {\n table.stateManeger.endSelectCells();\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n if (eventArgsSet.eventArgs && (table as any).hasListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END)) {\n const cellsEvent: MousePointerMultiCellEvent = {\n event: e.nativeEvent,\n cells: [],\n col: (eventArgsSet.eventArgs.target as unknown as Group).col,\n row: (eventArgsSet.eventArgs.target as unknown as Group).row,\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n\n cellsEvent.cells = table.getSelectedCellInfos();\n table.fireListeners(TABLE_EVENT_TYPE.DRAG_SELECT_END, cellsEvent);\n }\n }\n } else if (stateManeger.interactionState === InteractionState.scrolling) {\n stateManeger.updateInteractionState(InteractionState.default);\n // scroll end\n }\n // console.log('DRAG_SELECT_END');\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.MOUSEUP_CELL)) {\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n if (eventArgsSet.eventArgs) {\n table.fireListeners(TABLE_EVENT_TYPE.MOUSEUP_CELL, {\n col: eventArgsSet.eventArgs.col,\n row: eventArgsSet.eventArgs.row,\n event: e.nativeEvent\n });\n }\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('rightdown', (e: FederatedPointerEvent) => {\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n // 右键点击\n if (eventArgsSet.eventArgs) {\n stateManeger.triggerContextMenu(\n eventArgsSet.eventArgs.col,\n eventArgsSet.eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n\n //处理监听的右键事件\n const { col, row } = eventArgsSet.eventArgs;\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.CONTEXTMENU_CELL)) {\n const cellInfo = table.getCellInfo(col, row);\n let icon;\n let position;\n if (eventArgsSet.eventArgs?.target) {\n const iconInfo = getIconAndPositionFromTarget(eventArgsSet.eventArgs?.target);\n if (iconInfo) {\n icon = iconInfo.icon;\n position = iconInfo.position;\n }\n }\n const cellsEvent: MousePointerMultiCellEvent = {\n ...cellInfo,\n event: e.nativeEvent,\n cells: [],\n targetIcon: icon\n ? {\n name: icon.name,\n position: position,\n funcType: (icon as any).attribute.funcType\n }\n : undefined\n };\n if (cellInRanges(table.stateManeger.select.ranges, col, row)) {\n // 用户右键点击已经选中的区域\n // const { start, end } = eventManeger.selection.range;\n cellsEvent.cells = table.getSelectedCellInfos();\n } else {\n // 用户右键点击新单元格\n cellsEvent.cells = [[cellInfo]];\n }\n\n table.fireListeners(TABLE_EVENT_TYPE.CONTEXTMENU_CELL, cellsEvent);\n }\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('click', (e: FederatedPointerEvent) => {\n console.log('click', e);\n if (table.stateManeger.columnResize.resizing || table.stateManeger.columnMove.moving) {\n return;\n }\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n eventManeger.dealIconClick(e, eventArgsSet);\n if (!eventArgsSet?.eventArgs) {\n return;\n }\n const { col, row } = eventArgsSet.eventArgs;\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.CLICK_CELL)) {\n const cellInfo = table.getCellInfo(col, row);\n let icon;\n let position;\n if (eventArgsSet.eventArgs?.target) {\n const iconInfo = getIconAndPositionFromTarget(eventArgsSet.eventArgs?.target);\n if (iconInfo) {\n icon = iconInfo.icon;\n position = iconInfo.position;\n }\n }\n const cellsEvent: MousePointerMultiCellEvent = {\n ...cellInfo,\n event: e.nativeEvent,\n cells: [],\n targetIcon: icon\n ? {\n name: icon.name,\n position: position,\n funcType: (icon as any).attribute.funcType\n }\n : undefined\n };\n\n table.fireListeners(TABLE_EVENT_TYPE.CLICK_CELL, cellsEvent);\n }\n });\n\n // click outside\n table.scenegraph.stage.addEventListener('click', (e: FederatedPointerEvent) => {\n console.log('stage click');\n const target = e.target;\n if (\n target &&\n !target.isDescendantsOf(table.scenegraph.tableGroup) &&\n (target as any) !== table.scenegraph.tableGroup\n ) {\n console.log('pointerup outside table');\n stateManeger.updateInteractionState(InteractionState.default);\n eventManeger.dealTableHover();\n eventManeger.dealTableSelect();\n stateManeger.updateCursor();\n }\n });\n\n table.scenegraph.tableGroup.addEventListener('dblclick', (e: FederatedPointerEvent) => {\n const eventArgsSet: SceneEvent = getCellEventArgsSet(e);\n const bounds = eventArgsSet.eventArgs.targetCell.globalAABBBounds;\n const { col, row } = eventArgsSet.eventArgs;\n const value = table.getCellValue(col, row);\n table.internalProps.focusControl.setFocusRect(\n new Rect(bounds.x1 + table.scrollLeft, bounds.y1 + table.scrollTop, bounds.x2 - bounds.x1, bounds.y2 - bounds.y1),\n value\n );\n // console.log('activeElement',document.activeElement);\n // table.getElement().focus();\n // console.log('activeElement 2',document.activeElement);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.DBLCLICK_CELL)) {\n const cellInfo = table.getCellInfo(col, row);\n let icon;\n let position;\n if (eventArgsSet.eventArgs?.target) {\n const iconInfo = getIconAndPositionFromTarget(eventArgsSet.eventArgs?.target);\n if (iconInfo) {\n icon = iconInfo.icon;\n position = iconInfo.position;\n }\n }\n const cellsEvent: MousePointerMultiCellEvent = {\n ...cellInfo,\n event: e.nativeEvent,\n cells: [],\n targetIcon: icon\n ? {\n name: icon.name,\n position: position,\n funcType: (icon as any).attribute.funcType\n }\n : undefined\n };\n table.fireListeners(TABLE_EVENT_TYPE.DBLCLICK_CELL, cellsEvent);\n }\n });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { EventManeger } from '../event';
2
+ export declare function bindTouchListener(eventManeger: EventManeger): void;
@@ -0,0 +1,67 @@
1
+ import { handleWhell, isHorizontalScrollable, isVerticalScrollable } from "../scroll";
2
+
3
+ export function bindTouchListener(eventManeger) {
4
+ const table = eventManeger.table, stateManeger = table.stateManeger, scenegraph = table.scenegraph;
5
+ eventManeger.touchMovePoints = [], table.scenegraph.tableGroup.addEventListener("touchstart", (e => {
6
+ e.target.isChildOf(scenegraph.component.vScrollBar) || e.target.isChildOf(scenegraph.component.vScrollBar) || (eventManeger.isTouchdown = !0,
7
+ eventManeger.touchMovePoints.push({
8
+ x: e.page.x,
9
+ y: e.page.y,
10
+ timestamp: Date.now()
11
+ }));
12
+ })), window.addEventListener("touchmove", (e => {
13
+ if (eventManeger.touchMove && e.preventDefault(), !eventManeger.isTouchdown || !isTouchEvent(e)) return;
14
+ eventManeger.touchMovePoints.length > 4 && eventManeger.touchMovePoints.shift(),
15
+ eventManeger.touchMovePoints.push({
16
+ x: e.changedTouches[0].pageX,
17
+ y: e.changedTouches[0].pageY,
18
+ timestamp: Date.now()
19
+ });
20
+ const deltaX = -eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 1].x + eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 2].x, deltaY = -eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 1].y + eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 2].y;
21
+ handleWhell({
22
+ deltaX: deltaX,
23
+ deltaY: deltaY
24
+ }, stateManeger), e.cancelable && (0 !== deltaY && isVerticalScrollable(deltaY, stateManeger) || 0 !== deltaX && isHorizontalScrollable(deltaX, stateManeger)) && e.preventDefault();
25
+ }), {
26
+ passive: !1
27
+ }), window.addEventListener("touchend", (e => {
28
+ var _a, _b;
29
+ if (eventManeger.touchEnd = !0, eventManeger.touchMove = !1, eventManeger.isTouchdown && isTouchEvent(e)) {
30
+ if (null === (_a = eventManeger.touchMovePoints) || void 0 === _a ? void 0 : _a.length) {
31
+ eventManeger.touchMovePoints.length > 4 && eventManeger.touchMovePoints.shift(),
32
+ eventManeger.touchMovePoints.push({
33
+ x: e.changedTouches[0].pageX,
34
+ y: e.changedTouches[0].pageY,
35
+ timestamp: Date.now()
36
+ });
37
+ const firstPoint = eventManeger.touchMovePoints[0], lastPoint = eventManeger.touchMovePoints[(null === (_b = eventManeger.touchMovePoints) || void 0 === _b ? void 0 : _b.length) - 1];
38
+ startInertia((lastPoint.x - firstPoint.x) / (lastPoint.timestamp - firstPoint.timestamp), (lastPoint.y - firstPoint.y) / (lastPoint.timestamp - firstPoint.timestamp), stateManeger);
39
+ }
40
+ eventManeger.isTouchdown = !1, eventManeger.touchMovePoints = [];
41
+ }
42
+ })), window.addEventListener("touchcancel", (e => {
43
+ eventManeger.touchEnd = !0, eventManeger.touchMove = !1, eventManeger.isTouchdown && (eventManeger.isTouchdown = !1,
44
+ eventManeger.touchMovePoints = []);
45
+ }));
46
+ }
47
+
48
+ function isTouchEvent(e) {
49
+ return !!e.changedTouches;
50
+ }
51
+
52
+ function startInertia(vX, vY, stateManeger) {
53
+ let time = Date.now();
54
+ const inertia = () => {
55
+ const now = Date.now(), dffTime = now - time;
56
+ let stopped = !0;
57
+ const f = Math.pow(.95, dffTime / 16), newVX = f * vX, newVY = f * vY;
58
+ let dx = 0, dy = 0;
59
+ Math.abs(newVX) > .05 && (stopped = !1, dx = (vX + newVX) / 2 * dffTime), Math.abs(newVY) > .05 && (stopped = !1,
60
+ dy = (vY + newVY) / 2 * dffTime), handleWhell({
61
+ deltaX: -dx,
62
+ deltaY: -dy
63
+ }, stateManeger), stopped || (time = now, vX = newVX, vY = newVY, requestAnimationFrame(inertia));
64
+ };
65
+ requestAnimationFrame(inertia);
66
+ }
67
+ //# sourceMappingURL=touch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["event/listener/touch.ts"],"names":[],"mappings":"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","file":"touch.js","sourcesContent":["import type { FederatedPointerEvent } from '@visactor/vrender';\nimport { handleWhell, isHorizontalScrollable, isVerticalScrollable } from '../scroll';\nimport type { EventManeger } from '../event';\nimport type { StateManeger } from '../../state/state';\n\nexport function bindTouchListener(eventManeger: EventManeger) {\n const table = eventManeger.table;\n const stateManeger = table.stateManeger;\n const scenegraph = table.scenegraph;\n\n // deal width touch scrolling in mobile devices\n eventManeger.touchMovePoints = [];\n table.scenegraph.tableGroup.addEventListener('touchstart', (e: FederatedPointerEvent) => {\n if (e.target.isChildOf(scenegraph.component.vScrollBar) || e.target.isChildOf(scenegraph.component.vScrollBar)) {\n return;\n }\n eventManeger.isTouchdown = true;\n eventManeger.touchMovePoints.push({\n x: e.page.x,\n y: e.page.y,\n timestamp: Date.now()\n });\n });\n\n window.addEventListener(\n 'touchmove',\n (e: TouchEvent) => {\n if (eventManeger.touchMove) {\n e.preventDefault();\n }\n if (!eventManeger.isTouchdown || !isTouchEvent(e)) {\n return;\n }\n\n // collect four last touch pisitions\n if (eventManeger.touchMovePoints.length > 4) {\n eventManeger.touchMovePoints.shift();\n }\n eventManeger.touchMovePoints.push({\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n timestamp: Date.now()\n });\n\n const deltaX =\n -eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 1].x +\n eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 2].x;\n const deltaY =\n -eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 1].y +\n eventManeger.touchMovePoints[eventManeger.touchMovePoints.length - 2].y;\n handleWhell({ deltaX, deltaY } as any, stateManeger);\n\n if (\n e.cancelable &&\n ((deltaY !== 0 && isVerticalScrollable(deltaY, stateManeger)) ||\n (deltaX !== 0 && isHorizontalScrollable(deltaX, stateManeger)))\n ) {\n e.preventDefault();\n }\n },\n { passive: false }\n );\n\n window.addEventListener('touchend', (e: TouchEvent) => {\n eventManeger.touchEnd = true;\n eventManeger.touchMove = false;\n if (!eventManeger.isTouchdown || !isTouchEvent(e)) {\n return;\n }\n if (eventManeger.touchMovePoints?.length) {\n if (eventManeger.touchMovePoints.length > 4) {\n eventManeger.touchMovePoints.shift();\n }\n eventManeger.touchMovePoints.push({\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n timestamp: Date.now()\n });\n // compute inertia parameter\n const firstPoint = eventManeger.touchMovePoints[0];\n const lastPoint = eventManeger.touchMovePoints[eventManeger.touchMovePoints?.length - 1];\n const vX = (lastPoint.x - firstPoint.x) / (lastPoint.timestamp - firstPoint.timestamp);\n const vY = (lastPoint.y - firstPoint.y) / (lastPoint.timestamp - firstPoint.timestamp);\n //开始惯性滚动\n startInertia(vX, vY, stateManeger);\n }\n\n eventManeger.isTouchdown = false;\n eventManeger.touchMovePoints = [];\n });\n\n window.addEventListener('touchcancel', (e: TouchEvent) => {\n eventManeger.touchEnd = true;\n eventManeger.touchMove = false;\n if (!eventManeger.isTouchdown) {\n return;\n }\n eventManeger.isTouchdown = false;\n eventManeger.touchMovePoints = [];\n });\n}\n\nfunction isTouchEvent(e: TouchEvent | MouseEvent): e is TouchEvent {\n return !!(e as TouchEvent).changedTouches;\n}\n\n/**\n * @description: start inertia scrolling, speed decrease by 0.95/16ms\n * @param {number} vX\n * @param {number} vY\n * @param {StateManeger} stateManeger\n * @return {*}\n */\nfunction startInertia(vX: number, vY: number, stateManeger: StateManeger) {\n let time = Date.now();\n const friction = 0.95;\n const inertia = () => {\n const now = Date.now();\n const dffTime = now - time;\n let stopped = true;\n const f = Math.pow(friction, dffTime / 16);\n const newVX = f * vX;\n const newVY = f * vY;\n let dx = 0;\n let dy = 0;\n if (Math.abs(newVX) > 0.05) {\n stopped = false;\n dx = ((vX + newVX) / 2) * dffTime;\n }\n if (Math.abs(newVY) > 0.05) {\n stopped = false;\n dy = ((vY + newVY) / 2) * dffTime;\n }\n handleWhell({ deltaX: -dx, deltaY: -dy } as any, stateManeger);\n if (stopped) {\n return;\n }\n time = now;\n vX = newVX;\n vY = newVY;\n\n requestAnimationFrame(inertia);\n };\n requestAnimationFrame(inertia);\n}\n"]}
@@ -1,2 +1,4 @@
1
1
  import type { StateManeger } from '../state/state';
2
2
  export declare function handleWhell(event: WheelEvent, state: StateManeger): void;
3
+ export declare function isVerticalScrollable(deltaY: number, state: StateManeger): boolean;
4
+ export declare function isHorizontalScrollable(deltaX: number, state: StateManeger): boolean;
@@ -7,11 +7,37 @@ export function handleWhell(event, state) {
7
7
  });
8
8
  optimizedDeltaX && (state.setScrollLeft(state.scroll.horizontalBarPos + optimizedDeltaX),
9
9
  state.showHorizontalScrollBar(!0)), optimizedDeltaY && (state.setScrollTop(state.scroll.verticalBarPos + optimizedDeltaY),
10
- state.showVerticalScrollBar(!0)), event.preventDefault();
10
+ state.showVerticalScrollBar(!0)), event.cancelable && (0 !== deltaY && isVerticalScrollable(deltaY, state) || 0 !== deltaX && isHorizontalScrollable(deltaX, state)) && event.preventDefault();
11
11
  }
12
12
 
13
13
  function optimizeScrollXY(x, y, ratio) {
14
- const angle = Math.abs(x / y), deltaY = angle > 2 ? 0 : y;
15
- return [ (angle <= .5 ? 0 : x) * ratio.horizontal, deltaY * ratio.vertical ];
14
+ const angle = Math.abs(x / y), deltaX = angle <= .5 ? 0 : x, deltaY = angle > 2 ? 0 : y;
15
+ return [ Math.ceil(deltaX * ratio.horizontal), Math.ceil(deltaY * ratio.vertical) ];
16
+ }
17
+
18
+ export function isVerticalScrollable(deltaY, state) {
19
+ return !isScrollToTop(deltaY, state) && !isScrollToBottom(deltaY, state);
20
+ }
21
+
22
+ export function isHorizontalScrollable(deltaX, state) {
23
+ return !isScrollToLeft(deltaX, state) && !isScrollToRight(deltaX, state);
24
+ }
25
+
26
+ function isScrollToTop(deltaY, state) {
27
+ return 0 !== state.table.getAllRowsHeight() - state.table.scenegraph.height && deltaY <= 0 && state.scroll.verticalBarPos < 1;
28
+ }
29
+
30
+ function isScrollToBottom(deltaY, state) {
31
+ const totalHeight = state.table.getAllRowsHeight() - state.table.scenegraph.height;
32
+ return 0 !== totalHeight && deltaY >= 0 && Math.abs(state.scroll.verticalBarPos - totalHeight) < 1;
33
+ }
34
+
35
+ function isScrollToLeft(deltaX, state) {
36
+ return 0 !== state.table.getAllColsWidth() - state.table.scenegraph.width && deltaX <= 0 && state.scroll.horizontalBarPos < 1;
37
+ }
38
+
39
+ function isScrollToRight(deltaX, state) {
40
+ const totalWidth = state.table.getAllColsWidth() - state.table.scenegraph.width;
41
+ return 0 !== totalWidth && deltaX >= 0 && Math.abs(state.scroll.horizontalBarPos - totalWidth) < 1;
16
42
  }
17
43
  //# sourceMappingURL=scroll.js.map