k-vtable 1.0.26 → 1.0.28

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 (211) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +17 -7
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.js +6 -6
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable-all.js +5 -5
  7. package/cjs/PivotTable-all.js.map +1 -1
  8. package/cjs/PivotTable.js +14 -8
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/components/axis/axis.d.ts +5 -3
  11. package/cjs/components/axis/axis.js +20 -14
  12. package/cjs/components/axis/axis.js.map +1 -1
  13. package/cjs/components/axis/get-axis-attributes.d.ts +1 -0
  14. package/cjs/components/axis/get-axis-attributes.js +5 -2
  15. package/cjs/components/axis/get-axis-attributes.js.map +1 -1
  16. package/cjs/components/axis/get-axis-component-size.js +11 -5
  17. package/cjs/components/axis/get-axis-component-size.js.map +1 -1
  18. package/cjs/core/BaseTable.d.ts +3 -3
  19. package/cjs/core/BaseTable.js +16 -13
  20. package/cjs/core/BaseTable.js.map +1 -1
  21. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  22. package/cjs/core/TABLE_EVENT_TYPE.js +3 -1
  23. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  24. package/cjs/data/DataSource.d.ts +1 -1
  25. package/cjs/data/DataSource.js +2 -2
  26. package/cjs/data/DataSource.js.map +1 -1
  27. package/cjs/dataset/dataset.js +13 -4
  28. package/cjs/dataset/dataset.js.map +1 -1
  29. package/cjs/edit/edit-manager.d.ts +3 -2
  30. package/cjs/edit/edit-manager.js +36 -6
  31. package/cjs/edit/edit-manager.js.map +1 -1
  32. package/cjs/event/event.d.ts +9 -0
  33. package/cjs/event/event.js +161 -85
  34. package/cjs/event/event.js.map +1 -1
  35. package/cjs/event/listener/container-dom.js +15 -7
  36. package/cjs/event/listener/container-dom.js.map +1 -1
  37. package/cjs/event/self-event-listener/pivot-chart/axis-hover.js +1 -1
  38. package/cjs/event/self-event-listener/pivot-chart/axis-hover.js.map +1 -1
  39. package/cjs/event/util.d.ts +1 -0
  40. package/cjs/event/util.js +13 -2
  41. package/cjs/event/util.js.map +1 -1
  42. package/cjs/index.d.ts +1 -1
  43. package/cjs/index.js +1 -1
  44. package/cjs/index.js.map +1 -1
  45. package/cjs/layout/chart-helper/get-axis-config.js +40 -25
  46. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  47. package/cjs/layout/chart-helper/get-chart-spec.js +6 -2
  48. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  49. package/cjs/layout/pivot-header-layout.d.ts +4 -1
  50. package/cjs/layout/pivot-header-layout.js +55 -22
  51. package/cjs/layout/pivot-header-layout.js.map +1 -1
  52. package/cjs/plugins/index.js +1 -1
  53. package/cjs/plugins/plugin-manager.d.ts +2 -0
  54. package/cjs/plugins/plugin-manager.js +13 -6
  55. package/cjs/plugins/plugin-manager.js.map +1 -1
  56. package/cjs/scenegraph/component/menu.d.ts +41 -0
  57. package/cjs/scenegraph/component/table-component.d.ts +2 -0
  58. package/cjs/scenegraph/component/table-component.js +39 -9
  59. package/cjs/scenegraph/component/table-component.js.map +1 -1
  60. package/cjs/scenegraph/debug-tool/debug-tool.js +1 -1
  61. package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
  62. package/cjs/scenegraph/graphic/active-cell-chart-list.d.ts +13 -0
  63. package/cjs/scenegraph/graphic/active-cell-chart-list.js +152 -0
  64. package/cjs/scenegraph/graphic/active-cell-chart-list.js.map +1 -0
  65. package/cjs/scenegraph/graphic/chart.d.ts +9 -2
  66. package/cjs/scenegraph/graphic/chart.js +95 -15
  67. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  68. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +2 -1
  69. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  70. package/cjs/scenegraph/graphic/contributions/chart-render.js +3 -3
  71. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  72. package/cjs/scenegraph/group-creater/cell-helper.js +3 -3
  73. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  74. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  75. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  76. package/cjs/scenegraph/layout/compute-col-width.js +1 -1
  77. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  78. package/cjs/scenegraph/layout/frozen.js +4 -4
  79. package/cjs/scenegraph/layout/frozen.js.map +1 -1
  80. package/cjs/scenegraph/layout/update-width.js +1 -1
  81. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  82. package/cjs/scenegraph/refresh-node/update-chart.js +2 -2
  83. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  84. package/cjs/scenegraph/scenegraph.js +9 -2
  85. package/cjs/scenegraph/scenegraph.js.map +1 -1
  86. package/cjs/scenegraph/utils/text-measure.d.ts +38 -0
  87. package/cjs/state/state.js +15 -23
  88. package/cjs/state/state.js.map +1 -1
  89. package/cjs/themes/theme-define.js +22 -16
  90. package/cjs/themes/theme-define.js.map +1 -1
  91. package/cjs/ts-types/base-table.d.ts +5 -3
  92. package/cjs/ts-types/base-table.js.map +1 -1
  93. package/cjs/ts-types/events.d.ts +8 -0
  94. package/cjs/ts-types/events.js.map +1 -1
  95. package/cjs/ts-types/list-table/define/index.d.ts +9 -2
  96. package/cjs/ts-types/list-table/define/index.js.map +1 -1
  97. package/cjs/ts-types/table-engine.d.ts +17 -0
  98. package/cjs/ts-types/table-engine.js.map +1 -1
  99. package/cjs/ts-types/theme.d.ts +12 -4
  100. package/cjs/ts-types/theme.js.map +1 -1
  101. package/cjs/vrender.js.map +1 -1
  102. package/dist/vtable.js +25073 -25724
  103. package/dist/vtable.min.js +2 -2
  104. package/es/ListTable.d.ts +1 -0
  105. package/es/ListTable.js +18 -8
  106. package/es/ListTable.js.map +1 -1
  107. package/es/PivotChart.js +6 -6
  108. package/es/PivotChart.js.map +1 -1
  109. package/es/PivotTable-all.js +5 -3
  110. package/es/PivotTable-all.js.map +1 -1
  111. package/es/PivotTable.js +14 -8
  112. package/es/PivotTable.js.map +1 -1
  113. package/es/components/axis/axis.d.ts +5 -3
  114. package/es/components/axis/axis.js +19 -12
  115. package/es/components/axis/axis.js.map +1 -1
  116. package/es/components/axis/get-axis-attributes.d.ts +1 -0
  117. package/es/components/axis/get-axis-attributes.js +5 -2
  118. package/es/components/axis/get-axis-attributes.js.map +1 -1
  119. package/es/components/axis/get-axis-component-size.js +12 -4
  120. package/es/components/axis/get-axis-component-size.js.map +1 -1
  121. package/es/core/BaseTable.d.ts +3 -3
  122. package/es/core/BaseTable.js +16 -13
  123. package/es/core/BaseTable.js.map +1 -1
  124. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  125. package/es/core/TABLE_EVENT_TYPE.js +3 -1
  126. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  127. package/es/data/DataSource.d.ts +1 -1
  128. package/es/data/DataSource.js +2 -2
  129. package/es/data/DataSource.js.map +1 -1
  130. package/es/dataset/dataset.js +12 -4
  131. package/es/dataset/dataset.js.map +1 -1
  132. package/es/edit/edit-manager.d.ts +3 -2
  133. package/es/edit/edit-manager.js +36 -6
  134. package/es/edit/edit-manager.js.map +1 -1
  135. package/es/event/event.d.ts +9 -0
  136. package/es/event/event.js +161 -85
  137. package/es/event/event.js.map +1 -1
  138. package/es/event/listener/container-dom.js +15 -7
  139. package/es/event/listener/container-dom.js.map +1 -1
  140. package/es/event/self-event-listener/pivot-chart/axis-hover.js +1 -1
  141. package/es/event/self-event-listener/pivot-chart/axis-hover.js.map +1 -1
  142. package/es/event/util.d.ts +1 -0
  143. package/es/event/util.js +11 -0
  144. package/es/event/util.js.map +1 -1
  145. package/es/index.d.ts +1 -1
  146. package/es/index.js +1 -1
  147. package/es/index.js.map +1 -1
  148. package/es/layout/chart-helper/get-axis-config.js +39 -24
  149. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  150. package/es/layout/chart-helper/get-chart-spec.js +5 -3
  151. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  152. package/es/layout/pivot-header-layout.d.ts +4 -1
  153. package/es/layout/pivot-header-layout.js +53 -21
  154. package/es/layout/pivot-header-layout.js.map +1 -1
  155. package/es/plugins/index.js +1 -1
  156. package/es/plugins/plugin-manager.d.ts +2 -0
  157. package/es/plugins/plugin-manager.js +13 -6
  158. package/es/plugins/plugin-manager.js.map +1 -1
  159. package/es/scenegraph/component/menu.d.ts +41 -0
  160. package/es/scenegraph/component/table-component.d.ts +2 -0
  161. package/es/scenegraph/component/table-component.js +39 -9
  162. package/es/scenegraph/component/table-component.js.map +1 -1
  163. package/es/scenegraph/debug-tool/debug-tool.js +1 -1
  164. package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
  165. package/es/scenegraph/graphic/active-cell-chart-list.d.ts +13 -0
  166. package/es/scenegraph/graphic/active-cell-chart-list.js +141 -0
  167. package/es/scenegraph/graphic/active-cell-chart-list.js.map +1 -0
  168. package/es/scenegraph/graphic/chart.d.ts +9 -2
  169. package/es/scenegraph/graphic/chart.js +95 -14
  170. package/es/scenegraph/graphic/chart.js.map +1 -1
  171. package/es/scenegraph/graphic/contributions/chart-render-helper.js +2 -1
  172. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  173. package/es/scenegraph/graphic/contributions/chart-render.js +3 -3
  174. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  175. package/es/scenegraph/group-creater/cell-helper.js +3 -3
  176. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  177. package/es/scenegraph/group-creater/column-helper.js +1 -1
  178. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  179. package/es/scenegraph/layout/compute-col-width.js +1 -1
  180. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  181. package/es/scenegraph/layout/frozen.js +4 -4
  182. package/es/scenegraph/layout/frozen.js.map +1 -1
  183. package/es/scenegraph/layout/update-width.js +1 -1
  184. package/es/scenegraph/layout/update-width.js.map +1 -1
  185. package/es/scenegraph/refresh-node/update-chart.js +2 -2
  186. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  187. package/es/scenegraph/scenegraph.js +9 -2
  188. package/es/scenegraph/scenegraph.js.map +1 -1
  189. package/es/scenegraph/utils/text-measure.d.ts +38 -0
  190. package/es/state/state.js +15 -23
  191. package/es/state/state.js.map +1 -1
  192. package/es/themes/theme-define.js +18 -12
  193. package/es/themes/theme-define.js.map +1 -1
  194. package/es/ts-types/base-table.d.ts +5 -3
  195. package/es/ts-types/base-table.js.map +1 -1
  196. package/es/ts-types/events.d.ts +8 -0
  197. package/es/ts-types/events.js.map +1 -1
  198. package/es/ts-types/list-table/define/index.d.ts +9 -2
  199. package/es/ts-types/list-table/define/index.js.map +1 -1
  200. package/es/ts-types/table-engine.d.ts +17 -0
  201. package/es/ts-types/table-engine.js.map +1 -1
  202. package/es/ts-types/theme.d.ts +12 -4
  203. package/es/ts-types/theme.js.map +1 -1
  204. package/es/vrender.js.map +1 -1
  205. package/package.json +11 -11
  206. package/cjs/layout/pivot-layout.d.ts +0 -1
  207. package/cjs/layout/pivot-layout.js +0 -1
  208. package/cjs/layout/pivot-layout.js.map +0 -1
  209. package/es/layout/pivot-layout.d.ts +0 -1
  210. package/es/layout/pivot-layout.js +0 -1
  211. package/es/layout/pivot-layout.js.map +0 -1
