@visactor/vtable 1.26.5 → 1.26.7

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 (327) hide show
  1. package/cjs/ListTable-all.js +5 -5
  2. package/cjs/ListTable-all.js.map +1 -1
  3. package/cjs/ListTable.d.ts +5 -2
  4. package/cjs/ListTable.js +22 -6
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/PivotChart.js +5 -4
  7. package/cjs/PivotChart.js.map +1 -1
  8. package/cjs/PivotTable-all.js +4 -3
  9. package/cjs/PivotTable-all.js.map +1 -1
  10. package/cjs/body-helper/body-helper.d.ts +2 -1
  11. package/cjs/body-helper/body-helper.js +5 -3
  12. package/cjs/body-helper/body-helper.js.map +1 -1
  13. package/cjs/components/index.js +2 -1
  14. package/cjs/components/tooltip/TooltipHandler.d.ts +4 -0
  15. package/cjs/components/tooltip/TooltipHandler.js +32 -7
  16. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  17. package/cjs/core/BaseTable.d.ts +1 -0
  18. package/cjs/core/BaseTable.js +26 -13
  19. package/cjs/core/BaseTable.js.map +1 -1
  20. package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
  21. package/cjs/core/TABLE_EVENT_TYPE.js +1 -0
  22. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  23. package/cjs/core/row-series-number-helper.d.ts +1 -0
  24. package/cjs/core/row-series-number-helper.js +3 -1
  25. package/cjs/core/row-series-number-helper.js.map +1 -1
  26. package/cjs/core/tableHelper.js +1 -2
  27. package/cjs/data/CachedDataSource.js +5 -3
  28. package/cjs/data/CachedDataSource.js.map +1 -1
  29. package/cjs/data/DataSource.js +2 -1
  30. package/cjs/event/event.js +1 -1
  31. package/cjs/event/helper.js +1 -1
  32. package/cjs/event/media-click.js +145 -13
  33. package/cjs/event/media-click.js.map +1 -1
  34. package/cjs/event/scroll.js +1 -1
  35. package/cjs/event/sparkline-event.js +1 -1
  36. package/cjs/event/util.js +1 -1
  37. package/cjs/header-helper/header-helper.d.ts +1 -0
  38. package/cjs/header-helper/header-helper.js +4 -1
  39. package/cjs/header-helper/header-helper.js.map +1 -1
  40. package/cjs/index.d.ts +3 -3
  41. package/cjs/index.js +1 -1
  42. package/cjs/index.js.map +1 -1
  43. package/cjs/layout/index.js +2 -1
  44. package/cjs/plugins/custom-cell-style.js +1 -1
  45. package/cjs/plugins/index.js +1 -2
  46. package/cjs/plugins/interface.d.ts +2 -1
  47. package/cjs/plugins/interface.js +1 -1
  48. package/cjs/plugins/interface.js.map +1 -1
  49. package/cjs/plugins/invert-highlight.js +1 -1
  50. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  51. package/cjs/plugins/plugin-manager.d.ts +1 -1
  52. package/cjs/plugins/plugin-manager.js +12 -7
  53. package/cjs/plugins/plugin-manager.js.map +1 -1
  54. package/cjs/scenegraph/group-creater/cell-helper.d.ts +4 -2
  55. package/cjs/scenegraph/group-creater/cell-helper.js +67 -42
  56. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  57. package/cjs/scenegraph/group-creater/cell-type/audio-cell.d.ts +7 -0
  58. package/cjs/scenegraph/group-creater/cell-type/audio-cell.js +83 -0
  59. package/cjs/scenegraph/group-creater/cell-type/audio-cell.js.map +1 -0
  60. package/cjs/scenegraph/group-creater/cell-type/button-cell.d.ts +1 -1
  61. package/cjs/scenegraph/group-creater/cell-type/button-cell.js +5 -4
  62. package/cjs/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
  63. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  64. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  65. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
  66. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -4
  67. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  68. package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  69. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +43 -15
  70. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  71. package/cjs/scenegraph/group-creater/cell-type/index.d.ts +1 -0
  72. package/cjs/scenegraph/group-creater/cell-type/index.js +8 -2
  73. package/cjs/scenegraph/group-creater/cell-type/index.js.map +1 -1
  74. package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.d.ts +13 -0
  75. package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.js +64 -0
  76. package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.js.map +1 -0
  77. package/cjs/scenegraph/group-creater/cell-type/radio-cell.d.ts +1 -1
  78. package/cjs/scenegraph/group-creater/cell-type/radio-cell.js +23 -7
  79. package/cjs/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
  80. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
  81. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +6 -5
  82. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  83. package/cjs/scenegraph/group-creater/cell-type/switch-cell.d.ts +1 -1
  84. package/cjs/scenegraph/group-creater/cell-type/switch-cell.js +5 -4
  85. package/cjs/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
  86. package/cjs/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  87. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +44 -23
  88. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  89. package/cjs/scenegraph/group-creater/column-helper.js +14 -7
  90. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  91. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +24 -8
  92. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  93. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +1 -0
  94. package/cjs/scenegraph/group-creater/progress/proxy.js +11 -5
  95. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  96. package/cjs/scenegraph/icon/icon-update.js +1 -0
  97. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  98. package/cjs/scenegraph/layout/compute-col-width.js +8 -3
  99. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  100. package/cjs/scenegraph/layout/compute-row-height.js +33 -9
  101. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  102. package/cjs/scenegraph/layout/update-height.js +1 -1
  103. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  104. package/cjs/scenegraph/layout/update-row.js +24 -3
  105. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  106. package/cjs/scenegraph/layout/update-width.js +1 -1
  107. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  108. package/cjs/scenegraph/scenegraph.d.ts +1 -0
  109. package/cjs/scenegraph/scenegraph.js +93 -64
  110. package/cjs/scenegraph/scenegraph.js.map +1 -1
  111. package/cjs/scenegraph/stick-text/index.js +46 -20
  112. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  113. package/cjs/scenegraph/utils/deal-promise-data.d.ts +1 -1
  114. package/cjs/scenegraph/utils/deal-promise-data.js +2 -2
  115. package/cjs/scenegraph/utils/deal-promise-data.js.map +1 -1
  116. package/cjs/scenegraph/utils/text-icon-layout.js +4 -3
  117. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  118. package/cjs/state/cell-move/index.js +6 -3
  119. package/cjs/state/cell-move/index.js.map +1 -1
  120. package/cjs/state/checkbox/checkbox.d.ts +6 -1
  121. package/cjs/state/checkbox/checkbox.js +191 -36
  122. package/cjs/state/checkbox/checkbox.js.map +1 -1
  123. package/cjs/state/radio/radio.d.ts +3 -1
  124. package/cjs/state/radio/radio.js +69 -12
  125. package/cjs/state/radio/radio.js.map +1 -1
  126. package/cjs/state/state.d.ts +3 -2
  127. package/cjs/state/state.js +6 -3
  128. package/cjs/state/state.js.map +1 -1
  129. package/cjs/tools/media.d.ts +1 -0
  130. package/cjs/tools/media.js +19 -0
  131. package/cjs/tools/media.js.map +1 -0
  132. package/cjs/ts-types/base-table.d.ts +2 -0
  133. package/cjs/ts-types/base-table.js.map +1 -1
  134. package/cjs/ts-types/column/type.d.ts +2 -2
  135. package/cjs/ts-types/column/type.js.map +1 -1
  136. package/cjs/ts-types/events.d.ts +3 -1
  137. package/cjs/ts-types/events.js.map +1 -1
  138. package/cjs/ts-types/icon.d.ts +1 -0
  139. package/cjs/ts-types/icon.js.map +1 -1
  140. package/cjs/ts-types/list-table/define/image-define.d.ts +10 -0
  141. package/cjs/ts-types/list-table/define/image-define.js.map +1 -1
  142. package/cjs/ts-types/list-table/define/index.d.ts +5 -4
  143. package/cjs/ts-types/list-table/define/index.js.map +1 -1
  144. package/cjs/ts-types/list-table/layout-map/api.d.ts +4 -4
  145. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  146. package/cjs/ts-types/list-table/layout-map/index.d.ts +1 -1
  147. package/cjs/ts-types/list-table/layout-map/index.js.map +1 -1
  148. package/cjs/ts-types/menu.d.ts +12 -0
  149. package/cjs/ts-types/menu.js.map +1 -1
  150. package/cjs/ts-types/pivot-table/dimension/image-dimension.d.ts +5 -0
  151. package/cjs/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
  152. package/cjs/ts-types/pivot-table/dimension/index.d.ts +5 -3
  153. package/cjs/ts-types/pivot-table/dimension/index.js.map +1 -1
  154. package/cjs/ts-types/pivot-table/indicator/image-indicator.d.ts +10 -0
  155. package/cjs/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  156. package/cjs/ts-types/pivot-table/indicator/index.d.ts +3 -3
  157. package/cjs/ts-types/pivot-table/indicator/index.js.map +1 -1
  158. package/cjs/ts-types/table-engine.d.ts +13 -4
  159. package/cjs/ts-types/table-engine.js.map +1 -1
  160. package/cjs/ts-types/tooltip.d.ts +1 -0
  161. package/cjs/ts-types/tooltip.js.map +1 -1
  162. package/cjs/vrender.js.map +1 -1
  163. package/dist/vtable.js +1528 -367
  164. package/dist/vtable.min.js +1 -1
  165. package/es/ListTable-all.js +4 -4
  166. package/es/ListTable-all.js.map +1 -1
  167. package/es/ListTable.d.ts +5 -2
  168. package/es/ListTable.js +22 -7
  169. package/es/ListTable.js.map +1 -1
  170. package/es/PivotChart.js +4 -4
  171. package/es/PivotChart.js.map +1 -1
  172. package/es/PivotTable-all.js +4 -4
  173. package/es/PivotTable-all.js.map +1 -1
  174. package/es/body-helper/body-helper.d.ts +2 -1
  175. package/es/body-helper/body-helper.js +5 -3
  176. package/es/body-helper/body-helper.js.map +1 -1
  177. package/es/components/index.js +2 -1
  178. package/es/components/tooltip/TooltipHandler.d.ts +4 -0
  179. package/es/components/tooltip/TooltipHandler.js +32 -7
  180. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  181. package/es/core/BaseTable.d.ts +1 -0
  182. package/es/core/BaseTable.js +28 -15
  183. package/es/core/BaseTable.js.map +1 -1
  184. package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
  185. package/es/core/TABLE_EVENT_TYPE.js +1 -0
  186. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  187. package/es/core/row-series-number-helper.d.ts +1 -0
  188. package/es/core/row-series-number-helper.js +3 -1
  189. package/es/core/row-series-number-helper.js.map +1 -1
  190. package/es/core/tableHelper.js +1 -2
  191. package/es/data/CachedDataSource.js +5 -3
  192. package/es/data/CachedDataSource.js.map +1 -1
  193. package/es/data/DataSource.js +2 -1
  194. package/es/event/event.js +1 -1
  195. package/es/event/helper.js +1 -1
  196. package/es/event/media-click.js +148 -12
  197. package/es/event/media-click.js.map +1 -1
  198. package/es/event/scroll.js +1 -1
  199. package/es/event/sparkline-event.js +1 -1
  200. package/es/event/util.js +1 -1
  201. package/es/header-helper/header-helper.d.ts +1 -0
  202. package/es/header-helper/header-helper.js +4 -1
  203. package/es/header-helper/header-helper.js.map +1 -1
  204. package/es/index.d.ts +3 -3
  205. package/es/index.js +1 -1
  206. package/es/index.js.map +1 -1
  207. package/es/layout/index.js +2 -1
  208. package/es/plugins/custom-cell-style.js +1 -1
  209. package/es/plugins/index.js +1 -2
  210. package/es/plugins/interface.d.ts +2 -1
  211. package/es/plugins/interface.js +1 -1
  212. package/es/plugins/interface.js.map +1 -1
  213. package/es/plugins/invert-highlight.js +1 -1
  214. package/es/plugins/list-tree-stick-cell.js +1 -1
  215. package/es/plugins/plugin-manager.d.ts +1 -1
  216. package/es/plugins/plugin-manager.js +12 -7
  217. package/es/plugins/plugin-manager.js.map +1 -1
  218. package/es/scenegraph/group-creater/cell-helper.d.ts +4 -2
  219. package/es/scenegraph/group-creater/cell-helper.js +67 -40
  220. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  221. package/es/scenegraph/group-creater/cell-type/audio-cell.d.ts +7 -0
  222. package/es/scenegraph/group-creater/cell-type/audio-cell.js +89 -0
  223. package/es/scenegraph/group-creater/cell-type/audio-cell.js.map +1 -0
  224. package/es/scenegraph/group-creater/cell-type/button-cell.d.ts +1 -1
  225. package/es/scenegraph/group-creater/cell-type/button-cell.js +5 -4
  226. package/es/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
  227. package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  228. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  229. package/es/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
  230. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -4
  231. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  232. package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  233. package/es/scenegraph/group-creater/cell-type/image-cell.js +43 -14
  234. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  235. package/es/scenegraph/group-creater/cell-type/index.d.ts +1 -0
  236. package/es/scenegraph/group-creater/cell-type/index.js +6 -0
  237. package/es/scenegraph/group-creater/cell-type/index.js.map +1 -1
  238. package/es/scenegraph/group-creater/cell-type/media-cell-helper.d.ts +13 -0
  239. package/es/scenegraph/group-creater/cell-type/media-cell-helper.js +56 -0
  240. package/es/scenegraph/group-creater/cell-type/media-cell-helper.js.map +1 -0
  241. package/es/scenegraph/group-creater/cell-type/radio-cell.d.ts +1 -1
  242. package/es/scenegraph/group-creater/cell-type/radio-cell.js +23 -7
  243. package/es/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
  244. package/es/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
  245. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +6 -5
  246. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  247. package/es/scenegraph/group-creater/cell-type/switch-cell.d.ts +1 -1
  248. package/es/scenegraph/group-creater/cell-type/switch-cell.js +5 -4
  249. package/es/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
  250. package/es/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  251. package/es/scenegraph/group-creater/cell-type/video-cell.js +47 -22
  252. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  253. package/es/scenegraph/group-creater/column-helper.js +14 -8
  254. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  255. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +24 -8
  256. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  257. package/es/scenegraph/group-creater/progress/proxy.d.ts +1 -0
  258. package/es/scenegraph/group-creater/progress/proxy.js +11 -5
  259. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  260. package/es/scenegraph/icon/icon-update.js +1 -0
  261. package/es/scenegraph/icon/icon-update.js.map +1 -1
  262. package/es/scenegraph/layout/compute-col-width.js +8 -3
  263. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  264. package/es/scenegraph/layout/compute-row-height.js +32 -9
  265. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  266. package/es/scenegraph/layout/update-height.js +1 -1
  267. package/es/scenegraph/layout/update-height.js.map +1 -1
  268. package/es/scenegraph/layout/update-row.js +25 -2
  269. package/es/scenegraph/layout/update-row.js.map +1 -1
  270. package/es/scenegraph/layout/update-width.js +1 -1
  271. package/es/scenegraph/layout/update-width.js.map +1 -1
  272. package/es/scenegraph/scenegraph.d.ts +1 -0
  273. package/es/scenegraph/scenegraph.js +93 -64
  274. package/es/scenegraph/scenegraph.js.map +1 -1
  275. package/es/scenegraph/stick-text/index.js +46 -18
  276. package/es/scenegraph/stick-text/index.js.map +1 -1
  277. package/es/scenegraph/utils/deal-promise-data.d.ts +1 -1
  278. package/es/scenegraph/utils/deal-promise-data.js +2 -2
  279. package/es/scenegraph/utils/deal-promise-data.js.map +1 -1
  280. package/es/scenegraph/utils/text-icon-layout.js +7 -6
  281. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  282. package/es/state/cell-move/index.js +6 -3
  283. package/es/state/cell-move/index.js.map +1 -1
  284. package/es/state/checkbox/checkbox.d.ts +6 -1
  285. package/es/state/checkbox/checkbox.js +186 -34
  286. package/es/state/checkbox/checkbox.js.map +1 -1
  287. package/es/state/radio/radio.d.ts +3 -1
  288. package/es/state/radio/radio.js +70 -13
  289. package/es/state/radio/radio.js.map +1 -1
  290. package/es/state/state.d.ts +3 -2
  291. package/es/state/state.js +6 -2
  292. package/es/state/state.js.map +1 -1
  293. package/es/tools/media.d.ts +1 -0
  294. package/es/tools/media.js +11 -0
  295. package/es/tools/media.js.map +1 -0
  296. package/es/ts-types/base-table.d.ts +2 -0
  297. package/es/ts-types/base-table.js.map +1 -1
  298. package/es/ts-types/column/type.d.ts +2 -2
  299. package/es/ts-types/column/type.js.map +1 -1
  300. package/es/ts-types/events.d.ts +3 -1
  301. package/es/ts-types/events.js.map +1 -1
  302. package/es/ts-types/icon.d.ts +1 -0
  303. package/es/ts-types/icon.js.map +1 -1
  304. package/es/ts-types/list-table/define/image-define.d.ts +10 -0
  305. package/es/ts-types/list-table/define/image-define.js.map +1 -1
  306. package/es/ts-types/list-table/define/index.d.ts +5 -4
  307. package/es/ts-types/list-table/define/index.js.map +1 -1
  308. package/es/ts-types/list-table/layout-map/api.d.ts +4 -4
  309. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  310. package/es/ts-types/list-table/layout-map/index.d.ts +1 -1
  311. package/es/ts-types/list-table/layout-map/index.js.map +1 -1
  312. package/es/ts-types/menu.d.ts +12 -0
  313. package/es/ts-types/menu.js.map +1 -1
  314. package/es/ts-types/pivot-table/dimension/image-dimension.d.ts +5 -0
  315. package/es/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
  316. package/es/ts-types/pivot-table/dimension/index.d.ts +5 -3
  317. package/es/ts-types/pivot-table/dimension/index.js.map +1 -1
  318. package/es/ts-types/pivot-table/indicator/image-indicator.d.ts +10 -0
  319. package/es/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  320. package/es/ts-types/pivot-table/indicator/index.d.ts +3 -3
  321. package/es/ts-types/pivot-table/indicator/index.js.map +1 -1
  322. package/es/ts-types/table-engine.d.ts +13 -4
  323. package/es/ts-types/table-engine.js.map +1 -1
  324. package/es/ts-types/tooltip.d.ts +1 -0
  325. package/es/ts-types/tooltip.js.map +1 -1
  326. package/es/vrender.js.map +1 -1
  327. package/package.json +5 -4
