@visactor/vtable 0.16.4-alpha.2 → 0.17.0

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 (73) hide show
  1. package/cjs/ListTable.js +1 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.js +3 -2
  4. package/cjs/PivotChart.js.map +1 -1
  5. package/cjs/PivotTable.js +3 -2
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/core/BaseTable.js +16 -12
  8. package/cjs/core/BaseTable.js.map +1 -1
  9. package/cjs/event/listener/table-group.js +14 -8
  10. package/cjs/event/listener/table-group.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  15. package/cjs/layout/pivot-header-layout.js +25 -8
  16. package/cjs/layout/pivot-header-layout.js.map +1 -1
  17. package/cjs/layout/pivot-layout-helper.d.ts +1 -1
  18. package/cjs/layout/pivot-layout-helper.js +12 -5
  19. package/cjs/layout/pivot-layout-helper.js.map +1 -1
  20. package/cjs/scenegraph/layout/compute-col-width.d.ts +1 -0
  21. package/cjs/scenegraph/layout/compute-col-width.js +12 -8
  22. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  23. package/cjs/scenegraph/layout/compute-row-height.js +8 -5
  24. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  25. package/cjs/scenegraph/layout/update-row.js +1 -1
  26. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  27. package/cjs/scenegraph/scenegraph.js +20 -22
  28. package/cjs/scenegraph/scenegraph.js.map +1 -1
  29. package/cjs/scenegraph/select/update-select-border.js +12 -6
  30. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  31. package/cjs/state/hover/is-cell-hover.d.ts +1 -1
  32. package/cjs/state/hover/is-cell-hover.js +5 -4
  33. package/cjs/state/hover/is-cell-hover.js.map +1 -1
  34. package/cjs/ts-types/base-table.d.ts +1 -0
  35. package/cjs/ts-types/base-table.js.map +1 -1
  36. package/dist/vtable.js +157 -77
  37. package/dist/vtable.min.js +2 -2
  38. package/es/ListTable.js +1 -1
  39. package/es/ListTable.js.map +1 -1
  40. package/es/PivotChart.js +3 -2
  41. package/es/PivotChart.js.map +1 -1
  42. package/es/PivotTable.js +3 -2
  43. package/es/PivotTable.js.map +1 -1
  44. package/es/core/BaseTable.js +16 -12
  45. package/es/core/BaseTable.js.map +1 -1
  46. package/es/event/listener/table-group.js +14 -8
  47. package/es/event/listener/table-group.js.map +1 -1
  48. package/es/index.d.ts +1 -1
  49. package/es/index.js +1 -1
  50. package/es/index.js.map +1 -1
  51. package/es/layout/pivot-header-layout.d.ts +1 -0
  52. package/es/layout/pivot-header-layout.js +25 -8
  53. package/es/layout/pivot-header-layout.js.map +1 -1
  54. package/es/layout/pivot-layout-helper.d.ts +1 -1
  55. package/es/layout/pivot-layout-helper.js +12 -5
  56. package/es/layout/pivot-layout-helper.js.map +1 -1
  57. package/es/scenegraph/layout/compute-col-width.d.ts +1 -0
  58. package/es/scenegraph/layout/compute-col-width.js +9 -6
  59. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  60. package/es/scenegraph/layout/compute-row-height.js +8 -5
  61. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  62. package/es/scenegraph/layout/update-row.js +1 -1
  63. package/es/scenegraph/layout/update-row.js.map +1 -1
  64. package/es/scenegraph/scenegraph.js +21 -23
  65. package/es/scenegraph/scenegraph.js.map +1 -1
  66. package/es/scenegraph/select/update-select-border.js +12 -6
  67. package/es/scenegraph/select/update-select-border.js.map +1 -1
  68. package/es/state/hover/is-cell-hover.d.ts +1 -1
  69. package/es/state/hover/is-cell-hover.js +5 -4
  70. package/es/state/hover/is-cell-hover.js.map +1 -1
  71. package/es/ts-types/base-table.d.ts +1 -0
  72. package/es/ts-types/base-table.js.map +1 -1
  73. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"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","file":"scenegraph.js","sourcesContent":["import type { IStage, IRect, ITextCache, INode, Text } from '@visactor/vrender';\nimport { createStage, createRect, IContainPointMode, container, vglobal } from '@visactor/vrender';\nimport type { CellRange, CellSubLocation } from '../ts-types';\nimport {\n type CellAddress,\n type CellLocation,\n type ColumnIconOption,\n type SortOrder,\n IconFuncTypeEnum\n} from '../ts-types';\nimport { isArray, isString, isValid } from '@visactor/vutils';\nimport type { Group } from './graphic/group';\nimport type { Icon } from './graphic/icon';\nimport type { WrapText } from './graphic/text';\nimport { getCellMergeInfo } from './utils/get-cell-merge';\nimport { updateColWidth } from './layout/update-width';\nimport { TableComponent } from './component/table-component';\nimport { updateRowHeight } from './layout/update-height';\nimport { updateImageCellContentWhileResize } from './group-creater/cell-type/image-cell';\nimport { getQuadProps } from './utils/padding';\nimport { createFrameBorder, updateFrameBorder, updateFrameBorderSize } from './style/frame-border';\nimport { ResizeColumnHotSpotSize } from '../tools/global';\nimport splitModule from './graphic/contributions';\nimport { getFunctionalProp, getProp } from './utils/get-prop';\nimport { dealWithIcon } from './utils/text-icon-layout';\nimport { SceneProxy } from './group-creater/progress/proxy';\nimport type { TooltipOptions } from '../ts-types/tooltip';\nimport { computeColWidth, computeColsWidth } from './layout/compute-col-width';\nimport { moveHeaderPosition } from './layout/move-cell';\nimport { updateCell } from './group-creater/cell-helper';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { updateAllSelectComponent, updateCellSelectBorder } from './select/update-select-border';\nimport { createCellSelectBorder } from './select/create-select-border';\nimport { moveSelectingRangeComponentsToSelectedRangeComponents } from './select/move-select-border';\nimport { deleteAllSelectBorder, deleteLastSelectedRangeComponents } from './select/delete-select-border';\nimport { updateRow } from './layout/update-row';\nimport { handleTextStick } from './stick-text';\nimport { computeRowsHeight } from './layout/compute-row-height';\nimport { emptyGroup } from './utils/empty-group';\nimport { dealBottomFrozen, dealFrozen, dealRightFrozen, resetFrozen } from './layout/frozen';\nimport { updateChartSize, updateChartState } from './refresh-node/update-chart';\nimport { initSceneGraph } from './group-creater/init-scenegraph';\nimport { updateContainerChildrenX } from './utils/update-container';\nimport type { CheckBox } from '@visactor/vrender-components';\nimport { loadPoptip, setPoptipTheme } from '@visactor/vrender-components';\nimport textMeasureModule from './utils/text-measure';\nimport {\n getIconByXY,\n hideClickIcon,\n hideHoverIcon,\n setIconHoverStyle,\n setIconNormalStyle,\n showClickIcon,\n showHoverIcon,\n updateFrozenIcon,\n updateHierarchyIcon,\n updateSortIcon\n} from './icon/icon-update';\nimport { Env } from '../tools/env';\nimport { createCornerCell } from './style/corner-cell';\nimport { updateCol } from './layout/update-col';\n// import { contextModule } from './context/module';\n\n// VChart poptip theme\nloadPoptip();\ncontainer.load(splitModule);\ncontainer.load(textMeasureModule);\n// container.load(renderServiceModule);\n// container.load(contextModule);\n// console.log(container);\n\nconst poptipStyle = {\n visible: true,\n position: 'auto',\n padding: 8,\n titleStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: '#4E5969'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#4E5969'\n },\n panel: {\n visible: true,\n fill: '#fff',\n stroke: '#ffffff',\n lineWidth: 0,\n cornerRadius: 3,\n shadowBlur: 12,\n shadowOffsetX: 0,\n shadowOffsetY: 4,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n size: 0,\n space: 12\n }\n // maxWidthPercent: 0.8\n};\n\nexport type MergeMap = Map<\n string,\n {\n cellWidth: number;\n cellHeight: number;\n }\n>;\n\n/**\n * @description: 表格场景树,存储和管理表格全部的场景图元\n * @return {*}\n */\nexport class Scenegraph {\n proxy: SceneProxy;\n tableGroup: Group; // 表格全局Group\n colHeaderGroup: Group; // 列表头Group\n cornerHeaderGroup: Group; // 列表头冻结列Group\n rowHeaderGroup: Group; // 行表头Group\n bodyGroup: Group; // 内容Group\n rightFrozenGroup: Group; // 右侧冻结列Group\n bottomFrozenGroup: Group; // 下侧冻结行Group\n rightTopCornerGroup: Group; // 右上角占位单元格Group,只在有右侧冻结列时使用\n leftBottomCornerGroup: Group; // 左下角占位单元格Group,只在有下侧冻结行时使用\n rightBottomCornerGroup: Group; // 右下角占位单元格Group,只在有右侧下侧都有冻结行时使用\n componentGroup: Group; // 表格外组件Group\n /** 所有选中区域对应的选框组件 */\n selectedRangeComponents: Map<string, { rect: IRect; role: CellSubLocation }>;\n /** 当前正在选择区域对应的选框组件 为什么是map 以为可能一个选中区域会被拆分为多个rect组件 三块表头和body都分别对应不同组件*/\n selectingRangeComponents: Map<string, { rect: IRect; role: CellSubLocation }>;\n lastSelectId: string;\n component: TableComponent;\n stage: IStage;\n table: BaseTableAPI;\n isPivot: boolean;\n transpose: boolean;\n hasFrozen: boolean; // 是否已经处理冻结列,用在getCell判断是否从cornerHeaderGroup获取cellGroup\n frozenColCount: number; // 冻结列数\n frozenRowCount: number; // 冻结行数\n clear: boolean;\n\n mergeMap: MergeMap;\n _dealAutoFillHeightOriginRowsHeight: number; // hack 缓存一个值 用于处理autoFillHeight的逻辑判断 在某些情况下是需要更新此值的 如增删数据 但目前没有做这个\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.hasFrozen = false;\n this.clear = true;\n this.mergeMap = new Map();\n\n setPoptipTheme(poptipStyle as any);\n let width;\n let height;\n if (Env.mode === 'node') {\n vglobal.setEnv('node', table.options.modeParams);\n width = table.canvasWidth;\n height = table.canvasHeight;\n } else {\n vglobal.setEnv('browser');\n width = table.canvas.width;\n height = table.canvas.height;\n }\n this.stage = createStage({\n canvas: table.canvas,\n width,\n height,\n disableDirtyBounds: false,\n background: table.theme.underlayBackgroundColor,\n dpr: table.internalProps.pixelRatio,\n enableLayout: true,\n pluginList: table.isPivotChart() ? ['poptipForText'] : undefined,\n afterRender: () => {\n this.table.fireListeners('after_render', null);\n // console.trace('after_render');\n }\n // event: { clickInterval: 400 }\n // autoRender: true\n });\n\n this.stage.defaultLayer.setTheme({\n group: {\n boundsPadding: 0,\n strokeBoundsBuffer: 0,\n lineJoin: 'round'\n },\n text: {\n ignoreBuf: true\n }\n });\n this.initSceneGraph();\n this.stage.defaultLayer.add(this.tableGroup);\n\n (this.stage as any).table = this.table;\n\n this.createComponent();\n }\n\n get width(): number {\n return this.tableGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.tableGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.tableGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.tableGroup.attribute?.y ?? 0;\n }\n\n get bodyRowStart(): number {\n return this.proxy.rowStart ?? 0;\n }\n\n get bodyRowEnd(): number {\n return this.proxy.rowEnd ?? this.table.rowCount - 1;\n }\n\n get bodyColStart(): number {\n return this.proxy.colStart ?? 0;\n }\n\n get bodyColEnd(): number {\n return this.proxy.colEnd ?? this.table.colCount - 1;\n }\n\n /**\n * @description: 初始化场景树结构\n * @return {*}\n */\n initSceneGraph() {\n this.isPivot = this.table.isPivotTable();\n this.transpose = (this.table.options as any).transpose; // 初始化时this.table.transpose还未赋值\n\n initSceneGraph(this);\n }\n\n /**\n * @description: 清空全部单元格内容,用于setRecord\n * @return {*}\n */\n clearCells() {\n this.clear = true;\n this.hasFrozen = false;\n this.mergeMap.clear();\n\n this.colHeaderGroup.clear();\n this.rowHeaderGroup.clear();\n this.cornerHeaderGroup.clear();\n this.bodyGroup.clear();\n\n this.bottomFrozenGroup.clear();\n this.rightFrozenGroup.clear();\n this.rightTopCornerGroup.clear();\n this.rightBottomCornerGroup.clear();\n this.leftBottomCornerGroup.clear();\n\n this.colHeaderGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.rowHeaderGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.cornerHeaderGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.bodyGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.rightFrozenGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.bottomFrozenGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.rightTopCornerGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n visible: false\n });\n this.leftBottomCornerGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n visible: false\n });\n this.rightBottomCornerGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n visible: false\n });\n\n this.tableGroup.setAttributes({\n x: this.table.tableX,\n y: this.table.tableY,\n width: 0,\n height: 0\n });\n\n if ((this.tableGroup as any).border) {\n (this.tableGroup.parent as Group).removeChild((this.tableGroup as any).border);\n delete (this.tableGroup as any).border;\n }\n this.proxy?.release();\n }\n\n updateStageBackground() {\n this.stage.background = this.table.theme.underlayBackgroundColor;\n this.stage.renderNextFrame();\n }\n\n /**\n * @description: 初始化表格外组件\n * @return {*}\n */\n createComponent() {\n this.component = new TableComponent(this.table);\n this.component.addToGroup(this.componentGroup);\n this.selectedRangeComponents = new Map();\n this.selectingRangeComponents = new Map();\n }\n\n /**\n * @description: 依据数据创建表格场景树\n * @return {*}\n */\n createSceneGraph() {\n this.clear = false;\n // this.frozenColCount = this.table.rowHeaderLevelCount;\n this.frozenColCount = this.table.frozenColCount;\n this.frozenRowCount = this.table.columnHeaderLevelCount;\n\n this.proxy = new SceneProxy(this.table);\n\n // update table group position for cell group global position, not create border yet.\n createFrameBorder(this.tableGroup, this.table.theme.frameStyle, this.tableGroup.role, undefined, true);\n\n if (this.table.isPivotChart()) {\n createCornerCell(\n this.rightTopCornerGroup,\n this.table.theme.cornerRightTopCellStyle || this.table.theme.cornerHeaderStyle || {}\n );\n createCornerCell(\n this.leftBottomCornerGroup,\n this.table.theme.cornerLeftBottomCellStyle || this.table.theme.cornerHeaderStyle || {}\n );\n createCornerCell(\n this.rightBottomCornerGroup,\n this.table.theme.cornerRightBottomCellStyle || this.table.theme.cornerHeaderStyle || {}\n );\n }\n\n this.proxy.createGroupForFirstScreen(\n this.cornerHeaderGroup,\n this.colHeaderGroup,\n this.rowHeaderGroup,\n this.rightFrozenGroup,\n this.bottomFrozenGroup,\n this.bodyGroup,\n 0,\n 0\n );\n this.afterScenegraphCreated();\n }\n\n /**\n * @description: 绘制场景树\n * @param {any} element\n * @param {CellRange} visibleCoord\n * @return {*}\n */\n renderSceneGraph() {\n this.stage.render();\n }\n\n /**\n * @description: 获取指定行列位置的cell group\n * @param {number} col\n * @param {number} row\n * @return {Group}\n */\n getCell(col: number, row: number, getShadow?: boolean): Group {\n // hasFrozen处理前,列表头的冻结部分在colHeaderGroup中\n // hasFrozen处理后,列表头的冻结部分在cornerHeaderGroup中\n // 因此在获取cell时需要区别hasFrozen时机\n // const colGroup = row < this.frozenRowCount ? this.colHeaderGroup : this.cornerHeaderGroup;\n let cell;\n if (\n this.table.rightFrozenColCount > 0 &&\n col >= this.table.colCount - this.table.rightFrozenColCount &&\n row < this.table.frozenRowCount\n ) {\n cell = this.rightTopCornerGroup.getColGroup(col)?.getRowGroup(row);\n } else if (\n this.table.bottomFrozenRowCount > 0 &&\n row >= this.table.rowCount - this.table.bottomFrozenRowCount &&\n col < this.table.frozenColCount\n ) {\n cell = this.leftBottomCornerGroup.getColGroup(col)?.getRowGroup(row);\n } else if (\n this.table.rightFrozenColCount > 0 &&\n this.table.bottomFrozenRowCount > 0 &&\n col >= this.table.colCount - this.table.rightFrozenColCount &&\n row >= this.table.rowCount - this.table.bottomFrozenRowCount\n ) {\n cell = this.rightBottomCornerGroup.getColGroup(col)?.getRowGroup(row);\n } else if (this.table.rightFrozenColCount > 0 && col > this.table.colCount - 1 - this.table.rightFrozenColCount) {\n cell = this.rightFrozenGroup.getColGroup(col)?.getRowGroup(row);\n } else if (this.table.bottomFrozenRowCount > 0 && row > this.table.rowCount - 1 - this.table.bottomFrozenRowCount) {\n cell = this.bottomFrozenGroup.getColGroup(col)?.getRowGroup(row);\n } else {\n cell = this.getColGroup(col, row < this.frozenRowCount)?.getRowGroup(row);\n }\n\n if (cell && cell.role === 'shadow-cell' && !getShadow) {\n const range = this.table.getCellRange(col, row);\n if (range.start.col === col && range.start.row === row) {\n // 理论上不会出现这种情况,但是在PivotChart会偶先,这里处理避免进入死循环\n // do nothing\n } else {\n cell = this.getCell(range.start.col, range.start.row);\n }\n }\n\n return cell || emptyGroup;\n }\n\n highPerformanceGetCell(col: number, row: number, getShadow?: boolean): Group {\n // if (!this.table.isHeader(col, row)) {\n return this.proxy.highPerformanceGetCell(col, row, getShadow);\n // }\n // return this.getCell(col, row, getShadow);\n }\n\n getColGroup(col: number, isCornerOrColHeader = false): Group {\n let element: Group;\n if (col < this.frozenColCount && isCornerOrColHeader) {\n element = this.cornerHeaderGroup.getColGroup(col) as Group;\n } else if (col < this.frozenColCount) {\n element = this.rowHeaderGroup.getColGroup(col) as Group;\n } else if (isCornerOrColHeader) {\n element = this.colHeaderGroup.getColGroup(col) as Group;\n } else if (\n !isCornerOrColHeader &&\n this.table.rightFrozenColCount > 0 &&\n col > this.table.colCount - 1 - this.table.rightFrozenColCount\n ) {\n element = this.rightFrozenGroup.getColGroup(col) as Group;\n } else {\n element = this.bodyGroup.getColGroup(col) as Group;\n }\n return element || undefined;\n }\n\n getColGroupInBottom(col: number): Group | undefined {\n if (this.table.bottomFrozenRowCount > 0) {\n return this.bottomFrozenGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n getColGroupInLeftBottomCorner(col: number): Group | undefined {\n if (this.table.bottomFrozenRowCount > 0) {\n return this.leftBottomCornerGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n getColGroupInRightTopCorner(col: number): Group | undefined {\n if (this.table.rightFrozenColCount > 0) {\n return this.rightTopCornerGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n getColGroupInRightBottomCorner(col: number): Group | undefined {\n if (this.table.rightFrozenColCount > 0 && this.table.bottomFrozenRowCount > 0) {\n return this.rightBottomCornerGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n /**\n * @description: 获取指定行列位置的cell的宽高,主要处理merge情况\n * @param {number} col\n * @param {number} row\n * @return {Group}\n */\n getCellSize(col: number, row: number): { width: number; height: number } {\n const cell = this.getCell(col, row);\n const mergeInfo = getCellMergeInfo(this.table, col, row);\n let width = cell.attribute.width;\n let height = cell.attribute.height;\n if (mergeInfo) {\n width = width / (mergeInfo.end.col - mergeInfo.start.col + 1);\n height = height / (mergeInfo.end.row - mergeInfo.start.row + 1);\n }\n return { width, height };\n }\n\n /**\n * @description: 触发下一帧渲染\n * @return {*}\n */\n updateNextFrame() {\n // to do\n // this.table.invalidate();\n this.resetAllSelectComponent();\n\n this.stage.renderNextFrame();\n }\n resetAllSelectComponent() {\n if (this.table.stateManager.select?.ranges?.length > 0) {\n updateAllSelectComponent(this);\n }\n }\n\n hideHoverIcon(col: number, row: number) {\n hideHoverIcon(col, row, this);\n }\n\n showHoverIcon(col: number, row: number) {\n showHoverIcon(col, row, this);\n }\n\n hideClickIcon(col: number, row: number) {\n hideClickIcon(col, row, this);\n }\n\n showClickIcon(col: number, row: number) {\n showClickIcon(col, row, this);\n }\n\n /**\n * @description: 获取指定单元格指定位置的icon mark\n * @param {number} col\n * @param {number} row\n * @param {number} x\n * @param {number} y\n * @return {*}\n */\n getIcon(col: number, row: number, x: number, y: number): Icon | undefined {\n return getIconByXY(col, row, x, y, this);\n }\n\n /**\n * @description: 将指定icon mark设置为Hover样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\n setIconHoverStyle(icon: Icon, col: number, row: number, cellGroup: Group) {\n setIconHoverStyle(icon, col, row, cellGroup, this);\n }\n\n updateSortIcon(\n col: number,\n row: number,\n iconMark: Icon,\n order: SortOrder,\n oldSortCol: number,\n oldSortRow: number,\n oldIconMark: Icon | undefined\n ) {\n updateSortIcon(col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark, this);\n }\n\n updateFrozenIcon(col: number, oldFrozenCol: number) {\n updateFrozenIcon(this);\n }\n updateHierarchyIcon(col: number, row: number) {\n updateHierarchyIcon(col, row, this);\n }\n\n /**\n * @description: 将指定icon mark设置为Normal样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\n setIconNormalStyle(icon: Icon, col: number, row: number) {\n setIconNormalStyle(icon, col, row, this);\n }\n\n /**\n * 单元格失焦 失效该单元格对应的图表实例\n * @param col\n * @param row\n * @returns\n */\n deactivateChart(col: number, row: number) {\n if (col === -1 || row === -1) {\n return;\n }\n const cellGroup = this.getCell(col, row);\n (cellGroup?.firstChild as any)?.deactivate?.();\n }\n /**\n * hover 到单元格上 激活该单元格对应的图表实例\n * @param col\n * @param row\n * @returns\n */\n activateChart(col: number, row: number) {\n if (col === -1 || row === -1) {\n return;\n }\n const cellGroup = this.getCell(col, row);\n (cellGroup?.firstChild as any)?.activate?.(this.table);\n }\n\n removeInteractionBorder(col: number, row: number) {\n const cellGroup = this.getCell(col, row);\n cellGroup.setAttribute('highlightStroke', undefined);\n cellGroup.setAttribute('highlightStrokeArrayWidth', undefined);\n cellGroup.setAttribute('highlightStrokeArrayColor', undefined);\n }\n\n createCellSelectBorder(\n start_Col: number,\n start_Row: number,\n end_Col: number,\n end_Row: number,\n selectRangeType: CellSubLocation,\n selectId: string, //整体区域${endRow}-${startCol}${startRow}${endCol}${endRow}作为其编号\n strokes?: boolean[]\n ) {\n createCellSelectBorder(this, start_Col, start_Row, end_Col, end_Row, selectRangeType, selectId, strokes);\n }\n moveSelectingRangeComponentsToSelectedRangeComponents() {\n moveSelectingRangeComponentsToSelectedRangeComponents(this);\n }\n /** 按住shift 则继续上次选中范围 需要将现有的删除掉 */\n deleteLastSelectedRangeComponents() {\n deleteLastSelectedRangeComponents(this);\n }\n deleteAllSelectBorder() {\n deleteAllSelectBorder(this);\n }\n\n updateCellSelectBorder(newStartCol: number, newStartRow: number, newEndCol: number, newEndRow: number) {\n updateCellSelectBorder(this, newStartCol, newStartRow, newEndCol, newEndRow);\n }\n /** 根据select状态重新创建选中range节点 目前无调用者 */\n recreateAllSelectRangeComponents() {\n deleteAllSelectBorder(this);\n this.table.stateManager.select.ranges.forEach((cellRange: CellRange) => {\n updateCellSelectBorder(this, cellRange.start.col, cellRange.start.row, cellRange.end.col, cellRange.end.row);\n });\n moveSelectingRangeComponentsToSelectedRangeComponents(this);\n }\n /**\n * @description: 列宽调整结果更新列宽\n * @param {number} col\n * @param {number} detaX 改变的宽度值\n * @return {*}\n */\n updateColWidth(col: number, detaX: number, skipUpdateContainer?: boolean) {\n updateColWidth(this, col, Math.round(detaX));\n // this.updateContainerWidth(col, detaX);\n if (!skipUpdateContainer) {\n // this.updateContainerAttrWidthAndX();\n this.updateContainer();\n }\n }\n\n /**\n * @description: 列宽调整需要修改Chart的尺寸\n * @param {number} col\n * @return {*}\n */\n updateChartSize(col: number) {\n updateChartSize(this, col);\n }\n /** 更新图表的高亮状态 */\n updateChartState(datum: any) {\n this.table.isPivotChart() && updateChartState(this, datum);\n }\n\n updateCheckboxCellState(col: number, row: number, checked: boolean) {\n if (this.transpose) {\n this.bodyGroup.children?.forEach((columnGroup: INode) => {\n columnGroup\n .getChildAt(row)\n .getChildren()\n .forEach((node: INode) => {\n if (node.name === 'checkbox') {\n (node as CheckBox).setAttribute('checked', checked);\n }\n });\n });\n } else {\n const columnGroup = this.getColGroup(col);\n columnGroup.children?.forEach((cellNode: INode) => {\n cellNode.getChildren().find(node => {\n if (node.name === 'checkbox') {\n (node as CheckBox).setAttribute('checked', checked);\n }\n });\n });\n }\n }\n updateHeaderCheckboxCellState(col: number, row: number, checked: boolean | 'indeterminate') {\n if (this.transpose) {\n this.rowHeaderGroup.children?.forEach((columnGroup: INode) => {\n columnGroup\n .getChildAt(row)\n .getChildren()\n .forEach((node: INode) => {\n if (node.name === 'checkbox') {\n if (checked === 'indeterminate') {\n (node as CheckBox).setAttribute('indeterminate', true);\n (node as CheckBox).setAttribute('checked', undefined);\n } else {\n (node as CheckBox).setAttribute('indeterminate', undefined);\n (node as CheckBox).setAttribute('checked', checked);\n }\n }\n });\n });\n } else {\n const columnGroup = this.getColGroup(col, true);\n columnGroup.children?.forEach((cellNode: INode) => {\n cellNode.getChildren().find(node => {\n if (node.name === 'checkbox') {\n if (checked === 'indeterminate') {\n (node as CheckBox).setAttribute('indeterminate', true);\n (node as CheckBox).setAttribute('checked', undefined);\n } else {\n (node as CheckBox).setAttribute('indeterminate', undefined);\n (node as CheckBox).setAttribute('checked', checked);\n }\n }\n });\n });\n }\n }\n updateAutoColWidth(col: number) {\n this.table.internalProps._widthResizedColMap.delete(col);\n const oldWidth = this.table.getColWidth(col);\n const newWidth = computeColWidth(col, 0, this.table.rowCount - 1, this.table, true);\n if (newWidth !== oldWidth) {\n this.updateColWidth(col, newWidth - oldWidth);\n }\n }\n\n /*\n * recalculates column width in all autowidth columns\n */\n recalculateColWidths() {\n computeColsWidth(this.table, 0, this.table.colCount - 1, true);\n }\n\n recalculateRowHeights() {\n computeRowsHeight(this.table, 0, this.table.rowCount - 1, true, true);\n }\n\n resize() {\n // reset proxy config\n this.proxy.resize();\n\n if (this.table.widthMode === 'adaptive' || this.table.autoFillWidth) {\n if (this.table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n this.recalculateColWidths();\n } else {\n this.dealWidthMode();\n }\n }\n\n if (this.table.heightMode === 'adaptive') {\n // perf to be optimized:\n // reason to use recalculateRowHeights();\n // 1. error amplification(误差放大) in dealHeightMode when multiple resize\n // 2. width update caused height update dose not have enlarge/reduce number,\n // will cause scale error in dealHeightMode()\n this.recalculateRowHeights();\n // this.dealHeightMode();\n } else if (this.table.autoFillHeight) {\n this.dealHeightMode();\n }\n\n // this.dealWidthMode();\n // this.dealHeightMode();\n this.resetFrozen();\n // this.dealFrozen();\n this.updateTableSize();\n this.updateBorderSizeAndPosition();\n this.component.updateScrollBar();\n if (\n this.table.widthMode === 'adaptive' ||\n this.table.heightMode === 'adaptive' ||\n this.table.autoFillWidth ||\n this.table.autoFillHeight\n ) {\n this.updateChartSize(this.table.rowHeaderLevelCount);\n }\n\n this.proxy.progress();\n // this.stage.window.resize(width, height);\n this.updateNextFrame();\n }\n\n updateTableSize() {\n this.tableGroup.setAttributes({\n x: this.table.tableX,\n y: this.table.tableY,\n width: Math.min(\n this.table.tableNoFrameWidth,\n Math.max(this.colHeaderGroup.attribute.width, this.bodyGroup.attribute.width, 0) +\n Math.max(this.cornerHeaderGroup.attribute.width, this.rowHeaderGroup.attribute.width, 0) +\n this.rightBottomCornerGroup.attribute.width\n ),\n height: Math.min(\n this.table.tableNoFrameHeight,\n Math.max(this.colHeaderGroup.attribute.height, this.cornerHeaderGroup.attribute.height, 0) +\n Math.max(this.rowHeaderGroup.attribute.height, this.bodyGroup.attribute.height, 0) +\n this.bottomFrozenGroup.attribute.height\n )\n } as any);\n\n if (this.tableGroup.border && this.tableGroup.border.type === 'rect') {\n this.tableGroup.border.setAttributes({\n x: this.table.tableX - this.tableGroup.border.attribute.lineWidth / 2,\n y: this.table.tableY - this.tableGroup.border.attribute.lineWidth / 2,\n width: this.tableGroup.attribute.width + this.tableGroup.border.attribute.lineWidth,\n height: this.tableGroup.attribute.height + this.tableGroup.border.attribute.lineWidth\n });\n } else if (this.tableGroup.border && this.tableGroup.border.type === 'group') {\n this.tableGroup.border.setAttributes({\n x: this.table.tableX - this.tableGroup.border.attribute.lineWidth / 2,\n y: this.table.tableY - this.tableGroup.border.attribute.lineWidth / 2,\n width: this.tableGroup.attribute.width + this.tableGroup.border.attribute.lineWidth,\n height: this.tableGroup.attribute.height + this.tableGroup.border.attribute.lineWidth\n });\n (this.tableGroup.border.firstChild as IRect)?.setAttributes({\n x: this.tableGroup.border.attribute.lineWidth / 2,\n y: this.tableGroup.border.attribute.lineWidth / 2,\n width: this.tableGroup.attribute.width,\n height: this.tableGroup.attribute.height\n });\n }\n\n if (this.table.bottomFrozenRowCount > 0) {\n this.bottomFrozenGroup.setAttribute(\n 'y',\n this.tableGroup.attribute.height - this.bottomFrozenGroup.attribute.height\n );\n this.leftBottomCornerGroup.setAttributes({\n visible: true,\n y: this.tableGroup.attribute.height - this.bottomFrozenGroup.attribute.height,\n height: this.bottomFrozenGroup.attribute.height,\n width: this.table.getFrozenColsWidth()\n });\n this.rightBottomCornerGroup.setAttributes({\n visible: true,\n y: this.tableGroup.attribute.height - this.bottomFrozenGroup.attribute.height,\n height: this.bottomFrozenGroup.attribute.height\n });\n }\n\n if (this.table.rightFrozenColCount > 0) {\n this.rightFrozenGroup.setAttribute('x', this.tableGroup.attribute.width - this.table.getRightFrozenColsWidth());\n this.rightTopCornerGroup.setAttributes({\n visible: true,\n x: this.tableGroup.attribute.width - this.table.getRightFrozenColsWidth(),\n width: this.table.getRightFrozenColsWidth(),\n height: this.table.getFrozenRowsHeight()\n });\n this.rightBottomCornerGroup.setAttributes({\n visible: true,\n x: this.tableGroup.attribute.width - this.table.getRightFrozenColsWidth(),\n width: this.table.getRightFrozenColsWidth()\n });\n }\n }\n\n updateRowHeight(row: number, detaY: number) {\n detaY = Math.round(detaY);\n updateRowHeight(this, row, detaY);\n this.updateContainerHeight(row, detaY);\n }\n\n /**\n * @description: 更新table&header&body高度\n * @return {*}\n */\n updateContainerWidth(col: number, detaX: number) {\n // 更新table/header/border宽度\n if (col < this.frozenColCount) {\n this.rowHeaderGroup.setDeltaWidth(detaX);\n this.cornerHeaderGroup.setDeltaWidth(detaX);\n this.colHeaderGroup.setDeltaX(detaX);\n this.bodyGroup.setDeltaX(detaX);\n } else {\n this.colHeaderGroup.setDeltaWidth(detaX);\n this.bodyGroup.setDeltaWidth(detaX);\n }\n\n this.updateTableSize();\n this.component.updateScrollBar();\n\n this.updateNextFrame();\n }\n\n /**\n * @description: 更新table&header&body高度\n * @return {*}\n */\n updateContainerHeight(row: number, detaY: number) {\n // 更新table/header/border高度\n if (row < this.table.frozenRowCount) {\n this.colHeaderGroup.setDeltaHeight(detaY);\n this.cornerHeaderGroup.setDeltaHeight(detaY);\n this.rowHeaderGroup.setDeltaY(detaY);\n this.bodyGroup.setDeltaY(detaY);\n } else if (row >= this.table.rowCount - this.table.bottomFrozenRowCount) {\n this.leftBottomCornerGroup.setDeltaHeight(detaY);\n this.bottomFrozenGroup.setDeltaHeight(detaY);\n this.rightBottomCornerGroup.setDeltaHeight(detaY);\n } else {\n this.rowHeaderGroup.setDeltaHeight(detaY);\n this.bodyGroup.setDeltaHeight(detaY);\n }\n\n this.updateTableSize();\n this.component.updateScrollBar();\n\n this.updateNextFrame();\n }\n setColWidth(col: number, width: number) {\n const oldWidth = this.table.getColWidth(col);\n if (oldWidth === width) {\n return;\n }\n this.updateColWidth(col, width - oldWidth);\n this.table._clearColRangeWidthsMap(col);\n }\n\n setRowHeight(row: number, height: number) {\n const oldHeight = this.table.getRowHeight(row);\n if (oldHeight === height) {\n return;\n }\n this.updateRowHeight(row, height - oldHeight);\n this.table._clearRowRangeHeightsMap(row);\n }\n\n /**\n * @description: 设置表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setX(x: number) {\n // if (this.colHeaderGroup.attribute.width + x === this.bodyGroup.attribute.x) {\n // return;\n // }\n // // this.tableGroup.setAttribute('x', x);\n // // this.tableGroup.setAttribute('width', this.table.tableNoFrameWidth - x);\n // this.bodyGroup.setAttribute('x', this.rowHeaderGroup.attribute.width + x);\n // this.colHeaderGroup.setAttribute('x', this.rowHeaderGroup.attribute.width + x);\n\n // // (this.tableGroup.lastChild as any).setAttribute('width', this.table.tableNoFrameWidth - x);\n // this.updateNextFrame();\n this.table.scenegraph.proxy.setX(-x);\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setY(y: number) {\n // if (this.transpose || this.isPivot) {\n // if (this.colHeaderGroup.attribute.height + y === this.bodyGroup.attribute.y) {\n // return;\n // }\n // this.bodyGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n // this.rowHeaderGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n // // this.tableGroup.setAttribute('height', this.table.tableNoFrameHeight - y);\n // // (this.tableGroup.lastChild as any).setAttribute('width', this.table.tableNoFrameWidth - x);\n // this.updateNextFrame();\n // } else if (this.table.scenegraph.proxy) {\n this.table.scenegraph.proxy.setY(-y);\n // }\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setBodyAndRowHeaderY(y: number) {\n if (this.colHeaderGroup.attribute.height + y === this.bodyGroup.attribute.y) {\n return;\n }\n this.bodyGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n this.rowHeaderGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n if (this.table.rightFrozenColCount > 0) {\n this.rightFrozenGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n }\n // this.tableGroup.setAttribute('height', this.table.tableNoFrameHeight - y);\n // (this.tableGroup.lastChild as any).setAttribute('width', this.table.tableNoFrameWidth - x);\n this.updateNextFrame();\n }\n\n /**\n * @description: 更新表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setBodyAndColHeaderX(x: number) {\n if (this.table.getFrozenColsWidth() + x === this.bodyGroup.attribute.x) {\n return;\n }\n this.bodyGroup.setAttribute('x', this.table.getFrozenColsWidth() + x);\n this.colHeaderGroup.setAttribute('x', this.table.getFrozenColsWidth() + x);\n if (this.table.bottomFrozenRowCount > 0) {\n this.bottomFrozenGroup.setAttribute('x', this.table.getFrozenColsWidth() + x);\n }\n this.updateNextFrame();\n }\n\n /**\n * @description: 完成创建场景树节点后,处理自动行高列宽\n * @return {*}\n */\n afterScenegraphCreated() {\n // this.dealWidthMode();\n // this.dealHeightMode();\n // 处理冻结\n // this.resetFrozen();\n // this.dealFrozen();\n\n if (!this.isPivot && !this.transpose) {\n this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);\n }\n this.table.stateManager.checkFrozen();\n // this.updateContainerAttrWidthAndX();\n this.updateContainer();\n\n // 处理frame border\n this.createFrameBorder();\n this.updateBorderSizeAndPosition();\n\n // 更新滚动条状态\n this.component.updateScrollBar();\n // 处理单元格内容需要textStick的情况\n handleTextStick(this.table);\n\n this.updateNextFrame();\n }\n\n /**\n * @description: 处理宽度模式\n * @return {*}\n */\n dealWidthMode() {\n const table = this.table;\n if (table.widthMode === 'adaptive') {\n // 处理adaptive宽度\n // table._colRangeWidthsMap = new Map();\n // const canvasWidth = this.internalProps.canvas.width;\n const totalDrawWidth = table.tableNoFrameWidth - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n let actualWidth = 0;\n for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {\n actualWidth += table.getColWidth(col);\n }\n const factor = totalDrawWidth / actualWidth;\n for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {\n let colWidth;\n if (col === table.colCount - table.rightFrozenColCount - 1) {\n colWidth =\n totalDrawWidth - table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2);\n } else {\n colWidth = Math.round(table.getColWidth(col) * factor);\n }\n this.setColWidth(col, colWidth);\n }\n } else if (table.autoFillWidth) {\n // 处理风神列宽特殊逻辑\n // table._colRangeWidthsMap = new Map();\n const canvasWidth = table.tableNoFrameWidth;\n let actualWidth = 0;\n let actualHeaderWidth = 0;\n for (let col = 0; col < table.colCount; col++) {\n const colWidth = table.getColWidth(col);\n if (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) {\n actualHeaderWidth += colWidth;\n }\n\n actualWidth += colWidth;\n }\n\n // 如果内容宽度小于canvas宽度,执行adaptive放大\n if (actualWidth < canvasWidth && actualWidth - actualHeaderWidth > 0) {\n const factor = (canvasWidth - actualHeaderWidth) / (actualWidth - actualHeaderWidth);\n for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {\n // this.setColWidth(col, table.getColWidth(col) * factor);\n let colWidth;\n if (col === table.colCount - table.rightFrozenColCount - 1) {\n colWidth =\n canvasWidth -\n actualHeaderWidth -\n table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2);\n } else {\n colWidth = Math.round(table.getColWidth(col) * factor);\n }\n this.setColWidth(col, colWidth);\n }\n }\n }\n\n // 更新容器宽度\n let bodyWidth = 0;\n this.bodyGroup.forEachChildrenSkipChild((column: Group) => {\n bodyWidth += column.attribute.width;\n });\n this.bodyGroup.setAttribute('width', bodyWidth);\n let colHeaderWidth = 0;\n this.colHeaderGroup.forEachChildrenSkipChild((column: Group) => {\n colHeaderWidth += column.attribute.width;\n });\n this.colHeaderGroup.setAttribute('width', colHeaderWidth);\n let rowHeaderWidth = 0;\n this.rowHeaderGroup.forEachChildrenSkipChild((column: Group) => {\n rowHeaderWidth += column.attribute.width;\n });\n this.rowHeaderGroup.setAttribute('width', rowHeaderWidth);\n let cornerHeaderWidth = 0;\n this.cornerHeaderGroup.forEachChildrenSkipChild((column: Group) => {\n cornerHeaderWidth += column.attribute.width;\n });\n this.cornerHeaderGroup.setAttribute('width', cornerHeaderWidth);\n\n this.colHeaderGroup.setAttribute('x', this.cornerHeaderGroup.attribute.width);\n this.rowHeaderGroup.setAttribute('y', this.colHeaderGroup.attribute.height);\n this.bodyGroup.setAttributes({\n x: this.rowHeaderGroup.attribute.width,\n y: this.colHeaderGroup.attribute.height\n });\n }\n\n /**\n * @description: 处理高度模式\n * @return {*}\n */\n dealHeightMode() {\n const table = this.table;\n // 处理adaptive高度\n if (table.heightMode === 'adaptive') {\n table._clearRowRangeHeightsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n const totalDrawHeight =\n table.tableNoFrameHeight - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n let actualHeight = 0;\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {\n actualHeight += table.getRowHeight(row);\n }\n const factor = totalDrawHeight / actualHeight;\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {\n let rowHeight;\n if (row === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n totalDrawHeight -\n table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2);\n } else {\n rowHeight = Math.round(table.getRowHeight(row) * factor);\n }\n this.setRowHeight(row, rowHeight);\n }\n } else if (table.autoFillHeight) {\n const canvasHeight = table.tableNoFrameHeight;\n let actualHeight = 0;\n let actualHeaderHeight = 0;\n for (let row = 0; row < table.rowCount; row++) {\n const rowHeight = table.getRowHeight(row);\n if (row < table.frozenRowCount || row >= table.rowCount - table.bottomFrozenRowCount) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (\n (this._dealAutoFillHeightOriginRowsHeight ?? actualHeight) < canvasHeight &&\n actualHeight - actualHeaderHeight > 0\n ) {\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {\n // this.setRowHeight(row, table.getRowHeight(row) * factor);\n let rowHeight;\n if (row === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2);\n } else {\n rowHeight = Math.round(table.getRowHeight(row) * factor);\n }\n this.setRowHeight(row, rowHeight);\n }\n }\n }\n }\n\n /**\n * @description: 处理冻结\n * @return {*}\n */\n dealFrozen() {\n dealFrozen(this);\n }\n\n /**\n * @description: 还原冻结\n * @return {*}\n */\n resetFrozen() {\n resetFrozen(this);\n }\n\n /**\n * @description: 判断指定列更新宽度时,其中单元格是否会更新宽度;如果更新宽度,返回true\n * @param {Group} columnGroup\n * @param {number} detaRow columnGroup内的index与row的差值,列表头为0;行表头和内容为table.frozenRowCount\n * @param {number} col\n * @return {*}\n */\n updateCellLayoutWidthCertainWidth(columnGroup: Group, detaRow: number, col: number) {\n const width = columnGroup.attribute.width;\n let isUpdate = false;\n columnGroup.forEachChildren((cellGroup: Group, row: number) => {\n row += detaRow;\n const mergeInfo = getCellMergeInfo(this.table, col, row);\n if (mergeInfo) {\n cellGroup = this.getCell(mergeInfo.start.col, mergeInfo.start.row);\n // cellGroup.setAttribute('width', width);\n } else {\n cellGroup.setAttribute('width', width);\n }\n const headerStyle = this.table._getCellStyle(col, row);\n const padding = getQuadProps(getProp('padding', headerStyle, col, row, this.table));\n\n // const text = cellGroup.getChildAt(1) as WrapText;\n const text = cellGroup.getChildByName('text') as WrapText;\n let oldCellHeight = 0;\n let newCellHeight = 0;\n if (text) {\n oldCellHeight = text.AABBBounds.height() + (padding[0] + padding[2]);\n text.setAttribute('maxLineWidth', width - (padding[1] + padding[3]));\n newCellHeight = text.AABBBounds.height() + (padding[0] + padding[2]);\n } else {\n const group = cellGroup.getChildAt(1) as any;\n oldCellHeight = group.AABBBounds.height() + (padding[0] + padding[2]);\n group._cellWidth = width - (padding[1] + padding[3]);\n group.layout();\n newCellHeight = group.AABBBounds.height() + (padding[0] + padding[2]);\n }\n const rowHeight = this.table.getRowHeight(row);\n\n if (cellGroup.attribute.height !== newCellHeight) {\n cellGroup.setAttribute('height', newCellHeight);\n if (rowHeight === oldCellHeight) {\n // 当前行由本单元格高度撑起,更新本行行高\n isUpdate = true;\n } else if (newCellHeight > rowHeight) {\n // 当前行不由本单元格高度撑起,只在本单元格高度高于当前行高度时更新本行行高\n isUpdate = true;\n }\n }\n });\n return isUpdate;\n }\n\n /**\n * @description: 更新某列到其他列位置\n * @param {number} colSource 原始列col\n * @param {number} colTarget 目标列col\n * @return {*}\n */\n updateHeaderPosition(colSource: number, rowSource: number, colTarget: number, rowTarget: number) {\n moveHeaderPosition(colSource, rowSource, colTarget, rowTarget, this.table);\n }\n\n updateContainerAttrWidthAndX() {\n // 更新各列x&col\n const cornerX = updateContainerChildrenX(this.cornerHeaderGroup, 0);\n const rowHeaderX = updateContainerChildrenX(this.rowHeaderGroup, 0);\n const colHeaderX =\n this.colHeaderGroup.hasChildNodes() && this.colHeaderGroup.firstChild\n ? updateContainerChildrenX(\n this.colHeaderGroup,\n (this.colHeaderGroup.firstChild as any).col > 0\n ? this.table.getColsWidth(this.table.frozenColCount ?? 0, (this.colHeaderGroup.firstChild as any).col - 1)\n : 0\n )\n : 0;\n const bodyX =\n this.bodyGroup.hasChildNodes() && this.bodyGroup.firstChild\n ? updateContainerChildrenX(\n this.bodyGroup,\n (this.bodyGroup.firstChild as any).col > 0\n ? this.table.getColsWidth(this.table.frozenColCount ?? 0, (this.bodyGroup.firstChild as any).col - 1)\n : 0\n )\n : 0;\n const rightX = updateContainerChildrenX(this.rightFrozenGroup, 0);\n\n this.bottomFrozenGroup.hasChildNodes() &&\n this.bottomFrozenGroup.firstChild &&\n updateContainerChildrenX(\n this.bottomFrozenGroup,\n (this.bottomFrozenGroup.firstChild as any).col > 0\n ? this.table.getColsWidth(this.table.frozenColCount ?? 0, (this.bottomFrozenGroup.firstChild as any).col - 1)\n : 0\n );\n updateContainerChildrenX(this.leftBottomCornerGroup, 0);\n updateContainerChildrenX(this.rightTopCornerGroup, 0);\n updateContainerChildrenX(this.rightBottomCornerGroup, 0);\n\n // 更新容器\n this.cornerHeaderGroup.setDeltaWidth(cornerX - this.cornerHeaderGroup.attribute.width);\n this.leftBottomCornerGroup.setDeltaWidth(cornerX - this.leftBottomCornerGroup.attribute.width);\n //TODO 可能有影响\n this.colHeaderGroup.setDeltaWidth(colHeaderX - this.colHeaderGroup.attribute.width);\n this.rightFrozenGroup.setDeltaWidth(colHeaderX - this.table.getRightFrozenColsWidth());\n this.rowHeaderGroup.setDeltaWidth(rowHeaderX - this.rowHeaderGroup.attribute.width);\n this.bottomFrozenGroup.setDeltaWidth(rowHeaderX - this.bottomFrozenGroup.attribute.width);\n this.rightFrozenGroup.setDeltaWidth(rightX - this.table.getRightFrozenColsWidth());\n this.rightTopCornerGroup.setDeltaWidth(rightX - this.rightTopCornerGroup.attribute.width);\n this.rightBottomCornerGroup.setDeltaWidth(rightX - this.rightBottomCornerGroup.attribute.width);\n this.bodyGroup.setDeltaWidth(bodyX - this.bodyGroup.attribute.width);\n\n this.colHeaderGroup.setAttribute('x', this.cornerHeaderGroup.attribute.width);\n this.bottomFrozenGroup.setAttribute('x', this.table.getFrozenColsWidth());\n this.bodyGroup.setAttribute('x', this.rowHeaderGroup.attribute.width);\n }\n\n updateContainer() {\n // console.trace('updateContainer');\n\n this.updateContainerAttrWidthAndX();\n\n this.updateTableSize();\n\n // 记录滚动条原位置\n const oldHorizontalBarPos = this.table.stateManager.scroll.horizontalBarPos;\n const oldVerticalBarPos = this.table.stateManager.scroll.verticalBarPos;\n this.component.updateScrollBar();\n this.table.stateManager.setScrollLeft(oldHorizontalBarPos);\n this.table.stateManager.setScrollTop(oldVerticalBarPos);\n this.updateNextFrame();\n }\n\n updateCellContentWhileResize(col: number, row: number) {\n const type = this.table.getBodyColumnType(col, row);\n const cellGroup = this.getCell(col, row);\n if (type === 'image' || type === 'video') {\n updateImageCellContentWhileResize(cellGroup, col, row, this.table);\n }\n }\n\n /**\n * @description: 创建table&header&body的border\n * @return {*}\n */\n createFrameBorder() {\n // 更新宽高\n this.updateTableSize();\n // this.tableGroup.setAttributes({\n // width: Math.min(\n // this.table.tableNoFrameWidth,\n // (this.colHeaderGroup.attribute.width ?? 0) + (this.cornerHeaderGroup.attribute.width ?? 0)\n // ),\n // height: Math.min(\n // this.table.tableNoFrameHeight,\n // (this.colHeaderGroup.attribute.height ?? 0) + (this.bodyGroup.attribute.height ?? 0)\n // ),\n // } as any);\n\n const isListTableWithFrozen = !this.isPivot;\n\n // 设置border\n createFrameBorder(\n this.bodyGroup,\n this.table.theme.bodyStyle.frameStyle,\n this.bodyGroup.role,\n isListTableWithFrozen ? [true, true, true, false] : undefined\n );\n createFrameBorder(\n this.rowHeaderGroup,\n this.isPivot ? this.table.theme.rowHeaderStyle.frameStyle : this.table.theme.bodyStyle.frameStyle,\n this.rowHeaderGroup.role,\n isListTableWithFrozen ? [true, false, true, true] : undefined\n );\n createFrameBorder(\n this.colHeaderGroup,\n this.table.theme.headerStyle.frameStyle, // 透视表的主题中没有colHeaderStyle,直接使用headerStyle\n this.colHeaderGroup.role,\n isListTableWithFrozen ? [true, true, true, false] : undefined\n );\n createFrameBorder(\n this.cornerHeaderGroup,\n this.isPivot ? this.table.theme.cornerHeaderStyle.frameStyle : this.table.theme.headerStyle.frameStyle,\n this.cornerHeaderGroup.role,\n isListTableWithFrozen ? [true, false, true, true] : undefined\n );\n createFrameBorder(this.tableGroup, this.table.theme.frameStyle, this.tableGroup.role, undefined);\n }\n\n /**\n * @description: 获取当前位置的列宽调整信息\n * @param {number} abstractX\n * @param {number} abstractY\n * @param {Group} cellGroup\n * @param {*} offset\n * @return {*}\n */\n getResizeColAt(\n abstractX: number,\n abstractY: number,\n cellGroup?: Group,\n offset = ResizeColumnHotSpotSize / 2\n ): { col: number; row: number; x?: number; rightFrozen?: boolean } {\n if (!cellGroup) {\n // to do: 处理最后一列外调整列宽\n } else {\n let cell: { col: number; row: number; x?: number; rightFrozen?: boolean };\n if (abstractX < cellGroup.globalAABBBounds.x1 + offset) {\n cell = { col: cellGroup.col - 1, row: cellGroup.row, x: cellGroup.globalAABBBounds.x1 };\n } else if (cellGroup.globalAABBBounds.x2 - offset < abstractX) {\n cell = { col: cellGroup.col, row: cellGroup.row, x: cellGroup.globalAABBBounds.x2 };\n }\n if (\n cell &&\n this.table.rightFrozenColCount > 0 &&\n cell.col === this.table.colCount - this.table.rightFrozenColCount - 1 &&\n this.table.tableNoFrameWidth -\n this.table.getFrozenColsWidth() -\n this.table.getRightFrozenColsWidth() +\n this.table.scrollLeft <\n this.bodyGroup.attribute.width\n ) {\n // 有右侧冻结列,并且横向没有滚动到最右侧时,右侧冻结列左侧调整对只对右侧冻结列生效\n cell.col = cell.col + 1;\n cell.rightFrozen = true;\n }\n if (cell) {\n return cell;\n }\n }\n return { col: -1, row: -1 };\n }\n\n updateFrozen() {\n if (this.clear) {\n return;\n }\n this.resetFrozen();\n // this.dealFrozen();\n this.component.updateScrollBar();\n }\n\n dealWidthRightFrozen(rightFrozenColCount: number) {\n if (this.clear) {\n this.table.internalProps.rightFrozenColCount = rightFrozenColCount;\n return;\n }\n dealRightFrozen(rightFrozenColCount, this);\n }\n dealWidthBottomFrozen(bottomFrozenRowCount: number) {\n if (this.clear) {\n this.table.internalProps.bottomFrozenRowCount = bottomFrozenRowCount;\n return;\n }\n dealBottomFrozen(bottomFrozenRowCount, this);\n }\n\n updateBorderSizeAndPosition() {\n if (this.bodyGroup.border) {\n this.bodyGroup.appendChild(this.bodyGroup.border);\n updateFrameBorderSize(this.bodyGroup);\n if (this.rowHeaderGroup.attribute.width === 0) {\n updateFrameBorder(this.bodyGroup, this.table.theme.bodyStyle.frameStyle, [true, true, true, true]);\n } else {\n updateFrameBorder(this.bodyGroup, this.table.theme.bodyStyle.frameStyle, [true, true, true, false]);\n }\n }\n if (this.colHeaderGroup.border) {\n this.colHeaderGroup.appendChild(this.colHeaderGroup.border);\n updateFrameBorderSize(this.colHeaderGroup);\n if (this.cornerHeaderGroup.attribute.width === 0) {\n updateFrameBorder(this.colHeaderGroup, this.table.theme.headerStyle.frameStyle, [true, true, true, true]);\n } else {\n updateFrameBorder(this.colHeaderGroup, this.table.theme.headerStyle.frameStyle, [true, true, true, false]);\n }\n }\n if (this.rowHeaderGroup.border) {\n this.rowHeaderGroup.appendChild(this.rowHeaderGroup.border);\n updateFrameBorderSize(this.rowHeaderGroup);\n }\n if (this.cornerHeaderGroup.border) {\n this.cornerHeaderGroup.appendChild(this.cornerHeaderGroup.border);\n updateFrameBorderSize(this.cornerHeaderGroup);\n }\n }\n\n sortCell() {\n if (this.isPivot) {\n // 透视表外部处理排序\n } else if (this.transpose) {\n this.proxy.sortCellHorizontal();\n } else {\n this.proxy.sortCellVertical();\n }\n }\n\n getCellOverflowText(col: number, row: number): string | null {\n const cellGroup = this.getCell(col, row);\n const text = cellGroup.getChildByName('text', true) as unknown as WrapText;\n // if (text && text.cache?.clipedText !== text.attribute.text) {\n // return text.attribute.text as string;\n // }\n if (text) {\n const textAttributeStr = isArray(text.attribute.text)\n ? text.attribute.text.join('')\n : (text.attribute.text as string);\n let cacheStr = '';\n if (isString(text.cache.clipedText)) {\n cacheStr = text.cache.clipedText;\n } else {\n (text.cache as ITextCache).layoutData?.lines?.forEach((line: any) => {\n cacheStr += line.str;\n });\n }\n if (cacheStr !== textAttributeStr) {\n return textAttributeStr;\n }\n }\n return null;\n }\n\n updateDrill(visible: boolean, x: number, y: number, drillDown: boolean, drillUp: boolean) {\n this.component.drillIcon.update(visible, x, y, drillDown, drillUp, this);\n }\n\n updateCellContent(col: number, row: number) {\n if (this.clear) {\n return undefined;\n }\n return updateCell(col, row, this.table);\n }\n\n setPixelRatio(pixelRatio: number) {\n // this.stage.setDpr(pixelRatio);\n // 这里因为本时刻部分节点有更新bounds标记,直接render回导致开启DirtyBounds,无法完整重绘画布;\n // 所以这里先关闭DirtyBounds,等待下一帧再开启\n this.stage.disableDirtyBounds();\n this.stage.window.setDpr(pixelRatio);\n this.stage.render();\n this.stage.enableDirtyBounds();\n }\n\n updateRow(removeCells: CellAddress[], addCells: CellAddress[], updateCells: CellAddress[] = []) {\n // add or move rows\n updateRow(removeCells, addCells, updateCells, this.table);\n\n // update column width and row height\n this.recalculateColWidths();\n\n this.recalculateRowHeights();\n\n // check frozen status\n this.table.stateManager.checkFrozen();\n\n // update frozen shadow\n if (!this.isPivot && !this.transpose) {\n this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);\n }\n\n this.component.updateScrollBar();\n\n // rerender\n this.updateNextFrame();\n }\n updateCol(removeCells: CellAddress[], addCells: CellAddress[], updateCells: CellAddress[] = []) {\n // add or move rows\n updateCol(removeCells, addCells, updateCells, this.table);\n\n // update column width and row height\n this.recalculateColWidths();\n\n this.recalculateRowHeights();\n\n // check frozen status\n this.table.stateManager.checkFrozen();\n\n // update frozen shadow\n if (!this.isPivot && !this.transpose) {\n this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);\n }\n\n this.component.updateScrollBar();\n\n // rerender\n this.updateNextFrame();\n }\n getColumnGroupX(col: number) {\n if (col < this.table.rowHeaderLevelCount) {\n // row header\n return this.table.getColsWidth(0, col - 1);\n } else if (col < this.table.colCount - this.table.rightFrozenColCount) {\n // body\n return this.table.getColsWidth(this.table.rowHeaderLevelCount, col - 1);\n } else if (col < this.table.colCount) {\n // right frozen\n return this.table.getColsWidth(this.table.colCount - this.table.bottomFrozenRowCount, col - 1);\n }\n return 0;\n }\n\n getCellGroupY(row: number) {\n if (row < this.table.columnHeaderLevelCount) {\n // column header\n return this.table.getRowsHeight(0, row - 1);\n } else if (row < this.table.rowCount - this.table.bottomFrozenRowCount) {\n // body\n return this.table.getRowsHeight(this.table.columnHeaderLevelCount, row - 1);\n } else if (row < this.table.rowCount) {\n // bottom frozen\n return this.table.getRowsHeight(this.table.rowCount - this.table.bottomFrozenRowCount, row - 1);\n }\n return 0;\n }\n getCellGroupX(col: number) {\n if (col < this.table.rowHeaderLevelCount) {\n // column header\n return this.table.getColsWidth(0, col - 1);\n } else if (col < this.table.colCount - this.table.rightFrozenColCount) {\n // body\n return this.table.getColsWidth(this.table.rowHeaderLevelCount, col - 1);\n } else if (col < this.table.colCount) {\n // bottom frozen\n return this.table.getColsWidth(this.table.colCount - this.table.rightFrozenColCount, col - 1);\n }\n return 0;\n }\n // /** 更新场景树某个单元格的值 */\n // updateCellValue(col: number, row: number) {\n // updateCell(col, row, this.table);\n // }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiC,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AASnG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAW,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAqB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,qDAAqD,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIhD,UAAU,EAAE,CAAC;AACb,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5B,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAKlC,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,SAAS;KAChB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,SAAS;KAChB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,EAAE;KACV;CAEF,CAAC;AAcF,MAAM,OAAO,UAAU;IA8BrB,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAE1B,cAAc,CAAC,WAAkB,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC;QACV,IAAI,MAAM,CAAC;QACX,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjD,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;YAC1B,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;SAC7B;aAAM;YACL,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3B,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK;YACL,MAAM;YACN,kBAAkB,EAAE,KAAK;YACzB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,uBAAuB;YAC/C,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU;YACnC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,WAAW,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAEjD,CAAC;SAGF,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/B,KAAK,EAAE;gBACL,aAAa,EAAE,CAAC;gBAChB,kBAAkB,EAAE,CAAC;gBACrB,QAAQ,EAAE,OAAO;aAClB;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC,KAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;;QACP,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,0CAAE,KAAK,mCAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM;;QACR,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,0CAAE,MAAM,mCAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;;QACH,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,0CAAE,CAAC,mCAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC;;QACH,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,0CAAE,CAAC,mCAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;;QACd,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,mCAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,UAAU;;QACZ,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,YAAY;;QACd,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,mCAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,UAAU;;QACZ,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtD,CAAC;IAMD,cAAc;QACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,KAAK,CAAC,OAAe,CAAC,SAAS,CAAC;QAEvD,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAMD,UAAU;;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAChC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAChC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YACnC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAC3B,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAClC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YACnC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;YACrC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;YACvC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;YACxC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACpB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAEH,IAAK,IAAI,CAAC,UAAkB,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,UAAU,CAAC,MAAgB,CAAC,WAAW,CAAE,IAAI,CAAC,UAAkB,CAAC,MAAM,CAAC,CAAC;YAC/E,OAAQ,IAAI,CAAC,UAAkB,CAAC,MAAM,CAAC;SACxC;QACD,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAMD,eAAe;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5C,CAAC;IAMD,gBAAgB;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAExD,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAGxC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;YAC7B,gBAAgB,CACd,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CACrF,CAAC;YACF,gBAAgB,CACd,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CACvF,CAAC;YACF,gBAAgB,CACd,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CACxF,CAAC;SACH;QAED,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAClC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,SAAS,EACd,CAAC,EACD,CAAC,CACF,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAQD,gBAAgB;QACd,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAQD,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,SAAmB;;QAKnD,IAAI,IAAI,CAAC;QACT,IACE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC;YAClC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAC3D,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAC/B;YACA,IAAI,GAAG,MAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACpE;aAAM,IACL,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC;YACnC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB;YAC5D,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAC/B;YACA,IAAI,GAAG,MAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACtE;aAAM,IACL,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC;YACnC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAC3D,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAC5D;YACA,IAAI,GAAG,MAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACvE;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAC/G,IAAI,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACjE;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACjH,IAAI,GAAG,MAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SAClE;aAAM;YACL,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SAC3E;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,SAAS,EAAE;YACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;aAGvD;iBAAM;gBACL,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACvD;SACF;QAED,OAAO,IAAI,IAAI,UAAU,CAAC;IAC5B,CAAC;IAED,sBAAsB,CAAC,GAAW,EAAE,GAAW,EAAE,SAAmB;QAElE,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAGhE,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,mBAAmB,GAAG,KAAK;QAClD,IAAI,OAAc,CAAC;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,mBAAmB,EAAE;YACpD,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SAC5D;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SACzD;aAAM,IAAI,mBAAmB,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SACzD;aAAM,IACL,CAAC,mBAAmB;YACpB,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC;YAClC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAC9D;YACA,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SAC3D;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SACpD;QACD,OAAO,OAAO,IAAI,SAAS,CAAC;IAC9B,CAAC;IAED,mBAAmB,CAAC,GAAW;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SACzD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6BAA6B,CAAC,GAAW;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SAC7D;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2BAA2B,CAAC,GAAW;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SAC3D;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8BAA8B,CAAC,GAAW;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;YAC7E,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAU,CAAC;SAC9D;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAQD,WAAW,CAAC,GAAW,EAAE,GAAW;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACnC,IAAI,SAAS,EAAE;YACb,KAAK,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC9D,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SACjE;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;IAMD,eAAe;QAGb,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IACD,uBAAuB;;QACrB,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,0CAAE,MAAM,0CAAE,MAAM,IAAG,CAAC,EAAE;YACtD,wBAAwB,CAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW;QACpC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW;QACpC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW;QACpC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW;QACpC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAUD,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,CAAS,EAAE,CAAS;QACpD,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IASD,iBAAiB,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW,EAAE,SAAgB;QACtE,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,cAAc,CACZ,GAAW,EACX,GAAW,EACX,QAAc,EACd,KAAgB,EAChB,UAAkB,EAClB,UAAkB,EAClB,WAA6B;QAE7B,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACvF,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,YAAoB;QAChD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,mBAAmB,CAAC,GAAW,EAAE,GAAW;QAC1C,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IASD,kBAAkB,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW;QACrD,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAQD,eAAe,CAAC,GAAW,EAAE,GAAW;;QACtC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YAC5B,OAAO;SACR;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,MAAA,MAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAkB,0CAAE,UAAU,kDAAI,CAAC;IACjD,CAAC;IAOD,aAAa,CAAC,GAAW,EAAE,GAAW;;QACpC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YAC5B,OAAO;SACR;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,MAAA,MAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAkB,0CAAE,QAAQ,mDAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,uBAAuB,CAAC,GAAW,EAAE,GAAW;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACrD,SAAS,CAAC,YAAY,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;QAC/D,SAAS,CAAC,YAAY,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,sBAAsB,CACpB,SAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,OAAe,EACf,eAAgC,EAChC,QAAgB,EAChB,OAAmB;QAEnB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3G,CAAC;IACD,qDAAqD;QACnD,qDAAqD,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,iCAAiC;QAC/B,iCAAiC,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,qBAAqB;QACnB,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sBAAsB,CAAC,WAAmB,EAAE,WAAmB,EAAE,SAAiB,EAAE,SAAiB;QACnG,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,gCAAgC;QAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAoB,EAAE,EAAE;YACrE,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QACH,qDAAqD,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAOD,cAAc,CAAC,GAAW,EAAE,KAAa,EAAE,mBAA6B;QACtE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,mBAAmB,EAAE;YAExB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAOD,eAAe,CAAC,GAAW;QACzB,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,KAAU;QACzB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,uBAAuB,CAAC,GAAW,EAAE,GAAW,EAAE,OAAgB;;QAChE,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,WAAkB,EAAE,EAAE;gBACtD,WAAW;qBACR,UAAU,CAAC,GAAG,CAAC;qBACf,WAAW,EAAE;qBACb,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;oBACvB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;wBAC3B,IAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBACrD;gBACH,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAA,WAAW,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,QAAe,EAAE,EAAE;gBAChD,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACjC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;wBAC3B,IAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBACrD;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IACD,6BAA6B,CAAC,GAAW,EAAE,GAAW,EAAE,OAAkC;;QACxF,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,WAAkB,EAAE,EAAE;gBAC3D,WAAW;qBACR,UAAU,CAAC,GAAG,CAAC;qBACf,WAAW,EAAE;qBACb,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;oBACvB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;wBAC5B,IAAI,OAAO,KAAK,eAAe,EAAE;4BAC9B,IAAiB,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;4BACtD,IAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;yBACvD;6BAAM;4BACJ,IAAiB,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;4BAC3D,IAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBACrD;qBACF;gBACH,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChD,MAAA,WAAW,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,QAAe,EAAE,EAAE;gBAChD,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACjC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;wBAC5B,IAAI,OAAO,KAAK,eAAe,EAAE;4BAC9B,IAAiB,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;4BACtD,IAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;yBACvD;6BAAM;4BACJ,IAAiB,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;4BAC3D,IAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBACrD;qBACF;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IACD,kBAAkB,CAAC,GAAW;QAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpF,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;SAC/C;IACH,CAAC;IAKD,oBAAoB;QAClB,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,qBAAqB;QACnB,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,MAAM;QAEJ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACnE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE;gBAE3D,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;YAMxC,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAE9B;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAID,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACjC,IACE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,UAAU;YACnC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU;YACpC,IAAI,CAAC,KAAK,CAAC,aAAa;YACxB,IAAI,CAAC,KAAK,CAAC,cAAc,EACzB;YACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtD;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEtB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,eAAe;;QACb,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACpB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxF,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAC9C;YACD,MAAM,EAAE,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClF,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAC1C;SACK,CAAC,CAAC;QAEV,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YACpE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;gBACnC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC;gBACrE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC;gBACrE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;gBACnF,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;aACtF,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAC5E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;gBACnC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC;gBACrE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC;gBACrE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;gBACnF,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;aACtF,CAAC,CAAC;YACH,MAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAoB,0CAAE,aAAa,CAAC;gBAC1D,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC;gBACjD,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK;gBACtC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;aACzC,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CACjC,GAAG,EACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAC3E,CAAC;YACF,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;gBACvC,OAAO,EAAE,IAAI;gBACb,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM;gBAC7E,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM;gBAC/C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;aACvC,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;gBACxC,OAAO,EAAE,IAAI;gBACb,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM;gBAC7E,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM;aAChD,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;YAChH,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;gBACrC,OAAO,EAAE,IAAI;gBACb,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACzE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBAC3C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;aACzC,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;gBACxC,OAAO,EAAE,IAAI;gBACb,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACzE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;aAC5C,CAAC,CAAC;SACJ;IACH,CAAC;IAED,eAAe,CAAC,GAAW,EAAE,KAAa;QACxC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAMD,oBAAoB,CAAC,GAAW,EAAE,KAAa;QAE7C,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAEjC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAMD,qBAAqB,CAAC,GAAW,EAAE,KAAa;QAE9C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACjC;aAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACvE,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAEjC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,WAAW,CAAC,GAAW,EAAE,KAAa;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,MAAc;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,OAAO;SACR;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAOD,IAAI,CAAC,CAAS;QAWZ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAOD,IAAI,CAAC,CAAS;QAWZ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvC,CAAC;IAOD,oBAAoB,CAAC,CAAS;QAC5B,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;YAC3E,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACnF;QAGD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAOD,oBAAoB,CAAC,CAAS;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;YACtE,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC;SAC/E;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAMD,sBAAsB;QAOpB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAEtC,IAAI,CAAC,eAAe,EAAE,CAAC;QAGvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAGnC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAEjC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAMD,aAAa;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE;YAClC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAC5C,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAC1B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;gBAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE;oBACnF,iBAAiB,IAAI,QAAQ,CAAC;iBAC/B;aACF;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClG,gBAAgB,CAAC,WAAW,GAAG,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC7F;aAAM,IAAI,KAAK,CAAC,aAAa,EAAE;YAE9B,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAC5C,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;gBAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,EAAE;oBAC7G,iBAAiB,IAAI,QAAQ,CAAC;iBAC/B;gBACD,WAAW,IAAI,QAAQ,CAAC;aACzB;YAED,IAAI,WAAW,GAAG,WAAW,IAAI,WAAW,GAAG,iBAAiB,EAAE;gBAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClG,gBAAgB,CAAC,WAAW,GAAG,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aAC7F;SACF;QAGD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,MAAa,EAAE,EAAE;YACxD,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,MAAa,EAAE,EAAE;YAC7D,cAAc,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,MAAa,EAAE,EAAE;YAC7D,cAAc,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,MAAa,EAAE,EAAE;YAChE,iBAAiB,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAEhE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAC3B,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK;YACtC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM;SACxC,CAAC,CAAC;IACL,CAAC;IAMD,cAAc;;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;YACnC,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAEjC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;YACpF,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;YAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,sBAAsB,CAAC;YAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YACnG,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC5C,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACzC;YACD,MAAM,MAAM,GAAG,eAAe,GAAG,YAAY,CAAC;YAC9C,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC5C,IAAI,SAAS,CAAC;gBACd,IAAI,GAAG,KAAK,MAAM,GAAG,CAAC,EAAE;oBACtB,SAAS,GAAG,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;iBACzE;qBAAM;oBACL,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;iBAC1D;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;aACnC;SACF;aAAM,IAAI,KAAK,CAAC,cAAc,EAAE;YAC/B,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,KAAK,CAAC,kBAAkB,CAAC;YAC9C,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC1C,IACE,GAAG,GAAG,KAAK,CAAC,cAAc;oBAC1B,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,EAC5E;oBACA,kBAAkB,IAAI,SAAS,CAAC;iBACjC;gBAED,YAAY,IAAI,SAAS,CAAC;aAC3B;YAGD,IACE,CAAC,MAAA,IAAI,CAAC,mCAAmC,mCAAI,YAAY,CAAC,GAAG,YAAY;gBACzE,YAAY,GAAG,kBAAkB,GAAG,CAAC,EACrC;gBACA,MAAM,MAAM,GAAG,CAAC,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,GAAG,kBAAkB,CAAC,CAAC;gBACzF,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE,GAAG,EAAE,EAAE;oBAC7F,IAAI,SAAS,CAAC;oBACd,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;wBAC3D,SAAS;4BACP,YAAY;gCACZ,kBAAkB;gCAClB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;qBAC9F;yBAAM;wBACL,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;qBAC1D;oBACD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;iBACnC;aACF;SACF;IACH,CAAC;IAMD,UAAU;QACR,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAMD,WAAW;QACT,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IASD,iCAAiC,CAAC,WAAkB,EAAE,OAAe,EAAE,GAAW;QAChF,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;QAC1C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,WAAW,CAAC,eAAe,CAAC,CAAC,SAAgB,EAAE,GAAW,EAAE,EAAE;YAC5D,GAAG,IAAI,OAAO,CAAC;YACf,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,SAAS,EAAE;gBACb,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAEpE;iBAAM;gBACL,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACxC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAGpF,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAa,CAAC;YAC1D,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,IAAI,EAAE;gBACR,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE;iBAAM;gBACL,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAQ,CAAC;gBAC7C,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,KAAK,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACvE;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAE/C,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,aAAa,EAAE;gBAChD,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAChD,IAAI,SAAS,KAAK,aAAa,EAAE;oBAE/B,QAAQ,GAAG,IAAI,CAAC;iBACjB;qBAAM,IAAI,aAAa,GAAG,SAAS,EAAE;oBAEpC,QAAQ,GAAG,IAAI,CAAC;iBACjB;aACF;QACH,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAQD,oBAAoB,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB,EAAE,SAAiB;QAC7F,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,4BAA4B;;QAE1B,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GACd,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU;YACnE,CAAC,CAAC,wBAAwB,CACtB,IAAI,CAAC,cAAc,EAClB,IAAI,CAAC,cAAc,CAAC,UAAkB,CAAC,GAAG,GAAG,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,mCAAI,CAAC,EAAG,IAAI,CAAC,cAAc,CAAC,UAAkB,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1G,CAAC,CAAC,CAAC,CACN;YACH,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,KAAK,GACT,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;YACzD,CAAC,CAAC,wBAAwB,CACtB,IAAI,CAAC,SAAS,EACb,IAAI,CAAC,SAAS,CAAC,UAAkB,CAAC,GAAG,GAAG,CAAC;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,mCAAI,CAAC,EAAG,IAAI,CAAC,SAAS,CAAC,UAAkB,CAAC,GAAG,GAAG,CAAC,CAAC;gBACrG,CAAC,CAAC,CAAC,CACN;YACH,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAElE,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACpC,IAAI,CAAC,iBAAiB,CAAC,UAAU;YACjC,wBAAwB,CACtB,IAAI,CAAC,iBAAiB,EACrB,IAAI,CAAC,iBAAiB,CAAC,UAAkB,CAAC,GAAG,GAAG,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,mCAAI,CAAC,EAAG,IAAI,CAAC,iBAAiB,CAAC,UAAkB,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC7G,CAAC,CAAC,CAAC,CACN,CAAC;QACJ,wBAAwB,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACxD,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACtD,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;QAGzD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvF,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE/F,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpF,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpF,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1F,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1F,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,eAAe;QAGb,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,IAAI,CAAC,eAAe,EAAE,CAAC;QAGvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC5E,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC;QACxE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,4BAA4B,CAAC,GAAW,EAAE,GAAW;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE;YACxC,iCAAiC,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACpE;IACH,CAAC;IAMD,iBAAiB;QAEf,IAAI,CAAC,eAAe,EAAE,CAAC;QAYvB,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAG5C,iBAAiB,CACf,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EACrC,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;QACF,iBAAiB,CACf,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EACjG,IAAI,CAAC,cAAc,CAAC,IAAI,EACxB,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;QACF,iBAAiB,CACf,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EACvC,IAAI,CAAC,cAAc,CAAC,IAAI,EACxB,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;QACF,iBAAiB,CACf,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EACtG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAC3B,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;QACF,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnG,CAAC;IAUD,cAAc,CACZ,SAAiB,EACjB,SAAiB,EACjB,SAAiB,EACjB,MAAM,GAAG,uBAAuB,GAAG,CAAC;QAEpC,IAAI,CAAC,SAAS,EAAE;SAEf;aAAM;YACL,IAAI,IAAqE,CAAC;YAC1E,IAAI,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,GAAG,MAAM,EAAE;gBACtD,IAAI,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;aACzF;iBAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,EAAE;gBAC7D,IAAI,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;aACrF;YACD,IACE,IAAI;gBACJ,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC;gBAClC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,iBAAiB;oBAC1B,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;oBAC/B,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;oBACpC,IAAI,CAAC,KAAK,CAAC,UAAU;oBACrB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAChC;gBAEA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;YACD,IAAI,IAAI,EAAE;gBACR,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO;SACR;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,mBAA2B;QAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YACnE,OAAO;SACR;QACD,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,qBAAqB,CAAC,oBAA4B;QAChD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YACrE,OAAO;SACR;QACD,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,2BAA2B;QACzB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClD,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE;gBAC7C,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aACpG;iBAAM;gBACL,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACrG;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC9B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5D,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE;gBAChD,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aAC3G;iBAAM;gBACL,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5G;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC9B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5D,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAClE,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC/C;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,EAAE;SAEjB;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;SAC/B;IACH,CAAC;IAED,mBAAmB,CAAC,GAAW,EAAE,GAAW;;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAwB,CAAC;QAI3E,IAAI,IAAI,EAAE;YACR,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,IAAe,CAAC;YACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACnC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;aAClC;iBAAM;gBACL,MAAA,MAAC,IAAI,CAAC,KAAoB,CAAC,UAAU,0CAAE,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAClE,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,QAAQ,KAAK,gBAAgB,EAAE;gBACjC,OAAO,gBAAgB,CAAC;aACzB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,OAAgB,EAAE,CAAS,EAAE,CAAS,EAAE,SAAkB,EAAE,OAAgB;QACtF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,iBAAiB,CAAC,GAAW,EAAE,GAAW;QACxC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,UAAkB;QAI9B,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,WAA0B,EAAE,QAAuB,EAAE,cAA6B,EAAE;QAE5F,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAG1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAG7B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAGtC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SACrE;QAED,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAGjC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,SAAS,CAAC,WAA0B,EAAE,QAAuB,EAAE,cAA6B,EAAE;QAE5F,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAG1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAG7B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAGtC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SACrE;QAED,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAGjC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,eAAe,CAAC,GAAW;QACzB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAExC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SAC5C;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAErE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SACzE;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SAChG;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;YAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SAC7C;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YAEtE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SAC7E;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SACjG;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,aAAa,CAAC,GAAW;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAExC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SAC5C;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAErE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SACzE;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;SAC/F;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CAKF","file":"scenegraph.js","sourcesContent":["import type { IStage, IRect, ITextCache, INode, Text } from '@visactor/vrender';\nimport { createStage, createRect, IContainPointMode, container, vglobal } from '@visactor/vrender';\nimport type { CellRange, CellSubLocation } from '../ts-types';\nimport {\n type CellAddress,\n type CellLocation,\n type ColumnIconOption,\n type SortOrder,\n IconFuncTypeEnum\n} from '../ts-types';\nimport { isArray, isString, isValid } from '@visactor/vutils';\nimport type { Group } from './graphic/group';\nimport type { Icon } from './graphic/icon';\nimport type { WrapText } from './graphic/text';\nimport { getCellMergeInfo } from './utils/get-cell-merge';\nimport { updateColWidth } from './layout/update-width';\nimport { TableComponent } from './component/table-component';\nimport { updateRowHeight } from './layout/update-height';\nimport { updateImageCellContentWhileResize } from './group-creater/cell-type/image-cell';\nimport { getQuadProps } from './utils/padding';\nimport { createFrameBorder, updateFrameBorder, updateFrameBorderSize } from './style/frame-border';\nimport { ResizeColumnHotSpotSize } from '../tools/global';\nimport splitModule from './graphic/contributions';\nimport { getFunctionalProp, getProp } from './utils/get-prop';\nimport { dealWithIcon } from './utils/text-icon-layout';\nimport { SceneProxy } from './group-creater/progress/proxy';\nimport type { TooltipOptions } from '../ts-types/tooltip';\nimport { computeColWidth, computeColsWidth, getAdaptiveWidth } from './layout/compute-col-width';\nimport { moveHeaderPosition } from './layout/move-cell';\nimport { updateCell } from './group-creater/cell-helper';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { updateAllSelectComponent, updateCellSelectBorder } from './select/update-select-border';\nimport { createCellSelectBorder } from './select/create-select-border';\nimport { moveSelectingRangeComponentsToSelectedRangeComponents } from './select/move-select-border';\nimport { deleteAllSelectBorder, deleteLastSelectedRangeComponents } from './select/delete-select-border';\nimport { updateRow } from './layout/update-row';\nimport { handleTextStick } from './stick-text';\nimport { computeRowsHeight } from './layout/compute-row-height';\nimport { emptyGroup } from './utils/empty-group';\nimport { dealBottomFrozen, dealFrozen, dealRightFrozen, resetFrozen } from './layout/frozen';\nimport { updateChartSize, updateChartState } from './refresh-node/update-chart';\nimport { initSceneGraph } from './group-creater/init-scenegraph';\nimport { updateContainerChildrenX } from './utils/update-container';\nimport type { CheckBox } from '@visactor/vrender-components';\nimport { loadPoptip, setPoptipTheme } from '@visactor/vrender-components';\nimport textMeasureModule from './utils/text-measure';\nimport {\n getIconByXY,\n hideClickIcon,\n hideHoverIcon,\n setIconHoverStyle,\n setIconNormalStyle,\n showClickIcon,\n showHoverIcon,\n updateFrozenIcon,\n updateHierarchyIcon,\n updateSortIcon\n} from './icon/icon-update';\nimport { Env } from '../tools/env';\nimport { createCornerCell } from './style/corner-cell';\nimport { updateCol } from './layout/update-col';\n// import { contextModule } from './context/module';\n\n// VChart poptip theme\nloadPoptip();\ncontainer.load(splitModule);\ncontainer.load(textMeasureModule);\n// container.load(renderServiceModule);\n// container.load(contextModule);\n// console.log(container);\n\nconst poptipStyle = {\n visible: true,\n position: 'auto',\n padding: 8,\n titleStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: '#4E5969'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#4E5969'\n },\n panel: {\n visible: true,\n fill: '#fff',\n stroke: '#ffffff',\n lineWidth: 0,\n cornerRadius: 3,\n shadowBlur: 12,\n shadowOffsetX: 0,\n shadowOffsetY: 4,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n size: 0,\n space: 12\n }\n // maxWidthPercent: 0.8\n};\n\nexport type MergeMap = Map<\n string,\n {\n cellWidth: number;\n cellHeight: number;\n }\n>;\n\n/**\n * @description: 表格场景树,存储和管理表格全部的场景图元\n * @return {*}\n */\nexport class Scenegraph {\n proxy: SceneProxy;\n tableGroup: Group; // 表格全局Group\n colHeaderGroup: Group; // 列表头Group\n cornerHeaderGroup: Group; // 列表头冻结列Group\n rowHeaderGroup: Group; // 行表头Group\n bodyGroup: Group; // 内容Group\n rightFrozenGroup: Group; // 右侧冻结列Group\n bottomFrozenGroup: Group; // 下侧冻结行Group\n rightTopCornerGroup: Group; // 右上角占位单元格Group,只在有右侧冻结列时使用\n leftBottomCornerGroup: Group; // 左下角占位单元格Group,只在有下侧冻结行时使用\n rightBottomCornerGroup: Group; // 右下角占位单元格Group,只在有右侧下侧都有冻结行时使用\n componentGroup: Group; // 表格外组件Group\n /** 所有选中区域对应的选框组件 */\n selectedRangeComponents: Map<string, { rect: IRect; role: CellSubLocation }>;\n /** 当前正在选择区域对应的选框组件 为什么是map 以为可能一个选中区域会被拆分为多个rect组件 三块表头和body都分别对应不同组件*/\n selectingRangeComponents: Map<string, { rect: IRect; role: CellSubLocation }>;\n lastSelectId: string;\n component: TableComponent;\n stage: IStage;\n table: BaseTableAPI;\n isPivot: boolean;\n transpose: boolean;\n hasFrozen: boolean; // 是否已经处理冻结列,用在getCell判断是否从cornerHeaderGroup获取cellGroup\n frozenColCount: number; // 冻结列数\n frozenRowCount: number; // 冻结行数\n clear: boolean;\n\n mergeMap: MergeMap;\n _dealAutoFillHeightOriginRowsHeight: number; // hack 缓存一个值 用于处理autoFillHeight的逻辑判断 在某些情况下是需要更新此值的 如增删数据 但目前没有做这个\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.hasFrozen = false;\n this.clear = true;\n this.mergeMap = new Map();\n\n setPoptipTheme(poptipStyle as any);\n let width;\n let height;\n if (Env.mode === 'node') {\n vglobal.setEnv('node', table.options.modeParams);\n width = table.canvasWidth;\n height = table.canvasHeight;\n } else {\n vglobal.setEnv('browser');\n width = table.canvas.width;\n height = table.canvas.height;\n }\n this.stage = createStage({\n canvas: table.canvas,\n width,\n height,\n disableDirtyBounds: false,\n background: table.theme.underlayBackgroundColor,\n dpr: table.internalProps.pixelRatio,\n enableLayout: true,\n pluginList: table.isPivotChart() ? ['poptipForText'] : undefined,\n afterRender: () => {\n this.table.fireListeners('after_render', null);\n // console.trace('after_render');\n }\n // event: { clickInterval: 400 }\n // autoRender: true\n });\n\n this.stage.defaultLayer.setTheme({\n group: {\n boundsPadding: 0,\n strokeBoundsBuffer: 0,\n lineJoin: 'round'\n },\n text: {\n ignoreBuf: true\n }\n });\n this.initSceneGraph();\n this.stage.defaultLayer.add(this.tableGroup);\n\n (this.stage as any).table = this.table;\n\n this.createComponent();\n }\n\n get width(): number {\n return this.tableGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.tableGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.tableGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.tableGroup.attribute?.y ?? 0;\n }\n\n get bodyRowStart(): number {\n return this.proxy.rowStart ?? 0;\n }\n\n get bodyRowEnd(): number {\n return this.proxy.rowEnd ?? this.table.rowCount - 1;\n }\n\n get bodyColStart(): number {\n return this.proxy.colStart ?? 0;\n }\n\n get bodyColEnd(): number {\n return this.proxy.colEnd ?? this.table.colCount - 1;\n }\n\n /**\n * @description: 初始化场景树结构\n * @return {*}\n */\n initSceneGraph() {\n this.isPivot = this.table.isPivotTable();\n this.transpose = (this.table.options as any).transpose; // 初始化时this.table.transpose还未赋值\n\n initSceneGraph(this);\n }\n\n /**\n * @description: 清空全部单元格内容,用于setRecord\n * @return {*}\n */\n clearCells() {\n this.clear = true;\n this.hasFrozen = false;\n this.mergeMap.clear();\n\n this.colHeaderGroup.clear();\n this.rowHeaderGroup.clear();\n this.cornerHeaderGroup.clear();\n this.bodyGroup.clear();\n\n this.bottomFrozenGroup.clear();\n this.rightFrozenGroup.clear();\n this.rightTopCornerGroup.clear();\n this.rightBottomCornerGroup.clear();\n this.leftBottomCornerGroup.clear();\n\n this.colHeaderGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.rowHeaderGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.cornerHeaderGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.bodyGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.rightFrozenGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.bottomFrozenGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n this.rightTopCornerGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n visible: false\n });\n this.leftBottomCornerGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n visible: false\n });\n this.rightBottomCornerGroup.setAttributes({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n visible: false\n });\n\n this.tableGroup.setAttributes({\n x: this.table.tableX,\n y: this.table.tableY,\n width: 0,\n height: 0\n });\n\n if ((this.tableGroup as any).border) {\n (this.tableGroup.parent as Group).removeChild((this.tableGroup as any).border);\n delete (this.tableGroup as any).border;\n }\n this.proxy?.release();\n }\n\n updateStageBackground() {\n this.stage.background = this.table.theme.underlayBackgroundColor;\n this.stage.renderNextFrame();\n }\n\n /**\n * @description: 初始化表格外组件\n * @return {*}\n */\n createComponent() {\n this.component = new TableComponent(this.table);\n this.component.addToGroup(this.componentGroup);\n this.selectedRangeComponents = new Map();\n this.selectingRangeComponents = new Map();\n }\n\n /**\n * @description: 依据数据创建表格场景树\n * @return {*}\n */\n createSceneGraph() {\n this.clear = false;\n // this.frozenColCount = this.table.rowHeaderLevelCount;\n this.frozenColCount = this.table.frozenColCount;\n this.frozenRowCount = this.table.columnHeaderLevelCount;\n\n this.proxy = new SceneProxy(this.table);\n\n // update table group position for cell group global position, not create border yet.\n createFrameBorder(this.tableGroup, this.table.theme.frameStyle, this.tableGroup.role, undefined, true);\n\n if (this.table.isPivotChart()) {\n createCornerCell(\n this.rightTopCornerGroup,\n this.table.theme.cornerRightTopCellStyle || this.table.theme.cornerHeaderStyle || {}\n );\n createCornerCell(\n this.leftBottomCornerGroup,\n this.table.theme.cornerLeftBottomCellStyle || this.table.theme.cornerHeaderStyle || {}\n );\n createCornerCell(\n this.rightBottomCornerGroup,\n this.table.theme.cornerRightBottomCellStyle || this.table.theme.cornerHeaderStyle || {}\n );\n }\n\n this.proxy.createGroupForFirstScreen(\n this.cornerHeaderGroup,\n this.colHeaderGroup,\n this.rowHeaderGroup,\n this.rightFrozenGroup,\n this.bottomFrozenGroup,\n this.bodyGroup,\n 0,\n 0\n );\n this.afterScenegraphCreated();\n }\n\n /**\n * @description: 绘制场景树\n * @param {any} element\n * @param {CellRange} visibleCoord\n * @return {*}\n */\n renderSceneGraph() {\n this.stage.render();\n }\n\n /**\n * @description: 获取指定行列位置的cell group\n * @param {number} col\n * @param {number} row\n * @return {Group}\n */\n getCell(col: number, row: number, getShadow?: boolean): Group {\n // hasFrozen处理前,列表头的冻结部分在colHeaderGroup中\n // hasFrozen处理后,列表头的冻结部分在cornerHeaderGroup中\n // 因此在获取cell时需要区别hasFrozen时机\n // const colGroup = row < this.frozenRowCount ? this.colHeaderGroup : this.cornerHeaderGroup;\n let cell;\n if (\n this.table.rightFrozenColCount > 0 &&\n col >= this.table.colCount - this.table.rightFrozenColCount &&\n row < this.table.frozenRowCount\n ) {\n cell = this.rightTopCornerGroup.getColGroup(col)?.getRowGroup(row);\n } else if (\n this.table.bottomFrozenRowCount > 0 &&\n row >= this.table.rowCount - this.table.bottomFrozenRowCount &&\n col < this.table.frozenColCount\n ) {\n cell = this.leftBottomCornerGroup.getColGroup(col)?.getRowGroup(row);\n } else if (\n this.table.rightFrozenColCount > 0 &&\n this.table.bottomFrozenRowCount > 0 &&\n col >= this.table.colCount - this.table.rightFrozenColCount &&\n row >= this.table.rowCount - this.table.bottomFrozenRowCount\n ) {\n cell = this.rightBottomCornerGroup.getColGroup(col)?.getRowGroup(row);\n } else if (this.table.rightFrozenColCount > 0 && col > this.table.colCount - 1 - this.table.rightFrozenColCount) {\n cell = this.rightFrozenGroup.getColGroup(col)?.getRowGroup(row);\n } else if (this.table.bottomFrozenRowCount > 0 && row > this.table.rowCount - 1 - this.table.bottomFrozenRowCount) {\n cell = this.bottomFrozenGroup.getColGroup(col)?.getRowGroup(row);\n } else {\n cell = this.getColGroup(col, row < this.frozenRowCount)?.getRowGroup(row);\n }\n\n if (cell && cell.role === 'shadow-cell' && !getShadow) {\n const range = this.table.getCellRange(col, row);\n if (range.start.col === col && range.start.row === row) {\n // 理论上不会出现这种情况,但是在PivotChart会偶先,这里处理避免进入死循环\n // do nothing\n } else {\n cell = this.getCell(range.start.col, range.start.row);\n }\n }\n\n return cell || emptyGroup;\n }\n\n highPerformanceGetCell(col: number, row: number, getShadow?: boolean): Group {\n // if (!this.table.isHeader(col, row)) {\n return this.proxy.highPerformanceGetCell(col, row, getShadow);\n // }\n // return this.getCell(col, row, getShadow);\n }\n\n getColGroup(col: number, isCornerOrColHeader = false): Group {\n let element: Group;\n if (col < this.frozenColCount && isCornerOrColHeader) {\n element = this.cornerHeaderGroup.getColGroup(col) as Group;\n } else if (col < this.frozenColCount) {\n element = this.rowHeaderGroup.getColGroup(col) as Group;\n } else if (isCornerOrColHeader) {\n element = this.colHeaderGroup.getColGroup(col) as Group;\n } else if (\n !isCornerOrColHeader &&\n this.table.rightFrozenColCount > 0 &&\n col > this.table.colCount - 1 - this.table.rightFrozenColCount\n ) {\n element = this.rightFrozenGroup.getColGroup(col) as Group;\n } else {\n element = this.bodyGroup.getColGroup(col) as Group;\n }\n return element || undefined;\n }\n\n getColGroupInBottom(col: number): Group | undefined {\n if (this.table.bottomFrozenRowCount > 0) {\n return this.bottomFrozenGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n getColGroupInLeftBottomCorner(col: number): Group | undefined {\n if (this.table.bottomFrozenRowCount > 0) {\n return this.leftBottomCornerGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n getColGroupInRightTopCorner(col: number): Group | undefined {\n if (this.table.rightFrozenColCount > 0) {\n return this.rightTopCornerGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n getColGroupInRightBottomCorner(col: number): Group | undefined {\n if (this.table.rightFrozenColCount > 0 && this.table.bottomFrozenRowCount > 0) {\n return this.rightBottomCornerGroup.getColGroup(col) as Group;\n }\n return undefined;\n }\n\n /**\n * @description: 获取指定行列位置的cell的宽高,主要处理merge情况\n * @param {number} col\n * @param {number} row\n * @return {Group}\n */\n getCellSize(col: number, row: number): { width: number; height: number } {\n const cell = this.getCell(col, row);\n const mergeInfo = getCellMergeInfo(this.table, col, row);\n let width = cell.attribute.width;\n let height = cell.attribute.height;\n if (mergeInfo) {\n width = width / (mergeInfo.end.col - mergeInfo.start.col + 1);\n height = height / (mergeInfo.end.row - mergeInfo.start.row + 1);\n }\n return { width, height };\n }\n\n /**\n * @description: 触发下一帧渲染\n * @return {*}\n */\n updateNextFrame() {\n // to do\n // this.table.invalidate();\n this.resetAllSelectComponent();\n\n this.stage.renderNextFrame();\n }\n resetAllSelectComponent() {\n if (this.table.stateManager.select?.ranges?.length > 0) {\n updateAllSelectComponent(this);\n }\n }\n\n hideHoverIcon(col: number, row: number) {\n hideHoverIcon(col, row, this);\n }\n\n showHoverIcon(col: number, row: number) {\n showHoverIcon(col, row, this);\n }\n\n hideClickIcon(col: number, row: number) {\n hideClickIcon(col, row, this);\n }\n\n showClickIcon(col: number, row: number) {\n showClickIcon(col, row, this);\n }\n\n /**\n * @description: 获取指定单元格指定位置的icon mark\n * @param {number} col\n * @param {number} row\n * @param {number} x\n * @param {number} y\n * @return {*}\n */\n getIcon(col: number, row: number, x: number, y: number): Icon | undefined {\n return getIconByXY(col, row, x, y, this);\n }\n\n /**\n * @description: 将指定icon mark设置为Hover样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\n setIconHoverStyle(icon: Icon, col: number, row: number, cellGroup: Group) {\n setIconHoverStyle(icon, col, row, cellGroup, this);\n }\n\n updateSortIcon(\n col: number,\n row: number,\n iconMark: Icon,\n order: SortOrder,\n oldSortCol: number,\n oldSortRow: number,\n oldIconMark: Icon | undefined\n ) {\n updateSortIcon(col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark, this);\n }\n\n updateFrozenIcon(col: number, oldFrozenCol: number) {\n updateFrozenIcon(this);\n }\n updateHierarchyIcon(col: number, row: number) {\n updateHierarchyIcon(col, row, this);\n }\n\n /**\n * @description: 将指定icon mark设置为Normal样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\n setIconNormalStyle(icon: Icon, col: number, row: number) {\n setIconNormalStyle(icon, col, row, this);\n }\n\n /**\n * 单元格失焦 失效该单元格对应的图表实例\n * @param col\n * @param row\n * @returns\n */\n deactivateChart(col: number, row: number) {\n if (col === -1 || row === -1) {\n return;\n }\n const cellGroup = this.getCell(col, row);\n (cellGroup?.firstChild as any)?.deactivate?.();\n }\n /**\n * hover 到单元格上 激活该单元格对应的图表实例\n * @param col\n * @param row\n * @returns\n */\n activateChart(col: number, row: number) {\n if (col === -1 || row === -1) {\n return;\n }\n const cellGroup = this.getCell(col, row);\n (cellGroup?.firstChild as any)?.activate?.(this.table);\n }\n\n removeInteractionBorder(col: number, row: number) {\n const cellGroup = this.getCell(col, row);\n cellGroup.setAttribute('highlightStroke', undefined);\n cellGroup.setAttribute('highlightStrokeArrayWidth', undefined);\n cellGroup.setAttribute('highlightStrokeArrayColor', undefined);\n }\n\n createCellSelectBorder(\n start_Col: number,\n start_Row: number,\n end_Col: number,\n end_Row: number,\n selectRangeType: CellSubLocation,\n selectId: string, //整体区域${endRow}-${startCol}${startRow}${endCol}${endRow}作为其编号\n strokes?: boolean[]\n ) {\n createCellSelectBorder(this, start_Col, start_Row, end_Col, end_Row, selectRangeType, selectId, strokes);\n }\n moveSelectingRangeComponentsToSelectedRangeComponents() {\n moveSelectingRangeComponentsToSelectedRangeComponents(this);\n }\n /** 按住shift 则继续上次选中范围 需要将现有的删除掉 */\n deleteLastSelectedRangeComponents() {\n deleteLastSelectedRangeComponents(this);\n }\n deleteAllSelectBorder() {\n deleteAllSelectBorder(this);\n }\n\n updateCellSelectBorder(newStartCol: number, newStartRow: number, newEndCol: number, newEndRow: number) {\n updateCellSelectBorder(this, newStartCol, newStartRow, newEndCol, newEndRow);\n }\n /** 根据select状态重新创建选中range节点 目前无调用者 */\n recreateAllSelectRangeComponents() {\n deleteAllSelectBorder(this);\n this.table.stateManager.select.ranges.forEach((cellRange: CellRange) => {\n updateCellSelectBorder(this, cellRange.start.col, cellRange.start.row, cellRange.end.col, cellRange.end.row);\n });\n moveSelectingRangeComponentsToSelectedRangeComponents(this);\n }\n /**\n * @description: 列宽调整结果更新列宽\n * @param {number} col\n * @param {number} detaX 改变的宽度值\n * @return {*}\n */\n updateColWidth(col: number, detaX: number, skipUpdateContainer?: boolean) {\n updateColWidth(this, col, Math.round(detaX));\n // this.updateContainerWidth(col, detaX);\n if (!skipUpdateContainer) {\n // this.updateContainerAttrWidthAndX();\n this.updateContainer();\n }\n }\n\n /**\n * @description: 列宽调整需要修改Chart的尺寸\n * @param {number} col\n * @return {*}\n */\n updateChartSize(col: number) {\n updateChartSize(this, col);\n }\n /** 更新图表的高亮状态 */\n updateChartState(datum: any) {\n this.table.isPivotChart() && updateChartState(this, datum);\n }\n\n updateCheckboxCellState(col: number, row: number, checked: boolean) {\n if (this.transpose) {\n this.bodyGroup.children?.forEach((columnGroup: INode) => {\n columnGroup\n .getChildAt(row)\n .getChildren()\n .forEach((node: INode) => {\n if (node.name === 'checkbox') {\n (node as CheckBox).setAttribute('checked', checked);\n }\n });\n });\n } else {\n const columnGroup = this.getColGroup(col);\n columnGroup.children?.forEach((cellNode: INode) => {\n cellNode.getChildren().find(node => {\n if (node.name === 'checkbox') {\n (node as CheckBox).setAttribute('checked', checked);\n }\n });\n });\n }\n }\n updateHeaderCheckboxCellState(col: number, row: number, checked: boolean | 'indeterminate') {\n if (this.transpose) {\n this.rowHeaderGroup.children?.forEach((columnGroup: INode) => {\n columnGroup\n .getChildAt(row)\n .getChildren()\n .forEach((node: INode) => {\n if (node.name === 'checkbox') {\n if (checked === 'indeterminate') {\n (node as CheckBox).setAttribute('indeterminate', true);\n (node as CheckBox).setAttribute('checked', undefined);\n } else {\n (node as CheckBox).setAttribute('indeterminate', undefined);\n (node as CheckBox).setAttribute('checked', checked);\n }\n }\n });\n });\n } else {\n const columnGroup = this.getColGroup(col, true);\n columnGroup.children?.forEach((cellNode: INode) => {\n cellNode.getChildren().find(node => {\n if (node.name === 'checkbox') {\n if (checked === 'indeterminate') {\n (node as CheckBox).setAttribute('indeterminate', true);\n (node as CheckBox).setAttribute('checked', undefined);\n } else {\n (node as CheckBox).setAttribute('indeterminate', undefined);\n (node as CheckBox).setAttribute('checked', checked);\n }\n }\n });\n });\n }\n }\n updateAutoColWidth(col: number) {\n this.table.internalProps._widthResizedColMap.delete(col);\n const oldWidth = this.table.getColWidth(col);\n const newWidth = computeColWidth(col, 0, this.table.rowCount - 1, this.table, true);\n if (newWidth !== oldWidth) {\n this.updateColWidth(col, newWidth - oldWidth);\n }\n }\n\n /*\n * recalculates column width in all autowidth columns\n */\n recalculateColWidths() {\n computeColsWidth(this.table, 0, this.table.colCount - 1, true);\n }\n\n recalculateRowHeights() {\n computeRowsHeight(this.table, 0, this.table.rowCount - 1, true, true);\n }\n\n resize() {\n // reset proxy config\n this.proxy.resize();\n\n if (this.table.widthMode === 'adaptive' || this.table.autoFillWidth) {\n if (this.table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n this.recalculateColWidths();\n } else {\n this.dealWidthMode();\n }\n }\n\n if (this.table.heightMode === 'adaptive') {\n // perf to be optimized:\n // reason to use recalculateRowHeights();\n // 1. error amplification(误差放大) in dealHeightMode when multiple resize\n // 2. width update caused height update dose not have enlarge/reduce number,\n // will cause scale error in dealHeightMode()\n this.recalculateRowHeights();\n // this.dealHeightMode();\n } else if (this.table.autoFillHeight) {\n this.dealHeightMode();\n }\n\n // this.dealWidthMode();\n // this.dealHeightMode();\n this.resetFrozen();\n // this.dealFrozen();\n this.updateTableSize();\n this.updateBorderSizeAndPosition();\n this.component.updateScrollBar();\n if (\n this.table.widthMode === 'adaptive' ||\n this.table.heightMode === 'adaptive' ||\n this.table.autoFillWidth ||\n this.table.autoFillHeight\n ) {\n this.updateChartSize(this.table.rowHeaderLevelCount);\n }\n\n this.proxy.progress();\n // this.stage.window.resize(width, height);\n this.updateNextFrame();\n }\n\n updateTableSize() {\n this.tableGroup.setAttributes({\n x: this.table.tableX,\n y: this.table.tableY,\n width: Math.min(\n this.table.tableNoFrameWidth,\n Math.max(this.colHeaderGroup.attribute.width, this.bodyGroup.attribute.width, 0) +\n Math.max(this.cornerHeaderGroup.attribute.width, this.rowHeaderGroup.attribute.width, 0) +\n this.rightBottomCornerGroup.attribute.width\n ),\n height: Math.min(\n this.table.tableNoFrameHeight,\n Math.max(this.colHeaderGroup.attribute.height, this.cornerHeaderGroup.attribute.height, 0) +\n Math.max(this.rowHeaderGroup.attribute.height, this.bodyGroup.attribute.height, 0) +\n this.bottomFrozenGroup.attribute.height\n )\n } as any);\n\n if (this.tableGroup.border && this.tableGroup.border.type === 'rect') {\n this.tableGroup.border.setAttributes({\n x: this.table.tableX - this.tableGroup.border.attribute.lineWidth / 2,\n y: this.table.tableY - this.tableGroup.border.attribute.lineWidth / 2,\n width: this.tableGroup.attribute.width + this.tableGroup.border.attribute.lineWidth,\n height: this.tableGroup.attribute.height + this.tableGroup.border.attribute.lineWidth\n });\n } else if (this.tableGroup.border && this.tableGroup.border.type === 'group') {\n this.tableGroup.border.setAttributes({\n x: this.table.tableX - this.tableGroup.border.attribute.lineWidth / 2,\n y: this.table.tableY - this.tableGroup.border.attribute.lineWidth / 2,\n width: this.tableGroup.attribute.width + this.tableGroup.border.attribute.lineWidth,\n height: this.tableGroup.attribute.height + this.tableGroup.border.attribute.lineWidth\n });\n (this.tableGroup.border.firstChild as IRect)?.setAttributes({\n x: this.tableGroup.border.attribute.lineWidth / 2,\n y: this.tableGroup.border.attribute.lineWidth / 2,\n width: this.tableGroup.attribute.width,\n height: this.tableGroup.attribute.height\n });\n }\n\n if (this.table.bottomFrozenRowCount > 0) {\n this.bottomFrozenGroup.setAttribute(\n 'y',\n this.tableGroup.attribute.height - this.bottomFrozenGroup.attribute.height\n );\n this.leftBottomCornerGroup.setAttributes({\n visible: true,\n y: this.tableGroup.attribute.height - this.bottomFrozenGroup.attribute.height,\n height: this.bottomFrozenGroup.attribute.height,\n width: this.table.getFrozenColsWidth()\n });\n this.rightBottomCornerGroup.setAttributes({\n visible: true,\n y: this.tableGroup.attribute.height - this.bottomFrozenGroup.attribute.height,\n height: this.bottomFrozenGroup.attribute.height\n });\n }\n\n if (this.table.rightFrozenColCount > 0) {\n this.rightFrozenGroup.setAttribute('x', this.tableGroup.attribute.width - this.table.getRightFrozenColsWidth());\n this.rightTopCornerGroup.setAttributes({\n visible: true,\n x: this.tableGroup.attribute.width - this.table.getRightFrozenColsWidth(),\n width: this.table.getRightFrozenColsWidth(),\n height: this.table.getFrozenRowsHeight()\n });\n this.rightBottomCornerGroup.setAttributes({\n visible: true,\n x: this.tableGroup.attribute.width - this.table.getRightFrozenColsWidth(),\n width: this.table.getRightFrozenColsWidth()\n });\n }\n }\n\n updateRowHeight(row: number, detaY: number) {\n detaY = Math.round(detaY);\n updateRowHeight(this, row, detaY);\n this.updateContainerHeight(row, detaY);\n }\n\n /**\n * @description: 更新table&header&body高度\n * @return {*}\n */\n updateContainerWidth(col: number, detaX: number) {\n // 更新table/header/border宽度\n if (col < this.frozenColCount) {\n this.rowHeaderGroup.setDeltaWidth(detaX);\n this.cornerHeaderGroup.setDeltaWidth(detaX);\n this.colHeaderGroup.setDeltaX(detaX);\n this.bodyGroup.setDeltaX(detaX);\n } else {\n this.colHeaderGroup.setDeltaWidth(detaX);\n this.bodyGroup.setDeltaWidth(detaX);\n }\n\n this.updateTableSize();\n this.component.updateScrollBar();\n\n this.updateNextFrame();\n }\n\n /**\n * @description: 更新table&header&body高度\n * @return {*}\n */\n updateContainerHeight(row: number, detaY: number) {\n // 更新table/header/border高度\n if (row < this.table.frozenRowCount) {\n this.colHeaderGroup.setDeltaHeight(detaY);\n this.cornerHeaderGroup.setDeltaHeight(detaY);\n this.rowHeaderGroup.setDeltaY(detaY);\n this.bodyGroup.setDeltaY(detaY);\n } else if (row >= this.table.rowCount - this.table.bottomFrozenRowCount) {\n this.leftBottomCornerGroup.setDeltaHeight(detaY);\n this.bottomFrozenGroup.setDeltaHeight(detaY);\n this.rightBottomCornerGroup.setDeltaHeight(detaY);\n } else {\n this.rowHeaderGroup.setDeltaHeight(detaY);\n this.bodyGroup.setDeltaHeight(detaY);\n }\n\n this.updateTableSize();\n this.component.updateScrollBar();\n\n this.updateNextFrame();\n }\n setColWidth(col: number, width: number) {\n const oldWidth = this.table.getColWidth(col);\n if (oldWidth === width) {\n return;\n }\n this.updateColWidth(col, width - oldWidth);\n this.table._clearColRangeWidthsMap(col);\n }\n\n setRowHeight(row: number, height: number) {\n const oldHeight = this.table.getRowHeight(row);\n if (oldHeight === height) {\n return;\n }\n this.updateRowHeight(row, height - oldHeight);\n this.table._clearRowRangeHeightsMap(row);\n }\n\n /**\n * @description: 设置表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setX(x: number) {\n // if (this.colHeaderGroup.attribute.width + x === this.bodyGroup.attribute.x) {\n // return;\n // }\n // // this.tableGroup.setAttribute('x', x);\n // // this.tableGroup.setAttribute('width', this.table.tableNoFrameWidth - x);\n // this.bodyGroup.setAttribute('x', this.rowHeaderGroup.attribute.width + x);\n // this.colHeaderGroup.setAttribute('x', this.rowHeaderGroup.attribute.width + x);\n\n // // (this.tableGroup.lastChild as any).setAttribute('width', this.table.tableNoFrameWidth - x);\n // this.updateNextFrame();\n this.table.scenegraph.proxy.setX(-x);\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setY(y: number) {\n // if (this.transpose || this.isPivot) {\n // if (this.colHeaderGroup.attribute.height + y === this.bodyGroup.attribute.y) {\n // return;\n // }\n // this.bodyGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n // this.rowHeaderGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n // // this.tableGroup.setAttribute('height', this.table.tableNoFrameHeight - y);\n // // (this.tableGroup.lastChild as any).setAttribute('width', this.table.tableNoFrameWidth - x);\n // this.updateNextFrame();\n // } else if (this.table.scenegraph.proxy) {\n this.table.scenegraph.proxy.setY(-y);\n // }\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setBodyAndRowHeaderY(y: number) {\n if (this.colHeaderGroup.attribute.height + y === this.bodyGroup.attribute.y) {\n return;\n }\n this.bodyGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n this.rowHeaderGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n if (this.table.rightFrozenColCount > 0) {\n this.rightFrozenGroup.setAttribute('y', this.colHeaderGroup.attribute.height + y);\n }\n // this.tableGroup.setAttribute('height', this.table.tableNoFrameHeight - y);\n // (this.tableGroup.lastChild as any).setAttribute('width', this.table.tableNoFrameWidth - x);\n this.updateNextFrame();\n }\n\n /**\n * @description: 更新表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setBodyAndColHeaderX(x: number) {\n if (this.table.getFrozenColsWidth() + x === this.bodyGroup.attribute.x) {\n return;\n }\n this.bodyGroup.setAttribute('x', this.table.getFrozenColsWidth() + x);\n this.colHeaderGroup.setAttribute('x', this.table.getFrozenColsWidth() + x);\n if (this.table.bottomFrozenRowCount > 0) {\n this.bottomFrozenGroup.setAttribute('x', this.table.getFrozenColsWidth() + x);\n }\n this.updateNextFrame();\n }\n\n /**\n * @description: 完成创建场景树节点后,处理自动行高列宽\n * @return {*}\n */\n afterScenegraphCreated() {\n // this.dealWidthMode();\n // this.dealHeightMode();\n // 处理冻结\n // this.resetFrozen();\n // this.dealFrozen();\n\n if (!this.isPivot && !this.transpose) {\n this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);\n }\n this.table.stateManager.checkFrozen();\n // this.updateContainerAttrWidthAndX();\n this.updateContainer();\n\n // 处理frame border\n this.createFrameBorder();\n this.updateBorderSizeAndPosition();\n\n // 更新滚动条状态\n this.component.updateScrollBar();\n // 处理单元格内容需要textStick的情况\n handleTextStick(this.table);\n\n this.updateNextFrame();\n }\n\n /**\n * @description: 处理宽度模式\n * @return {*}\n */\n dealWidthMode() {\n const table = this.table;\n if (table.widthMode === 'adaptive') {\n table._clearColRangeWidthsMap();\n const canvasWidth = table.tableNoFrameWidth;\n let actualHeaderWidth = 0;\n for (let col = 0; col < table.colCount; col++) {\n const colWidth = table.getColWidth(col);\n if (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) {\n actualHeaderWidth += colWidth;\n }\n }\n const startCol = table.frozenColCount;\n const endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;\n getAdaptiveWidth(canvasWidth - actualHeaderWidth, startCol, endCol, false, [], table, true);\n } else if (table.autoFillWidth) {\n // 处理风神列宽特殊逻辑\n table._clearColRangeWidthsMap();\n const canvasWidth = table.tableNoFrameWidth;\n let actualHeaderWidth = 0;\n let actualWidth = 0;\n for (let col = 0; col < table.colCount; col++) {\n const colWidth = table.getColWidth(col);\n if (col < table.frozenColCount || (table.isPivotChart() && col >= table.colCount - table.rightFrozenColCount)) {\n actualHeaderWidth += colWidth;\n }\n actualWidth += colWidth;\n }\n // 如果内容宽度小于canvas宽度,执行adaptive放大\n if (actualWidth < canvasWidth && actualWidth > actualHeaderWidth) {\n const startCol = table.frozenColCount;\n const endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;\n getAdaptiveWidth(canvasWidth - actualHeaderWidth, startCol, endCol, false, [], table, true);\n }\n }\n\n // 更新容器宽度\n let bodyWidth = 0;\n this.bodyGroup.forEachChildrenSkipChild((column: Group) => {\n bodyWidth += column.attribute.width;\n });\n this.bodyGroup.setAttribute('width', bodyWidth);\n let colHeaderWidth = 0;\n this.colHeaderGroup.forEachChildrenSkipChild((column: Group) => {\n colHeaderWidth += column.attribute.width;\n });\n this.colHeaderGroup.setAttribute('width', colHeaderWidth);\n let rowHeaderWidth = 0;\n this.rowHeaderGroup.forEachChildrenSkipChild((column: Group) => {\n rowHeaderWidth += column.attribute.width;\n });\n this.rowHeaderGroup.setAttribute('width', rowHeaderWidth);\n let cornerHeaderWidth = 0;\n this.cornerHeaderGroup.forEachChildrenSkipChild((column: Group) => {\n cornerHeaderWidth += column.attribute.width;\n });\n this.cornerHeaderGroup.setAttribute('width', cornerHeaderWidth);\n\n this.colHeaderGroup.setAttribute('x', this.cornerHeaderGroup.attribute.width);\n this.rowHeaderGroup.setAttribute('y', this.colHeaderGroup.attribute.height);\n this.bodyGroup.setAttributes({\n x: this.rowHeaderGroup.attribute.width,\n y: this.colHeaderGroup.attribute.height\n });\n }\n\n /**\n * @description: 处理高度模式\n * @return {*}\n */\n dealHeightMode() {\n const table = this.table;\n // 处理adaptive高度\n if (table.heightMode === 'adaptive') {\n table._clearRowRangeHeightsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n const totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += table.getRowHeight(row);\n }\n const factor = totalDrawHeight / actualHeight;\n for (let row = startRow; row < endRow; row++) {\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight = totalDrawHeight - table.getRowsHeight(startRow, endRow - 2);\n } else {\n rowHeight = Math.round(table.getRowHeight(row) * factor);\n }\n\n this.setRowHeight(row, rowHeight);\n }\n } else if (table.autoFillHeight) {\n table._clearRowRangeHeightsMap();\n const canvasHeight = table.tableNoFrameHeight;\n let actualHeight = 0;\n let actualHeaderHeight = 0;\n for (let row = 0; row < table.rowCount; row++) {\n const rowHeight = table.getRowHeight(row);\n if (\n row < table.frozenRowCount ||\n (table.isPivotChart() && row >= table.rowCount - table.bottomFrozenRowCount)\n ) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n // table.scenegraph._dealAutoFillHeightOriginRowsHeight = actualHeight;\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (\n (this._dealAutoFillHeightOriginRowsHeight ?? actualHeight) < canvasHeight &&\n actualHeight - actualHeaderHeight > 0\n ) {\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {\n let rowHeight;\n if (row === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2);\n } else {\n rowHeight = Math.round(table.getRowHeight(row) * factor);\n }\n this.setRowHeight(row, rowHeight);\n }\n }\n }\n }\n\n /**\n * @description: 处理冻结\n * @return {*}\n */\n dealFrozen() {\n dealFrozen(this);\n }\n\n /**\n * @description: 还原冻结\n * @return {*}\n */\n resetFrozen() {\n resetFrozen(this);\n }\n\n /**\n * @description: 判断指定列更新宽度时,其中单元格是否会更新宽度;如果更新宽度,返回true\n * @param {Group} columnGroup\n * @param {number} detaRow columnGroup内的index与row的差值,列表头为0;行表头和内容为table.frozenRowCount\n * @param {number} col\n * @return {*}\n */\n updateCellLayoutWidthCertainWidth(columnGroup: Group, detaRow: number, col: number) {\n const width = columnGroup.attribute.width;\n let isUpdate = false;\n columnGroup.forEachChildren((cellGroup: Group, row: number) => {\n row += detaRow;\n const mergeInfo = getCellMergeInfo(this.table, col, row);\n if (mergeInfo) {\n cellGroup = this.getCell(mergeInfo.start.col, mergeInfo.start.row);\n // cellGroup.setAttribute('width', width);\n } else {\n cellGroup.setAttribute('width', width);\n }\n const headerStyle = this.table._getCellStyle(col, row);\n const padding = getQuadProps(getProp('padding', headerStyle, col, row, this.table));\n\n // const text = cellGroup.getChildAt(1) as WrapText;\n const text = cellGroup.getChildByName('text') as WrapText;\n let oldCellHeight = 0;\n let newCellHeight = 0;\n if (text) {\n oldCellHeight = text.AABBBounds.height() + (padding[0] + padding[2]);\n text.setAttribute('maxLineWidth', width - (padding[1] + padding[3]));\n newCellHeight = text.AABBBounds.height() + (padding[0] + padding[2]);\n } else {\n const group = cellGroup.getChildAt(1) as any;\n oldCellHeight = group.AABBBounds.height() + (padding[0] + padding[2]);\n group._cellWidth = width - (padding[1] + padding[3]);\n group.layout();\n newCellHeight = group.AABBBounds.height() + (padding[0] + padding[2]);\n }\n const rowHeight = this.table.getRowHeight(row);\n\n if (cellGroup.attribute.height !== newCellHeight) {\n cellGroup.setAttribute('height', newCellHeight);\n if (rowHeight === oldCellHeight) {\n // 当前行由本单元格高度撑起,更新本行行高\n isUpdate = true;\n } else if (newCellHeight > rowHeight) {\n // 当前行不由本单元格高度撑起,只在本单元格高度高于当前行高度时更新本行行高\n isUpdate = true;\n }\n }\n });\n return isUpdate;\n }\n\n /**\n * @description: 更新某列到其他列位置\n * @param {number} colSource 原始列col\n * @param {number} colTarget 目标列col\n * @return {*}\n */\n updateHeaderPosition(colSource: number, rowSource: number, colTarget: number, rowTarget: number) {\n moveHeaderPosition(colSource, rowSource, colTarget, rowTarget, this.table);\n }\n\n updateContainerAttrWidthAndX() {\n // 更新各列x&col\n const cornerX = updateContainerChildrenX(this.cornerHeaderGroup, 0);\n const rowHeaderX = updateContainerChildrenX(this.rowHeaderGroup, 0);\n const colHeaderX =\n this.colHeaderGroup.hasChildNodes() && this.colHeaderGroup.firstChild\n ? updateContainerChildrenX(\n this.colHeaderGroup,\n (this.colHeaderGroup.firstChild as any).col > 0\n ? this.table.getColsWidth(this.table.frozenColCount ?? 0, (this.colHeaderGroup.firstChild as any).col - 1)\n : 0\n )\n : 0;\n const bodyX =\n this.bodyGroup.hasChildNodes() && this.bodyGroup.firstChild\n ? updateContainerChildrenX(\n this.bodyGroup,\n (this.bodyGroup.firstChild as any).col > 0\n ? this.table.getColsWidth(this.table.frozenColCount ?? 0, (this.bodyGroup.firstChild as any).col - 1)\n : 0\n )\n : 0;\n const rightX = updateContainerChildrenX(this.rightFrozenGroup, 0);\n\n this.bottomFrozenGroup.hasChildNodes() &&\n this.bottomFrozenGroup.firstChild &&\n updateContainerChildrenX(\n this.bottomFrozenGroup,\n (this.bottomFrozenGroup.firstChild as any).col > 0\n ? this.table.getColsWidth(this.table.frozenColCount ?? 0, (this.bottomFrozenGroup.firstChild as any).col - 1)\n : 0\n );\n updateContainerChildrenX(this.leftBottomCornerGroup, 0);\n updateContainerChildrenX(this.rightTopCornerGroup, 0);\n updateContainerChildrenX(this.rightBottomCornerGroup, 0);\n\n // 更新容器\n this.cornerHeaderGroup.setDeltaWidth(cornerX - this.cornerHeaderGroup.attribute.width);\n this.leftBottomCornerGroup.setDeltaWidth(cornerX - this.leftBottomCornerGroup.attribute.width);\n //TODO 可能有影响\n this.colHeaderGroup.setDeltaWidth(colHeaderX - this.colHeaderGroup.attribute.width);\n this.rightFrozenGroup.setDeltaWidth(colHeaderX - this.table.getRightFrozenColsWidth());\n this.rowHeaderGroup.setDeltaWidth(rowHeaderX - this.rowHeaderGroup.attribute.width);\n this.bottomFrozenGroup.setDeltaWidth(rowHeaderX - this.bottomFrozenGroup.attribute.width);\n this.rightFrozenGroup.setDeltaWidth(rightX - this.table.getRightFrozenColsWidth());\n this.rightTopCornerGroup.setDeltaWidth(rightX - this.rightTopCornerGroup.attribute.width);\n this.rightBottomCornerGroup.setDeltaWidth(rightX - this.rightBottomCornerGroup.attribute.width);\n this.bodyGroup.setDeltaWidth(bodyX - this.bodyGroup.attribute.width);\n\n this.colHeaderGroup.setAttribute('x', this.cornerHeaderGroup.attribute.width);\n this.bottomFrozenGroup.setAttribute('x', this.table.getFrozenColsWidth());\n this.bodyGroup.setAttribute('x', this.rowHeaderGroup.attribute.width);\n }\n\n updateContainer() {\n // console.trace('updateContainer');\n\n this.updateContainerAttrWidthAndX();\n\n this.updateTableSize();\n\n // 记录滚动条原位置\n const oldHorizontalBarPos = this.table.stateManager.scroll.horizontalBarPos;\n const oldVerticalBarPos = this.table.stateManager.scroll.verticalBarPos;\n this.component.updateScrollBar();\n this.table.stateManager.setScrollLeft(oldHorizontalBarPos);\n this.table.stateManager.setScrollTop(oldVerticalBarPos);\n this.updateNextFrame();\n }\n\n updateCellContentWhileResize(col: number, row: number) {\n const type = this.table.getBodyColumnType(col, row);\n const cellGroup = this.getCell(col, row);\n if (type === 'image' || type === 'video') {\n updateImageCellContentWhileResize(cellGroup, col, row, this.table);\n }\n }\n\n /**\n * @description: 创建table&header&body的border\n * @return {*}\n */\n createFrameBorder() {\n // 更新宽高\n this.updateTableSize();\n // this.tableGroup.setAttributes({\n // width: Math.min(\n // this.table.tableNoFrameWidth,\n // (this.colHeaderGroup.attribute.width ?? 0) + (this.cornerHeaderGroup.attribute.width ?? 0)\n // ),\n // height: Math.min(\n // this.table.tableNoFrameHeight,\n // (this.colHeaderGroup.attribute.height ?? 0) + (this.bodyGroup.attribute.height ?? 0)\n // ),\n // } as any);\n\n const isListTableWithFrozen = !this.isPivot;\n\n // 设置border\n createFrameBorder(\n this.bodyGroup,\n this.table.theme.bodyStyle.frameStyle,\n this.bodyGroup.role,\n isListTableWithFrozen ? [true, true, true, false] : undefined\n );\n createFrameBorder(\n this.rowHeaderGroup,\n this.isPivot ? this.table.theme.rowHeaderStyle.frameStyle : this.table.theme.bodyStyle.frameStyle,\n this.rowHeaderGroup.role,\n isListTableWithFrozen ? [true, false, true, true] : undefined\n );\n createFrameBorder(\n this.colHeaderGroup,\n this.table.theme.headerStyle.frameStyle, // 透视表的主题中没有colHeaderStyle,直接使用headerStyle\n this.colHeaderGroup.role,\n isListTableWithFrozen ? [true, true, true, false] : undefined\n );\n createFrameBorder(\n this.cornerHeaderGroup,\n this.isPivot ? this.table.theme.cornerHeaderStyle.frameStyle : this.table.theme.headerStyle.frameStyle,\n this.cornerHeaderGroup.role,\n isListTableWithFrozen ? [true, false, true, true] : undefined\n );\n createFrameBorder(this.tableGroup, this.table.theme.frameStyle, this.tableGroup.role, undefined);\n }\n\n /**\n * @description: 获取当前位置的列宽调整信息\n * @param {number} abstractX\n * @param {number} abstractY\n * @param {Group} cellGroup\n * @param {*} offset\n * @return {*}\n */\n getResizeColAt(\n abstractX: number,\n abstractY: number,\n cellGroup?: Group,\n offset = ResizeColumnHotSpotSize / 2\n ): { col: number; row: number; x?: number; rightFrozen?: boolean } {\n if (!cellGroup) {\n // to do: 处理最后一列外调整列宽\n } else {\n let cell: { col: number; row: number; x?: number; rightFrozen?: boolean };\n if (abstractX < cellGroup.globalAABBBounds.x1 + offset) {\n cell = { col: cellGroup.col - 1, row: cellGroup.row, x: cellGroup.globalAABBBounds.x1 };\n } else if (cellGroup.globalAABBBounds.x2 - offset < abstractX) {\n cell = { col: cellGroup.col, row: cellGroup.row, x: cellGroup.globalAABBBounds.x2 };\n }\n if (\n cell &&\n this.table.rightFrozenColCount > 0 &&\n cell.col === this.table.colCount - this.table.rightFrozenColCount - 1 &&\n this.table.tableNoFrameWidth -\n this.table.getFrozenColsWidth() -\n this.table.getRightFrozenColsWidth() +\n this.table.scrollLeft <\n this.bodyGroup.attribute.width\n ) {\n // 有右侧冻结列,并且横向没有滚动到最右侧时,右侧冻结列左侧调整对只对右侧冻结列生效\n cell.col = cell.col + 1;\n cell.rightFrozen = true;\n }\n if (cell) {\n return cell;\n }\n }\n return { col: -1, row: -1 };\n }\n\n updateFrozen() {\n if (this.clear) {\n return;\n }\n this.resetFrozen();\n // this.dealFrozen();\n this.component.updateScrollBar();\n }\n\n dealWidthRightFrozen(rightFrozenColCount: number) {\n if (this.clear) {\n this.table.internalProps.rightFrozenColCount = rightFrozenColCount;\n return;\n }\n dealRightFrozen(rightFrozenColCount, this);\n }\n dealWidthBottomFrozen(bottomFrozenRowCount: number) {\n if (this.clear) {\n this.table.internalProps.bottomFrozenRowCount = bottomFrozenRowCount;\n return;\n }\n dealBottomFrozen(bottomFrozenRowCount, this);\n }\n\n updateBorderSizeAndPosition() {\n if (this.bodyGroup.border) {\n this.bodyGroup.appendChild(this.bodyGroup.border);\n updateFrameBorderSize(this.bodyGroup);\n if (this.rowHeaderGroup.attribute.width === 0) {\n updateFrameBorder(this.bodyGroup, this.table.theme.bodyStyle.frameStyle, [true, true, true, true]);\n } else {\n updateFrameBorder(this.bodyGroup, this.table.theme.bodyStyle.frameStyle, [true, true, true, false]);\n }\n }\n if (this.colHeaderGroup.border) {\n this.colHeaderGroup.appendChild(this.colHeaderGroup.border);\n updateFrameBorderSize(this.colHeaderGroup);\n if (this.cornerHeaderGroup.attribute.width === 0) {\n updateFrameBorder(this.colHeaderGroup, this.table.theme.headerStyle.frameStyle, [true, true, true, true]);\n } else {\n updateFrameBorder(this.colHeaderGroup, this.table.theme.headerStyle.frameStyle, [true, true, true, false]);\n }\n }\n if (this.rowHeaderGroup.border) {\n this.rowHeaderGroup.appendChild(this.rowHeaderGroup.border);\n updateFrameBorderSize(this.rowHeaderGroup);\n }\n if (this.cornerHeaderGroup.border) {\n this.cornerHeaderGroup.appendChild(this.cornerHeaderGroup.border);\n updateFrameBorderSize(this.cornerHeaderGroup);\n }\n }\n\n sortCell() {\n if (this.isPivot) {\n // 透视表外部处理排序\n } else if (this.transpose) {\n this.proxy.sortCellHorizontal();\n } else {\n this.proxy.sortCellVertical();\n }\n }\n\n getCellOverflowText(col: number, row: number): string | null {\n const cellGroup = this.getCell(col, row);\n const text = cellGroup.getChildByName('text', true) as unknown as WrapText;\n // if (text && text.cache?.clipedText !== text.attribute.text) {\n // return text.attribute.text as string;\n // }\n if (text) {\n const textAttributeStr = isArray(text.attribute.text)\n ? text.attribute.text.join('')\n : (text.attribute.text as string);\n let cacheStr = '';\n if (isString(text.cache.clipedText)) {\n cacheStr = text.cache.clipedText;\n } else {\n (text.cache as ITextCache).layoutData?.lines?.forEach((line: any) => {\n cacheStr += line.str;\n });\n }\n if (cacheStr !== textAttributeStr) {\n return textAttributeStr;\n }\n }\n return null;\n }\n\n updateDrill(visible: boolean, x: number, y: number, drillDown: boolean, drillUp: boolean) {\n this.component.drillIcon.update(visible, x, y, drillDown, drillUp, this);\n }\n\n updateCellContent(col: number, row: number) {\n if (this.clear) {\n return undefined;\n }\n return updateCell(col, row, this.table);\n }\n\n setPixelRatio(pixelRatio: number) {\n // this.stage.setDpr(pixelRatio);\n // 这里因为本时刻部分节点有更新bounds标记,直接render回导致开启DirtyBounds,无法完整重绘画布;\n // 所以这里先关闭DirtyBounds,等待下一帧再开启\n this.stage.disableDirtyBounds();\n this.stage.window.setDpr(pixelRatio);\n this.stage.render();\n this.stage.enableDirtyBounds();\n }\n\n updateRow(removeCells: CellAddress[], addCells: CellAddress[], updateCells: CellAddress[] = []) {\n // add or move rows\n updateRow(removeCells, addCells, updateCells, this.table);\n\n // update column width and row height\n this.recalculateColWidths();\n\n this.recalculateRowHeights();\n\n // check frozen status\n this.table.stateManager.checkFrozen();\n\n // update frozen shadow\n if (!this.isPivot && !this.transpose) {\n this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);\n }\n\n this.component.updateScrollBar();\n\n // rerender\n this.updateNextFrame();\n }\n updateCol(removeCells: CellAddress[], addCells: CellAddress[], updateCells: CellAddress[] = []) {\n // add or move rows\n updateCol(removeCells, addCells, updateCells, this.table);\n\n // update column width and row height\n this.recalculateColWidths();\n\n this.recalculateRowHeights();\n\n // check frozen status\n this.table.stateManager.checkFrozen();\n\n // update frozen shadow\n if (!this.isPivot && !this.transpose) {\n this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);\n }\n\n this.component.updateScrollBar();\n\n // rerender\n this.updateNextFrame();\n }\n getColumnGroupX(col: number) {\n if (col < this.table.rowHeaderLevelCount) {\n // row header\n return this.table.getColsWidth(0, col - 1);\n } else if (col < this.table.colCount - this.table.rightFrozenColCount) {\n // body\n return this.table.getColsWidth(this.table.rowHeaderLevelCount, col - 1);\n } else if (col < this.table.colCount) {\n // right frozen\n return this.table.getColsWidth(this.table.colCount - this.table.bottomFrozenRowCount, col - 1);\n }\n return 0;\n }\n\n getCellGroupY(row: number) {\n if (row < this.table.columnHeaderLevelCount) {\n // column header\n return this.table.getRowsHeight(0, row - 1);\n } else if (row < this.table.rowCount - this.table.bottomFrozenRowCount) {\n // body\n return this.table.getRowsHeight(this.table.columnHeaderLevelCount, row - 1);\n } else if (row < this.table.rowCount) {\n // bottom frozen\n return this.table.getRowsHeight(this.table.rowCount - this.table.bottomFrozenRowCount, row - 1);\n }\n return 0;\n }\n getCellGroupX(col: number) {\n if (col < this.table.rowHeaderLevelCount) {\n // column header\n return this.table.getColsWidth(0, col - 1);\n } else if (col < this.table.colCount - this.table.rightFrozenColCount) {\n // body\n return this.table.getColsWidth(this.table.rowHeaderLevelCount, col - 1);\n } else if (col < this.table.colCount) {\n // bottom frozen\n return this.table.getColsWidth(this.table.colCount - this.table.rightFrozenColCount, col - 1);\n }\n return 0;\n }\n // /** 更新场景树某个单元格的值 */\n // updateCellValue(col: number, row: number) {\n // updateCell(col, row, this.table);\n // }\n}\n"]}