@@ -1,4 +1,4 @@
1
1
  export { PluginManager } from "./plugin-manager";
2
2
 
3
3
  export { CustomCellStylePlugin } from "./custom-cell-style";
4
- //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -3,12 +3,14 @@ import type { IVTablePlugin } from './interface';
3
3
  export declare class PluginManager {
4
4
  private plugins;
5
5
  private table;
6
+ private pluginEventMap;
6
7
  constructor(table: BaseTableAPI, options: BaseTableConstructorOptions);
7
8
  register(plugin: IVTablePlugin): void;
8
9
  registerAll(plugins: IVTablePlugin[]): void;
9
10
  getPlugin(id: string): IVTablePlugin | undefined;
10
11
  getPluginByName(name: string): IVTablePlugin | undefined;
11
12
  _bindTableEventForPlugin(plugin: IVTablePlugin): void;
13
+ removeOrAddPlugins(plugins?: IVTablePlugin[]): void;
12
14
  updatePlugins(plugins?: IVTablePlugin[]): void;
13
15
  release(): void;
14
16
  }
@@ -1,7 +1,7 @@
1
1
  export class PluginManager {
2
2
  constructor(table, options) {
3
3
  var _a;
4
- this.plugins = new Map, this.table = table, null === (_a = options.plugins) || void 0 === _a || _a.map((plugin => {
4
+ this.plugins = new Map, this.pluginEventMap = new Map, this.table = table, null === (_a = options.plugins) || void 0 === _a || _a.map((plugin => {
5
5
  this.register(plugin), this._bindTableEventForPlugin(plugin);
6
6
  }));
7
7
  }
@@ -20,23 +20,30 @@ export class PluginManager {
20
20
  _bindTableEventForPlugin(plugin) {
21
21
  var _a;
22
22
  null === (_a = plugin.runTime) || void 0 === _a || _a.forEach((runTime => {
23
- this.table.on(runTime, ((...args) => {
23
+ const id = this.table.on(runTime, ((...args) => {
24
24
  var _a;
25
25
  null === (_a = plugin.run) || void 0 === _a || _a.call(plugin, ...args, runTime, this.table);
26
26
  }));
27
+ this.pluginEventMap.set(plugin.id, [ ...this.pluginEventMap.get(plugin.id) || [], id ]);
27
28
  }));
28
29
  }
29
- updatePlugins(plugins) {
30
+ removeOrAddPlugins(plugins) {
30
31
  Array.from(this.plugins.values()).filter((plugin => !(null == plugins ? void 0 : plugins.some((p => p.id === plugin.id))))).forEach((plugin => {
31
- this.release(), this.plugins.delete(plugin.id);
32
- })), this.plugins.forEach((plugin => {
33
- plugin.update && plugin.update();
32
+ var _a;
33
+ null === (_a = this.pluginEventMap.get(plugin.id)) || void 0 === _a || _a.forEach((id => {
34
+ this.table.off(id);
35
+ })), this.release(), this.plugins.delete(plugin.id);
34
36
  }));
35
37
  const addedPlugins = null == plugins ? void 0 : plugins.filter((plugin => !this.plugins.has(plugin.id)));
36
38
  null == addedPlugins || addedPlugins.forEach((plugin => {
37
39
  this.register(plugin), this._bindTableEventForPlugin(plugin);
38
40
  }));
39
41
  }
42
+ updatePlugins(plugins) {
43
+ null == plugins || plugins.forEach((plugin => {
44
+ plugin.update && plugin.update();
45
+ }));
46
+ }
40
47
  release() {
41
48
  this.plugins.forEach((plugin => {
42
49
  var _a;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/plugin-manager.ts"],"names":[],"mappings":"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","file":"plugin-manager.js","sourcesContent":["import type { TableEvents } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI, BaseTableConstructorOptions } from '../ts-types/base-table';\nimport type { IVTablePlugin } from './interface';\n\nexport class PluginManager {\n private plugins: Map<string, IVTablePlugin> = new Map();\n private table: BaseTableAPI;\n\n constructor(table: BaseTableAPI, options: BaseTableConstructorOptions) {\n this.table = table;\n options.plugins?.map(plugin => {\n this.register(plugin);\n this._bindTableEventForPlugin(plugin);\n });\n }\n\n // 注册插件\n register(plugin: IVTablePlugin): void {\n this.plugins.set(plugin.id, plugin);\n }\n\n // 注册多个插件\n registerAll(plugins: IVTablePlugin[]): void {\n plugins.forEach(plugin => this.register(plugin));\n }\n\n // 获取插件\n getPlugin(id: string): IVTablePlugin | undefined {\n return this.plugins.get(id);\n }\n getPluginByName(name: string): IVTablePlugin | undefined {\n return Array.from(this.plugins.values()).find(plugin => plugin.name === name);\n }\n\n _bindTableEventForPlugin(plugin: IVTablePlugin) {\n plugin.runTime?.forEach(runTime => {\n this.table.on(runTime, (...args) => {\n plugin.run?.(...args, runTime, this.table);\n });\n });\n }\n\n // 更新所有插件\n updatePlugins(plugins?: IVTablePlugin[]): void {\n // 先找到plugins中没有,但this.plugins中有,也就是已经被移除的插件\n const removedPlugins = Array.from(this.plugins.values()).filter(plugin => !plugins?.some(p => p.id === plugin.id));\n removedPlugins.forEach(plugin => {\n this.release();\n this.plugins.delete(plugin.id);\n });\n // 更新插件\n this.plugins.forEach(plugin => {\n if (plugin.update) {\n plugin.update();\n }\n });\n // 添加新插件\n const addedPlugins = plugins?.filter(plugin => !this.plugins.has(plugin.id));\n addedPlugins?.forEach(plugin => {\n this.register(plugin);\n this._bindTableEventForPlugin(plugin);\n });\n }\n release() {\n this.plugins.forEach(plugin => {\n plugin.release?.(this.table);\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugins/plugin-manager.ts"],"names":[],"mappings":"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","file":"plugin-manager.js","sourcesContent":["import type { TableEvents } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI, BaseTableConstructorOptions } from '../ts-types/base-table';\nimport type { IVTablePlugin } from './interface';\n\nexport class PluginManager {\n private plugins: Map<string, IVTablePlugin> = new Map();\n private table: BaseTableAPI;\n\n private pluginEventMap: Map<string, number[]> = new Map();\n\n constructor(table: BaseTableAPI, options: BaseTableConstructorOptions) {\n this.table = table;\n options.plugins?.map(plugin => {\n this.register(plugin);\n this._bindTableEventForPlugin(plugin);\n });\n }\n\n // 注册插件\n register(plugin: IVTablePlugin): void {\n this.plugins.set(plugin.id, plugin);\n }\n\n // 注册多个插件\n registerAll(plugins: IVTablePlugin[]): void {\n plugins.forEach(plugin => this.register(plugin));\n }\n\n // 获取插件\n getPlugin(id: string): IVTablePlugin | undefined {\n return this.plugins.get(id);\n }\n getPluginByName(name: string): IVTablePlugin | undefined {\n return Array.from(this.plugins.values()).find(plugin => plugin.name === name);\n }\n\n _bindTableEventForPlugin(plugin: IVTablePlugin) {\n plugin.runTime?.forEach((runTime: any) => {\n const id = this.table.on(runTime, (...args) => {\n plugin.run?.(...args, runTime, this.table);\n });\n this.pluginEventMap.set(plugin.id, [...(this.pluginEventMap.get(plugin.id) || []), id]);\n });\n }\n\n // 移除或添加插件\n removeOrAddPlugins(plugins?: IVTablePlugin[]): void {\n // 先找到plugins中没有,但this.plugins中有,也就是已经被移除的插件\n const removedPlugins = Array.from(this.plugins.values()).filter(plugin => !plugins?.some(p => p.id === plugin.id));\n removedPlugins.forEach(plugin => {\n this.pluginEventMap.get(plugin.id)?.forEach(id => {\n this.table.off(id);\n });\n this.release();\n this.plugins.delete(plugin.id);\n });\n\n // 添加新插件\n const addedPlugins = plugins?.filter(plugin => !this.plugins.has(plugin.id));\n addedPlugins?.forEach(plugin => {\n this.register(plugin);\n this._bindTableEventForPlugin(plugin);\n });\n }\n\n // 更新插件\n updatePlugins(plugins?: IVTablePlugin[]): void {\n plugins?.forEach(plugin => {\n if (plugin.update) {\n plugin.update();\n }\n });\n }\n release() {\n this.plugins.forEach(plugin => {\n plugin.release?.(this.table);\n });\n }\n}\n"]}
@@ -0,0 +1,41 @@
1
+ import type { IGroup } from './../../vrender';
2
+ import type { MenuListItem } from '../../ts-types';
3
+ import { Group } from '../graphic/group';
4
+ import type { BaseTableAPI } from '../../ts-types/base-table';
5
+ export declare enum MenuType {
6
+ 'dropDown' = "dropDown",
7
+ 'contextmenu' = "contextmenu",
8
+ 'custom' = "custom"
9
+ }
10
+ type MenuInfo = MenuListItem[];
11
+ export declare class MenuHandler {
12
+ private _table;
13
+ private _menuInstance;
14
+ private _menuInfo;
15
+ constructor(table: BaseTableAPI);
16
+ bindTableComponent(componentGroup: Group): void;
17
+ release(): void;
18
+ attach(x: number, y: number, col: number, row: number, type: MenuType, menuInfo?: MenuInfo): void;
19
+ updateMenuInfo(col: number, row: number, type: MenuType, menuInfo: MenuListItem[], highlightIndex: number): void;
20
+ checkDropDownMenuChange(col: number, row: number): boolean;
21
+ checkContextMenuChange(x: number, y: number): boolean;
22
+ updateMenuInstance(menuInfo: MenuInfo, highlightIndex: number): void;
23
+ updatePosition(x: number, y: number): void;
24
+ addToScene(): void;
25
+ detach(): void;
26
+ getMenuInfo(col: number, row: number, type: MenuType): {
27
+ menuInfo: MenuListItem[];
28
+ highlightIndex: number;
29
+ };
30
+ bindEvent(): void;
31
+ getEventInfo(target: IGroup): {
32
+ col: number;
33
+ row: number;
34
+ menuKey: string;
35
+ dropDownIndex: number;
36
+ text: string;
37
+ highlight: boolean;
38
+ };
39
+ get bounds(): import("@visactor/vutils").IBounds;
40
+ }
41
+ export {};
@@ -54,5 +54,7 @@ export declare class TableComponent {
54
54
  showHorizontalScrollBar(): void;
55
55
  updateVerticalScrollBarPos(topRatio: number): void;
56
56
  updateHorizontalScrollBarPos(leftRatio: number): void;
57
+ updateHorizontalFrozenShadowLine: (rightRatio: number) => void;
58
+ updateVerticalFrozenShadowLine: (topRatio: number) => void;
57
59
  updateStyle(): void;
58
60
  }
@@ -15,7 +15,23 @@ import { isValid } from "@visactor/vutils";
15
15
  export class TableComponent {
16
16
  constructor(table) {
17
17
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
18
- this.table = table;
18
+ this.updateHorizontalFrozenShadowLine = rightRatio => {
19
+ this.table.frozenColCount ? this.table.scenegraph.component.frozenShadowLine.setAttributes({
20
+ visible: 0 !== this.table.scrollLeft
21
+ }) : this.table.scenegraph.component.frozenShadowLine.setAttributes({
22
+ visible: !1
23
+ }), this.table.rightFrozenColCount ? this.table.scenegraph.component.rightFrozenShadowLine.setAttributes({
24
+ visible: 1 !== rightRatio
25
+ }) : this.table.scenegraph.component.rightFrozenShadowLine.setAttributes({
26
+ visible: !1
27
+ });
28
+ }, this.updateVerticalFrozenShadowLine = topRatio => {
29
+ this.table.frozenRowCount > this.table.columnHeaderLevelCount ? this.table.scenegraph.component.bottonFrozenShadowLine.setAttributes({
30
+ visible: 1 !== topRatio
31
+ }) : this.table.scenegraph.component.bottonFrozenShadowLine.setAttributes({
32
+ visible: !1
33
+ });
34
+ }, this.table = table;
19
35
  const theme = this.table.theme;
20
36
  this.createScrollBar();
21
37
  const columnResizeColor = null === (_a = theme.columnResize) || void 0 === _a ? void 0 : _a.lineColor, columnResizeWidth = null === (_b = theme.columnResize) || void 0 === _b ? void 0 : _b.lineWidth, columnResizeBgColor = null === (_c = theme.columnResize) || void 0 === _c ? void 0 : _c.bgColor, columnResizeBgWidth = null === (_d = theme.columnResize) || void 0 === _d ? void 0 : _d.width, labelVisible = null === (_f = null === (_e = theme.columnResize) || void 0 === _e ? void 0 : _e.labelVisible) || void 0 === _f || _f, labelColor = null === (_g = theme.columnResize) || void 0 === _g ? void 0 : _g.labelColor, labelFontSize = null === (_h = theme.columnResize) || void 0 === _h ? void 0 : _h.labelFontSize, labelFontFamily = null === (_j = theme.columnResize) || void 0 === _j ? void 0 : _j.labelFontFamily, labelBackgroundFill = null === (_k = theme.columnResize) || void 0 === _k ? void 0 : _k.labelBackgroundFill, labelBackgroundCornerRadius = null === (_l = theme.columnResize) || void 0 === _l ? void 0 : _l.labelBackgroundCornerRadius;
@@ -477,15 +493,23 @@ export class TableComponent {
477
493
  setBottomFrozenColumnShadow() {
478
494
  var _a, _b, _c, _d, _e;
479
495
  const rowY = getRowBottomY(this.table);
480
- 0 === this.table.bottomFrozenRowCount || "always" !== (null === (_b = null === (_a = this.table.theme.frozenColumnLine) || void 0 === _a ? void 0 : _a.shadow) || void 0 === _b ? void 0 : _b.visible) ? this.bottonFrozenShadowLine.setAttributes({
496
+ if (0 === this.table.bottomFrozenRowCount || "always" !== (null === (_b = null === (_a = this.table.theme.frozenColumnLine) || void 0 === _a ? void 0 : _a.shadow) || void 0 === _b ? void 0 : _b.visible)) this.bottonFrozenShadowLine.setAttributes({
481
497
  visible: !1,
482
498
  y: 0,
483
499
  width: 0
484
- }) : this.bottonFrozenShadowLine.setAttributes({
485
- visible: !0,
486
- y: rowY - (null !== (_e = null === (_d = null === (_c = this.table.theme.frozenColumnLine) || void 0 === _c ? void 0 : _c.shadow) || void 0 === _d ? void 0 : _d.width) && void 0 !== _e ? _e : 2),
487
- width: this.table.getDrawRange().width
488
- });
500
+ }); else {
501
+ const isBottom = this.table.getAllRowsHeight() - (this.table.scrollTop + this.table.tableNoFrameHeight) <= 0;
502
+ if (isBottom) return void this.bottonFrozenShadowLine.setAttributes({
503
+ visible: !1,
504
+ y: 0,
505
+ width: 0
506
+ });
507
+ this.bottonFrozenShadowLine.setAttributes({
508
+ visible: !isBottom,
509
+ y: rowY - (null !== (_e = null === (_d = null === (_c = this.table.theme.frozenColumnLine) || void 0 === _c ? void 0 : _c.shadow) || void 0 === _d ? void 0 : _d.width) && void 0 !== _e ? _e : 1),
510
+ width: this.table.getDrawRange().width
511
+ });
512
+ }
489
513
  }
490
514
  setTopFrozenColumnShadow() {
491
515
  var _a, _b;
@@ -504,13 +528,17 @@ export class TableComponent {
504
528
  var _a, _b, _c, _d, _e;
505
529
  const visible1 = null === (_b = null === (_a = this.table.theme.frozenColumnLine) || void 0 === _a ? void 0 : _a.shadow) || void 0 === _b ? void 0 : _b.visible;
506
530
  "scrolling" === (null !== (_e = null === (_d = null === (_c = this.table.theme.frozenColumnLine) || void 0 === _c ? void 0 : _c.shadow) || void 0 === _d ? void 0 : _d.visible) && void 0 !== _e ? _e : visible1) && (this.frozenShadowLine.setAttribute("visible", !1),
507
- this.rightFrozenShadowLine.setAttribute("visible", !1), this.table.scenegraph.updateNextFrame());
531
+ this.rightFrozenShadowLine.setAttribute("visible", !1), this.topFrozenShadowLine && this.topFrozenShadowLine.setAttribute("visible", !1),
532
+ this.bottonFrozenShadowLine && this.bottonFrozenShadowLine.setAttribute("visible", !1),
533
+ this.table.scenegraph.updateNextFrame());
508
534
  }
509
535
  showFrozenColumnShadow() {
510
536
  var _a, _b, _c, _d, _e;
511
537
  const visible1 = null === (_b = null === (_a = this.table.theme.frozenColumnLine) || void 0 === _a ? void 0 : _a.shadow) || void 0 === _b ? void 0 : _b.visible;
512
538
  "scrolling" === (null !== (_e = null === (_d = null === (_c = this.table.theme.frozenColumnLine) || void 0 === _c ? void 0 : _c.shadow) || void 0 === _d ? void 0 : _d.visible) && void 0 !== _e ? _e : visible1) && (this.frozenShadowLine.setAttribute("visible", !0),
513
- this.rightFrozenShadowLine.setAttribute("visible", !0), this.table.scenegraph.updateNextFrame());
539
+ this.rightFrozenShadowLine.setAttribute("visible", !0), this.topFrozenShadowLine && this.topFrozenShadowLine.setAttribute("visible", !0),
540
+ this.bottonFrozenShadowLine && this.bottonFrozenShadowLine.setAttribute("visible", !0),
541
+ this.table.scenegraph.updateNextFrame());
514
542
  }
515
543
  hideVerticalScrollBar() {
516
544
  var _a;
@@ -537,6 +565,7 @@ export class TableComponent {
537
565
  this.hScrollBar.showAll(), this.table.scenegraph.updateNextFrame());
538
566
  }
539
567
  updateVerticalScrollBarPos(topRatio) {
568
+ this.updateVerticalFrozenShadowLine(topRatio);
540
569
  const range = this.vScrollBar.attribute.range, size = range[1] - range[0], range0 = topRatio * (1 - size);
541
570
  this.vScrollBar.setAttribute("range", [ range0, range0 + size ]);
542
571
  const bounds = this.vScrollBar.AABBBounds && this.vScrollBar.globalAABBBounds;
@@ -546,6 +575,7 @@ export class TableComponent {
546
575
  };
547
576
  }
548
577
  updateHorizontalScrollBarPos(leftRatio) {
578
+ this.updateHorizontalFrozenShadowLine(leftRatio);
549
579
  const range = this.hScrollBar.attribute.range, size = range[1] - range[0], range0 = leftRatio * (1 - size);
550
580
  this.hScrollBar.setAttribute("range", [ range0, range0 + size ]);
551
581
  const bounds = this.hScrollBar.AABBBounds && this.hScrollBar.globalAABBBounds;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/component/table-component.ts"],"names":[],"mappings":"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","file":"table-component.js","sourcesContent":["import { theme } from './../../themes';\nimport type { ILine, IRect, IGroup, FederatedPointerEvent, Text, IText } from './../../vrender';\nimport { createRect, createLine, createText, createGroup, createSymbol } from './../../vrender';\nimport { ScrollBar } from './../../vrender';\nimport type { Group } from '../graphic/group';\nimport { MenuHandler } from './menu';\nimport { DrillIcon } from './drill-icon';\nimport { CellMover } from './cell-mover';\nimport { getColX, getRowBottomY, getRowTopY, getRowY } from './util';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { isValid } from '@visactor/vutils';\n\n/**\n * @description: 表格内容外组件\n * @return {*}\n */\nexport class TableComponent {\n table: BaseTableAPI;\n\n border: IRect; // 表格外边框\n // selectBorder: IRect; // 表格选择区域边框\n columnResizeLine: ILine; // 表格列宽调整基准线\n columnResizeBgLine: ILine; // 表格列宽调整基准线背景\n columnResizeLabel: IGroup; // 表格列宽调整标记\n rowResizeLine: ILine; // 表格列宽调整基准线\n rowResizeBgLine: ILine; // 表格列宽调整基准线背景\n rowResizeLabel: IGroup; // 表格列宽调整标记\n menu: MenuHandler; // 表格菜单\n vScrollBar: ScrollBar; // 表格横向滚动条\n hScrollBar: ScrollBar; // 表格纵向滚动条\n frozenShadowLine: IRect; // 表格冻结列右侧阴影块\n rightFrozenShadowLine: IRect; // 表格右侧冻结列左侧阴影块\n topFrozenShadowLine: IRect; // 表格顶部冻结列上侧阴影块\n bottonFrozenShadowLine: IRect; // 表格底部冻结列上侧阴影块\n drillIcon: DrillIcon; // drill icon\n cellMover: CellMover; // 表格列顺序调整标记\n labelVisible: boolean; // 是否显示label\n constructor(table: BaseTableAPI) {\n this.table = table;\n const theme = this.table.theme;\n\n // 滚动条\n this.createScrollBar();\n\n // 列宽调整基准线\n const columnResizeColor = theme.columnResize?.lineColor;\n const columnResizeWidth = theme.columnResize?.lineWidth;\n const columnResizeBgColor = theme.columnResize?.bgColor;\n const columnResizeBgWidth = theme.columnResize?.width;\n const labelVisible = theme.columnResize?.labelVisible ?? true;\n const labelColor = theme.columnResize?.labelColor;\n const labelFontSize = theme.columnResize?.labelFontSize;\n const labelFontFamily = theme.columnResize?.labelFontFamily;\n const labelBackgroundFill = theme.columnResize?.labelBackgroundFill;\n const labelBackgroundCornerRadius = theme.columnResize?.labelBackgroundCornerRadius;\n\n this.labelVisible = labelVisible;\n\n this.columnResizeLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeColor as string,\n lineWidth: columnResizeWidth as number,\n x: 0,\n y: 0,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n this.columnResizeBgLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeBgColor as string,\n lineWidth: columnResizeBgWidth as number,\n x: 0,\n y: 0,\n // dx: -(columnResizeBgWidth - columnResizeWidth) / 2,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n\n const columnResizeLabelText = createText({\n visible: false,\n pickable: false,\n x: 0,\n y: 0,\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n text: '',\n textBaseline: 'top',\n dx: 12 + 4,\n dy: -labelFontSize / 2\n });\n const columnResizeLabelBack = createRect({\n visible: false,\n pickable: false,\n fill: labelBackgroundFill,\n x: 0,\n y: 0,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dx: 12,\n dy: -labelFontSize / 2 - 4\n });\n this.columnResizeLabel = createGroup({\n visible: false,\n pickable: false,\n x: 0,\n y: 0\n });\n this.columnResizeLabel.appendChild(columnResizeLabelBack);\n this.columnResizeLabel.appendChild(columnResizeLabelText);\n\n this.rowResizeLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeColor as string,\n lineWidth: columnResizeWidth as number,\n x: 0,\n y: 0,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n this.rowResizeBgLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeBgColor as string,\n lineWidth: columnResizeBgWidth as number,\n x: 0,\n y: 0,\n // dx: -(columnResizeBgWidth - columnResizeWidth) / 2,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n\n // 列宽调整文字标签\n const rowResizeLabelText = createText({\n visible: false,\n pickable: false,\n x: 0,\n y: 0,\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n text: '',\n textBaseline: 'top',\n dx: 12 + 4,\n dy: -labelFontSize / 2\n });\n const rowResizeLabelBack = createRect({\n visible: false,\n pickable: false,\n fill: labelBackgroundFill,\n x: 0,\n y: 0,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dx: 12,\n dy: -labelFontSize / 2 - 4\n });\n this.rowResizeLabel = createGroup({\n visible: false,\n pickable: false,\n x: 0,\n y: 0\n });\n this.rowResizeLabel.appendChild(rowResizeLabelBack);\n this.rowResizeLabel.appendChild(rowResizeLabelText);\n // 列顺序调整基准线\n this.cellMover = new CellMover(this.table);\n\n // 冻结列阴影\n const shadowWidth = theme.frozenColumnLine?.shadow?.width;\n const shadowStartColor = theme.frozenColumnLine?.shadow?.startColor;\n const shadowEndColor = theme.frozenColumnLine?.shadow?.endColor;\n const visible = theme.frozenColumnLine?.shadow?.visible;\n this.frozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: shadowWidth,\n height: 0,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowStartColor, offset: 0 },\n { color: shadowEndColor, offset: 1 }\n ]\n }\n });\n this.rightFrozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: shadowWidth,\n height: 0,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowEndColor, offset: 0 },\n { color: shadowStartColor, offset: 1 }\n ]\n }\n });\n\n this.topFrozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: 0,\n height: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 1,\n stops: [\n { color: shadowStartColor, offset: 0 },\n { color: shadowEndColor, offset: 1 }\n ]\n }\n });\n\n this.bottonFrozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: 0,\n height: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 1,\n stops: [\n { color: shadowEndColor, offset: 0 },\n { color: shadowStartColor, offset: 1 }\n ]\n }\n });\n\n // TO BE DONE 冻结列border(theme.frozenColumnLine?.border)\n\n // 弹出窗口\n // this.menu = createGroup({\n // visible: false,\n // pickable: false,\n // x: 0,\n // y: 0,\n // });\n this.menu = new MenuHandler(this.table);\n\n this.drillIcon = new DrillIcon();\n }\n\n /**\n * @description: 组件mark加入到容器Group中\n * @param {Group} componentGroup\n * @return {*}\n */\n addToGroup(componentGroup: Group) {\n componentGroup.addChild(this.frozenShadowLine);\n componentGroup.addChild(this.rightFrozenShadowLine);\n componentGroup.addChild(this.bottonFrozenShadowLine);\n componentGroup.addChild(this.topFrozenShadowLine);\n // componentGroup.addChild(this.selectBorder);\n componentGroup.addChild(this.columnResizeBgLine);\n componentGroup.addChild(this.columnResizeLine);\n componentGroup.addChild(this.columnResizeLabel);\n componentGroup.addChild(this.rowResizeBgLine);\n componentGroup.addChild(this.rowResizeLine);\n componentGroup.addChild(this.rowResizeLabel);\n\n const hoverOn = this.table.theme.scrollStyle.hoverOn;\n if (hoverOn && !this.table.theme.scrollStyle.barToSide) {\n componentGroup.addChild(this.hScrollBar);\n componentGroup.addChild(this.vScrollBar);\n } else {\n componentGroup.stage.defaultLayer.addChild(this.hScrollBar);\n componentGroup.stage.defaultLayer.addChild(this.vScrollBar);\n\n // // add scroll bar before border, avoid scroll hide by border globalCompositeOperation\n // componentGroup.stage.defaultLayer.insertBefore(this.vScrollBar, componentGroup.stage.defaultLayer.firstChild);\n // componentGroup.stage.defaultLayer.insertBefore(this.hScrollBar, componentGroup.stage.defaultLayer.firstChild);\n }\n this.menu.bindTableComponent(componentGroup);\n this.drillIcon.appand(componentGroup);\n this.cellMover.appand(componentGroup);\n }\n\n /**\n * @description: 创建滚动条组件\n * @return {*}\n */\n createScrollBar() {\n const theme = this.table.theme;\n const scrollRailColor = theme.scrollStyle?.scrollRailColor as string;\n const scrollSliderColor = theme.scrollStyle?.scrollSliderColor as string;\n const scrollSliderCornerRadius = theme.scrollStyle?.scrollSliderCornerRadius;\n const width = theme.scrollStyle?.width as number;\n const horizontalPadding = theme.scrollStyle?.horizontalPadding;\n const verticalPadding = theme.scrollStyle?.verticalPadding;\n\n let sliderStyle;\n if (isValid(scrollSliderCornerRadius)) {\n sliderStyle = {\n cornerRadius: scrollSliderCornerRadius,\n fill: scrollSliderColor\n };\n } else {\n sliderStyle = {\n fill: scrollSliderColor\n };\n }\n // const visible = theme.scrollStyle?.visible as string;\n // const hoverOn = theme.scrollStyle?.hoverOn as boolean;\n\n this.hScrollBar = new ScrollBar({\n direction: 'horizontal',\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n width: this.table.tableNoFrameWidth,\n height: width,\n padding: horizontalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle,\n range: [0, 0.1],\n // scrollRange: [0.4, 0.8]\n visible: false\n });\n // hack方案实现初始化隐藏滚动条,也可以add到stage之后执行hideAll\n (this.hScrollBar as any).render();\n this.hScrollBar.hideAll();\n\n this.vScrollBar = new ScrollBar({\n direction: 'vertical',\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n width,\n height: this.table.tableNoFrameHeight - this.table.getFrozenRowsHeight(),\n padding: verticalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle,\n range: [0, 0.1],\n visible: false\n });\n (this.vScrollBar as any).render();\n this.vScrollBar.hideAll();\n }\n\n /**\n * @description: 更新滚动条尺寸\n * @return {*}\n */\n updateScrollBar() {\n const oldHorizontalBarPos = this.table.stateManager.scroll.horizontalBarPos;\n const oldVerticalBarPos = this.table.stateManager.scroll.verticalBarPos;\n\n const theme = this.table.theme;\n const width = theme.scrollStyle?.width as number;\n const visible1 = theme.scrollStyle?.visible as string;\n const horizontalVisible = theme.scrollStyle?.horizontalVisible ?? visible1;\n const verticalVisible = theme.scrollStyle?.verticalVisible ?? visible1;\n // const hoverOn = theme.scrollStyle?.hoverOn as boolean;\n // const tableWidth = Math.ceil(this.table.scenegraph.tableGroup.attribute.width);\n // const tableHeight = Math.ceil(this.table.scenegraph.tableGroup.attribute.height);\n const tableWidth = Math.ceil(this.table.tableNoFrameWidth);\n const tableHeight = Math.ceil(this.table.tableNoFrameHeight);\n\n const totalHeight = this.table.getAllRowsHeight();\n const totalWidth = this.table.getAllColsWidth();\n const frozenRowsHeight = this.table.getFrozenRowsHeight();\n const frozenColsWidth = this.table.getFrozenColsWidth();\n const bottomFrozenRowsHeight = this.table.getBottomFrozenRowsHeight();\n const rightFrozenColsWidth = this.table.getRightFrozenColsWidth();\n const hoverOn = this.table.theme.scrollStyle.hoverOn;\n // _disableColumnAndRowSizeRound环境中,可能出现\n // getAllColsWidth/getAllRowsHeight(A) + getAllColsWidth/getAllRowsHeight(B) < getAllColsWidth/getAllRowsHeight(A+B)\n // (由于小数在取数时被省略)\n // 这里加入tolerance,避免出现无用滚动\n const sizeTolerance = this.table.options.customConfig?._disableColumnAndRowSizeRound ? 1 : 0;\n\n if (totalWidth > tableWidth + sizeTolerance) {\n const y = Math.min(tableHeight, totalHeight);\n const rangeEnd = Math.max(0.05, (tableWidth - frozenColsWidth) / (totalWidth - frozenColsWidth));\n\n let attrY = 0;\n if (this.table.theme.scrollStyle.barToSide) {\n attrY =\n this.table.tableNoFrameHeight -\n (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.y) +\n this.table.tableY;\n } else {\n attrY = y - (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.y);\n }\n\n let hScrollBarx = frozenColsWidth + (!hoverOn ? this.table.scenegraph.tableGroup.attribute.x : 0);\n\n let hScrollBarWidth = tableWidth - frozenColsWidth - rightFrozenColsWidth;\n\n // 忽略所有冻结列宽度\n const ignoreFrozenCols = this.table.theme.scrollStyle?.ignoreFrozenCols ?? false;\n\n if (ignoreFrozenCols) {\n hScrollBarx = !hoverOn ? this.table.scenegraph.tableGroup.attribute.x : 0;\n hScrollBarWidth = tableWidth;\n } else {\n hScrollBarx = frozenColsWidth + (!hoverOn ? this.table.scenegraph.tableGroup.attribute.x : 0);\n hScrollBarWidth = tableWidth - frozenColsWidth - rightFrozenColsWidth;\n }\n\n this.hScrollBar.setAttributes({\n x: hScrollBarx,\n y: attrY,\n width: hScrollBarWidth,\n range: [0, rangeEnd],\n visible: horizontalVisible === 'always'\n });\n const bounds = this.hScrollBar.AABBBounds && this.hScrollBar.globalAABBBounds;\n (this.hScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n if (horizontalVisible === 'always') {\n this.hScrollBar.showAll();\n }\n } else {\n this.hScrollBar.setAttributes({\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n width: 0,\n visible: false\n });\n }\n\n if (totalHeight > tableHeight + sizeTolerance) {\n const x = Math.min(tableWidth, totalWidth);\n const rangeEnd = Math.max(0.05, (tableHeight - frozenRowsHeight) / (totalHeight - frozenRowsHeight));\n\n let attrX = 0;\n\n if (this.table.theme.scrollStyle.barToSide) {\n attrX =\n this.table.tableNoFrameWidth -\n (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.x) +\n this.table.tableX;\n } else {\n attrX = x - (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.x);\n }\n\n this.vScrollBar.setAttributes({\n x: attrX,\n y: frozenRowsHeight + (!hoverOn ? this.table.scenegraph.tableGroup.attribute.y : 0),\n height: tableHeight - frozenRowsHeight - bottomFrozenRowsHeight,\n range: [0, rangeEnd],\n visible: verticalVisible === 'always'\n });\n const bounds = this.vScrollBar.AABBBounds && this.vScrollBar.globalAABBBounds;\n (this.vScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n\n if (verticalVisible === 'always') {\n this.vScrollBar.showAll();\n }\n } else {\n this.vScrollBar.setAttributes({\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n height: 0,\n visible: false\n });\n }\n\n this.table.stateManager.setScrollLeft(oldHorizontalBarPos);\n this.table.stateManager.setScrollTop(oldVerticalBarPos);\n }\n\n /**\n * @description: 隐藏列宽调整组件\n * @return {*}\n */\n hideResizeCol() {\n // this.columnResizeLine.attribute.visible = false;\n this.columnResizeLine.setAttribute('visible', false);\n this.columnResizeBgLine.setAttribute('visible', false);\n this.columnResizeLabel.setAttribute('visible', false);\n this.columnResizeLabel.hideAll();\n }\n\n /**\n * @description: 显示列宽调整组件\n * @param {number} col\n * @param {number} y\n * @return {*}\n */\n showResizeCol(col: number, y: number, isRightFrozen?: boolean) {\n // this.columnResizeLine.attribute.visible = false;\n // 基准线\n const colX = getColX(col, this.table, isRightFrozen);\n this.columnResizeLine.setAttributes({\n visible: true,\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) }\n ]\n });\n this.columnResizeBgLine.setAttributes({\n visible: true,\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) }\n ]\n });\n\n // 标签\n // this.columnResizeLabel.setAttribute('visible', true);\n if (this.labelVisible) {\n this.columnResizeLabel.showAll();\n this.columnResizeLabel.setAttributes({\n visible: true,\n x: colX,\n y\n });\n (this.columnResizeLabel.lastChild as Text).setAttribute('text', `${this.table.getColWidth(col)}px`);\n }\n }\n\n /**\n * @description: 更新列宽调整组件\n * @param {number} col\n * @param {number} y 标签显示的y坐标\n * @return {*}\n */\n updateResizeCol(col: number, y: number, isRightFrozen?: boolean) {\n // 基准线\n const colX = getColX(col, this.table, isRightFrozen);\n // this.columnResizeLine.setAttribute('x', x);\n this.columnResizeLine.setAttributes({\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) } // todo: 优化points赋值\n ]\n });\n this.columnResizeBgLine.setAttributes({\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) } // todo: 优化points赋值\n ]\n });\n\n // 标签\n if (this.labelVisible) {\n this.columnResizeLabel.setAttributes({\n x: colX,\n y\n });\n (this.columnResizeLabel.lastChild as Text).setAttribute('text', `${Math.floor(this.table.getColWidth(col))}px`);\n }\n }\n\n /**\n * @description: 隐藏列宽调整组件\n * @return {*}\n */\n hideResizeRow() {\n // this.columnResizeLine.attribute.visible = false;\n this.rowResizeLine.setAttribute('visible', false);\n this.rowResizeBgLine.setAttribute('visible', false);\n this.rowResizeLabel.setAttribute('visible', false);\n this.rowResizeLabel.hideAll();\n }\n\n /**\n * @description: 显示列宽调整组件\n * @param {number} col\n * @param {number} y\n * @return {*}\n */\n showResizeRow(row: number, x: number, isRightFrozen?: boolean) {\n // 基准线\n const rowY = getRowY(row, this.table, isRightFrozen);\n this.rowResizeLine.setAttributes({\n visible: true,\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) }\n ]\n });\n this.rowResizeBgLine.setAttributes({\n visible: true,\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) }\n ]\n });\n\n if (this.labelVisible) {\n // 标签\n this.rowResizeLabel.showAll();\n this.rowResizeLabel.setAttributes({\n visible: true,\n y: rowY,\n x\n });\n (this.rowResizeLabel.lastChild as Text).setAttribute('text', `${this.table.getRowHeight(row)}px`);\n }\n }\n\n /**\n * @description: 更新列宽调整组件\n * @param {number} col\n * @param {number} y 标签显示的y坐标\n * @return {*}\n */\n updateResizeRow(row: number, x: number, isBottomFrozen?: boolean) {\n // 基准线\n const rowY = getRowY(row, this.table, isBottomFrozen);\n // this.columnResizeLine.setAttribute('x', x);\n this.rowResizeLine.setAttributes({\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) } // todo: 优化points赋值\n ]\n });\n this.rowResizeBgLine.setAttributes({\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) } // todo: 优化points赋值\n ]\n });\n\n if (this.labelVisible) {\n // 标签\n this.rowResizeLabel.setAttributes({\n y: rowY,\n x\n });\n (this.rowResizeLabel.lastChild as Text).setAttribute('text', `${Math.floor(this.table.getRowHeight(row))}px`);\n }\n }\n\n /**\n * @description: 隐藏列顺序调整组件\n * @return {*}\n */\n hideMoveCol() {\n this.cellMover.hide();\n }\n\n /**\n * @description: 显示列顺序调整组件\n * @param {number} col\n * @param {number} x\n * @return {*}\n */\n showMoveCol(col: number, row: number, delta: number) {\n return this.cellMover.show(col, row, delta);\n }\n\n /**\n * @description: 更新列顺序调整组件\n * @param {number} backX\n * @param {number} lineX\n * @return {*}\n */\n updateMoveCol(backX: number, lineX: number, backY: number, lineY: number) {\n this.cellMover.update(backX, lineX, backY, lineY);\n }\n\n /**\n * @description: 显示冻结列shadow\n * @param {number} col\n * @return {*}\n */\n setFrozenColumnShadow(col: number, isRightFrozen?: boolean) {\n const colX = getColX(col, this.table, isRightFrozen);\n if (col < 0 || this.table.theme.frozenColumnLine?.shadow?.visible !== 'always') {\n this.frozenShadowLine.setAttributes({\n visible: false,\n x: colX,\n height: this.table.getDrawRange().height\n });\n } else {\n this.frozenShadowLine.setAttributes({\n visible: true,\n x: colX,\n height: this.table.getDrawRange().height\n });\n }\n }\n\n /**\n * @description: 显示右侧冻结列shadow\n * @param {number} col\n * @return {*}\n */\n setRightFrozenColumnShadow(col: number) {\n const colX = getColX(col, this.table, true);\n if (col >= this.table.colCount || this.table.theme.frozenColumnLine?.shadow?.visible !== 'always') {\n this.rightFrozenShadowLine.setAttributes({\n visible: false,\n x: colX - this.rightFrozenShadowLine.attribute.width,\n height: this.table.getDrawRange().height\n });\n } else {\n this.rightFrozenShadowLine.setAttributes({\n visible: true,\n x: colX - this.rightFrozenShadowLine.attribute.width,\n height: this.table.getDrawRange().height\n });\n }\n }\n setBottomFrozenColumnShadow() {\n const rowY = getRowBottomY(this.table);\n if (this.table.bottomFrozenRowCount === 0 || this.table.theme.frozenColumnLine?.shadow?.visible !== 'always') {\n this.bottonFrozenShadowLine.setAttributes({\n visible: false,\n y: 0,\n width: 0\n });\n } else {\n this.bottonFrozenShadowLine.setAttributes({\n visible: true,\n y: rowY - (this.table.theme.frozenColumnLine?.shadow?.width ?? 2),\n width: this.table.getDrawRange().width\n });\n }\n }\n\n setTopFrozenColumnShadow() {\n const rowY = getRowTopY(this.table);\n if (\n this.table.columnHeaderLevelCount === this.table.frozenRowCount ||\n this.table.theme.frozenColumnLine?.shadow?.visible !== 'always'\n ) {\n this.topFrozenShadowLine.setAttributes({\n visible: false,\n y: 0,\n width: 0\n });\n } else {\n this.topFrozenShadowLine.setAttributes({\n visible: true,\n y: rowY,\n width: this.table.getDrawRange().width\n });\n }\n }\n\n hideFrozenColumnShadow() {\n const visible1 = this.table.theme.frozenColumnLine?.shadow?.visible;\n const visible = this.table.theme.frozenColumnLine?.shadow?.visible ?? visible1;\n if (visible !== 'scrolling') {\n return;\n }\n this.frozenShadowLine.setAttribute('visible', false);\n this.rightFrozenShadowLine.setAttribute('visible', false);\n this.table.scenegraph.updateNextFrame();\n }\n showFrozenColumnShadow() {\n const visible1 = this.table.theme.frozenColumnLine?.shadow?.visible;\n const visible = this.table.theme.frozenColumnLine?.shadow?.visible ?? visible1;\n if (visible !== 'scrolling') {\n return;\n }\n this.frozenShadowLine.setAttribute('visible', true);\n this.rightFrozenShadowLine.setAttribute('visible', true);\n this.table.scenegraph.updateNextFrame();\n }\n hideVerticalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const verticalVisible = this.table.theme.scrollStyle.verticalVisible ?? visible1;\n if (verticalVisible !== 'focus' && verticalVisible !== 'scrolling') {\n return;\n }\n this.vScrollBar.setAttribute('visible', false);\n this.vScrollBar.hideAll();\n this.table.scenegraph.updateNextFrame();\n }\n showVerticalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const verticalVisible = this.table.theme.scrollStyle.verticalVisible ?? visible1;\n if (verticalVisible !== 'focus' && verticalVisible !== 'scrolling') {\n return;\n }\n this.vScrollBar.setAttribute('visible', true);\n this.vScrollBar.showAll();\n this.table.scenegraph.updateNextFrame();\n }\n hideHorizontalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const horizontalVisible = this.table.theme.scrollStyle.horizontalVisible ?? visible1;\n if (horizontalVisible !== 'focus' && horizontalVisible !== 'scrolling') {\n return;\n }\n this.hScrollBar.setAttribute('visible', false);\n this.hScrollBar.hideAll();\n this.table.scenegraph.updateNextFrame();\n }\n showHorizontalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const horizontalVisible = this.table.theme.scrollStyle.horizontalVisible ?? visible1;\n if (horizontalVisible !== 'focus' && horizontalVisible !== 'scrolling') {\n return;\n }\n this.hScrollBar.setAttribute('visible', true);\n this.hScrollBar.showAll();\n this.table.scenegraph.updateNextFrame();\n }\n updateVerticalScrollBarPos(topRatio: number) {\n const range = this.vScrollBar.attribute.range;\n const size = range[1] - range[0];\n const range0 = topRatio * (1 - size);\n this.vScrollBar.setAttribute('range', [range0, range0 + size]);\n const bounds = this.vScrollBar.AABBBounds && this.vScrollBar.globalAABBBounds;\n (this.vScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n }\n updateHorizontalScrollBarPos(leftRatio: number) {\n const range = this.hScrollBar.attribute.range;\n const size = range[1] - range[0];\n const range0 = leftRatio * (1 - size);\n this.hScrollBar.setAttribute('range', [range0, range0 + size]);\n const bounds = this.hScrollBar.AABBBounds && this.hScrollBar.globalAABBBounds;\n (this.hScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n }\n\n updateStyle() {\n const theme = this.table.theme;\n\n // scrollbar\n const scrollRailColor = theme.scrollStyle?.scrollRailColor as string;\n const scrollSliderColor = theme.scrollStyle?.scrollSliderColor as string;\n const scrollSliderCornerRadius = theme.scrollStyle?.scrollSliderCornerRadius;\n const width = theme.scrollStyle?.width as number;\n const horizontalPadding = theme.scrollStyle?.horizontalPadding;\n const verticalPadding = theme.scrollStyle?.verticalPadding;\n\n let sliderStyle;\n if (isValid(scrollSliderCornerRadius)) {\n sliderStyle = {\n cornerRadius: scrollSliderCornerRadius,\n fill: scrollSliderColor\n };\n } else {\n sliderStyle = {\n fill: scrollSliderColor\n };\n }\n this.hScrollBar.setAttributes({\n height: width,\n padding: horizontalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle\n });\n\n this.vScrollBar.setAttributes({\n width,\n padding: verticalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle\n });\n\n // columnResizeLine & columnResizeBgLine\n const columnResizeColor = theme.columnResize?.lineColor;\n const columnResizeWidth = theme.columnResize?.lineWidth;\n const columnResizeBgColor = theme.columnResize?.bgColor;\n const columnResizeBgWidth = theme.columnResize?.width;\n\n this.columnResizeLine.setAttributes({\n stroke: columnResizeColor as string,\n lineWidth: columnResizeWidth as number\n });\n this.columnResizeBgLine = createLine({\n stroke: columnResizeBgColor as string,\n lineWidth: columnResizeBgWidth as number\n });\n\n const labelColor = theme.columnResize?.labelColor;\n const labelFontSize = theme.columnResize?.labelFontSize;\n const labelFontFamily = theme.columnResize?.labelFontFamily;\n const labelBackgroundFill = theme.columnResize?.labelBackgroundFill;\n const labelBackgroundCornerRadius = theme.columnResize?.labelBackgroundCornerRadius;\n const labelVisible = theme.columnResize?.labelVisible ?? true;\n this.labelVisible = labelVisible;\n\n // columnResizeLabelBack\n (this.columnResizeLabel.lastChild as IText).setAttributes({\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n dy: -labelFontSize / 2\n });\n // columnResizeLabelText\n (this.columnResizeLabel.firstChild as IRect).setAttributes({\n fill: labelBackgroundFill,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dy: -labelFontSize / 2 - 4\n });\n\n // rowResizeLabelBack\n (this.rowResizeLabel.lastChild as IText).setAttributes({\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n dy: -labelFontSize / 2\n });\n // rowResizeLabelText\n (this.rowResizeLabel.firstChild as IRect).setAttributes({\n fill: labelBackgroundFill,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dy: -labelFontSize / 2 - 4\n });\n\n // frozenShadowLine\n const shadowWidth = theme.frozenColumnLine?.shadow?.width;\n const shadowStartColor = theme.frozenColumnLine?.shadow?.startColor;\n const shadowEndColor = theme.frozenColumnLine?.shadow?.endColor;\n this.frozenShadowLine.setAttributes({\n width: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowStartColor, offset: 0 },\n { color: shadowEndColor, offset: 1 }\n ]\n }\n });\n this.rightFrozenShadowLine.setAttributes({\n width: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowEndColor, offset: 0 },\n { color: shadowStartColor, offset: 1 }\n ]\n }\n });\n\n this.cellMover.updateStyle();\n // this.menu.updateStyle();\n // this.drillIcon.updateStyle();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/component/table-component.ts"],"names":[],"mappings":"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","file":"table-component.js","sourcesContent":["import { theme } from './../../themes';\nimport type { ILine, IRect, IGroup, FederatedPointerEvent, Text, IText } from './../../vrender';\nimport { createRect, createLine, createText, createGroup, createSymbol } from './../../vrender';\nimport { ScrollBar } from './../../vrender';\nimport type { Group } from '../graphic/group';\nimport { MenuHandler } from './menu';\nimport { DrillIcon } from './drill-icon';\nimport { CellMover } from './cell-mover';\nimport { getColX, getRowBottomY, getRowTopY, getRowY } from './util';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { isValid } from '@visactor/vutils';\n\n/**\n * @description: 表格内容外组件\n * @return {*}\n */\nexport class TableComponent {\n table: BaseTableAPI;\n\n border: IRect; // 表格外边框\n // selectBorder: IRect; // 表格选择区域边框\n columnResizeLine: ILine; // 表格列宽调整基准线\n columnResizeBgLine: ILine; // 表格列宽调整基准线背景\n columnResizeLabel: IGroup; // 表格列宽调整标记\n rowResizeLine: ILine; // 表格列宽调整基准线\n rowResizeBgLine: ILine; // 表格列宽调整基准线背景\n rowResizeLabel: IGroup; // 表格列宽调整标记\n menu: MenuHandler; // 表格菜单\n vScrollBar: ScrollBar; // 表格横向滚动条\n hScrollBar: ScrollBar; // 表格纵向滚动条\n frozenShadowLine: IRect; // 表格冻结列右侧阴影块\n rightFrozenShadowLine: IRect; // 表格右侧冻结列左侧阴影块\n topFrozenShadowLine: IRect; // 表格顶部冻结列上侧阴影块\n bottonFrozenShadowLine: IRect; // 表格底部冻结列上侧阴影块\n drillIcon: DrillIcon; // drill icon\n cellMover: CellMover; // 表格列顺序调整标记\n labelVisible: boolean; // 是否显示label\n constructor(table: BaseTableAPI) {\n this.table = table;\n const theme = this.table.theme;\n\n // 滚动条\n this.createScrollBar();\n\n // 列宽调整基准线\n const columnResizeColor = theme.columnResize?.lineColor;\n const columnResizeWidth = theme.columnResize?.lineWidth;\n const columnResizeBgColor = theme.columnResize?.bgColor;\n const columnResizeBgWidth = theme.columnResize?.width;\n const labelVisible = theme.columnResize?.labelVisible ?? true;\n const labelColor = theme.columnResize?.labelColor;\n const labelFontSize = theme.columnResize?.labelFontSize;\n const labelFontFamily = theme.columnResize?.labelFontFamily;\n const labelBackgroundFill = theme.columnResize?.labelBackgroundFill;\n const labelBackgroundCornerRadius = theme.columnResize?.labelBackgroundCornerRadius;\n\n this.labelVisible = labelVisible;\n\n this.columnResizeLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeColor as string,\n lineWidth: columnResizeWidth as number,\n x: 0,\n y: 0,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n this.columnResizeBgLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeBgColor as string,\n lineWidth: columnResizeBgWidth as number,\n x: 0,\n y: 0,\n // dx: -(columnResizeBgWidth - columnResizeWidth) / 2,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n\n const columnResizeLabelText = createText({\n visible: false,\n pickable: false,\n x: 0,\n y: 0,\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n text: '',\n textBaseline: 'top',\n dx: 12 + 4,\n dy: -labelFontSize / 2\n });\n const columnResizeLabelBack = createRect({\n visible: false,\n pickable: false,\n fill: labelBackgroundFill,\n x: 0,\n y: 0,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dx: 12,\n dy: -labelFontSize / 2 - 4\n });\n this.columnResizeLabel = createGroup({\n visible: false,\n pickable: false,\n x: 0,\n y: 0\n });\n this.columnResizeLabel.appendChild(columnResizeLabelBack);\n this.columnResizeLabel.appendChild(columnResizeLabelText);\n\n this.rowResizeLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeColor as string,\n lineWidth: columnResizeWidth as number,\n x: 0,\n y: 0,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n this.rowResizeBgLine = createLine({\n visible: false,\n pickable: false,\n stroke: columnResizeBgColor as string,\n lineWidth: columnResizeBgWidth as number,\n x: 0,\n y: 0,\n // dx: -(columnResizeBgWidth - columnResizeWidth) / 2,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ]\n });\n\n // 列宽调整文字标签\n const rowResizeLabelText = createText({\n visible: false,\n pickable: false,\n x: 0,\n y: 0,\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n text: '',\n textBaseline: 'top',\n dx: 12 + 4,\n dy: -labelFontSize / 2\n });\n const rowResizeLabelBack = createRect({\n visible: false,\n pickable: false,\n fill: labelBackgroundFill,\n x: 0,\n y: 0,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dx: 12,\n dy: -labelFontSize / 2 - 4\n });\n this.rowResizeLabel = createGroup({\n visible: false,\n pickable: false,\n x: 0,\n y: 0\n });\n this.rowResizeLabel.appendChild(rowResizeLabelBack);\n this.rowResizeLabel.appendChild(rowResizeLabelText);\n // 列顺序调整基准线\n this.cellMover = new CellMover(this.table);\n\n // 冻结列阴影\n const shadowWidth = theme.frozenColumnLine?.shadow?.width;\n const shadowStartColor = theme.frozenColumnLine?.shadow?.startColor;\n const shadowEndColor = theme.frozenColumnLine?.shadow?.endColor;\n const visible = theme.frozenColumnLine?.shadow?.visible;\n this.frozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: shadowWidth,\n height: 0,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowStartColor, offset: 0 },\n { color: shadowEndColor, offset: 1 }\n ]\n }\n });\n this.rightFrozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: shadowWidth,\n height: 0,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowEndColor, offset: 0 },\n { color: shadowStartColor, offset: 1 }\n ]\n }\n });\n\n this.topFrozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: 0,\n height: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 1,\n stops: [\n { color: shadowStartColor, offset: 0 },\n { color: shadowEndColor, offset: 1 }\n ]\n }\n });\n\n this.bottonFrozenShadowLine = createRect({\n visible: visible === 'always',\n pickable: false,\n x: 0,\n y: 0,\n width: 0,\n height: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 1,\n stops: [\n { color: shadowEndColor, offset: 0 },\n { color: shadowStartColor, offset: 1 }\n ]\n }\n });\n\n // TO BE DONE 冻结列border(theme.frozenColumnLine?.border)\n\n // 弹出窗口\n // this.menu = createGroup({\n // visible: false,\n // pickable: false,\n // x: 0,\n // y: 0,\n // });\n this.menu = new MenuHandler(this.table);\n\n this.drillIcon = new DrillIcon();\n }\n\n /**\n * @description: 组件mark加入到容器Group中\n * @param {Group} componentGroup\n * @return {*}\n */\n addToGroup(componentGroup: Group) {\n componentGroup.addChild(this.frozenShadowLine);\n componentGroup.addChild(this.rightFrozenShadowLine);\n componentGroup.addChild(this.bottonFrozenShadowLine);\n componentGroup.addChild(this.topFrozenShadowLine);\n // componentGroup.addChild(this.selectBorder);\n componentGroup.addChild(this.columnResizeBgLine);\n componentGroup.addChild(this.columnResizeLine);\n componentGroup.addChild(this.columnResizeLabel);\n componentGroup.addChild(this.rowResizeBgLine);\n componentGroup.addChild(this.rowResizeLine);\n componentGroup.addChild(this.rowResizeLabel);\n\n const hoverOn = this.table.theme.scrollStyle.hoverOn;\n if (hoverOn && !this.table.theme.scrollStyle.barToSide) {\n componentGroup.addChild(this.hScrollBar);\n componentGroup.addChild(this.vScrollBar);\n } else {\n componentGroup.stage.defaultLayer.addChild(this.hScrollBar);\n componentGroup.stage.defaultLayer.addChild(this.vScrollBar);\n\n // // add scroll bar before border, avoid scroll hide by border globalCompositeOperation\n // componentGroup.stage.defaultLayer.insertBefore(this.vScrollBar, componentGroup.stage.defaultLayer.firstChild);\n // componentGroup.stage.defaultLayer.insertBefore(this.hScrollBar, componentGroup.stage.defaultLayer.firstChild);\n }\n this.menu.bindTableComponent(componentGroup);\n this.drillIcon.appand(componentGroup);\n this.cellMover.appand(componentGroup);\n }\n\n /**\n * @description: 创建滚动条组件\n * @return {*}\n */\n createScrollBar() {\n const theme = this.table.theme;\n const scrollRailColor = theme.scrollStyle?.scrollRailColor as string;\n const scrollSliderColor = theme.scrollStyle?.scrollSliderColor as string;\n const scrollSliderCornerRadius = theme.scrollStyle?.scrollSliderCornerRadius;\n const width = theme.scrollStyle?.width as number;\n const horizontalPadding = theme.scrollStyle?.horizontalPadding;\n const verticalPadding = theme.scrollStyle?.verticalPadding;\n\n let sliderStyle;\n if (isValid(scrollSliderCornerRadius)) {\n sliderStyle = {\n cornerRadius: scrollSliderCornerRadius,\n fill: scrollSliderColor\n };\n } else {\n sliderStyle = {\n fill: scrollSliderColor\n };\n }\n // const visible = theme.scrollStyle?.visible as string;\n // const hoverOn = theme.scrollStyle?.hoverOn as boolean;\n\n this.hScrollBar = new ScrollBar({\n direction: 'horizontal',\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n width: this.table.tableNoFrameWidth,\n height: width,\n padding: horizontalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle,\n range: [0, 0.1],\n // scrollRange: [0.4, 0.8]\n visible: false\n });\n // hack方案实现初始化隐藏滚动条,也可以add到stage之后执行hideAll\n (this.hScrollBar as any).render();\n this.hScrollBar.hideAll();\n\n this.vScrollBar = new ScrollBar({\n direction: 'vertical',\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n width,\n height: this.table.tableNoFrameHeight - this.table.getFrozenRowsHeight(),\n padding: verticalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle,\n range: [0, 0.1],\n visible: false\n });\n (this.vScrollBar as any).render();\n this.vScrollBar.hideAll();\n }\n\n /**\n * @description: 更新滚动条尺寸\n * @return {*}\n */\n updateScrollBar() {\n const oldHorizontalBarPos = this.table.stateManager.scroll.horizontalBarPos;\n const oldVerticalBarPos = this.table.stateManager.scroll.verticalBarPos;\n\n const theme = this.table.theme;\n const width = theme.scrollStyle?.width as number;\n const visible1 = theme.scrollStyle?.visible as string;\n const horizontalVisible = theme.scrollStyle?.horizontalVisible ?? visible1;\n const verticalVisible = theme.scrollStyle?.verticalVisible ?? visible1;\n // const hoverOn = theme.scrollStyle?.hoverOn as boolean;\n // const tableWidth = Math.ceil(this.table.scenegraph.tableGroup.attribute.width);\n // const tableHeight = Math.ceil(this.table.scenegraph.tableGroup.attribute.height);\n const tableWidth = Math.ceil(this.table.tableNoFrameWidth);\n const tableHeight = Math.ceil(this.table.tableNoFrameHeight);\n\n const totalHeight = this.table.getAllRowsHeight();\n const totalWidth = this.table.getAllColsWidth();\n const frozenRowsHeight = this.table.getFrozenRowsHeight();\n const frozenColsWidth = this.table.getFrozenColsWidth();\n const bottomFrozenRowsHeight = this.table.getBottomFrozenRowsHeight();\n const rightFrozenColsWidth = this.table.getRightFrozenColsWidth();\n const hoverOn = this.table.theme.scrollStyle.hoverOn;\n // _disableColumnAndRowSizeRound环境中,可能出现\n // getAllColsWidth/getAllRowsHeight(A) + getAllColsWidth/getAllRowsHeight(B) < getAllColsWidth/getAllRowsHeight(A+B)\n // (由于小数在取数时被省略)\n // 这里加入tolerance,避免出现无用滚动\n const sizeTolerance = this.table.options.customConfig?._disableColumnAndRowSizeRound ? 1 : 0;\n if (totalWidth > tableWidth + sizeTolerance) {\n const y = Math.min(tableHeight, totalHeight);\n const rangeEnd = Math.max(0.05, (tableWidth - frozenColsWidth) / (totalWidth - frozenColsWidth));\n\n let attrY = 0;\n if (this.table.theme.scrollStyle.barToSide) {\n attrY =\n this.table.tableNoFrameHeight -\n (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.y) +\n this.table.tableY;\n } else {\n attrY = y - (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.y);\n }\n\n let hScrollBarx = frozenColsWidth + (!hoverOn ? this.table.scenegraph.tableGroup.attribute.x : 0);\n\n let hScrollBarWidth = tableWidth - frozenColsWidth - rightFrozenColsWidth;\n\n // 忽略所有冻结列宽度\n const ignoreFrozenCols = this.table.theme.scrollStyle?.ignoreFrozenCols ?? false;\n\n if (ignoreFrozenCols) {\n hScrollBarx = !hoverOn ? this.table.scenegraph.tableGroup.attribute.x : 0;\n hScrollBarWidth = tableWidth;\n } else {\n hScrollBarx = frozenColsWidth + (!hoverOn ? this.table.scenegraph.tableGroup.attribute.x : 0);\n hScrollBarWidth = tableWidth - frozenColsWidth - rightFrozenColsWidth;\n }\n\n this.hScrollBar.setAttributes({\n x: hScrollBarx,\n y: attrY,\n width: hScrollBarWidth,\n range: [0, rangeEnd],\n visible: horizontalVisible === 'always'\n });\n const bounds = this.hScrollBar.AABBBounds && this.hScrollBar.globalAABBBounds;\n (this.hScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n if (horizontalVisible === 'always') {\n this.hScrollBar.showAll();\n }\n } else {\n this.hScrollBar.setAttributes({\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n width: 0,\n visible: false\n });\n }\n\n if (totalHeight > tableHeight + sizeTolerance) {\n const x = Math.min(tableWidth, totalWidth);\n const rangeEnd = Math.max(0.05, (tableHeight - frozenRowsHeight) / (totalHeight - frozenRowsHeight));\n\n let attrX = 0;\n\n if (this.table.theme.scrollStyle.barToSide) {\n attrX =\n this.table.tableNoFrameWidth -\n (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.x) +\n this.table.tableX;\n } else {\n attrX = x - (hoverOn ? width : -this.table.scenegraph.tableGroup.attribute.x);\n }\n\n this.vScrollBar.setAttributes({\n x: attrX,\n y: frozenRowsHeight + (!hoverOn ? this.table.scenegraph.tableGroup.attribute.y : 0),\n height: tableHeight - frozenRowsHeight - bottomFrozenRowsHeight,\n range: [0, rangeEnd],\n visible: verticalVisible === 'always'\n });\n const bounds = this.vScrollBar.AABBBounds && this.vScrollBar.globalAABBBounds;\n (this.vScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n\n if (verticalVisible === 'always') {\n this.vScrollBar.showAll();\n }\n } else {\n this.vScrollBar.setAttributes({\n x: -this.table.tableNoFrameWidth * 2,\n y: -this.table.tableNoFrameHeight * 2,\n height: 0,\n visible: false\n });\n }\n\n this.table.stateManager.setScrollLeft(oldHorizontalBarPos);\n this.table.stateManager.setScrollTop(oldVerticalBarPos);\n }\n\n /**\n * @description: 隐藏列宽调整组件\n * @return {*}\n */\n hideResizeCol() {\n // this.columnResizeLine.attribute.visible = false;\n this.columnResizeLine.setAttribute('visible', false);\n this.columnResizeBgLine.setAttribute('visible', false);\n this.columnResizeLabel.setAttribute('visible', false);\n this.columnResizeLabel.hideAll();\n }\n\n /**\n * @description: 显示列宽调整组件\n * @param {number} col\n * @param {number} y\n * @return {*}\n */\n showResizeCol(col: number, y: number, isRightFrozen?: boolean) {\n // this.columnResizeLine.attribute.visible = false;\n // 基准线\n const colX = getColX(col, this.table, isRightFrozen);\n this.columnResizeLine.setAttributes({\n visible: true,\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) }\n ]\n });\n this.columnResizeBgLine.setAttributes({\n visible: true,\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) }\n ]\n });\n\n // 标签\n // this.columnResizeLabel.setAttribute('visible', true);\n if (this.labelVisible) {\n this.columnResizeLabel.showAll();\n this.columnResizeLabel.setAttributes({\n visible: true,\n x: colX,\n y\n });\n (this.columnResizeLabel.lastChild as Text).setAttribute('text', `${this.table.getColWidth(col)}px`);\n }\n }\n\n /**\n * @description: 更新列宽调整组件\n * @param {number} col\n * @param {number} y 标签显示的y坐标\n * @return {*}\n */\n updateResizeCol(col: number, y: number, isRightFrozen?: boolean) {\n // 基准线\n const colX = getColX(col, this.table, isRightFrozen);\n // this.columnResizeLine.setAttribute('x', x);\n this.columnResizeLine.setAttributes({\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) } // todo: 优化points赋值\n ]\n });\n this.columnResizeBgLine.setAttributes({\n x: colX,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: this.table.getRowsHeight(0, this.table.rowCount - 1) } // todo: 优化points赋值\n ]\n });\n\n // 标签\n if (this.labelVisible) {\n this.columnResizeLabel.setAttributes({\n x: colX,\n y\n });\n (this.columnResizeLabel.lastChild as Text).setAttribute('text', `${Math.floor(this.table.getColWidth(col))}px`);\n }\n }\n\n /**\n * @description: 隐藏列宽调整组件\n * @return {*}\n */\n hideResizeRow() {\n // this.columnResizeLine.attribute.visible = false;\n this.rowResizeLine.setAttribute('visible', false);\n this.rowResizeBgLine.setAttribute('visible', false);\n this.rowResizeLabel.setAttribute('visible', false);\n this.rowResizeLabel.hideAll();\n }\n\n /**\n * @description: 显示列宽调整组件\n * @param {number} col\n * @param {number} y\n * @return {*}\n */\n showResizeRow(row: number, x: number, isRightFrozen?: boolean) {\n // 基准线\n const rowY = getRowY(row, this.table, isRightFrozen);\n this.rowResizeLine.setAttributes({\n visible: true,\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) }\n ]\n });\n this.rowResizeBgLine.setAttributes({\n visible: true,\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) }\n ]\n });\n\n if (this.labelVisible) {\n // 标签\n this.rowResizeLabel.showAll();\n this.rowResizeLabel.setAttributes({\n visible: true,\n y: rowY,\n x\n });\n (this.rowResizeLabel.lastChild as Text).setAttribute('text', `${this.table.getRowHeight(row)}px`);\n }\n }\n\n /**\n * @description: 更新列宽调整组件\n * @param {number} col\n * @param {number} y 标签显示的y坐标\n * @return {*}\n */\n updateResizeRow(row: number, x: number, isBottomFrozen?: boolean) {\n // 基准线\n const rowY = getRowY(row, this.table, isBottomFrozen);\n // this.columnResizeLine.setAttribute('x', x);\n this.rowResizeLine.setAttributes({\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) } // todo: 优化points赋值\n ]\n });\n this.rowResizeBgLine.setAttributes({\n y: rowY,\n points: [\n { y: 0, x: 0 },\n { y: 0, x: this.table.getColsWidth(0, this.table.colCount - 1) } // todo: 优化points赋值\n ]\n });\n\n if (this.labelVisible) {\n // 标签\n this.rowResizeLabel.setAttributes({\n y: rowY,\n x\n });\n (this.rowResizeLabel.lastChild as Text).setAttribute('text', `${Math.floor(this.table.getRowHeight(row))}px`);\n }\n }\n\n /**\n * @description: 隐藏列顺序调整组件\n * @return {*}\n */\n hideMoveCol() {\n this.cellMover.hide();\n }\n\n /**\n * @description: 显示列顺序调整组件\n * @param {number} col\n * @param {number} x\n * @return {*}\n */\n showMoveCol(col: number, row: number, delta: number) {\n return this.cellMover.show(col, row, delta);\n }\n\n /**\n * @description: 更新列顺序调整组件\n * @param {number} backX\n * @param {number} lineX\n * @return {*}\n */\n updateMoveCol(backX: number, lineX: number, backY: number, lineY: number) {\n this.cellMover.update(backX, lineX, backY, lineY);\n }\n\n /**\n * @description: 显示冻结列shadow\n * @param {number} col\n * @return {*}\n */\n setFrozenColumnShadow(col: number, isRightFrozen?: boolean) {\n const colX = getColX(col, this.table, isRightFrozen);\n if (col < 0 || this.table.theme.frozenColumnLine?.shadow?.visible !== 'always') {\n this.frozenShadowLine.setAttributes({\n visible: false,\n x: colX,\n height: this.table.getDrawRange().height\n });\n } else {\n this.frozenShadowLine.setAttributes({\n visible: true,\n x: colX,\n height: this.table.getDrawRange().height\n });\n }\n }\n\n /**\n * @description: 显示右侧冻结列shadow\n * @param {number} col\n * @return {*}\n */\n setRightFrozenColumnShadow(col: number) {\n const colX = getColX(col, this.table, true);\n if (col >= this.table.colCount || this.table.theme.frozenColumnLine?.shadow?.visible !== 'always') {\n this.rightFrozenShadowLine.setAttributes({\n visible: false,\n x: colX - this.rightFrozenShadowLine.attribute.width,\n height: this.table.getDrawRange().height\n });\n } else {\n this.rightFrozenShadowLine.setAttributes({\n visible: true,\n x: colX - this.rightFrozenShadowLine.attribute.width,\n height: this.table.getDrawRange().height\n });\n }\n }\n setBottomFrozenColumnShadow() {\n const rowY = getRowBottomY(this.table);\n if (this.table.bottomFrozenRowCount === 0 || this.table.theme.frozenColumnLine?.shadow?.visible !== 'always') {\n this.bottonFrozenShadowLine.setAttributes({\n visible: false,\n y: 0,\n width: 0\n });\n } else {\n const isBottom = this.table.getAllRowsHeight() - (this.table.scrollTop + this.table.tableNoFrameHeight) <= 0;\n\n if (isBottom){\n this.bottonFrozenShadowLine.setAttributes({\n visible: false,\n y: 0,\n width: 0\n });\n return;\n }\n this.bottonFrozenShadowLine.setAttributes({\n visible: !isBottom,\n y: rowY - (this.table.theme.frozenColumnLine?.shadow?.width ?? 1),\n width: this.table.getDrawRange().width\n });\n }\n }\n\n setTopFrozenColumnShadow() {\n const rowY = getRowTopY(this.table);\n if (\n this.table.columnHeaderLevelCount === this.table.frozenRowCount ||\n this.table.theme.frozenColumnLine?.shadow?.visible !== 'always'\n ) {\n this.topFrozenShadowLine.setAttributes({\n visible: false,\n y: 0,\n width: 0\n });\n } else {\n this.topFrozenShadowLine.setAttributes({\n visible: true,\n y: rowY,\n width: this.table.getDrawRange().width\n });\n }\n }\n\n hideFrozenColumnShadow() {\n const visible1 = this.table.theme.frozenColumnLine?.shadow?.visible;\n const visible = this.table.theme.frozenColumnLine?.shadow?.visible ?? visible1;\n if (visible !== 'scrolling') {\n return;\n }\n this.frozenShadowLine.setAttribute('visible', false);\n this.rightFrozenShadowLine.setAttribute('visible', false);\n this.topFrozenShadowLine && this.topFrozenShadowLine.setAttribute('visible', false);\n this.bottonFrozenShadowLine && this.bottonFrozenShadowLine.setAttribute('visible', false);\n this.table.scenegraph.updateNextFrame();\n }\n showFrozenColumnShadow() {\n const visible1 = this.table.theme.frozenColumnLine?.shadow?.visible;\n const visible = this.table.theme.frozenColumnLine?.shadow?.visible ?? visible1;\n if (visible !== 'scrolling') {\n return;\n }\n this.frozenShadowLine.setAttribute('visible', true);\n this.rightFrozenShadowLine.setAttribute('visible', true);\n this.topFrozenShadowLine && this.topFrozenShadowLine.setAttribute('visible', true);\n this.bottonFrozenShadowLine && this.bottonFrozenShadowLine.setAttribute('visible', true);\n this.table.scenegraph.updateNextFrame();\n }\n hideVerticalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const verticalVisible = this.table.theme.scrollStyle.verticalVisible ?? visible1;\n if (verticalVisible !== 'focus' && verticalVisible !== 'scrolling') {\n return;\n }\n this.vScrollBar.setAttribute('visible', false);\n this.vScrollBar.hideAll();\n this.table.scenegraph.updateNextFrame();\n }\n showVerticalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const verticalVisible = this.table.theme.scrollStyle.verticalVisible ?? visible1;\n if (verticalVisible !== 'focus' && verticalVisible !== 'scrolling') {\n return;\n }\n this.vScrollBar.setAttribute('visible', true);\n this.vScrollBar.showAll();\n this.table.scenegraph.updateNextFrame();\n }\n hideHorizontalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const horizontalVisible = this.table.theme.scrollStyle.horizontalVisible ?? visible1;\n if (horizontalVisible !== 'focus' && horizontalVisible !== 'scrolling') {\n return;\n }\n this.hScrollBar.setAttribute('visible', false);\n this.hScrollBar.hideAll();\n this.table.scenegraph.updateNextFrame();\n }\n showHorizontalScrollBar() {\n const visible1 = this.table.theme.scrollStyle.visible;\n const horizontalVisible = this.table.theme.scrollStyle.horizontalVisible ?? visible1;\n if (horizontalVisible !== 'focus' && horizontalVisible !== 'scrolling') {\n return;\n }\n this.hScrollBar.setAttribute('visible', true);\n this.hScrollBar.showAll();\n this.table.scenegraph.updateNextFrame();\n }\n updateVerticalScrollBarPos(topRatio: number) {\n this.updateVerticalFrozenShadowLine(topRatio);\n const range = this.vScrollBar.attribute.range;\n const size = range[1] - range[0];\n const range0 = topRatio * (1 - size);\n this.vScrollBar.setAttribute('range', [range0, range0 + size]);\n const bounds = this.vScrollBar.AABBBounds && this.vScrollBar.globalAABBBounds;\n (this.vScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n }\n updateHorizontalScrollBarPos(leftRatio: number) {\n this.updateHorizontalFrozenShadowLine(leftRatio);\n const range = this.hScrollBar.attribute.range;\n const size = range[1] - range[0];\n const range0 = leftRatio * (1 - size);\n this.hScrollBar.setAttribute('range', [range0, range0 + size]);\n const bounds = this.hScrollBar.AABBBounds && this.hScrollBar.globalAABBBounds;\n (this.hScrollBar as any)._viewPosition = {\n x: bounds.x1,\n y: bounds.y1\n };\n }\n\n updateHorizontalFrozenShadowLine = (rightRatio: number,) => {\n if (this.table.frozenColCount) {\n this.table.scenegraph.component.frozenShadowLine.setAttributes({\n visible: this.table.scrollLeft !== 0\n });\n } else {\n this.table.scenegraph.component.frozenShadowLine.setAttributes({\n visible: false\n });\n }\n\n if (this.table.rightFrozenColCount) {\n this.table.scenegraph.component.rightFrozenShadowLine.setAttributes({\n visible: rightRatio !== 1\n });\n } else {\n this.table.scenegraph.component.rightFrozenShadowLine.setAttributes({\n visible: false\n });\n }\n }\n\n updateVerticalFrozenShadowLine = (topRatio: number,) => {\n if (this.table.frozenRowCount > this.table.columnHeaderLevelCount) {\n this.table.scenegraph.component.bottonFrozenShadowLine.setAttributes({\n visible: topRatio !== 1,\n });\n } else {\n this.table.scenegraph.component.bottonFrozenShadowLine.setAttributes({\n visible: false\n });\n }\n }\n\n updateStyle() {\n const theme = this.table.theme;\n\n // scrollbar\n const scrollRailColor = theme.scrollStyle?.scrollRailColor as string;\n const scrollSliderColor = theme.scrollStyle?.scrollSliderColor as string;\n const scrollSliderCornerRadius = theme.scrollStyle?.scrollSliderCornerRadius;\n const width = theme.scrollStyle?.width as number;\n const horizontalPadding = theme.scrollStyle?.horizontalPadding;\n const verticalPadding = theme.scrollStyle?.verticalPadding;\n\n let sliderStyle;\n if (isValid(scrollSliderCornerRadius)) {\n sliderStyle = {\n cornerRadius: scrollSliderCornerRadius,\n fill: scrollSliderColor\n };\n } else {\n sliderStyle = {\n fill: scrollSliderColor\n };\n }\n this.hScrollBar.setAttributes({\n height: width,\n padding: horizontalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle\n });\n\n this.vScrollBar.setAttributes({\n width,\n padding: verticalPadding,\n railStyle: {\n fill: scrollRailColor\n },\n sliderStyle\n });\n\n // columnResizeLine & columnResizeBgLine\n const columnResizeColor = theme.columnResize?.lineColor;\n const columnResizeWidth = theme.columnResize?.lineWidth;\n const columnResizeBgColor = theme.columnResize?.bgColor;\n const columnResizeBgWidth = theme.columnResize?.width;\n\n this.columnResizeLine.setAttributes({\n stroke: columnResizeColor as string,\n lineWidth: columnResizeWidth as number\n });\n this.columnResizeBgLine = createLine({\n stroke: columnResizeBgColor as string,\n lineWidth: columnResizeBgWidth as number\n });\n\n const labelColor = theme.columnResize?.labelColor;\n const labelFontSize = theme.columnResize?.labelFontSize;\n const labelFontFamily = theme.columnResize?.labelFontFamily;\n const labelBackgroundFill = theme.columnResize?.labelBackgroundFill;\n const labelBackgroundCornerRadius = theme.columnResize?.labelBackgroundCornerRadius;\n const labelVisible = theme.columnResize?.labelVisible ?? true;\n this.labelVisible = labelVisible;\n\n // columnResizeLabelBack\n (this.columnResizeLabel.lastChild as IText).setAttributes({\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n dy: -labelFontSize / 2\n });\n // columnResizeLabelText\n (this.columnResizeLabel.firstChild as IRect).setAttributes({\n fill: labelBackgroundFill,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dy: -labelFontSize / 2 - 4\n });\n\n // rowResizeLabelBack\n (this.rowResizeLabel.lastChild as IText).setAttributes({\n fontSize: labelFontSize, // 10\n fill: labelColor,\n fontFamily: labelFontFamily,\n dy: -labelFontSize / 2\n });\n // rowResizeLabelText\n (this.rowResizeLabel.firstChild as IRect).setAttributes({\n fill: labelBackgroundFill,\n width: 5 * labelFontSize * 0.8,\n height: labelFontSize + 8,\n cornerRadius: labelBackgroundCornerRadius,\n dy: -labelFontSize / 2 - 4\n });\n\n // frozenShadowLine\n const shadowWidth = theme.frozenColumnLine?.shadow?.width;\n const shadowStartColor = theme.frozenColumnLine?.shadow?.startColor;\n const shadowEndColor = theme.frozenColumnLine?.shadow?.endColor;\n this.frozenShadowLine.setAttributes({\n width: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowStartColor, offset: 0 },\n { color: shadowEndColor, offset: 1 }\n ]\n }\n });\n this.rightFrozenShadowLine.setAttributes({\n width: shadowWidth,\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 0,\n stops: [\n { color: shadowEndColor, offset: 0 },\n { color: shadowStartColor, offset: 1 }\n ]\n }\n });\n\n this.cellMover.updateStyle();\n // this.menu.updateStyle();\n // this.drillIcon.updateStyle();\n }\n}\n"]}
@@ -106,7 +106,7 @@ export class DebugTool {
106
106
  }, window.addEventListener("keydown", this._callback.keydown);
107
107
  }
108
108
  release() {
109
- document.body.removeChild(this._infoContainer), this._highlightRect.parentElement.removeChild(this._highlightRect),
109
+ this._stage.window.getContainer().removeChild(this._infoContainer), this._highlightRect.parentElement.removeChild(this._highlightRect),
110
110
  this._stage.removeEventListener("pointermove", this._callback.pointermove), this._stage.removeEventListener("pointerup", this._callback.pointerup),
111
111
  this._stage.removeEventListener("pointerleave", this._callback.pointerleave), window.removeEventListener("keydown", this._callback.keydown);
112
112
  }