k-vtable 1.0.4 → 1.0.6

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 (193) 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 +4 -1
  4. package/cjs/ListTable.js +40 -1
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/PivotChart.js +4 -4
  7. package/cjs/PivotChart.js.map +1 -1
  8. package/cjs/PivotTable-all.js +4 -4
  9. package/cjs/PivotTable-all.js.map +1 -1
  10. package/cjs/PivotTable.d.ts +4 -0
  11. package/cjs/PivotTable.js +44 -0
  12. package/cjs/PivotTable.js.map +1 -1
  13. package/cjs/components/index.d.ts +1 -0
  14. package/cjs/components/index.js +8 -2
  15. package/cjs/components/index.js.map +1 -1
  16. package/cjs/core/BaseTable.js +2 -2
  17. package/cjs/core/BaseTable.js.map +1 -1
  18. package/cjs/core/FouseInput.js +1 -1
  19. package/cjs/core/TABLE_EVENT_TYPE.js +1 -1
  20. package/cjs/core/animation.js +1 -1
  21. package/cjs/core/factory.js +1 -1
  22. package/cjs/core/group-helper.js +1 -1
  23. package/cjs/core/record-helper.d.ts +1 -1
  24. package/cjs/core/record-helper.js +100 -66
  25. package/cjs/core/record-helper.js.map +1 -1
  26. package/cjs/core/row-series-number-helper.js +1 -1
  27. package/cjs/core/style-helper.js +1 -1
  28. package/cjs/core/style.js +1 -1
  29. package/cjs/core/tableHelper.js +1 -1
  30. package/cjs/data/DataSource.d.ts +3 -0
  31. package/cjs/data/DataSource.js +32 -4
  32. package/cjs/data/DataSource.js.map +1 -1
  33. package/cjs/dataset/dataset-pivot-table.js +2 -1
  34. package/cjs/dataset/dataset.d.ts +1 -0
  35. package/cjs/dataset/dataset.js +66 -2
  36. package/cjs/dataset/dataset.js.map +1 -1
  37. package/cjs/edit/edit-manager.js +8 -5
  38. package/cjs/edit/edit-manager.js.map +1 -1
  39. package/cjs/event/helper.js +1 -2
  40. package/cjs/event/listener/container-dom.js +35 -33
  41. package/cjs/event/listener/container-dom.js.map +1 -1
  42. package/cjs/event/listener/table-group.js +32 -28
  43. package/cjs/event/listener/table-group.js.map +1 -1
  44. package/cjs/index.d.ts +2 -1
  45. package/cjs/index.js +11 -2
  46. package/cjs/index.js.map +1 -1
  47. package/cjs/layout/index.js +2 -1
  48. package/cjs/layout/pivot-header-layout.d.ts +7 -0
  49. package/cjs/layout/pivot-header-layout.js +92 -7
  50. package/cjs/layout/pivot-header-layout.js.map +1 -1
  51. package/cjs/layout/simple-header-layout.d.ts +2 -0
  52. package/cjs/layout/simple-header-layout.js +26 -11
  53. package/cjs/layout/simple-header-layout.js.map +1 -1
  54. package/cjs/layout/tree-helper.d.ts +2 -0
  55. package/cjs/layout/tree-helper.js +9 -0
  56. package/cjs/layout/tree-helper.js.map +1 -1
  57. package/cjs/plugins/index.js +1 -1
  58. package/cjs/plugins/interface.js +1 -1
  59. package/cjs/plugins/invert-highlight.js +1 -1
  60. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  61. package/cjs/plugins/plugin-manager.js +1 -1
  62. package/cjs/scenegraph/debug-tool/debug-tool.js +2 -1
  63. package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
  64. package/cjs/scenegraph/graphic/icon.js.map +1 -1
  65. package/cjs/scenegraph/group-creater/cell-helper.js +3 -3
  66. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  67. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  68. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  69. package/cjs/scenegraph/layout/compute-col-width.js +11 -1
  70. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  71. package/cjs/scenegraph/layout/frozen-react.js +13 -8
  72. package/cjs/scenegraph/layout/frozen-react.js.map +1 -1
  73. package/cjs/scenegraph/scenegraph.js +1 -1
  74. package/cjs/state/state.d.ts +2 -0
  75. package/cjs/state/state.js +16 -4
  76. package/cjs/state/state.js.map +1 -1
  77. package/cjs/themes/ARCO.js +1 -1
  78. package/cjs/themes/BRIGHT.js +1 -1
  79. package/cjs/themes/DARK.js +1 -1
  80. package/cjs/themes/DEFAULT.js +1 -1
  81. package/cjs/themes/SIMPLIFY.js +1 -1
  82. package/cjs/ts-types/base-table.d.ts +2 -0
  83. package/cjs/ts-types/base-table.js.map +1 -1
  84. package/cjs/ts-types/dataset/aggregation.d.ts +8 -6
  85. package/cjs/ts-types/dataset/aggregation.js +109 -54
  86. package/cjs/ts-types/dataset/aggregation.js.map +1 -1
  87. package/cjs/ts-types/events.d.ts +1 -0
  88. package/cjs/ts-types/events.js.map +1 -1
  89. package/cjs/ts-types/list-table/define/basic-define.d.ts +1 -0
  90. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  91. package/cjs/ts-types/new-data-set.d.ts +1 -0
  92. package/cjs/ts-types/new-data-set.js.map +1 -1
  93. package/cjs/ts-types/table-engine.d.ts +2 -1
  94. package/cjs/ts-types/table-engine.js.map +1 -1
  95. package/cjs/vrender.js.map +1 -1
  96. package/dist/vtable.js +4279 -292
  97. package/dist/vtable.min.js +2 -2
  98. package/es/ListTable-all.js +4 -4
  99. package/es/ListTable-all.js.map +1 -1
  100. package/es/ListTable.d.ts +4 -1
  101. package/es/ListTable.js +40 -1
  102. package/es/ListTable.js.map +1 -1
  103. package/es/PivotChart.js +4 -4
  104. package/es/PivotChart.js.map +1 -1
  105. package/es/PivotTable-all.js +3 -3
  106. package/es/PivotTable-all.js.map +1 -1
  107. package/es/PivotTable.d.ts +4 -0
  108. package/es/PivotTable.js +44 -0
  109. package/es/PivotTable.js.map +1 -1
  110. package/es/components/index.d.ts +1 -0
  111. package/es/components/index.js +6 -0
  112. package/es/components/index.js.map +1 -1
  113. package/es/core/BaseTable.js +2 -2
  114. package/es/core/BaseTable.js.map +1 -1
  115. package/es/core/FouseInput.js +1 -1
  116. package/es/core/TABLE_EVENT_TYPE.js +1 -1
  117. package/es/core/animation.js +1 -1
  118. package/es/core/factory.js +1 -1
  119. package/es/core/group-helper.js +1 -1
  120. package/es/core/record-helper.d.ts +1 -1
  121. package/es/core/record-helper.js +100 -66
  122. package/es/core/record-helper.js.map +1 -1
  123. package/es/core/row-series-number-helper.js +1 -1
  124. package/es/core/style-helper.js +1 -1
  125. package/es/core/style.js +1 -1
  126. package/es/core/tableHelper.js +1 -1
  127. package/es/data/DataSource.d.ts +3 -0
  128. package/es/data/DataSource.js +32 -4
  129. package/es/data/DataSource.js.map +1 -1
  130. package/es/dataset/dataset-pivot-table.js +2 -1
  131. package/es/dataset/dataset.d.ts +1 -0
  132. package/es/dataset/dataset.js +66 -2
  133. package/es/dataset/dataset.js.map +1 -1
  134. package/es/edit/edit-manager.js +8 -5
  135. package/es/edit/edit-manager.js.map +1 -1
  136. package/es/event/helper.js +1 -2
  137. package/es/event/listener/container-dom.js +34 -32
  138. package/es/event/listener/container-dom.js.map +1 -1
  139. package/es/event/listener/table-group.js +31 -28
  140. package/es/event/listener/table-group.js.map +1 -1
  141. package/es/index.d.ts +2 -1
  142. package/es/index.js +3 -1
  143. package/es/index.js.map +1 -1
  144. package/es/layout/index.js +2 -1
  145. package/es/layout/pivot-header-layout.d.ts +7 -0
  146. package/es/layout/pivot-header-layout.js +92 -7
  147. package/es/layout/pivot-header-layout.js.map +1 -1
  148. package/es/layout/simple-header-layout.d.ts +2 -0
  149. package/es/layout/simple-header-layout.js +26 -11
  150. package/es/layout/simple-header-layout.js.map +1 -1
  151. package/es/layout/tree-helper.d.ts +2 -0
  152. package/es/layout/tree-helper.js +9 -0
  153. package/es/layout/tree-helper.js.map +1 -1
  154. package/es/plugins/index.js +1 -1
  155. package/es/plugins/interface.js +1 -1
  156. package/es/plugins/invert-highlight.js +1 -1
  157. package/es/plugins/list-tree-stick-cell.js +1 -1
  158. package/es/plugins/plugin-manager.js +1 -1
  159. package/es/scenegraph/debug-tool/debug-tool.js +2 -1
  160. package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
  161. package/es/scenegraph/graphic/icon.js.map +1 -1
  162. package/es/scenegraph/group-creater/cell-helper.js +3 -3
  163. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  164. package/es/scenegraph/group-creater/column-helper.js +1 -1
  165. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  166. package/es/scenegraph/layout/compute-col-width.js +11 -1
  167. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  168. package/es/scenegraph/layout/frozen-react.js +13 -8
  169. package/es/scenegraph/layout/frozen-react.js.map +1 -1
  170. package/es/scenegraph/scenegraph.js +1 -1
  171. package/es/state/state.d.ts +2 -0
  172. package/es/state/state.js +16 -4
  173. package/es/state/state.js.map +1 -1
  174. package/es/themes/ARCO.js +1 -1
  175. package/es/themes/BRIGHT.js +1 -1
  176. package/es/themes/DARK.js +1 -1
  177. package/es/themes/DEFAULT.js +1 -1
  178. package/es/themes/SIMPLIFY.js +1 -1
  179. package/es/ts-types/base-table.d.ts +2 -0
  180. package/es/ts-types/base-table.js.map +1 -1
  181. package/es/ts-types/dataset/aggregation.d.ts +8 -6
  182. package/es/ts-types/dataset/aggregation.js +109 -54
  183. package/es/ts-types/dataset/aggregation.js.map +1 -1
  184. package/es/ts-types/events.d.ts +1 -0
  185. package/es/ts-types/events.js.map +1 -1
  186. package/es/ts-types/list-table/define/basic-define.d.ts +1 -0
  187. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  188. package/es/ts-types/new-data-set.d.ts +1 -0
  189. package/es/ts-types/new-data-set.js.map +1 -1
  190. package/es/ts-types/table-engine.d.ts +2 -1
  191. package/es/ts-types/table-engine.js.map +1 -1
  192. package/es/vrender.js.map +1 -1
  193. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/tree-helper.ts"],"names":[],"mappings":"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","file":"tree-helper.js","sourcesContent":["import { cloneDeep, isValid } from '@visactor/vutils';\nimport { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type {\n CellInfo,\n ColumnIconOption,\n FieldData,\n HeaderData,\n ICustomRender,\n IDimension,\n IDimensionInfo,\n IHeaderTreeDefine,\n IIndicator,\n IRowDimension,\n LayoutObjectId\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport type { PivotHeaderLayoutMap } from './pivot-header-layout';\nimport type { ILinkDimension } from '../ts-types/pivot-table/dimension/link-dimension';\nimport type { IImageDimension } from '../ts-types/pivot-table/dimension/image-dimension';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n// import { sharedVar } from './pivot-header-layout';\n\ninterface ITreeLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // indicatorKey?: string;\n value: string;\n children: ITreeLayoutHeadNode[] | undefined;\n columns?: any; //兼容ListTable情况 simple-header-layout中增加了columnTree\n //节点所在真正的level\n level: number;\n //计算节点跨占(+spanLevel)情况下的level\n afterSpanLevel: number;\n /** 节点跨占层数 如汇总节点跨几层维度 */\n levelSpan: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface ITreeLayoutDimensionHeadNode extends ITreeLayoutBaseHeadNode {\n dimensionKey: string;\n virtual?: boolean;\n}\ninterface ITreeLayoutIndicatorHeadNode extends ITreeLayoutBaseHeadNode {\n indicatorKey: string;\n hide?: boolean;\n}\nexport type ITreeLayoutHeadNode = Either<ITreeLayoutDimensionHeadNode, ITreeLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n sharedVar: { seqId: number };\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n hasHideNode = false;\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n setExpandLevel: number;\n hierarchyType: 'grid' | 'tree' | 'grid-tree';\n tree: ITreeLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n afterSpanLevel: -1,\n levelSpan: 1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n expandedMaxLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n dimensionKeysIncludeVirtual: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n cache: Map<number, any> = new Map();\n constructor(\n tree: ITreeLayoutHeadNode[],\n sharedVar: { seqId: number },\n hierarchyType: 'grid' | 'tree' | 'grid-tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.setExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.sharedVar = sharedVar;\n this.reset(tree);\n }\n\n reset(tree: ITreeLayoutHeadNode[]) {\n this.totalLevel = 0;\n this.expandedMaxLevel = 0;\n this.hasHideNode = false;\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.cache.clear();\n this.dimensionKeys = new NumberMap<string>();\n this.dimensionKeysIncludeVirtual = new NumberMap<string>();\n this.tree.children = tree as ITreeLayoutHeadNode[];\n this.setTreeNode(this.tree, 0, this.tree);\n }\n setTreeNode(node: ITreeLayoutHeadNode, startIndex: number, parent: ITreeLayoutHeadNode): number {\n node.startIndex = startIndex;\n\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n if (node.hide) {\n this.hasHideNode = true;\n }\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n if (\n !node.virtual &&\n !this.dimensionKeys.contain(\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n )\n ) {\n this.dimensionKeys.put(\n (node as any).level,\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n );\n }\n if (\n !this.dimensionKeysIncludeVirtual.contain(\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n )\n ) {\n this.dimensionKeysIncludeVirtual.put(\n (node as any).level,\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n );\n }\n if (!(node as any).id) {\n (node as any).id = ++this.sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n const children = node.children || node.columns;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid' || this.hierarchyType === null) {\n if (children?.length >= 1) {\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.hierarchyType === 'grid' && (n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1));\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else {\n node.level === -1 ? (size = 0) : (size = 1);\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.expandedMaxLevel = Math.max(this.expandedMaxLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else if (\n !node.hierarchyState &&\n node.level + 1 < this.setExpandLevel &&\n (children?.length >= 1 || children === true)\n ) {\n //树形展示 有子节点 且下一层需要展开\n if (!(children[0]?.indicatorKey && this.hierarchyType === 'grid-tree')) {\n //平铺情况 指标已经是最后一层且已经显示了 不需要设置图标昨天\n node.hierarchyState = HierarchyState.expand;\n }\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.expandedMaxLevel = Math.max(this.expandedMaxLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (children?.length >= 1 || children === true) {\n //树形展示 有子节点 且下一层不需要展开\n\n if (!(children[0]?.indicatorKey && this.hierarchyType === 'grid-tree')) {\n //平铺情况 指标已经是最后一层且已经显示了 不需要设置图标昨天\n node.hierarchyState = HierarchyState.collapse;\n }\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n node.level === -1 ? (size = 0) : (size = 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<ITreeLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n // 用pivot-header-layout中的getTreePathByCellIds 代替\n // getTreePathByCellIds(ids: LayoutObjectId[]): Array<ITreeLayoutHeadNode> {\n // const path: any[] = [];\n // let nodes = this.tree.children;\n // for (let i = 0; i < ids.length; i++) {\n // const id = ids[i];\n // if (i > 0 && id === ids[i - 1]) {\n // continue;\n // }\n // const pathNode = this.findNodeById(nodes, id);\n // if (pathNode) {\n // path.push(pathNode);\n // nodes = pathNode.children;\n // } else {\n // break;\n // }\n // }\n // // path.shift();\n // return path;\n // }\n findNodeById(nodes: ITreeLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: ITreeLayoutHeadNode, path: Array<ITreeLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return;\n }\n path.push(node);\n if (!node.children || node.children.length === 0 || node.level >= maxDeep) {\n return;\n }\n\n // const cIndex = index - node.startIndex;\n // for (let i = 0; i < node.children.length; i++) {\n // const element = node.children[i];\n // if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n // this.searchPath(cIndex, element, path, maxDeep);\n // break;\n // }\n // }\n\n // use dichotomy to optimize search performance\n const cIndex = index - node.startIndex;\n\n if (this.cache.has(node.level + 1)) {\n const cacheNode = this.cache.get(node.level + 1);\n if (cIndex >= cacheNode.startIndex && cIndex < cacheNode.startIndex + cacheNode.size) {\n this.searchPath(cIndex, cacheNode, path, maxDeep);\n return;\n }\n }\n\n let left = 0;\n let right = node.children.length - 1;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const element = node.children[middle];\n\n if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n this.cache.set(element.level, element);\n const deleteLevels: number[] = [];\n this.cache.forEach((node, key) => {\n if (key > element.level) {\n deleteLevels.push(key);\n }\n });\n deleteLevels.forEach(key => {\n this.cache.delete(key);\n });\n this.searchPath(cIndex, element, path, maxDeep);\n break;\n } else if (cIndex < element.startIndex) {\n right = middle - 1;\n } else {\n left = middle + 1;\n }\n }\n return;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: ITreeLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: ITreeLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n const children = node.children || node.columns;\n if (children && node.level < level) {\n parNode = node;\n for (let i = 0; i < children.length; i++) {\n if (\n (sourceIndex >= children[i].startInTotal && sourceIndex <= children[i].startInTotal + children[i].size) ||\n (targetIndex >= children[i].startInTotal && targetIndex <= children[i].startInTotal + children[i].size)\n ) {\n findTargetNode(children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const children = parNode.children || parNode.columns;\n const sourceColumns = children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(children, sourceColumns);\n }\n /** 获取纯净树结构 没有level size index这些属性 */\n getCopiedTree() {\n const children = cloneDeep(this.tree.children);\n clearNode(children);\n return children;\n }\n}\n\n//#region 为方法getLayoutRowTree提供的类型和工具方法\nexport type LayouTreeNode = {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children?: LayouTreeNode[];\n};\n\nexport function generateLayoutTree(tree: LayouTreeNode[], children: ITreeLayoutHeadNode[]) {\n children?.forEach((node: ITreeLayoutHeadNode) => {\n const diemnsonNode: {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n virtual?: boolean;\n hierarchyState: HierarchyState;\n children: ITreeLayoutHeadNode[];\n levelSpan: number;\n } = {\n dimensionKey: node.dimensionKey,\n indicatorKey: node.indicatorKey,\n value: node.value,\n hierarchyState: node.hierarchyState,\n children: undefined,\n virtual: node.virtual ?? false,\n levelSpan: node.levelSpan ?? 1\n };\n tree.push(diemnsonNode);\n if (node.children) {\n diemnsonNode.children = [];\n generateLayoutTree(diemnsonNode.children, node.children);\n }\n });\n}\n//#endregion\n\n//#region 为方法getLayoutRowTreeCount提的工具方法\nexport function countLayoutTree(children: { children?: any }[], countParentNode: boolean) {\n let count = 0;\n children?.forEach((node: ITreeLayoutHeadNode) => {\n if (countParentNode) {\n count++;\n } else {\n if (!node.children || node.children.length === 0) {\n count++;\n }\n }\n if (node.children) {\n count += countLayoutTree(node.children, countParentNode);\n }\n });\n return count;\n}\n//#endregion\n\nexport function dealHeader(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n layoutMap: PivotHeaderLayoutMap\n // totalLevel: number,\n // indicatorKeys: string[]\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value && !hd.dimensionKey;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign({}, <any>hd, indicatorInfo ?? Object.assign({}, dimensionInfo, { sort: undefined })),\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n sort: indicatorInfo?.sort,\n description: dimensionInfo?.description\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n noDataRenderNothing: 'noDataRenderNothing' in indicatorInfo ? indicatorInfo.noDataRenderNothing : false,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n // if (dimensionInfo.indicators) {\n // layoutMap.hideIndicatorName = dimensionInfo.hideIndicatorName ?? false;\n // layoutMap.indicatorsAsCol = dimensionInfo.indicatorsAsCol ?? true;\n // }\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n // //这个if判断处理上层维度和指标之间跨级的情况。即表头可能总共有5层,但是有的节点从跟到指标只有三级,那么合并单元格之前是指标单元格跨了三个单元格,现在处理成最后一个维度单元格跨三个单元格\n // if (\n // ((hd as any).levelSpan ?? 0) <= 1 &&\n // row < totalLevel - 1 &&\n // hd.indicatorKey &&\n // indicatorKeys.includes(hd.indicatorKey) &&\n // (hd.children?.length ?? 0) === 0\n // ) {\n // const newRoots = [...roots];\n // const lastId = newRoots[row - 1] ?? id;\n // for (; row < totalLevel - 1; row++) {\n // if (!_headerCellIds[row]) {\n // _headerCellIds[row] = [];\n // }\n // _headerCellIds[row][layoutMap.colIndex] = lastId;\n // newRoots[row] = lastId;\n // }\n // for (let r = row - 1; r >= 0; r--) {\n // _headerCellIds[r][layoutMap.colIndex] = newRoots[r];\n // }\n // if (!_headerCellIds[row]) {\n // _headerCellIds[row] = [];\n // }\n // } else {\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n // }\n _headerCellIds[row][layoutMap.colIndex] = id;\n\n // 处理汇总小计跨维度层级的情况\n if ((hd as any).levelSpan > 1) {\n for (let i = 1; i < (hd as any).levelSpan; i++) {\n if (!_headerCellIds[row + i]) {\n _headerCellIds[row + i] = [];\n // 当行前几个没有赋值的id 赋值\n for (let col = 0; col < layoutMap.colIndex; col++) {\n _headerCellIds[row + i][col] = _headerCellIds[row][col];\n }\n }\n _headerCellIds[row + i][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd as ITreeLayoutHeadNode).children?.length >= 1) {\n layoutMap._addHeaders(\n _headerCellIds,\n row + ((hd as any).levelSpan ?? 1),\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array((hd as any).levelSpan ?? 1).fill(id)],\n results\n // totalLevel,\n // indicatorKeys\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n\n // if ((hd as any).levelSpan > 1) {\n // for (let i = 1; i < (hd as any).levelSpan; i++) {\n // _headerCellIds[r + i][layoutMap.colIndex] = id;\n // }\n // }\n }\n layoutMap.colIndex++;\n }\n}\nexport function dealHeaderForGridTreeMode(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n expandedMaxLevel: number,\n /** 其子节点是否都进行展示 */\n show: boolean,\n dimensions: (IDimension | string)[],\n isRowTree: boolean,\n indicatorsAsCol: boolean,\n layoutMap: PivotHeaderLayoutMap\n // totalLevel: number,\n // indicatorKeys: string[]\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value && !hd.dimensionKey;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign(<any>hd, {\n linkJump: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkJump,\n linkDetect: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkDetect,\n templateLink: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: (indicatorInfo ?? dimensionInfo)?.headerCustomRender,\n headerCustomLayout: (indicatorInfo ?? dimensionInfo)?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderHover,\n disableHeaderSelect: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderSelect,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n hide: indicatorInfo?.hide\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n sort: indicatorInfo?.sort,\n description: dimensionInfo?.description,\n parentCellId: roots[roots.length - 1]\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n noDataRenderNothing: 'noDataRenderNothing' in indicatorInfo ? indicatorInfo.noDataRenderNothing : false,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n // }\n _headerCellIds[row][layoutMap.colIndex] = id;\n\n // 处理汇总小计跨维度层级的情况\n const span = Math.min(\n (isRowTree ? indicatorsAsCol : !indicatorsAsCol) ? expandedMaxLevel : expandedMaxLevel - 1,\n (hd as any).levelSpan ?? 1000\n );\n if (span > 0) {\n for (let r = row + 1; r < span; r++) {\n if (!_headerCellIds[r]) {\n _headerCellIds[r] = [];\n // 当行前几个没有赋值的id 赋值\n for (let col = 0; col < layoutMap.colIndex; col++) {\n _headerCellIds[r][col] = _headerCellIds[row][col];\n }\n }\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd.hierarchyState === HierarchyState.expand && (hd as ITreeLayoutHeadNode)).children?.length >= 1) {\n layoutMap._addHeadersForGridTreeMode(\n _headerCellIds,\n row + ((hd as any).levelSpan ?? 1),\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array((hd as any).levelSpan ?? 1).fill(id)],\n totalLevel,\n expandedMaxLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show即显示状态 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results,\n isRowTree\n // totalLevel,\n // indicatorKeys\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n const needSupplementLength = (isRowTree ? indicatorsAsCol : !indicatorsAsCol)\n ? expandedMaxLevel\n : expandedMaxLevel - 1;\n for (let r = row + 1; r < needSupplementLength; r++) {\n if (!_headerCellIds[r]) {\n _headerCellIds[r] = [];\n }\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n\n // 指标在表头的情况下 就算是折叠状态也需要显示最后的指标节点\n if (\n row <= needSupplementLength - 1 &&\n ((isRowTree && indicatorsAsCol === false) || (!isRowTree && indicatorsAsCol === true))\n ) {\n let lastIndidcatorChildren = hd;\n const levelSpan = needSupplementLength - row;\n // 为找到最后的指标节点\n while (lastIndidcatorChildren) {\n if (lastIndidcatorChildren.children?.[0].indicatorKey) {\n break;\n }\n // levelSpan++;\n lastIndidcatorChildren = lastIndidcatorChildren.children[0];\n }\n\n layoutMap._addHeadersForGridTreeMode(\n _headerCellIds,\n expandedMaxLevel - 1,\n (lastIndidcatorChildren as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array(Math.max(levelSpan, (hd as any).levelSpan ?? 1)).fill(id)],\n totalLevel,\n expandedMaxLevel,\n true, //当前节点show即显示状态 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results,\n isRowTree\n // totalLevel,\n // indicatorKeys\n );\n } else {\n layoutMap.colIndex++;\n }\n }\n}\nexport function dealHeaderForTreeMode(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n /** 其子节点是否都进行展示 */\n show: boolean,\n dimensions: (IDimension | string)[],\n layoutMap: PivotHeaderLayoutMap\n) {\n const id = hd.id;\n // const dimensionInfo: IDimension =\n // (this.rowsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension) ??\n // (this.columnsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension);\n const dimensionInfo: IDimension = dimensions.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension;\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo.title,\n field: hd.dimensionKey as FieldData,\n //如果不是整棵树的叶子节点,都靠左显示\n style:\n hd.level + 1 === totalLevel || typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle, { textAlign: 'left' }),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n define: Object.assign(<any>hd, {\n linkJump: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkJump,\n linkDetect: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkDetect,\n templateLink: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: (indicatorInfo ?? dimensionInfo)?.headerCustomRender,\n headerCustomLayout: (indicatorInfo ?? dimensionInfo)?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderHover,\n disableHeaderSelect: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderSelect,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n hide: indicatorInfo?.hide\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey as string,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.hierarchyState, //hd.level + 1 === totalLevel ? undefined : hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n parentCellId: roots[roots.length - 1]\n };\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n noDataRenderNothing: 'noDataRenderNothing' in indicatorInfo ? indicatorInfo.noDataRenderNothing : false,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n results[id] = cell;\n // this._cellIdDiemnsionMap.set(id, {\n // dimensionKey: hd.dimensionKey,\n // value: hd.value\n // });\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n if (hd.hierarchyState === HierarchyState.expand && (hd as ITreeLayoutHeadNode).children?.length >= 1) {\n //row传值 colIndex++和_addHeaders有区别\n show && layoutMap.colIndex++;\n layoutMap._addHeadersForTreeMode(\n _headerCellIds,\n row,\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, id],\n totalLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show即显示状态 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n show && layoutMap.colIndex++;\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n}\n\nfunction clearNode(children: any) {\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n delete node.level;\n delete node.startIndex;\n delete node.id;\n delete node.levelSpan;\n delete node.size;\n delete node.startInTotal;\n const childrenNew = node.children || node.columns;\n if (childrenNew) {\n clearNode(childrenNew);\n }\n }\n}\n\nexport function deleteTreeHideNode(\n tree_children: LayouTreeNode[],\n dimensionPath: IDimensionInfo[],\n indicators: IIndicator[],\n hasHideNode: boolean,\n table: BaseTableAPI\n) {\n for (let i = tree_children.length - 1; i >= 0; i--) {\n const node = tree_children[i];\n dimensionPath.push(node);\n if (hasHideNode && (node as any).hide) {\n tree_children.splice(i, 1);\n } else if (node.indicatorKey) {\n const hide = indicators?.find(indicator => indicator.indicatorKey === node.indicatorKey)?.hide;\n if (typeof hide === 'function') {\n if (hide({ dimensionPaths: dimensionPath, table })) {\n tree_children.splice(i, 1);\n }\n } else if (hide) {\n tree_children.splice(i, 1);\n }\n } else if (node.children && node.children.length > 0) {\n deleteTreeHideNode(node.children, dimensionPath, indicators, hasHideNode, table);\n }\n dimensionPath.pop();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/tree-helper.ts"],"names":[],"mappings":"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","file":"tree-helper.js","sourcesContent":["import { cloneDeep, isValid } from '@visactor/vutils';\nimport { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type {\n CellInfo,\n ColumnIconOption,\n FieldData,\n HeaderData,\n ICustomRender,\n IDimension,\n IDimensionInfo,\n IHeaderTreeDefine,\n IIndicator,\n IRowDimension,\n LayoutObjectId\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport type { PivotHeaderLayoutMap } from './pivot-header-layout';\nimport type { ILinkDimension } from '../ts-types/pivot-table/dimension/link-dimension';\nimport type { IImageDimension } from '../ts-types/pivot-table/dimension/image-dimension';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n// import { sharedVar } from './pivot-header-layout';\n\ninterface ITreeLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // // indicatorKey?: string;\n value: string;\n children: ITreeLayoutHeadNode[] | undefined;\n columns?: any; //兼容ListTable情况 simple-header-layout中增加了columnTree\n //节点所在真正的level\n level: number;\n //计算节点跨占(+spanLevel)情况下的level\n afterSpanLevel: number;\n /** 节点跨占层数 如汇总节点跨几层维度 */\n levelSpan: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface ITreeLayoutDimensionHeadNode extends ITreeLayoutBaseHeadNode {\n dimensionKey: string;\n virtual?: boolean;\n}\ninterface ITreeLayoutIndicatorHeadNode extends ITreeLayoutBaseHeadNode {\n indicatorKey: string;\n hide?: boolean;\n}\nexport type ITreeLayoutHeadNode = Either<ITreeLayoutDimensionHeadNode, ITreeLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n sharedVar: { seqId: number };\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n hasHideNode = false;\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n setExpandLevel: number;\n hierarchyType: 'grid' | 'tree' | 'grid-tree';\n tree: ITreeLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n afterSpanLevel: -1,\n levelSpan: 1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n expandedMaxLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n dimensionKeysIncludeVirtual: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n cache: Map<number, any> = new Map();\n constructor(\n tree: ITreeLayoutHeadNode[],\n sharedVar: { seqId: number },\n hierarchyType: 'grid' | 'tree' | 'grid-tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.setExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.sharedVar = sharedVar;\n this.reset(tree);\n }\n\n reset(tree: ITreeLayoutHeadNode[]) {\n this.totalLevel = 0;\n this.expandedMaxLevel = 0;\n this.hasHideNode = false;\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.cache.clear();\n this.dimensionKeys = new NumberMap<string>();\n this.dimensionKeysIncludeVirtual = new NumberMap<string>();\n this.tree.children = tree as ITreeLayoutHeadNode[];\n this.setTreeNode(this.tree, 0, this.tree);\n }\n setTreeNode(node: ITreeLayoutHeadNode, startIndex: number, parent: ITreeLayoutHeadNode): number {\n node.startIndex = startIndex;\n\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n if (node.hide) {\n this.hasHideNode = true;\n }\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n if (\n !node.virtual &&\n !this.dimensionKeys.contain(\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n )\n ) {\n this.dimensionKeys.put(\n (node as any).level,\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n );\n }\n if (\n !this.dimensionKeysIncludeVirtual.contain(\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n )\n ) {\n this.dimensionKeysIncludeVirtual.put(\n (node as any).level,\n (node as any).indicatorKey ? IndicatorDimensionKeyPlaceholder : (node as any).dimensionKey\n );\n }\n if (!(node as any).id) {\n (node as any).id = ++this.sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n const children = node.children || node.columns;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid' || this.hierarchyType === null) {\n if (children?.length >= 1) {\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.hierarchyType === 'grid' && (n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1));\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else {\n node.level === -1 ? (size = 0) : (size = 1);\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.expandedMaxLevel = Math.max(this.expandedMaxLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else if (\n !node.hierarchyState &&\n node.level + 1 < this.setExpandLevel &&\n (children?.length >= 1 || children === true)\n ) {\n //树形展示 有子节点 且下一层需要展开\n if (!(children[0]?.indicatorKey && this.hierarchyType === 'grid-tree')) {\n //平铺情况 指标已经是最后一层且已经显示了 不需要设置图标昨天\n node.hierarchyState = HierarchyState.expand;\n }\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.expandedMaxLevel = Math.max(this.expandedMaxLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (children?.length >= 1 || children === true) {\n //树形展示 有子节点 且下一层不需要展开\n\n if (!(children[0]?.indicatorKey && this.hierarchyType === 'grid-tree')) {\n //平铺情况 指标已经是最后一层且已经显示了 不需要设置图标昨天\n node.hierarchyState = HierarchyState.collapse;\n }\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n // n.afterSpanLevel = (node.afterSpanLevel ?? 0) + (node.levelSpan ?? 1);\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n node.level === -1 ? (size = 0) : (size = 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<ITreeLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n // 用pivot-header-layout中的getTreePathByCellIds 代替\n // getTreePathByCellIds(ids: LayoutObjectId[]): Array<ITreeLayoutHeadNode> {\n // const path: any[] = [];\n // let nodes = this.tree.children;\n // for (let i = 0; i < ids.length; i++) {\n // const id = ids[i];\n // if (i > 0 && id === ids[i - 1]) {\n // continue;\n // }\n // const pathNode = this.findNodeById(nodes, id);\n // if (pathNode) {\n // path.push(pathNode);\n // nodes = pathNode.children;\n // } else {\n // break;\n // }\n // }\n // // path.shift();\n // return path;\n // }\n findNodeById(nodes: ITreeLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: ITreeLayoutHeadNode, path: Array<ITreeLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return;\n }\n path.push(node);\n if (!node.children || node.children.length === 0 || node.level >= maxDeep) {\n return;\n }\n\n // const cIndex = index - node.startIndex;\n // for (let i = 0; i < node.children.length; i++) {\n // const element = node.children[i];\n // if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n // this.searchPath(cIndex, element, path, maxDeep);\n // break;\n // }\n // }\n\n // use dichotomy to optimize search performance\n const cIndex = index - node.startIndex;\n\n if (this.cache.has(node.level + 1)) {\n const cacheNode = this.cache.get(node.level + 1);\n if (cIndex >= cacheNode.startIndex && cIndex < cacheNode.startIndex + cacheNode.size) {\n this.searchPath(cIndex, cacheNode, path, maxDeep);\n return;\n }\n }\n\n let left = 0;\n let right = node.children.length - 1;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const element = node.children[middle];\n\n if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n this.cache.set(element.level, element);\n const deleteLevels: number[] = [];\n this.cache.forEach((node, key) => {\n if (key > element.level) {\n deleteLevels.push(key);\n }\n });\n deleteLevels.forEach(key => {\n this.cache.delete(key);\n });\n this.searchPath(cIndex, element, path, maxDeep);\n break;\n } else if (cIndex < element.startIndex) {\n right = middle - 1;\n } else {\n left = middle + 1;\n }\n }\n return;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: ITreeLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: ITreeLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n const children = node.children || node.columns;\n if (children && node.level < level) {\n parNode = node;\n for (let i = 0; i < children.length; i++) {\n if (\n (sourceIndex >= children[i].startInTotal && sourceIndex <= children[i].startInTotal + children[i].size) ||\n (targetIndex >= children[i].startInTotal && targetIndex <= children[i].startInTotal + children[i].size)\n ) {\n findTargetNode(children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const children = parNode.children || parNode.columns;\n const sourceColumns = children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(children, sourceColumns);\n }\n /** 获取纯净树结构 没有level size index这些属性 */\n getCopiedTree() {\n const children = cloneDeep(this.tree.children);\n clearNode(children);\n return children;\n }\n\n /**\n * 仅更新树中所有节点的 hierarchyState,不执行任何布局计算。\n */\n setAllNodesState(state: HierarchyState) {\n this._updateNodeHierarchyState(this.tree, state);\n }\n\n /**\n * 递归辅助函数,仅用于遍历树并更新所有节点的 hierarchyState\n */\n private _updateNodeHierarchyState(node: ITreeLayoutHeadNode, hierarchyState: HierarchyState) {\n // 如果节点有子节点,且子节点为非指标节点,则设置其状态;否则,状态为 none\n if (node.children && node.children.length > 0 && node.children[0].dimensionKey) {\n // 不对根节点进行处理\n if (node.level !== -1) {\n node.hierarchyState = hierarchyState;\n }\n\n node.children.forEach(child => {\n this._updateNodeHierarchyState(child, hierarchyState);\n });\n } else {\n node.hierarchyState = HierarchyState.none;\n }\n }\n}\n\n//#region 为方法getLayoutRowTree提供的类型和工具方法\nexport type LayouTreeNode = {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children?: LayouTreeNode[];\n};\n\nexport function generateLayoutTree(tree: LayouTreeNode[], children: ITreeLayoutHeadNode[]) {\n children?.forEach((node: ITreeLayoutHeadNode) => {\n const diemnsonNode: {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n virtual?: boolean;\n hierarchyState: HierarchyState;\n children: ITreeLayoutHeadNode[];\n levelSpan: number;\n } = {\n dimensionKey: node.dimensionKey,\n indicatorKey: node.indicatorKey,\n value: node.value,\n hierarchyState: node.hierarchyState,\n children: undefined,\n virtual: node.virtual ?? false,\n levelSpan: node.levelSpan ?? 1\n };\n tree.push(diemnsonNode);\n if (node.children) {\n diemnsonNode.children = [];\n generateLayoutTree(diemnsonNode.children, node.children);\n }\n });\n}\n//#endregion\n\n//#region 为方法getLayoutRowTreeCount提的工具方法\nexport function countLayoutTree(children: { children?: any }[], countParentNode: boolean) {\n let count = 0;\n children?.forEach((node: ITreeLayoutHeadNode) => {\n if (countParentNode) {\n count++;\n } else {\n if (!node.children || node.children.length === 0) {\n count++;\n }\n }\n if (node.children) {\n count += countLayoutTree(node.children, countParentNode);\n }\n });\n return count;\n}\n//#endregion\n\nexport function dealHeader(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n layoutMap: PivotHeaderLayoutMap\n // totalLevel: number,\n // indicatorKeys: string[]\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value && !hd.dimensionKey;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign({}, <any>hd, indicatorInfo ?? Object.assign({}, dimensionInfo, { sort: undefined })),\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n sort: indicatorInfo?.sort,\n description: dimensionInfo?.description\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n noDataRenderNothing: 'noDataRenderNothing' in indicatorInfo ? indicatorInfo.noDataRenderNothing : false,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n // if (dimensionInfo.indicators) {\n // layoutMap.hideIndicatorName = dimensionInfo.hideIndicatorName ?? false;\n // layoutMap.indicatorsAsCol = dimensionInfo.indicatorsAsCol ?? true;\n // }\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n // //这个if判断处理上层维度和指标之间跨级的情况。即表头可能总共有5层,但是有的节点从跟到指标只有三级,那么合并单元格之前是指标单元格跨了三个单元格,现在处理成最后一个维度单元格跨三个单元格\n // if (\n // ((hd as any).levelSpan ?? 0) <= 1 &&\n // row < totalLevel - 1 &&\n // hd.indicatorKey &&\n // indicatorKeys.includes(hd.indicatorKey) &&\n // (hd.children?.length ?? 0) === 0\n // ) {\n // const newRoots = [...roots];\n // const lastId = newRoots[row - 1] ?? id;\n // for (; row < totalLevel - 1; row++) {\n // if (!_headerCellIds[row]) {\n // _headerCellIds[row] = [];\n // }\n // _headerCellIds[row][layoutMap.colIndex] = lastId;\n // newRoots[row] = lastId;\n // }\n // for (let r = row - 1; r >= 0; r--) {\n // _headerCellIds[r][layoutMap.colIndex] = newRoots[r];\n // }\n // if (!_headerCellIds[row]) {\n // _headerCellIds[row] = [];\n // }\n // } else {\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n // }\n _headerCellIds[row][layoutMap.colIndex] = id;\n\n // 处理汇总小计跨维度层级的情况\n if ((hd as any).levelSpan > 1) {\n for (let i = 1; i < (hd as any).levelSpan; i++) {\n if (!_headerCellIds[row + i]) {\n _headerCellIds[row + i] = [];\n // 当行前几个没有赋值的id 赋值\n for (let col = 0; col < layoutMap.colIndex; col++) {\n _headerCellIds[row + i][col] = _headerCellIds[row][col];\n }\n }\n _headerCellIds[row + i][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd as ITreeLayoutHeadNode).children?.length >= 1) {\n layoutMap._addHeaders(\n _headerCellIds,\n row + ((hd as any).levelSpan ?? 1),\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array((hd as any).levelSpan ?? 1).fill(id)],\n results\n // totalLevel,\n // indicatorKeys\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n\n // if ((hd as any).levelSpan > 1) {\n // for (let i = 1; i < (hd as any).levelSpan; i++) {\n // _headerCellIds[r + i][layoutMap.colIndex] = id;\n // }\n // }\n }\n layoutMap.colIndex++;\n }\n}\nexport function dealHeaderForGridTreeMode(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n expandedMaxLevel: number,\n /** 其子节点是否都进行展示 */\n show: boolean,\n dimensions: (IDimension | string)[],\n isRowTree: boolean,\n indicatorsAsCol: boolean,\n layoutMap: PivotHeaderLayoutMap\n // totalLevel: number,\n // indicatorKeys: string[]\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value && !hd.dimensionKey;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign(<any>hd, {\n linkJump: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkJump,\n linkDetect: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkDetect,\n templateLink: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: (indicatorInfo ?? dimensionInfo)?.headerCustomRender,\n headerCustomLayout: (indicatorInfo ?? dimensionInfo)?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderHover,\n disableHeaderSelect: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderSelect,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n hide: indicatorInfo?.hide\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n sort: indicatorInfo?.sort,\n description: dimensionInfo?.description,\n parentCellId: roots[roots.length - 1]\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n noDataRenderNothing: 'noDataRenderNothing' in indicatorInfo ? indicatorInfo.noDataRenderNothing : false,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n // }\n _headerCellIds[row][layoutMap.colIndex] = id;\n\n // 处理汇总小计跨维度层级的情况\n const span = Math.min(\n (isRowTree ? indicatorsAsCol : !indicatorsAsCol) ? expandedMaxLevel : expandedMaxLevel - 1,\n (hd as any).levelSpan ?? 1000\n );\n if (span > 0) {\n for (let r = row + 1; r < span; r++) {\n if (!_headerCellIds[r]) {\n _headerCellIds[r] = [];\n // 当行前几个没有赋值的id 赋值\n for (let col = 0; col < layoutMap.colIndex; col++) {\n _headerCellIds[r][col] = _headerCellIds[row][col];\n }\n }\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd.hierarchyState === HierarchyState.expand && (hd as ITreeLayoutHeadNode)).children?.length >= 1) {\n layoutMap._addHeadersForGridTreeMode(\n _headerCellIds,\n row + ((hd as any).levelSpan ?? 1),\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array((hd as any).levelSpan ?? 1).fill(id)],\n totalLevel,\n expandedMaxLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show即显示状态 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results,\n isRowTree\n // totalLevel,\n // indicatorKeys\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n const needSupplementLength = (isRowTree ? indicatorsAsCol : !indicatorsAsCol)\n ? expandedMaxLevel\n : expandedMaxLevel - 1;\n for (let r = row + 1; r < needSupplementLength; r++) {\n if (!_headerCellIds[r]) {\n _headerCellIds[r] = [];\n }\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n\n // 指标在表头的情况下 就算是折叠状态也需要显示最后的指标节点\n if (\n row <= needSupplementLength - 1 &&\n ((isRowTree && indicatorsAsCol === false) || (!isRowTree && indicatorsAsCol === true))\n ) {\n let lastIndidcatorChildren = hd;\n const levelSpan = needSupplementLength - row;\n // 为找到最后的指标节点\n while (lastIndidcatorChildren) {\n if (lastIndidcatorChildren.children?.[0].indicatorKey) {\n break;\n }\n // levelSpan++;\n lastIndidcatorChildren = lastIndidcatorChildren.children[0];\n }\n\n layoutMap._addHeadersForGridTreeMode(\n _headerCellIds,\n expandedMaxLevel - 1,\n (lastIndidcatorChildren as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array(Math.max(levelSpan, (hd as any).levelSpan ?? 1)).fill(id)],\n totalLevel,\n expandedMaxLevel,\n true, //当前节点show即显示状态 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results,\n isRowTree\n // totalLevel,\n // indicatorKeys\n );\n } else {\n layoutMap.colIndex++;\n }\n }\n}\nexport function dealHeaderForTreeMode(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n /** 其子节点是否都进行展示 */\n show: boolean,\n dimensions: (IDimension | string)[],\n layoutMap: PivotHeaderLayoutMap\n) {\n const id = hd.id;\n // const dimensionInfo: IDimension =\n // (this.rowsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension) ??\n // (this.columnsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension);\n const dimensionInfo: IDimension = dimensions.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension;\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo.title,\n field: hd.dimensionKey as FieldData,\n //如果不是整棵树的叶子节点,都靠左显示\n style:\n hd.level + 1 === totalLevel || typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle, { textAlign: 'left' }),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n define: Object.assign(<any>hd, {\n linkJump: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkJump,\n linkDetect: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.linkDetect,\n templateLink: ((indicatorInfo ?? dimensionInfo) as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: ((indicatorInfo ?? dimensionInfo) as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: (indicatorInfo ?? dimensionInfo)?.headerCustomRender,\n headerCustomLayout: (indicatorInfo ?? dimensionInfo)?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderHover,\n disableHeaderSelect: !!(indicatorInfo ?? dimensionInfo)?.disableHeaderSelect,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n hide: indicatorInfo?.hide\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey as string,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.hierarchyState, //hd.level + 1 === totalLevel ? undefined : hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n parentCellId: roots[roots.length - 1]\n };\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n noDataRenderNothing: 'noDataRenderNothing' in indicatorInfo ? indicatorInfo.noDataRenderNothing : false,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n results[id] = cell;\n // this._cellIdDiemnsionMap.set(id, {\n // dimensionKey: hd.dimensionKey,\n // value: hd.value\n // });\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n if (hd.hierarchyState === HierarchyState.expand && (hd as ITreeLayoutHeadNode).children?.length >= 1) {\n //row传值 colIndex++和_addHeaders有区别\n show && layoutMap.colIndex++;\n layoutMap._addHeadersForTreeMode(\n _headerCellIds,\n row,\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, id],\n totalLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show即显示状态 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n show && layoutMap.colIndex++;\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n}\n\nfunction clearNode(children: any) {\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n delete node.level;\n delete node.startIndex;\n delete node.id;\n delete node.levelSpan;\n delete node.size;\n delete node.startInTotal;\n const childrenNew = node.children || node.columns;\n if (childrenNew) {\n clearNode(childrenNew);\n }\n }\n}\n\nexport function deleteTreeHideNode(\n tree_children: LayouTreeNode[],\n dimensionPath: IDimensionInfo[],\n indicators: IIndicator[],\n hasHideNode: boolean,\n table: BaseTableAPI\n) {\n for (let i = tree_children.length - 1; i >= 0; i--) {\n const node = tree_children[i];\n dimensionPath.push(node);\n if (hasHideNode && (node as any).hide) {\n tree_children.splice(i, 1);\n } else if (node.indicatorKey) {\n const hide = indicators?.find(indicator => indicator.indicatorKey === node.indicatorKey)?.hide;\n if (typeof hide === 'function') {\n if (hide({ dimensionPaths: dimensionPath, table })) {\n tree_children.splice(i, 1);\n }\n } else if (hide) {\n tree_children.splice(i, 1);\n }\n } else if (node.children && node.children.length > 0) {\n deleteTreeHideNode(node.children, dimensionPath, indicators, hasHideNode, table);\n }\n dimensionPath.pop();\n }\n}\n"]}
@@ -21,4 +21,4 @@ Object.defineProperty(exports, "CustomCellStylePlugin", {
21
21
  return custom_cell_style_1.CustomCellStylePlugin;
22
22
  }
23
23
  });
24
- //# sourceMappingURL=index.js.map
24
+ //# sourceMappingURL=index.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=interface.js.map
6
+ //# sourceMappingURL=interface.js.map
@@ -20,4 +20,4 @@ function onBeforeAttributeUpdateForInvertHighlight(val, attribute) {
20
20
  }
21
21
 
22
22
  exports.onBeforeAttributeUpdateForInvertHighlight = onBeforeAttributeUpdateForInvertHighlight;
23
- //# sourceMappingURL=invert-highlight.js.map
23
+ //# sourceMappingURL=invert-highlight.js.map
@@ -177,4 +177,4 @@ const registerListTreeStickCellPlugin = () => {
177
177
  };
178
178
 
179
179
  exports.registerListTreeStickCellPlugin = registerListTreeStickCellPlugin;
180
- //# sourceMappingURL=list-tree-stick-cell.js.map
180
+ //# sourceMappingURL=list-tree-stick-cell.js.map
@@ -52,4 +52,4 @@ class PluginManager {
52
52
  }
53
53
 
54
54
  exports.PluginManager = PluginManager;
55
- //# sourceMappingURL=plugin-manager.js.map
55
+ //# sourceMappingURL=plugin-manager.js.map
@@ -23,7 +23,8 @@ class DebugTool {
23
23
  switch (this._infoContainer = document.createElement("div"), this._infoContainer.style.position = "fixed",
24
24
  this._infoContainer.style.width = `${width}px`, this._infoContainer.style.height = `${height}px`,
25
25
  this._infoContainer.style.backgroundColor = "rgba(210, 210, 210, 0.3)", this._infoContainer.style.overflow = "auto",
26
- this._infoContainer.style.display = "none", position) {
26
+ this._infoContainer.style.display = "none", this._infoContainer.style.fontSize = "14px",
27
+ position) {
27
28
  case "tl":
28
29
  this._infoContainer.style.top = "0px", this._infoContainer.style.left = "0px";
29
30
  break;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/debug-tool/debug-tool.ts"],"names":[],"mappings":"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","file":"debug-tool.js","sourcesContent":["import type { FederatedPointerEvent, IStage, IRect, IGraphic } from './../../vrender';\nimport { createRect, getTheme } from './../../vrender';\nimport JSONFormatter from 'json-formatter-js';\n\nexport interface DebugToolOptions {\n container?: HTMLElement;\n infoPosition?: 'tl' | 'tr' | 'bl' | 'br';\n infoWidth?: number;\n infoHeight?: number;\n mode?: 'hover' | 'click';\n customGrapicKeys?: string[];\n}\n\nexport class DebugTool {\n _stage: IStage;\n _infoContainer: HTMLElement;\n _highlightRect: HTMLElement;\n _target: IGraphic;\n // _rect: IRect;\n _mode: 'hover' | 'click' = 'hover';\n _customGrapicKeys?: string[];\n _modeTip: HTMLElement;\n _callback: {\n pointermove: (e: FederatedPointerEvent) => void;\n pointerup: (e: FederatedPointerEvent) => void;\n pointerleave: (e: FederatedPointerEvent) => void;\n keydown: (e: KeyboardEvent) => void;\n };\n\n constructor(stage: IStage, options?: DebugToolOptions) {\n this._stage = stage;\n this._callback = {} as any;\n\n if (options?.customGrapicKeys) {\n this._customGrapicKeys = options.customGrapicKeys;\n }\n\n // 创建信息框\n if (options?.container) {\n this._infoContainer = options.container;\n } else {\n this.createInfoContainer(options);\n }\n\n // 创建高亮矩形\n this.createHighlightRect();\n\n // 绑定stage事件\n this.bindStageEvent();\n\n // 绑定键盘事件\n this.bindKeyEvent();\n }\n\n createInfoContainer(options?: DebugToolOptions) {\n const position = options?.infoPosition || 'tr';\n const width = options?.infoWidth || 300;\n const height = options?.infoPosition || 400;\n this._infoContainer = document.createElement('div');\n this._infoContainer.style.position = 'fixed';\n this._infoContainer.style.width = `${width}px`;\n this._infoContainer.style.height = `${height}px`;\n this._infoContainer.style.backgroundColor = 'rgba(210, 210, 210, 0.3)';\n this._infoContainer.style.overflow = 'auto';\n this._infoContainer.style.display = 'none';\n switch (position) {\n case 'tl':\n this._infoContainer.style.top = '0px';\n this._infoContainer.style.left = '0px';\n break;\n case 'tr':\n this._infoContainer.style.top = '0px';\n this._infoContainer.style.right = `0px`;\n break;\n case 'bl':\n this._infoContainer.style.bottom = `0px`;\n this._infoContainer.style.left = '0px';\n break;\n case 'br':\n this._infoContainer.style.bottom = `0px`;\n this._infoContainer.style.right = `0px`;\n break;\n }\n\n // Tip\n // debug 模式:hover(shift + s改变模式;shift + d控制台输出target graphic)\n const tip = document.createElement('div');\n const tipSpan1 = document.createElement('span');\n tipSpan1.innerText = 'debug 模式:';\n tip.appendChild(tipSpan1);\n this._modeTip = document.createElement('span');\n this._modeTip.innerText = this._mode;\n tip.appendChild(this._modeTip);\n const tipSpan2 = document.createElement('span');\n tipSpan2.innerText = '(shift + s改变模式;shift + d控制台输出target graphic)';\n tip.appendChild(tipSpan2);\n this._infoContainer.appendChild(tip);\n\n // document.body.append(this._infoContainer);\n this._stage.window.getContainer().append(this._infoContainer);\n }\n\n createHighlightRect() {\n const container = this._stage.window.getContainer();\n this._highlightRect = document.createElement('div');\n this._highlightRect.style.display = 'absolute';\n this._highlightRect.style.border = '1px solid red';\n this._highlightRect.style.pointerEvents = 'none';\n this._highlightRect.style.position = 'absolute';\n container.appendChild(this._highlightRect);\n }\n\n bindStageEvent() {\n this._callback.pointermove = (e: FederatedPointerEvent) => {\n if (this._mode !== 'hover') {\n // do nothing\n } else if (e.target && (e.target as unknown as IGraphic) !== this._target) {\n // 更新bounds\n this._target = e.target as unknown as IGraphic;\n this.addHighlightBounds(this._target.globalAABBBounds);\n setTimeout(() => {\n this.updateInfo();\n }, 100);\n } else if (!e.target) {\n this._target = undefined;\n // this.removeHighlightBounds();\n this.clearInfo();\n }\n };\n this._stage.addEventListener('pointermove', this._callback.pointermove);\n\n this._callback.pointerup = (e: FederatedPointerEvent) => {\n if (this._mode !== 'click') {\n // do nothing\n } else if (e.target && (e.target as unknown as IGraphic) !== this._target) {\n // 更新bounds\n this._target = e.target as unknown as IGraphic;\n this.addHighlightBounds(this._target.globalAABBBounds);\n setTimeout(() => {\n this.updateInfo();\n }, 100);\n } else if (!e.target) {\n this._target = undefined;\n // this.removeHighlightBounds();\n this.clearInfo();\n }\n };\n this._stage.addEventListener('pointerup', this._callback.pointerup);\n\n this._callback.pointerleave = (e: FederatedPointerEvent) => {\n if (this._mode === 'hover') {\n this._target = undefined;\n // this.removeHighlightBounds();\n this.clearInfo();\n }\n };\n this._stage.addEventListener('pointerleave', this._callback.pointerleave);\n }\n\n addHighlightBounds(bounds: any) {\n // 使用VRender绘制高亮框会导致触发多余渲染,因此使用dom\n // this._rect.setAttributes({\n // x: bounds.x1,\n // y: bounds.y1,\n // width: bounds.width(),\n // height: bounds.height(),\n // visible: true,\n // });\n\n // // 保证rect在最上层\n // this._stage.defaultLayer.appendChild(this._rect);\n // this._stage.renderNextFrame();\n\n const table = (this._stage as any).table;\n const stage = table.scenegraph.stage;\n const stageMatrix = stage.window.getViewBoxTransform();\n\n this._highlightRect.style.left = `${bounds.x1 + (stageMatrix.e ?? 0) + (table.options.viewBox?.x1 ?? 0)}px`;\n this._highlightRect.style.top = `${bounds.y1 + (stageMatrix.f ?? 0) + (table.options.viewBox?.y1 ?? 0)}px`;\n this._highlightRect.style.width = `${bounds.width()}px`;\n this._highlightRect.style.height = `${bounds.height()}px`;\n\n // console.log(this._highlightRect.style.left);\n }\n\n // removeHighlightBounds() {\n // this._rect.setAttribute('visible', false);\n // this._stage.renderNextFrame();\n // }\n\n updateInfo() {\n if (!this._target) {\n return;\n }\n // this._infoContainer.innerHTML = '';\n if (this._infoContainer.children.length > 1) {\n this._infoContainer.removeChild(this._infoContainer.children[1]);\n }\n this._infoContainer.style.display = 'block';\n\n const info = {\n customKeys: {},\n type: this._target.type,\n // role: (this._target as any).role,\n globalX: this._target.globalTransMatrix.e,\n globalY: this._target.globalTransMatrix.f,\n attribute: this._target.attribute,\n theme: getTheme(this._target)[this._target.type],\n target: this._target\n };\n\n if (this._customGrapicKeys) {\n this._customGrapicKeys.forEach(key => {\n info.customKeys[key] = this._target[key];\n });\n } else {\n delete info.customKeys;\n }\n\n const formatter = new JSONFormatter(info, 2);\n this._infoContainer.appendChild(formatter.render());\n }\n\n clearInfo() {\n this._infoContainer.style.display = 'none';\n }\n\n updateMode() {\n this._modeTip.innerText = this._mode;\n }\n\n bindKeyEvent() {\n this._callback.keydown = (e: KeyboardEvent) => {\n if (e.key === 'D') {\n console.log(this._target);\n } else if (e.key === 'S') {\n switch (this._mode) {\n case 'click':\n this._mode = 'hover';\n break;\n case 'hover':\n this._mode = 'click';\n break;\n }\n this.updateMode();\n }\n };\n window.addEventListener('keydown', this._callback.keydown);\n }\n\n release() {\n // 移除信息框\n document.body.removeChild(this._infoContainer);\n\n // 移除高亮框\n this._highlightRect.parentElement.removeChild(this._highlightRect);\n\n // 解绑stage事件\n // this._stage.defaultLayer.removeChild(this._rect);\n this._stage.removeEventListener('pointermove', this._callback.pointermove);\n this._stage.removeEventListener('pointerup', this._callback.pointerup);\n this._stage.removeEventListener('pointerleave', this._callback.pointerleave);\n\n // 解绑键盘事件\n window.removeEventListener('keydown', this._callback.keydown);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/debug-tool/debug-tool.ts"],"names":[],"mappings":"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","file":"debug-tool.js","sourcesContent":["import type { FederatedPointerEvent, IStage, IRect, IGraphic } from './../../vrender';\nimport { createRect, getTheme } from './../../vrender';\nimport JSONFormatter from 'json-formatter-js';\n\nexport interface DebugToolOptions {\n container?: HTMLElement;\n infoPosition?: 'tl' | 'tr' | 'bl' | 'br';\n infoWidth?: number;\n infoHeight?: number;\n mode?: 'hover' | 'click';\n customGrapicKeys?: string[];\n}\n\nexport class DebugTool {\n _stage: IStage;\n _infoContainer: HTMLElement;\n _highlightRect: HTMLElement;\n _target: IGraphic;\n // _rect: IRect;\n _mode: 'hover' | 'click' = 'hover';\n _customGrapicKeys?: string[];\n _modeTip: HTMLElement;\n _callback: {\n pointermove: (e: FederatedPointerEvent) => void;\n pointerup: (e: FederatedPointerEvent) => void;\n pointerleave: (e: FederatedPointerEvent) => void;\n keydown: (e: KeyboardEvent) => void;\n };\n\n constructor(stage: IStage, options?: DebugToolOptions) {\n this._stage = stage;\n this._callback = {} as any;\n\n if (options?.customGrapicKeys) {\n this._customGrapicKeys = options.customGrapicKeys;\n }\n\n // 创建信息框\n if (options?.container) {\n this._infoContainer = options.container;\n } else {\n this.createInfoContainer(options);\n }\n\n // 创建高亮矩形\n this.createHighlightRect();\n\n // 绑定stage事件\n this.bindStageEvent();\n\n // 绑定键盘事件\n this.bindKeyEvent();\n }\n\n createInfoContainer(options?: DebugToolOptions) {\n const position = options?.infoPosition || 'tr';\n const width = options?.infoWidth || 300;\n const height = options?.infoPosition || 400;\n this._infoContainer = document.createElement('div');\n this._infoContainer.style.position = 'fixed';\n this._infoContainer.style.width = `${width}px`;\n this._infoContainer.style.height = `${height}px`;\n this._infoContainer.style.backgroundColor = 'rgba(210, 210, 210, 0.3)';\n this._infoContainer.style.overflow = 'auto';\n this._infoContainer.style.display = 'none';\n this._infoContainer.style.fontSize = '14px';\n switch (position) {\n case 'tl':\n this._infoContainer.style.top = '0px';\n this._infoContainer.style.left = '0px';\n break;\n case 'tr':\n this._infoContainer.style.top = '0px';\n this._infoContainer.style.right = `0px`;\n break;\n case 'bl':\n this._infoContainer.style.bottom = `0px`;\n this._infoContainer.style.left = '0px';\n break;\n case 'br':\n this._infoContainer.style.bottom = `0px`;\n this._infoContainer.style.right = `0px`;\n break;\n }\n\n // Tip\n // debug 模式:hover(shift + s改变模式;shift + d控制台输出target graphic)\n const tip = document.createElement('div');\n const tipSpan1 = document.createElement('span');\n tipSpan1.innerText = 'debug 模式:';\n tip.appendChild(tipSpan1);\n this._modeTip = document.createElement('span');\n this._modeTip.innerText = this._mode;\n tip.appendChild(this._modeTip);\n const tipSpan2 = document.createElement('span');\n tipSpan2.innerText = '(shift + s改变模式;shift + d控制台输出target graphic)';\n tip.appendChild(tipSpan2);\n this._infoContainer.appendChild(tip);\n\n // document.body.append(this._infoContainer);\n this._stage.window.getContainer().append(this._infoContainer);\n }\n\n createHighlightRect() {\n const container = this._stage.window.getContainer();\n this._highlightRect = document.createElement('div');\n this._highlightRect.style.display = 'absolute';\n this._highlightRect.style.border = '1px solid red';\n this._highlightRect.style.pointerEvents = 'none';\n this._highlightRect.style.position = 'absolute';\n container.appendChild(this._highlightRect);\n }\n\n bindStageEvent() {\n this._callback.pointermove = (e: FederatedPointerEvent) => {\n if (this._mode !== 'hover') {\n // do nothing\n } else if (e.target && (e.target as unknown as IGraphic) !== this._target) {\n // 更新bounds\n this._target = e.target as unknown as IGraphic;\n this.addHighlightBounds(this._target.globalAABBBounds);\n setTimeout(() => {\n this.updateInfo();\n }, 100);\n } else if (!e.target) {\n this._target = undefined;\n // this.removeHighlightBounds();\n this.clearInfo();\n }\n };\n this._stage.addEventListener('pointermove', this._callback.pointermove);\n\n this._callback.pointerup = (e: FederatedPointerEvent) => {\n if (this._mode !== 'click') {\n // do nothing\n } else if (e.target && (e.target as unknown as IGraphic) !== this._target) {\n // 更新bounds\n this._target = e.target as unknown as IGraphic;\n this.addHighlightBounds(this._target.globalAABBBounds);\n setTimeout(() => {\n this.updateInfo();\n }, 100);\n } else if (!e.target) {\n this._target = undefined;\n // this.removeHighlightBounds();\n this.clearInfo();\n }\n };\n this._stage.addEventListener('pointerup', this._callback.pointerup);\n\n this._callback.pointerleave = (e: FederatedPointerEvent) => {\n if (this._mode === 'hover') {\n this._target = undefined;\n // this.removeHighlightBounds();\n this.clearInfo();\n }\n };\n this._stage.addEventListener('pointerleave', this._callback.pointerleave);\n }\n\n addHighlightBounds(bounds: any) {\n // 使用VRender绘制高亮框会导致触发多余渲染,因此使用dom\n // this._rect.setAttributes({\n // x: bounds.x1,\n // y: bounds.y1,\n // width: bounds.width(),\n // height: bounds.height(),\n // visible: true,\n // });\n\n // // 保证rect在最上层\n // this._stage.defaultLayer.appendChild(this._rect);\n // this._stage.renderNextFrame();\n\n const table = (this._stage as any).table;\n const stage = table.scenegraph.stage;\n const stageMatrix = stage.window.getViewBoxTransform();\n\n this._highlightRect.style.left = `${bounds.x1 + (stageMatrix.e ?? 0) + (table.options.viewBox?.x1 ?? 0)}px`;\n this._highlightRect.style.top = `${bounds.y1 + (stageMatrix.f ?? 0) + (table.options.viewBox?.y1 ?? 0)}px`;\n this._highlightRect.style.width = `${bounds.width()}px`;\n this._highlightRect.style.height = `${bounds.height()}px`;\n\n // console.log(this._highlightRect.style.left);\n }\n\n // removeHighlightBounds() {\n // this._rect.setAttribute('visible', false);\n // this._stage.renderNextFrame();\n // }\n\n updateInfo() {\n if (!this._target) {\n return;\n }\n // this._infoContainer.innerHTML = '';\n if (this._infoContainer.children.length > 1) {\n this._infoContainer.removeChild(this._infoContainer.children[1]);\n }\n this._infoContainer.style.display = 'block';\n\n const info = {\n customKeys: {},\n type: this._target.type,\n // role: (this._target as any).role,\n globalX: this._target.globalTransMatrix.e,\n globalY: this._target.globalTransMatrix.f,\n attribute: this._target.attribute,\n theme: getTheme(this._target)[this._target.type],\n target: this._target\n };\n\n if (this._customGrapicKeys) {\n this._customGrapicKeys.forEach(key => {\n info.customKeys[key] = this._target[key];\n });\n } else {\n delete info.customKeys;\n }\n\n const formatter = new JSONFormatter(info, 2);\n this._infoContainer.appendChild(formatter.render());\n }\n\n clearInfo() {\n this._infoContainer.style.display = 'none';\n }\n\n updateMode() {\n this._modeTip.innerText = this._mode;\n }\n\n bindKeyEvent() {\n this._callback.keydown = (e: KeyboardEvent) => {\n if (e.key === 'D') {\n console.log(this._target);\n } else if (e.key === 'S') {\n switch (this._mode) {\n case 'click':\n this._mode = 'hover';\n break;\n case 'hover':\n this._mode = 'click';\n break;\n }\n this.updateMode();\n }\n };\n window.addEventListener('keydown', this._callback.keydown);\n }\n\n release() {\n // 移除信息框\n document.body.removeChild(this._infoContainer);\n\n // 移除高亮框\n this._highlightRect.parentElement.removeChild(this._highlightRect);\n\n // 解绑stage事件\n // this._stage.defaultLayer.removeChild(this._rect);\n this._stage.removeEventListener('pointermove', this._callback.pointermove);\n this._stage.removeEventListener('pointerup', this._callback.pointerup);\n this._stage.removeEventListener('pointerleave', this._callback.pointerleave);\n\n // 解绑键盘事件\n window.removeEventListener('keydown', this._callback.keydown);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/icon.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA8D;AAG9D,yCAAuD;AACvD,mDAAqC;AAiBrC,MAAa,IAAK,SAAQ,eAAK;IAe7B,YAAY,MAA6B;QACvC,KAAK,CAAC,MAAM,CAAC,CAAC;QAqKhB,iBAAY,GAAG,GAAG,EAAE;YAClB,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAI,eAAe,CAAC,UAAkB,IAAI,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC;YACzB,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;aACrB;QACH,CAAC,CAAA;QA1KC,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,iBAAiB,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,YAAY,EAAE;YACnG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACnD;QAED,IAAK,IAAI,CAAC,SAAiB,CAAC,KAAK,IAAK,IAAI,CAAC,SAAiB,CAAC,GAAG,EAAE;YAChE,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IAMH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,wBAAc,CAAC,OAAO,CAAE,IAAI,CAAC,SAAiB,CAAC,GAAG,GAAG,WAAW,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC;aACzG,IAAI,CAAC,CAAC,GAAgB,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,IAAA,oBAAQ,EAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAGtB,IAAY,CAAC,SAAS,CAAC,GAAG,CAAE,IAAI,CAAC,SAAiB,CAAC,KAAK,EAAE;gBACzD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS;aACrB,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,eAAe;;QACjB,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,eAAe,mCAAI,IAAI,CAAC,SAAS,CAAC,KAAK,mCAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,gBAAgB;;QAClB,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,mCAAI,IAAI,CAAC,SAAS,CAAC,MAAM,mCAAI,CAAC,CAAC;IACvE,CAAC;IAcD,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,OAAiC,EAAE,CAAS,EAAE,CAAS;QAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC1E;QAGD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAGtB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAI/B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE;YAEtB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;IAED,SAAS,CAAC,KAAkB;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,IACE,CAAC,IAAI,CAAC,cAAc;YACpB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK;YACxC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAC1C;YACA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7E;QAGD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAG1C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAKrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,UAAU,CAAC,OAAiC,EAAE,CAAS,EAAE,CAAS;QAChE,OAAO,CAAC,SAAS,CACf,IAAI,CAAC,SAAS,EACd,CAAC,EACD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,MAAM,EACrB,CAAC,EACD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,KAAU,EAAE,cAAwB,EAAE,OAA8B;QAC5F,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,aAAa,CACX,MAAsC,EACtC,cAAwB,EACxB,OAA8B;QAE9B,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,IAAK,MAAc,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;CAUF;AA7LD,oBA6LC;AAED,MAAa,QAAS,SAAQ,cAAI;IAKhC,YAAY,MAA6B;;QAEvC,MAAM,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,mCAAI,MAAM,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,MAAA,MAAM,CAAC,QAAQ,mCAAI,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,MAAA,MAAM,CAAC,SAAS,mCAAI,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,KAAK,CAAC;QACnD,MAAM,CAAC,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,SAAS,CAAC;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;CACF;AAdD,4BAcC","file":"icon.js","sourcesContent":["import type { IImageGraphicAttribute, ISetAttributeContext, ITextGraphicAttribute } from './../../vrender';\nimport { Image, ResourceLoader, Text } from './../../vrender';\nimport type { IIconBase } from '../../ts-types';\nimport type { ParsedFrame } from 'gifuct-js';\nimport { decompressFrames, parseGIF } from 'gifuct-js';\nimport * as icons from '../../icons';\n\nexport interface IIconGraphicAttribute extends IImageGraphicAttribute {\n backgroundWidth?: number;\n backgroundHeight?: number;\n backgroundColor?: string;\n visibleTime?: string;\n funcType?: string;\n hoverImage?: string | HTMLImageElement | HTMLCanvasElement;\n originImage?: string | HTMLImageElement | HTMLCanvasElement;\n // margin?: [number, number, number, number];\n marginLeft?: number;\n marginRight?: number;\n shape?: 'circle' | 'square';\n interactive?: boolean;\n}\n\nexport class Icon extends Image {\n declare attribute: IIconGraphicAttribute;\n role?: string;\n tooltip?: IIconBase['tooltip'];\n frameImageData?: ImageData;\n tempCanvas?: HTMLCanvasElement;\n tempCtx?: CanvasRenderingContext2D;\n gifCanvas?: HTMLCanvasElement;\n gifCtx?: CanvasRenderingContext2D;\n loadedFrames?: ParsedFrame[];\n frameIndex?: number;\n playing?: boolean;\n lastTime?: number;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(params: IIconGraphicAttribute) {\n super(params);\n\n if (this.attribute.visibleTime === 'mouseenter_cell' || this.attribute.visibleTime === 'click_cell') {\n this.attribute.opacity = 0;\n }\n\n if (this.attribute.hoverImage) {\n this.attribute.originImage = this.attribute.image;\n }\n\n if ((this.attribute as any).isGif && (this.attribute as any).gif) {\n this.loadGif();\n }\n\n // if (this.attribute.margin) {\n // this.attribute.boundsPadding = this.attribute.margin;\n // this.attribute.dx = this.attribute.margin[3] ?? 0;\n // }\n }\n\n loadGif() {\n this.playing = false;\n ResourceLoader.GetFile((this.attribute as any).gif + '?role=gif' + `&radom=${Math.random()}`, 'arrayBuffer') // ?role=gif: hack for ResourceLoader cache\n .then((res: ArrayBuffer) => {\n const gif = parseGIF(res);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n\n // hack for image resource\n (this as any).resources.set((this.attribute as any).image, {\n state: 'success',\n data: this.gifCanvas\n });\n })\n .catch((e: any) => {\n console.error('Gif load error: ', e);\n });\n }\n\n get backgroundWidth(): number {\n return this.attribute.backgroundWidth ?? this.attribute.width ?? 0;\n }\n\n get backgroundHeight(): number {\n return this.attribute.backgroundHeight ?? this.attribute.height ?? 0;\n }\n\n // protected tryUpdateAABBBounds() {\n // super.tryUpdateAABBBounds();\n // // 扩大范围\n // const { width, height } = this.attribute;\n // const { backgroundWidth = width, backgroundHeight = height } = this.attribute;\n // const expandX = (backgroundWidth - width) / 2;\n // const expandY = (backgroundHeight - height) / 2;\n // this._AABBBounds.expand([expandY, expandX, expandY, expandX]);\n\n // return this._AABBBounds;\n // }\n\n renderGIF(frames: ParsedFrame[]) {\n this.loadedFrames = frames;\n this.frameIndex = 0;\n\n if (!this.tempCanvas) {\n this.tempCanvas = document.createElement('canvas');\n this.tempCtx = this.tempCanvas.getContext('2d');\n }\n\n if (!this.gifCanvas) {\n this.gifCanvas = document.createElement('canvas');\n this.gifCtx = this.gifCanvas.getContext('2d');\n }\n\n this.gifCanvas.width = frames[0].dims.width;\n this.gifCanvas.height = frames[0].dims.height;\n\n this.playing = true;\n this.lastTime = new Date().getTime();\n this.animate().to({}, 1000, 'linear').loop(Infinity);\n }\n\n renderFrame(context: CanvasRenderingContext2D, x: number, y: number) {\n // get the frame\n const frame = this.loadedFrames[this.frameIndex || 0];\n\n if (frame.disposalType === 2) {\n this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height);\n }\n\n // draw the patch\n this.drawPatch(frame);\n\n // perform manipulation\n this.manipulate(context, x, y);\n\n // update the frame index\n // this.frameIndex++;\n const diff = new Date().getTime() - this.lastTime;\n if (frame.delay < diff) {\n // return;\n this.frameIndex++;\n this.lastTime = new Date().getTime();\n }\n if (this.frameIndex >= this.loadedFrames.length) {\n this.frameIndex = 0;\n }\n }\n\n drawPatch(frame: ParsedFrame) {\n const dims = frame.dims;\n\n if (\n !this.frameImageData ||\n dims.width !== this.frameImageData.width ||\n dims.height !== this.frameImageData.height\n ) {\n this.tempCanvas.width = dims.width;\n this.tempCanvas.height = dims.height;\n this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height);\n }\n\n // set the patch data as an override\n this.frameImageData.data.set(frame.patch);\n\n // draw the patch back over the canvas\n this.tempCtx.putImageData(this.frameImageData, 0, 0);\n\n // gifCtx.drawImage(tempCanvas, dims.left, dims.top)\n // this.attribute.image = this.tempCanvas;\n\n this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);\n }\n\n manipulate(context: CanvasRenderingContext2D, x: number, y: number) {\n context.drawImage(\n this.gifCanvas,\n 0,\n 0,\n this.gifCanvas.width,\n this.gifCanvas.height,\n x,\n y,\n this.attribute.width,\n this.attribute.height\n );\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n if (key === 'gif') {\n this.loadGif();\n }\n }\n\n setAttributes(\n params: Partial<IIconGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n if ((params as any).gif) {\n this.loadGif();\n }\n }\n\n failCallback = () => {\n const registeredIcons = icons.get();\n const { svg, src } = (registeredIcons.damage_pic as any) || {};\n const image = svg || src;\n if (image) {\n super.image = image;\n }\n }\n}\n\nexport class TextIcon extends Text {\n declare attribute: IIconGraphicAttribute;\n role?: string;\n tooltip?: IIconBase['tooltip'];\n\n constructor(params: ITextGraphicAttribute) {\n // default text icon style\n params.fill = params.fill ?? '#00F';\n params.fontSize = params.fontSize ?? 12;\n params.underline = params.underline ?? 1;\n params.textBaseline = params.textBaseline ?? 'top';\n params.cursor = params.cursor ?? 'pointer';\n super(params);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/icon.ts"],"names":[],"mappings":"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","file":"icon.js","sourcesContent":["import type { IImageGraphicAttribute, ISetAttributeContext, ITextGraphicAttribute } from './../../vrender';\nimport { Image, ResourceLoader, Text } from './../../vrender';\nimport type { IIconBase } from '../../ts-types';\nimport type { ParsedFrame } from 'gifuct-js';\nimport { decompressFrames, parseGIF } from 'gifuct-js';\nimport * as icons from '../../icons';\n\nexport interface IIconGraphicAttribute extends IImageGraphicAttribute {\n backgroundWidth?: number;\n backgroundHeight?: number;\n backgroundColor?: string;\n visibleTime?: string;\n funcType?: string;\n hoverImage?: string | HTMLImageElement | HTMLCanvasElement;\n originImage?: string | HTMLImageElement | HTMLCanvasElement;\n // margin?: [number, number, number, number];\n marginLeft?: number;\n marginRight?: number;\n shape?: 'circle' | 'square';\n interactive?: boolean;\n}\n\nexport class Icon extends Image {\n declare attribute: IIconGraphicAttribute;\n role?: string;\n tooltip?: IIconBase['tooltip'];\n frameImageData?: ImageData;\n tempCanvas?: HTMLCanvasElement;\n tempCtx?: CanvasRenderingContext2D;\n gifCanvas?: HTMLCanvasElement;\n gifCtx?: CanvasRenderingContext2D;\n loadedFrames?: ParsedFrame[];\n frameIndex?: number;\n playing?: boolean;\n lastTime?: number;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(params: IIconGraphicAttribute) {\n super(params);\n\n if (this.attribute.visibleTime === 'mouseenter_cell' || this.attribute.visibleTime === 'click_cell') {\n this.attribute.opacity = 0;\n }\n\n if (this.attribute.hoverImage) {\n this.attribute.originImage = this.attribute.image;\n }\n\n if ((this.attribute as any).isGif && (this.attribute as any).gif) {\n this.loadGif();\n }\n\n // if (this.attribute.margin) {\n // this.attribute.boundsPadding = this.attribute.margin;\n // this.attribute.dx = this.attribute.margin[3] ?? 0;\n // }\n }\n\n loadGif() {\n this.playing = false;\n ResourceLoader.GetFile((this.attribute as any).gif + '?role=gif' + `&radom=${Math.random()}`, 'arrayBuffer') // ?role=gif: hack for ResourceLoader cache\n .then((res: ArrayBuffer) => {\n const gif = parseGIF(res);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n\n // hack for image resource\n (this as any).resources.set((this.attribute as any).image, {\n state: 'success',\n data: this.gifCanvas\n });\n })\n .catch((e: any) => {\n console.error('Gif load error: ', e);\n });\n }\n\n get backgroundWidth(): number {\n return this.attribute.backgroundWidth ?? this.attribute.width ?? 0;\n }\n\n get backgroundHeight(): number {\n return this.attribute.backgroundHeight ?? this.attribute.height ?? 0;\n }\n\n // protected tryUpdateAABBBounds() {\n // super.tryUpdateAABBBounds();\n // // 扩大范围\n // const { width, height } = this.attribute;\n // const { backgroundWidth = width, backgroundHeight = height } = this.attribute;\n // const expandX = (backgroundWidth - width) / 2;\n // const expandY = (backgroundHeight - height) / 2;\n // this._AABBBounds.expand([expandY, expandX, expandY, expandX]);\n\n // return this._AABBBounds;\n // }\n\n renderGIF(frames: ParsedFrame[]) {\n this.loadedFrames = frames;\n this.frameIndex = 0;\n\n if (!this.tempCanvas) {\n this.tempCanvas = document.createElement('canvas');\n this.tempCtx = this.tempCanvas.getContext('2d');\n }\n\n if (!this.gifCanvas) {\n this.gifCanvas = document.createElement('canvas');\n this.gifCtx = this.gifCanvas.getContext('2d');\n }\n\n this.gifCanvas.width = frames[0].dims.width;\n this.gifCanvas.height = frames[0].dims.height;\n\n this.playing = true;\n this.lastTime = new Date().getTime();\n this.animate().to({}, 1000, 'linear').loop(Infinity);\n }\n\n renderFrame(context: CanvasRenderingContext2D, x: number, y: number) {\n // get the frame\n const frame = this.loadedFrames[this.frameIndex || 0];\n\n if (frame.disposalType === 2) {\n this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height);\n }\n\n // draw the patch\n this.drawPatch(frame);\n\n // perform manipulation\n this.manipulate(context, x, y);\n\n // update the frame index\n // this.frameIndex++;\n const diff = new Date().getTime() - this.lastTime;\n if (frame.delay < diff) {\n // return;\n this.frameIndex++;\n this.lastTime = new Date().getTime();\n }\n if (this.frameIndex >= this.loadedFrames.length) {\n this.frameIndex = 0;\n }\n }\n\n drawPatch(frame: ParsedFrame) {\n const dims = frame.dims;\n\n if (\n !this.frameImageData ||\n dims.width !== this.frameImageData.width ||\n dims.height !== this.frameImageData.height\n ) {\n this.tempCanvas.width = dims.width;\n this.tempCanvas.height = dims.height;\n this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height);\n }\n\n // set the patch data as an override\n this.frameImageData.data.set(frame.patch);\n\n // draw the patch back over the canvas\n this.tempCtx.putImageData(this.frameImageData, 0, 0);\n\n // gifCtx.drawImage(tempCanvas, dims.left, dims.top)\n // this.attribute.image = this.tempCanvas;\n\n this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);\n }\n\n manipulate(context: CanvasRenderingContext2D, x: number, y: number) {\n context.drawImage(\n this.gifCanvas,\n 0,\n 0,\n this.gifCanvas.width,\n this.gifCanvas.height,\n x,\n y,\n this.attribute.width,\n this.attribute.height\n );\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n if (key === 'gif') {\n this.loadGif();\n }\n }\n\n setAttributes(\n params: Partial<IIconGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n if ((params as any).gif) {\n this.loadGif();\n }\n }\n\n failCallback = () => {\n const registeredIcons = icons.get();\n const { svg, src } = (registeredIcons.damage_pic as any) || {};\n const image = svg || src;\n if (image) {\n super.image = image;\n }\n };\n}\n\nexport class TextIcon extends Text {\n declare attribute: IIconGraphicAttribute;\n role?: string;\n tooltip?: IIconBase['tooltip'];\n\n constructor(params: ITextGraphicAttribute) {\n // default text icon style\n params.fill = params.fill ?? '#00F';\n params.fontSize = params.fontSize ?? 12;\n params.underline = params.underline ?? 1;\n params.textBaseline = params.textBaseline ?? 'top';\n params.cursor = params.cursor ?? 'pointer';\n super(params);\n }\n}\n"]}
@@ -122,7 +122,7 @@ function updateCell(col, row, table, addNew, isShadow, forceFastUpdate) {
122
122
  const rawRecord = table.getCellRawRecord(range.start.col, range.start.row), {vtableMergeName: vtableMergeName, vtableMerge: vtableMerge} = null != rawRecord ? rawRecord : {};
123
123
  isVtableMerge = vtableMerge, vtableMerge && (mayHaveIcon = !0, table.options.groupTitleCustomLayout && (customResult = (0,
124
124
  custom_1.dealWithCustom)(table.options.groupTitleCustomLayout, void 0, range.start.col, range.start.row, table.getColsWidth(range.start.col, range.end.col), table.getRowsHeight(range.start.row, range.end.row), !1, table.isAutoRowHeight(row), [ 0, 0, 0, 0 ], range, table)),
125
- table.options.groupTitleFieldFormat ? value = table.options.groupTitleFieldFormat(rawRecord, col, row, table) : vtableMergeName && (value = vtableMergeName));
125
+ table.options.groupTitleFieldFormat ? value = table.options.groupTitleFieldFormat(rawRecord, col, row, table) : void 0 !== vtableMergeName && (value = vtableMergeName));
126
126
  }
127
127
  const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row), autoWrapText = null !== (_a = cellStyle.autoWrapText) && void 0 !== _a ? _a : table.internalProps.autoWrapText, cellTheme = (0,
128
128
  tableHelper_1.getStyleTheme)(cellStyle, table, isMerge ? range.start.col : col, isMerge ? range.start.row : row, get_prop_1.getProp).theme;
@@ -281,8 +281,8 @@ function resizeCellGroup(cellGroup, rangeWidth, rangeHeight, range, table) {
281
281
  var _a, _b, _c, _d, _e, _f;
282
282
  "number" == typeof child._dx ? (child.skipMergeUpdate = !0, child.setAttributes({
283
283
  dx: (null !== (_a = child._dx) && void 0 !== _a ? _a : 0) + dx
284
- }), child.skipMergeUpdate = !1) : (child.skipMergeUpdate = !0, child._dx = null !== (_b = child.attribute.dx) && void 0 !== _b ? _b : 0,
285
- child.setAttributes({
284
+ }), child.skipMergeUpdate = !1) : (child._dx = null !== (_b = child.attribute.dx) && void 0 !== _b ? _b : 0,
285
+ child.skipMergeUpdate = !0, child.setAttributes({
286
286
  dx: (null !== (_c = child.attribute.dx) && void 0 !== _c ? _c : 0) + dx
287
287
  }), child.skipMergeUpdate = !1), "number" == typeof child._dy ? (child.skipMergeUpdate = !0,
288
288
  child.setAttributes({