@@ -9,6 +9,7 @@ export function updateAllSelectComponent(scene) {
9
9
  }
10
10
 
11
11
  function updateComponent(selectComp, key, scene) {
12
+ var _a, _b, _c, _d;
12
13
  const [startColStr, startRowStr, endColStr, endRowStr] = key.split("-"), startCol = parseInt(startColStr, 10), startRow = parseInt(startRowStr, 10), endCol = parseInt(endColStr, 10), endRow = parseInt(endRowStr, 10);
13
14
  let visibleCellRange, computeRectCellRangeStartCol = startCol, computeRectCellRangeStartRow = startRow, computeRectCellRangeEndCol = endCol, computeRectCellRangeEndRow = endRow;
14
15
  switch (selectComp.role) {
@@ -65,18 +66,23 @@ function updateComponent(selectComp, key, scene) {
65
66
  y: selectComp.rect.attribute.y,
66
67
  height: scene.bottomFrozenGroup.attribute.y - selectComp.rect.attribute.y
67
68
  })) : scene.tableGroup.insertAfter(selectComp.rect, "body" === selectComp.role ? scene.bodyGroup : "columnHeader" === selectComp.role ? scene.colHeaderGroup : "rowHeader" === selectComp.role ? scene.rowHeaderGroup : "cornerHeader" === selectComp.role ? scene.cornerHeaderGroup : "rightTopCorner" === selectComp.role ? scene.rightTopCornerGroup : "rightFrozen" === selectComp.role ? scene.rightFrozenGroup : "leftBottomCorner" === selectComp.role ? scene.leftBottomCornerGroup : "bottomFrozen" === selectComp.role ? scene.bottomFrozenGroup : scene.rightBottomCornerGroup);