@@ -2,6 +2,8 @@ import { isNumber } from "@visactor/vutils";
2
2
 
3
3
  import { getCellMergeRange } from "../../tools/merge-range";
4
4
 
5
+ let stickTextUpdateId = 0;
6
+
5
7
  export function resetTextStick(table) {
6
8
  const {changedCells: changedCells} = table.internalProps.stick;
7
9
  return changedCells.forEach((cellPos => {
@@ -15,43 +17,59 @@ export function resetTextStick(table) {
15
17
  }
16
18
 
17
19
  export function handleTextStick(table) {
18
- const changedCells = resetTextStick(table), {scrollTop: scrollTop, scrollLeft: scrollLeft, frozenRowCount: frozenRowCount, frozenColCount: frozenColCount} = table, frozenRowsHeight = table.getFrozenRowsHeight(), frozenColsWidth = table.getFrozenColsWidth(), {row: rowTop} = table.getRowAt(scrollTop + frozenRowsHeight + 1), {col: colLeft} = table.getColAt(scrollLeft + frozenColsWidth + 1), rowStart = Math.max(rowTop, table.frozenRowCount), colStart = Math.max(colLeft, table.frozenColCount), rowEnd = table.getAllRowsHeight() > table.tableNoFrameHeight ? table.getRowAt(scrollTop + table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() - 1).row : table.rowCount - table.bottomFrozenRowCount - 1, colEnd = table.getAllColsWidth() > table.tableNoFrameWidth ? table.getColAt(scrollLeft + table.tableNoFrameWidth - table.getRightFrozenColsWidth() - 1).col : table.colCount - table.rightFrozenColCount - 1;
20
+ const changedCells = resetTextStick(table), horizontalUpdateId = ++stickTextUpdateId, verticalUpdateId = ++stickTextUpdateId, {scrollTop: scrollTop, scrollLeft: scrollLeft, frozenRowCount: frozenRowCount, frozenColCount: frozenColCount} = table, frozenRowsHeight = table.getFrozenRowsHeight(), frozenColsWidth = table.getFrozenColsWidth(), {row: rowTop} = table.getRowAt(scrollTop + frozenRowsHeight + 1), {col: colLeft} = table.getColAt(scrollLeft + frozenColsWidth + 1), rowStart = Math.max(rowTop, table.frozenRowCount), colStart = Math.max(colLeft, table.frozenColCount), rowEnd = table.getAllRowsHeight() > table.tableNoFrameHeight ? table.getRowAt(scrollTop + table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() - 1).row : table.rowCount - table.bottomFrozenRowCount - 1, colEnd = table.getAllColsWidth() > table.tableNoFrameWidth ? table.getColAt(scrollLeft + table.tableNoFrameWidth - table.getRightFrozenColsWidth() - 1).col : table.colCount - table.rightFrozenColCount - 1;
19
21
  if (!(colEnd < 0 || rowEnd < 0)) {
20
22
  for (let row = 0; row < frozenRowCount && !(colEnd < colStart); row++) [ colStart, colEnd ].forEach((col => {
21
23
  const style = table._getCellStyle(col, row);
22
24
  if ((null == style ? void 0 : style.textStick) && "vertical" !== (null == style ? void 0 : style.textStick)) {
23
- adjustCellContentHorizontalLayout(table.scenegraph.getCell(col, row), frozenColsWidth + table.tableX, table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table);
25
+ adjustCellContentHorizontalLayout(table.scenegraph.getCell(col, row), frozenColsWidth + table.tableX, table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table, horizontalUpdateId, {
26
+ colStart: colStart,
27
+ colEnd: colEnd,
28
+ rowStart: row,
29
+ rowEnd: row
30
+ });
24
31
  }
25
32
  }));
26
33
  for (let col = 0; col < frozenColCount && !(rowEnd < rowStart); col++) [ rowStart, rowEnd ].forEach((row => {
27
34
  const style = table._getCellStyle(col, row);
28
35
  if ((null == style ? void 0 : style.textStick) && "horizontal" !== (null == style ? void 0 : style.textStick)) {
29
- adjustCellContentVerticalLayout(table.scenegraph.getCell(col, row), frozenRowsHeight + table.tableY, table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table);
36
+ adjustCellContentVerticalLayout(table.scenegraph.getCell(col, row), frozenRowsHeight + table.tableY, table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table, verticalUpdateId, {
37
+ colStart: col,
38
+ colEnd: col,
39
+ rowStart: rowStart,
40
+ rowEnd: rowEnd
41
+ });
30
42
  }
31
43
  }));
32
44
  for (let col = colStart; col <= colEnd && !(rowEnd < rowStart); col++) [ rowStart, rowEnd ].forEach((row => {
33
45
  const style = table._getCellStyle(col, row);
34
46
  if ((null == style ? void 0 : style.textStick) && "horizontal" !== (null == style ? void 0 : style.textStick)) {
35
- adjustCellContentVerticalLayout(table.scenegraph.getCell(col, row), frozenRowsHeight + table.tableY, table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table);
47
+ adjustCellContentVerticalLayout(table.scenegraph.getCell(col, row), frozenRowsHeight + table.tableY, table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table, verticalUpdateId, {
48
+ colStart: col,
49
+ colEnd: col,
50
+ rowStart: rowStart,
51
+ rowEnd: rowEnd
52
+ });
36
53
  }
37
54
  }));
38
55
  for (let row = rowStart; row <= rowEnd && !(colEnd < colStart); row++) [ colStart, colEnd ].forEach((col => {
39
56
  const style = table._getCellStyle(col, row);
40
57
  if ((null == style ? void 0 : style.textStick) && "vertical" !== (null == style ? void 0 : style.textStick)) {
41
- adjustCellContentHorizontalLayout(table.scenegraph.getCell(col, row), frozenColsWidth + table.tableX, table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table);
58
+ adjustCellContentHorizontalLayout(table.scenegraph.getCell(col, row), frozenColsWidth + table.tableX, table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX, changedCells, null == style ? void 0 : style.textStickBaseOnAlign, table, horizontalUpdateId, {
59
+ colStart: colStart,
60
+ colEnd: colEnd,
61
+ rowStart: row,
62
+ rowEnd: row
63
+ });
42
64
  }
43
65
  }));
44
66
  }
45
67
  }
46
68
 
47
- function adjustCellContentVerticalLayout(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign, table) {
48
- if (isNumber(cellGroup.mergeStartCol) && isNumber(cellGroup.mergeStartRow) && isNumber(cellGroup.mergeEndCol) && isNumber(cellGroup.mergeEndRow)) {
49
- const {colStart: colStart, colEnd: colEnd, rowStart: rowStart, rowEnd: rowEnd} = getCellMergeRange(cellGroup, table.scenegraph);
50
- for (let col = colStart; col <= colEnd; col++) for (let row = rowStart; row <= rowEnd; row++) {
51
- const singleCellGroup = table.scenegraph.getCell(col, row);
52
- "cell" === singleCellGroup.role && dealVertical(singleCellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);
53
- }
54
- } else dealVertical(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);
69
+ function adjustCellContentVerticalLayout(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign, table, updateId, visibleRange) {
70
+ dealMergedCellGroups(cellGroup, table, visibleRange, updateId, "verticalStickUpdateId", (singleCellGroup => {
71
+ dealVertical(singleCellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);
72
+ }));
55
73
  }
56
74
 
57
75
  function dealVertical(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign) {
@@ -105,14 +123,24 @@ function dealVertical(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAl
105
123
  }
106
124
  }
107
125
 
108
- function adjustCellContentHorizontalLayout(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign, table) {
126
+ function adjustCellContentHorizontalLayout(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign, table, updateId, visibleRange) {
127
+ dealMergedCellGroups(cellGroup, table, visibleRange, updateId, "horizontalStickUpdateId", (singleCellGroup => {
128
+ dealHorizontal(singleCellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);
129
+ }));
130
+ }
131
+
132
+ function dealMergedCellGroups(cellGroup, table, visibleRange, updateId, updateIdKey, dealCell) {
109
133
  if (isNumber(cellGroup.mergeStartCol) && isNumber(cellGroup.mergeStartRow) && isNumber(cellGroup.mergeEndCol) && isNumber(cellGroup.mergeEndRow)) {
110
- const {colStart: colStart, colEnd: colEnd, rowStart: rowStart, rowEnd: rowEnd} = getCellMergeRange(cellGroup, table.scenegraph);
111
- for (let col = colStart; col <= colEnd; col++) for (let row = rowStart; row <= rowEnd; row++) {
134
+ const {colStart: colStart, colEnd: colEnd, rowStart: rowStart, rowEnd: rowEnd} = getCellMergeRange(cellGroup, table.scenegraph), visibleColStart = Math.max(colStart, visibleRange.colStart), visibleColEnd = Math.min(colEnd, visibleRange.colEnd), visibleRowStart = Math.max(rowStart, visibleRange.rowStart), visibleRowEnd = Math.min(rowEnd, visibleRange.rowEnd);
135
+ for (let col = visibleColStart; col <= visibleColEnd; col++) for (let row = visibleRowStart; row <= visibleRowEnd; row++) {
112
136
  const singleCellGroup = table.scenegraph.getCell(col, row);
113
- "cell" === singleCellGroup.role && dealHorizontal(singleCellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);
137
+ "cell" === singleCellGroup.role && singleCellGroup[updateIdKey] !== updateId && (singleCellGroup[updateIdKey] = updateId,
138
+ dealCell(singleCellGroup));
114
139
  }
115
- } else dealHorizontal(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);
140
+ } else {
141
+ if (cellGroup[updateIdKey] === updateId) return;
142
+ cellGroup[updateIdKey] = updateId, dealCell(cellGroup);
143
+ }
116
144
  }
117
145
 
118
146
  function dealHorizontal(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/stick-text/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { IGraphic, Image, Text } from './../../vrender';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Group } from '../graphic/group';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport type { ITextStyleOption, StickCell } from '../../ts-types';\nimport { isNumber, min } from '@visactor/vutils';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function resetTextStick(table: BaseTableAPI) {\n // reset\n const { changedCells } = table.internalProps.stick; // changedCells only cache one time\n changedCells.forEach((cellPos: StickCell) => {\n const cellGroup = table.scenegraph.getCell(cellPos.col, cellPos.row);\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttributes({\n dx: cellPos.dx,\n dy: cellPos.dy\n });\n });\n });\n changedCells.clear();\n return changedCells;\n}\n\nexport function handleTextStick(table: BaseTableAPI) {\n const changedCells = resetTextStick(table);\n\n const { scrollTop, scrollLeft, frozenRowCount, frozenColCount } = table;\n const frozenRowsHeight = table.getFrozenRowsHeight();\n const frozenColsWidth = table.getFrozenColsWidth();\n // 计算非冻结\n const { row: rowTop } = table.getRowAt(scrollTop + frozenRowsHeight + 1);\n const { col: colLeft } = table.getColAt(scrollLeft + frozenColsWidth + 1);\n const rowStart = Math.max(rowTop, table.frozenRowCount);\n const colStart = Math.max(colLeft, table.frozenColCount);\n const rowEnd =\n table.getAllRowsHeight() > table.tableNoFrameHeight\n ? table.getRowAt(scrollTop + table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() - 1).row\n : table.rowCount - table.bottomFrozenRowCount - 1;\n const colEnd =\n table.getAllColsWidth() > table.tableNoFrameWidth\n ? table.getColAt(scrollLeft + table.tableNoFrameWidth - table.getRightFrozenColsWidth() - 1).col\n : table.colCount - table.rightFrozenColCount - 1;\n if (colEnd < 0 || rowEnd < 0) {\n return;\n }\n\n // column header\n for (let row = 0; row < frozenRowCount; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'vertical') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n\n // row header\n for (let col = 0; col < frozenColCount; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (\n style?.textStick &&\n // (table.internalProps.layoutMap as PivotHeaderLayoutMap).rowHierarchyType !== 'tree' &&\n style?.textStick !== 'horizontal'\n ) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n\n // body\n for (let col = colStart; col <= colEnd; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'horizontal') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n for (let row = rowStart; row <= rowEnd; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'vertical') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n}\n\n/*\n * adjust cell content vertical layout\n * @param {Group} cellGroup\n * @param {number} scrollTop\n */\nfunction adjustCellContentVerticalLayout(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n if (singleCellGroup.role !== 'cell') {\n continue;\n }\n dealVertical(singleCellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n }\n }\n } else {\n dealVertical(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n }\n}\n\nfunction dealVertical(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n\n // const textBaseline = (graphic as any).attribute.textBaseline ?? (graphic as any).textBaseline ?? 'top';\n const textBaseline = (graphic as any).textBaseline ?? 'top';\n\n graphic.AABBBounds.width();\n const textTop = graphic.globalAABBBounds.y1;\n const textBottom = graphic.globalAABBBounds.y2;\n\n if (textBaseline === 'middle' && textStickBaseOnAlign) {\n const cellTop = cellGroup.globalAABBBounds.y1 + ((cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0);\n const cellBottom = cellTop + (cellGroup.contentHeight ?? cellGroup.attribute.height ?? 0);\n if (cellTop < minTop || cellBottom > maxTop) {\n const visibleCellTop = Math.max(cellTop, minTop);\n const visibleCellBottom = Math.min(cellBottom, maxTop);\n const delta =\n graphic.globalTransMatrix.f - (visibleCellBottom + visibleCellTop) / 2 + graphic.AABBBounds.height() / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textTop < minTop) {\n const deltaHeight = textTop - minTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight + 2); // 2 is the buffer\n });\n } else if (textBottom > maxTop) {\n const deltaHeight = textBottom - maxTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight); // 2 is the buffer\n });\n }\n}\n\n/*\n * adjust cell content horizontal layout\n * @param {Group} cellGroup\n * @param {number} scrollLeft\n */\nfunction adjustCellContentHorizontalLayout(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n if (singleCellGroup.role !== 'cell') {\n continue;\n }\n dealHorizontal(singleCellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n }\n }\n } else {\n dealHorizontal(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n }\n}\n\nfunction dealHorizontal(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n // const text = cellGroup.getChildByName('text', true) as Text;\n // if (!text) {\n // return;\n // }\n\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n const textAlign = (graphic as any).attribute.textAlign ?? (graphic as any).textAlign ?? 'left';\n graphic.AABBBounds.width();\n const textLeft = graphic.globalAABBBounds.x1;\n const textRight = graphic.globalAABBBounds.x2;\n if (textAlign === 'center' && textStickBaseOnAlign) {\n const cellLeft = cellGroup.globalAABBBounds.x1 + ((cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0);\n const cellRight = cellLeft + (cellGroup.contentWidth ?? cellGroup.attribute.width ?? 0);\n if (cellLeft < minLeft || cellRight > maxLeft) {\n const visibleCellLeft = Math.max(cellLeft, minLeft);\n const visibleCellRight = Math.min(cellRight, maxLeft);\n const delta = graphic.globalTransMatrix.e - (visibleCellRight + visibleCellLeft) / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textLeft < minLeft) {\n const deltaWidth = textLeft - minLeft;\n // text is out of view, move all elements right\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth + 2); // 2 is the buffer\n });\n } else if (textRight > maxLeft) {\n const deltaWidth = textRight - maxLeft;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth); // 2 is the buffer\n });\n }\n}\n\nexport function checkHaveTextStick(table: BaseTableAPI) {\n const headerObjects = table.internalProps.layoutMap.headerObjects;\n const columnObjects = table.internalProps.layoutMap.columnObjects;\n for (let i = 0; i < headerObjects.length; i++) {\n const header = headerObjects[i];\n if (header && (header.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n for (let i = 0; i < columnObjects.length; i++) {\n const column = columnObjects[i];\n if (column && (column.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n const themeStick =\n table.theme.headerStyle.textStick || table.theme.rowHeaderStyle.textStick || table.theme.bodyStyle.textStick;\n if (themeStick) {\n return true;\n }\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/stick-text/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { IGraphic, Image, Text } from './../../vrender';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Group } from '../graphic/group';\nimport type { ITextStyleOption, StickCell } from '../../ts-types';\nimport { isNumber, min } from '@visactor/vutils';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nlet stickTextUpdateId = 0;\n\ntype VisibleCellRange = {\n colStart: number;\n colEnd: number;\n rowStart: number;\n rowEnd: number;\n};\n\nexport function resetTextStick(table: BaseTableAPI) {\n // reset\n const { changedCells } = table.internalProps.stick; // changedCells only cache one time\n changedCells.forEach((cellPos: StickCell) => {\n const cellGroup = table.scenegraph.getCell(cellPos.col, cellPos.row);\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttributes({\n dx: cellPos.dx,\n dy: cellPos.dy\n });\n });\n });\n changedCells.clear();\n return changedCells;\n}\n\nexport function handleTextStick(table: BaseTableAPI) {\n const changedCells = resetTextStick(table);\n const horizontalUpdateId = ++stickTextUpdateId;\n const verticalUpdateId = ++stickTextUpdateId;\n\n const { scrollTop, scrollLeft, frozenRowCount, frozenColCount } = table;\n const frozenRowsHeight = table.getFrozenRowsHeight();\n const frozenColsWidth = table.getFrozenColsWidth();\n // 计算非冻结\n const { row: rowTop } = table.getRowAt(scrollTop + frozenRowsHeight + 1);\n const { col: colLeft } = table.getColAt(scrollLeft + frozenColsWidth + 1);\n const rowStart = Math.max(rowTop, table.frozenRowCount);\n const colStart = Math.max(colLeft, table.frozenColCount);\n const rowEnd =\n table.getAllRowsHeight() > table.tableNoFrameHeight\n ? table.getRowAt(scrollTop + table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() - 1).row\n : table.rowCount - table.bottomFrozenRowCount - 1;\n const colEnd =\n table.getAllColsWidth() > table.tableNoFrameWidth\n ? table.getColAt(scrollLeft + table.tableNoFrameWidth - table.getRightFrozenColsWidth() - 1).col\n : table.colCount - table.rightFrozenColCount - 1;\n if (colEnd < 0 || rowEnd < 0) {\n return;\n }\n\n // column header\n for (let row = 0; row < frozenRowCount; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'vertical') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table,\n horizontalUpdateId,\n { colStart, colEnd, rowStart: row, rowEnd: row }\n );\n }\n });\n }\n\n // row header\n for (let col = 0; col < frozenColCount; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'horizontal') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table,\n verticalUpdateId,\n { colStart: col, colEnd: col, rowStart, rowEnd }\n );\n }\n });\n }\n\n // body\n for (let col = colStart; col <= colEnd; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'horizontal') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table,\n verticalUpdateId,\n { colStart: col, colEnd: col, rowStart, rowEnd }\n );\n }\n });\n }\n for (let row = rowStart; row <= rowEnd; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && style?.textStick !== 'vertical') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table,\n horizontalUpdateId,\n { colStart, colEnd, rowStart: row, rowEnd: row }\n );\n }\n });\n }\n}\n\n/*\n * adjust cell content vertical layout\n * @param {Group} cellGroup\n * @param {number} scrollTop\n */\nfunction adjustCellContentVerticalLayout(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI,\n updateId: number,\n visibleRange: VisibleCellRange\n) {\n dealMergedCellGroups(cellGroup, table, visibleRange, updateId, 'verticalStickUpdateId', singleCellGroup => {\n dealVertical(singleCellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n });\n}\n\nfunction dealVertical(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n\n // const textBaseline = (graphic as any).attribute.textBaseline ?? (graphic as any).textBaseline ?? 'top';\n const textBaseline = (graphic as any).textBaseline ?? 'top';\n\n graphic.AABBBounds.width();\n const textTop = graphic.globalAABBBounds.y1;\n const textBottom = graphic.globalAABBBounds.y2;\n\n if (textBaseline === 'middle' && textStickBaseOnAlign) {\n const cellTop = cellGroup.globalAABBBounds.y1 + ((cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0);\n const cellBottom = cellTop + (cellGroup.contentHeight ?? cellGroup.attribute.height ?? 0);\n if (cellTop < minTop || cellBottom > maxTop) {\n const visibleCellTop = Math.max(cellTop, minTop);\n const visibleCellBottom = Math.min(cellBottom, maxTop);\n const delta =\n graphic.globalTransMatrix.f - (visibleCellBottom + visibleCellTop) / 2 + graphic.AABBBounds.height() / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textTop < minTop) {\n const deltaHeight = textTop - minTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight + 2); // 2 is the buffer\n });\n } else if (textBottom > maxTop) {\n const deltaHeight = textBottom - maxTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight); // 2 is the buffer\n });\n }\n}\n\n/*\n * adjust cell content horizontal layout\n * @param {Group} cellGroup\n * @param {number} scrollLeft\n */\nfunction adjustCellContentHorizontalLayout(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI,\n updateId: number,\n visibleRange: VisibleCellRange\n) {\n dealMergedCellGroups(cellGroup, table, visibleRange, updateId, 'horizontalStickUpdateId', singleCellGroup => {\n dealHorizontal(singleCellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n });\n}\n\nfunction dealMergedCellGroups(\n cellGroup: Group,\n table: BaseTableAPI,\n visibleRange: VisibleCellRange,\n updateId: number,\n updateIdKey: 'verticalStickUpdateId' | 'horizontalStickUpdateId',\n dealCell: (cellGroup: Group) => void\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n const visibleColStart = Math.max(colStart, visibleRange.colStart);\n const visibleColEnd = Math.min(colEnd, visibleRange.colEnd);\n const visibleRowStart = Math.max(rowStart, visibleRange.rowStart);\n const visibleRowEnd = Math.min(rowEnd, visibleRange.rowEnd);\n\n for (let col = visibleColStart; col <= visibleColEnd; col++) {\n for (let row = visibleRowStart; row <= visibleRowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n if (singleCellGroup.role !== 'cell' || (singleCellGroup as any)[updateIdKey] === updateId) {\n continue;\n }\n (singleCellGroup as any)[updateIdKey] = updateId;\n dealCell(singleCellGroup);\n }\n }\n } else {\n if ((cellGroup as any)[updateIdKey] === updateId) {\n return;\n }\n (cellGroup as any)[updateIdKey] = updateId;\n dealCell(cellGroup);\n }\n}\n\nfunction dealHorizontal(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n // const text = cellGroup.getChildByName('text', true) as Text;\n // if (!text) {\n // return;\n // }\n\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n const textAlign = (graphic as any).attribute.textAlign ?? (graphic as any).textAlign ?? 'left';\n graphic.AABBBounds.width();\n const textLeft = graphic.globalAABBBounds.x1;\n const textRight = graphic.globalAABBBounds.x2;\n if (textAlign === 'center' && textStickBaseOnAlign) {\n const cellLeft = cellGroup.globalAABBBounds.x1 + ((cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0);\n const cellRight = cellLeft + (cellGroup.contentWidth ?? cellGroup.attribute.width ?? 0);\n if (cellLeft < minLeft || cellRight > maxLeft) {\n const visibleCellLeft = Math.max(cellLeft, minLeft);\n const visibleCellRight = Math.min(cellRight, maxLeft);\n const delta = graphic.globalTransMatrix.e - (visibleCellRight + visibleCellLeft) / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textLeft < minLeft) {\n const deltaWidth = textLeft - minLeft;\n // text is out of view, move all elements right\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth + 2); // 2 is the buffer\n });\n } else if (textRight > maxLeft) {\n const deltaWidth = textRight - maxLeft;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth); // 2 is the buffer\n });\n }\n}\n\nexport function checkHaveTextStick(table: BaseTableAPI) {\n const headerObjects = table.internalProps.layoutMap.headerObjects;\n const columnObjects = table.internalProps.layoutMap.columnObjects;\n for (let i = 0; i < headerObjects.length; i++) {\n const header = headerObjects[i];\n if (header && (header.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n for (let i = 0; i < columnObjects.length; i++) {\n const column = columnObjects[i];\n if (column && (column.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n const themeStick =\n table.theme.headerStyle.textStick || table.theme.rowHeaderStyle.textStick || table.theme.bodyStyle.textStick;\n if (themeStick) {\n return true;\n }\n return false;\n}\n"]}
@@ -1,2 +1,2 @@
1
1
  import type { BaseTableAPI } from '../../ts-types/base-table';
2
- export declare function dealPromiseData(dataPromise: Promise<null>, tabel: BaseTableAPI, callback: () => void): void;
2
+ export declare function dealPromiseData<T>(dataPromise: Promise<T>, tabel: BaseTableAPI, callback: (value: T) => void): void;
@@ -1,6 +1,6 @@
1
1
  export function dealPromiseData(dataPromise, tabel, callback) {
2
- dataPromise.then((() => {
3
- callback(), tabel.scenegraph.updateNextFrame();
2
+ dataPromise.then((value => {
3
+ callback(value), tabel.scenegraph.updateNextFrame();
4
4
  })).catch((err => {}));
5
5
  }
6
6
  //# sourceMappingURL=deal-promise-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/utils/deal-promise-data.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,WAA0B,EAAE,KAAmB,EAAE,QAAoB;IACnG,WAAW;SACR,IAAI,CAAC,GAAG,EAAE;QACT,QAAQ,EAAE,CAAC;QACX,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IACrC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC","file":"deal-promise-data.js","sourcesContent":["import type { BaseTableAPI } from '../../ts-types/base-table';\n\nexport function dealPromiseData(dataPromise: Promise<null>, tabel: BaseTableAPI, callback: () => void) {\n dataPromise\n .then(() => {\n callback();\n tabel.scenegraph.updateNextFrame();\n })\n .catch((err: Error) => {\n console.error(err);\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/utils/deal-promise-data.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAI,WAAuB,EAAE,KAAmB,EAAE,QAA4B;IAC3G,WAAW;SACR,IAAI,CAAC,KAAK,CAAC,EAAE;QACZ,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IACrC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC","file":"deal-promise-data.js","sourcesContent":["import type { BaseTableAPI } from '../../ts-types/base-table';\n\nexport function dealPromiseData<T>(dataPromise: Promise<T>, tabel: BaseTableAPI, callback: (value: T) => void) {\n dataPromise\n .then(value => {\n callback(value);\n tabel.scenegraph.updateNextFrame();\n })\n .catch((err: Error) => {\n console.error(err);\n });\n}\n"]}
@@ -10,7 +10,7 @@ import { getCellMergeInfo } from "./get-cell-merge";
10
10
 
11
11
  import { getHierarchyOffset } from "./get-hierarchy-offset";
12
12
 
13
- import { isNumber, isValid, isValidNumber, merge } from "@visactor/vutils";
13
+ import { isNil, isNumber, isValid, isValidNumber, merge } from "@visactor/vutils";
14
14
 
15
15
  import { breakString } from "./break-string";
16
16
 
@@ -155,11 +155,12 @@ export function dealWithIcon(icon, mark, col, row, range, table, dealWithIconCom
155
155
  iconAttribute.backgroundColor = null !== (_f = icon.hover.bgColor) && void 0 !== _f ? _f : "rgba(22,44,66,0.2)",
156
156
  iconAttribute.hoverImage = icon.hover.image), icon.cursor && (iconAttribute.cursor = icon.cursor),
157
157
  "shape" in icon && "circle" === icon.shape && (iconAttribute.shape = icon.shape),
158
- mark ? (mark.setAttributes(iconAttribute), mark.loadImage(iconAttribute.image),
159
- mark.tooltip = icon.tooltip, mark.name = icon.name, mark) : ("text" === icon.type ? (iconAttribute.text = icon.content,
160
- merge(iconAttribute, icon.style), iconMark = new TextIcon(iconAttribute), iconMark.tooltip = icon.tooltip,
161
- iconMark.name = icon.name) : (iconMark = new Icon(iconAttribute), iconMark.tooltip = icon.tooltip,
162
- iconMark.name = icon.name), iconMark);
158
+ "text" === icon.type && (iconAttribute.text = icon.content, merge(iconAttribute, icon.style)),
159
+ isNil(iconAttribute.opacity) && (iconAttribute.opacity = "mouseenter_cell" === iconAttribute.visibleTime || "click_cell" === iconAttribute.visibleTime ? 0 : 1),
160
+ mark ? (mark.setAttributes(iconAttribute), iconAttribute.image && mark.loadImage(iconAttribute.image),
161
+ mark.tooltip = icon.tooltip, mark.name = icon.name, mark) : ("text" === icon.type ? (iconMark = new TextIcon(iconAttribute),
162
+ iconMark.tooltip = icon.tooltip, iconMark.name = icon.name) : (iconMark = new Icon(iconAttribute),
163
+ iconMark.tooltip = icon.tooltip, iconMark.name = icon.name), iconMark);
163
164
  }
164
165
 
165
166
  export function dealWithRichTextIcon(icon) {