68
- const diffSize = Math.ceil(selectComp.rect.attribute.lineWidth / 2);
69
- endCol === scene.table.colCount - 1 && selectComp.rect.setAttributes({
69
+ let diffSize = 0;
70
+ "number" == typeof selectComp.rect.attribute.lineWidth && (diffSize = Math.ceil(selectComp.rect.attribute.lineWidth / 2)),
71
+ endCol === scene.table.colCount - 1 && (Array.isArray(selectComp.rect.attribute.lineWidth) && (diffSize = Math.ceil((null !== (_a = selectComp.rect.attribute.lineWidth[1]) && void 0 !== _a ? _a : 0) / 2)),
72
+ selectComp.rect.setAttributes({
70
73
  width: selectComp.rect.attribute.width - diffSize
71
- }), 0 === startCol && selectComp.rect.setAttributes({
74
+ })), 0 === startCol && (Array.isArray(selectComp.rect.attribute.lineWidth) && (diffSize = Math.ceil((null !== (_b = selectComp.rect.attribute.lineWidth[3]) && void 0 !== _b ? _b : 0) / 2)),
75
+ selectComp.rect.setAttributes({
72
76
  x: selectComp.rect.attribute.x + diffSize,
73
77
  width: selectComp.rect.attribute.width - diffSize
74
- }), endRow === scene.table.rowCount - 1 && selectComp.rect.setAttributes({
78
+ })), endRow === scene.table.rowCount - 1 && (Array.isArray(selectComp.rect.attribute.lineWidth) && (diffSize = Math.ceil((null !== (_c = selectComp.rect.attribute.lineWidth[2]) && void 0 !== _c ? _c : 0) / 2)),
79
+ selectComp.rect.setAttributes({
75
80
  height: selectComp.rect.attribute.height - diffSize
76
- }), 0 === startRow && selectComp.rect.setAttributes({
81
+ })), 0 === startRow && (Array.isArray(selectComp.rect.attribute.lineWidth) && (diffSize = Math.ceil((null !== (_d = selectComp.rect.attribute.lineWidth[0]) && void 0 !== _d ? _d : 0) / 2)),
82
+ selectComp.rect.setAttributes({
77
83
  y: selectComp.rect.attribute.y + diffSize,
78
84
  height: selectComp.rect.attribute.height - diffSize
79
- });
85
+ }));
80
86
  }
81
87
 
82
88
  export function updateCellSelectBorder(scene, newStartCol, newStartRow, newEndCol, newEndRow) {