@visactor/vchart 2.0.5-alpha.3 → 2.0.5-alpha.5
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.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +7 -10
- package/build/index.js +6 -11
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/compile/compiler.js +4 -3
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/index.d.ts +0 -1
- package/cjs/index.js +11 -11
- package/cjs/index.js.map +1 -1
- package/cjs/layout/grid-layout/grid-layout.js +0 -2
- package/cjs/layout/grid-layout/grid-layout.js.map +1 -1
- package/cjs/series/sankey/sankey.js +1 -1
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/esm/compile/compiler.js +4 -3
- package/esm/compile/compiler.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/index.d.ts +0 -1
- package/esm/index.js +0 -2
- package/esm/index.js.map +1 -1
- package/esm/layout/grid-layout/grid-layout.js +0 -2
- package/esm/layout/grid-layout/grid-layout.js.map +1 -1
- package/esm/series/sankey/sankey.js +1 -1
- package/esm/series/sankey/sankey.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/sankey/sankey.ts"],"names":[],"mappings":"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","file":"sankey.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { Datum, IRectMarkSpec, ILinkPathMarkSpec, IComposedTextMarkSpec, StringOrNumber } from '../../typings';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { ISankeyOpt } from '../../data/transforms/sankey';\nimport { sankeyFormat, sankeyLayout, collectHierarchyField } from '../../data/transforms/sankey';\nimport { sankeyNodes } from '../../data/transforms/sankey-nodes';\nimport { sankeyLinks } from '../../data/transforms/sankey-links';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { DataView } from '@visactor/vdataset';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { Event_Bubble_Level } from '../../constant/event';\nimport { SankeySeriesTooltipHelper } from './tooltip-helper';\nimport type { IBounds } from '@visactor/vutils';\nimport { Bounds, array, isNil, isValid, isNumber, isArray } from '@visactor/vutils';\nimport { registerSankeyAnimation } from './animation';\nimport type { ISankeySeriesSpec, SankeyLinkElement, ISankeyLabelSpec, ISankeyAnimationParams } from './interface';\nimport type { ExtendEventParam } from '../../event/interface';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { ColorOrdinalScale } from '../../scale/color-ordinal-scale';\nimport { registerRectMark } from '../../mark/rect';\nimport { registerTextMark } from '../../mark/text';\nimport { registerLinkPathMark } from '../../mark/link-path';\nimport { sankeySeriesMark } from './constant';\nimport { flatten } from '../../data/transforms/flatten';\nimport type { SankeyNodeElement } from '@visactor/vlayouts';\nimport { Factory } from '../../core/factory';\nimport type { IGlyphMark, ILinkPathMark, IMark, IMarkGraphic, IRectMark, ITextMark } from '../../mark/interface';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { SankeySeriesSpecTransformer } from './sankey-transformer';\nimport { getFormatFunction } from '../../component/util';\nimport type { ILabelSpec } from '../../component';\nimport { getDatumOfGraphic } from '../../util';\nimport { addRuntimeState } from '../../mark/utils/glyph';\nimport { sankey } from '../../theme/builtin/common/series/sankey';\n\nexport class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.sankey;\n type = SeriesTypeEnum.sankey;\n\n static readonly transformerConstructor = SankeySeriesSpecTransformer as any;\n readonly transformerConstructor = SankeySeriesSpecTransformer;\n\n static readonly mark: SeriesMarkMap = sankeySeriesMark;\n static readonly builtInTheme = { sankey };\n\n private _nodeMark: IRectMark;\n private _linkMark: ILinkPathMark;\n\n private _nodeLayoutZIndex = LayoutZIndex.Node;\n private _labelLayoutZIndex = LayoutZIndex.Label;\n\n protected _nodesSeriesData?: DataView;\n protected _linksSeriesData?: DataView;\n\n private _viewBox: IBounds = new Bounds();\n\n protected _categoryField!: string;\n private _colorScale: IBaseScale;\n private _nodeList: (string | number)[];\n private _needClear: boolean;\n\n get direction() {\n return this._spec.direction ?? 'horizontal';\n }\n getCategoryField() {\n return this._categoryField;\n }\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n protected _valueField!: string;\n getValueField() {\n return this._valueField;\n }\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? this._spec.categoryField);\n }\n\n initData() {\n super.initData();\n const viewData = this.getViewData();\n const rawData = this.getRawData();\n\n if (rawData && viewData) {\n // 初始化桑基图数据\n registerDataSetInstanceTransform(this._dataSet, 'sankeyLayout', sankeyLayout);\n registerDataSetInstanceTransform(this._dataSet, 'sankeyFormat', sankeyFormat);\n\n rawData.transform(\n {\n type: 'sankeyFormat'\n },\n false\n );\n\n viewData.transform({\n type: 'sankeyLayout',\n options: {\n view: () => {\n return {\n x0: this._viewBox.x1,\n x1: this._viewBox.x2,\n y0: this._viewBox.y1,\n y1: this._viewBox.y2\n };\n },\n sourceField: this._spec.sourceField,\n targetField: this._spec.targetField,\n valueField: this._spec.valueField,\n direction: this.direction,\n crossNodeAlign: this._spec.crossNodeAlign,\n nodeAlign: this._spec.nodeAlign ?? 'justify',\n nodeGap: this._spec.nodeGap ?? 8,\n nodeWidth: this._spec.nodeWidth ?? 10,\n linkWidth: this._spec.linkWidth,\n minStepWidth: this._spec.minStepWidth,\n minNodeHeight: this._spec.minNodeHeight ?? 4,\n maxNodeHeight: this._spec.maxNodeHeight,\n minLinkHeight: this._spec.minLinkHeight,\n maxLinkHeight: this._spec.maxLinkHeight,\n iterations: this._spec.iterations,\n nodeKey: this._spec.nodeKey,\n linkSortBy: this._spec.linkSortBy,\n nodeSortBy: this._spec.nodeSortBy,\n setNodeLayer: this._spec.setNodeLayer,\n dropIsolatedNode: this._spec.dropIsolatedNode,\n nodeHeight: this._spec.nodeHeight,\n linkHeight: this._spec.linkHeight,\n equalNodeHeight: this._spec.equalNodeHeight,\n linkOverlap: this._spec.linkOverlap,\n inverse: this._spec.inverse\n } as ISankeyOpt,\n level: TransformLevel.sankeyLayout\n });\n\n // 注册扁平化算法\n const { dataSet } = this._option;\n registerDataSetInstanceTransform(dataSet, 'sankeyNodes', sankeyNodes);\n registerDataSetInstanceTransform(dataSet, 'flatten', flatten);\n const nodesDataView = new DataView(dataSet, { name: `sankey-node-${this.id}-data` });\n nodesDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n nodesDataView.transform({\n type: 'sankeyNodes'\n });\n // sankeyNode进行扁平化处理(针对层级数据)\n nodesDataView.transform(\n {\n type: 'flatten',\n options: {\n callback: (node: SankeyNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n }\n },\n false\n );\n\n nodesDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._nodesSeriesData = nodesDataView;\n\n registerDataSetInstanceTransform(dataSet, 'sankeyLinks', sankeyLinks);\n const linksDataView = new DataView(dataSet, { name: `sankey-link-${this.id}-data` });\n linksDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n linksDataView.transform({\n type: 'sankeyLinks'\n });\n\n linksDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n this._linksSeriesData = linksDataView;\n }\n }\n\n compileData() {\n super.compileData();\n\n this._linkMark?.compileData();\n this._nodeMark?.compileData();\n }\n\n initMark(): void {\n // 为了让sankey 正常的滚动,interactive 需要设置为true,不然在空白处会滚动不了\n this._rootMark.setMarkConfig({\n overflow: this._spec.overflow,\n interactive: !!this._spec.overflow\n });\n const nodeMark = this._createMark(SankeySeries.mark.node, {\n isSeriesMark: true,\n dataView: this._nodesSeriesData\n }) as IRectMark;\n if (nodeMark) {\n nodeMark.setMarkConfig({ zIndex: this._nodeLayoutZIndex });\n this._nodeMark = nodeMark;\n }\n\n const linkMark = this._createMark(SankeySeries.mark.link, {\n dataView: this._linksSeriesData\n }) as ILinkPathMark;\n if (linkMark) {\n this._linkMark = linkMark;\n }\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n\n this._markAttributeContext.valueToNode = this.valueToNode.bind(this);\n this._markAttributeContext.valueToLink = this.valueToLink.bind(this);\n }\n\n valueToNode(value: StringOrNumber | StringOrNumber[]) {\n const nodes = this._nodesSeriesData.latestData;\n const specifyValue = array(value)[0];\n return nodes && nodes.find((node: SankeyNodeElement) => node.key === specifyValue);\n }\n\n valueToLink(value: StringOrNumber | StringOrNumber[]) {\n const links = this._linksSeriesData.latestData;\n const specifyValue = array(value);\n\n return (\n links &&\n links.find(\n (link: SankeyLinkElement) => link && link.source === specifyValue[0] && link.target === specifyValue[1]\n )\n );\n }\n\n valueToPositionX(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.x0;\n }\n valueToPositionY(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.y0;\n }\n\n initMarkStyle(): void {\n this._initNodeMarkStyle();\n this._initLinkMarkStyle();\n }\n\n protected _initNodeMarkStyle() {\n const nodeMark = this._nodeMark;\n if (!nodeMark) {\n return;\n }\n\n this.setMarkStyle<IRectMarkSpec>(\n nodeMark,\n {\n x: (datum: Datum) => {\n return datum.x0;\n },\n x1: (datum: Datum) => datum.x1,\n y: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Mark\n );\n\n this.setMarkStyle(\n nodeMark,\n {\n fill: this._spec.node.style?.fill ?? this._fillByNode\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n protected _fillByNode = (datum: Datum) => {\n if (datum && datum.sourceRect && datum.targetRect) {\n return this._fillByLink(datum);\n }\n\n const fill = this._spec.node?.style?.fill;\n\n if (isValid(fill)) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const colorScale = this._option?.globalScale?.getScale('color');\n const nodeDatum = datum?.datum ? datum.datum : datum;\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n return this._colorScale?.scale(this._getNodeNameFromData(datum));\n };\n\n protected _fillByLink = (datum: Datum) => {\n const fill = this._spec.link?.style?.fill;\n\n if (fill) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const sourceNode = this._nodesSeriesData.latestData?.find((entry: any) => datum.source === entry.key);\n const nodeDatum = sourceNode?.datum;\n const colorScale = this._option?.globalScale?.getScale('color');\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n const sourceName = isNumber(datum.source) ? this.getNodeList()[datum.source] : datum.source;\n return this._colorScale?.scale(sourceName);\n };\n\n protected _initLinkMarkStyle() {\n const linkMark = this._linkMark;\n if (!linkMark) {\n return;\n }\n\n (linkMark as IGlyphMark).setGlyphConfig({\n direction: this.direction\n });\n\n this.setMarkStyle<ILinkPathMarkSpec>(\n linkMark,\n {\n x0: (datum: Datum) => datum.x0,\n x1: (datum: Datum) => datum.x1,\n y0: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1,\n thickness: (datum: Datum) => datum.thickness\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n\n this.setMarkStyle(\n linkMark,\n {\n fill: this._spec.link.style?.fill ?? this._fillByLink\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n initLabelMarkStyle(labelMark: ITextMark, labelSpec: ILabelSpec) {\n if (!labelMark) {\n return;\n }\n const position = labelSpec.position;\n\n if (position && position.includes('inside')) {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: '#ffffff',\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (datum: Datum) => (labelSpec as ISankeyLabelSpec).limit ?? datum.x1 - datum.x0\n });\n } else {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: this._fillByNode,\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (labelSpec as ISankeyLabelSpec).limit\n });\n }\n\n labelMark.setMarkConfig({ zIndex: this._labelLayoutZIndex });\n }\n\n private _createText(datum: Datum, labelSpec: ISankeyLabelSpec) {\n if (isNil(datum) || isNil(datum.datum)) {\n return '';\n }\n let text = datum.datum[this._spec.categoryField] || '';\n const { formatMethod, formatter } = labelSpec || {};\n\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, text, datum.datum);\n if (formatFunc) {\n text = formatFunc(...args, { series: this });\n }\n return text;\n }\n\n initAnimation() {\n const animationParams: ISankeyAnimationParams = {\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IMarkAnimateSpec<string>)?.preset;\n if (this._nodeMark) {\n this._nodeMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyNode')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.node, this._spec, this._markAttributeContext)\n )\n );\n }\n if (this._linkMark) {\n this._linkMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyLinkPath')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.link, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n\n this._nodesSeriesData?.target.addListener('change', this.nodesSeriesDataUpdate.bind(this));\n this._linksSeriesData?.target.addListener('change', this.linksSeriesDataUpdate.bind(this));\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n // 没有关闭交互时,才增加这些交互事件\n if (this._option.disableTriggerEvent !== true) {\n if (emphasisSpec.enable && (emphasisSpec.effect === 'adjacency' || emphasisSpec.effect === 'related')) {\n const event = emphasisSpec.trigger === 'hover' ? 'pointerover' : 'pointerdown';\n\n this.event.on(event, { level: Event_Bubble_Level.chart }, this._handleEmphasisElement);\n }\n }\n }\n\n private nodesSeriesDataUpdate() {\n this._nodeMark.getData().updateData();\n\n this._nodeList = null;\n this._setNodeOrdinalColorScale();\n }\n\n private linksSeriesDataUpdate() {\n this._linkMark.getData().updateData();\n }\n\n protected _handleEmphasisElement = (params: ExtendEventParam) => {\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n\n const graphic = params.item;\n\n if (emphasisSpec.effect === 'adjacency') {\n if (graphic && params.mark === this._nodeMark) {\n this._handleNodeAdjacencyClick(graphic);\n } else if (graphic && params.mark === this._linkMark) {\n this._handleLinkAdjacencyClick(graphic);\n } else {\n this._handleClearEmpty();\n }\n } else if (emphasisSpec.effect === 'related') {\n if (graphic && params.mark === this._nodeMark) {\n this._handleNodeRelatedClick(graphic);\n } else if (graphic && params.mark === this._linkMark) {\n this._handleLinkRelatedClick(graphic);\n } else {\n this._handleClearEmpty();\n }\n }\n };\n\n protected _handleClearEmpty = () => {\n if (!this._needClear) {\n return;\n }\n\n const allNodeElements = this._nodeMark?.getGraphics();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark?.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n // const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n\n allNodeElements.forEach(el => {\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n allLinkElements.forEach(el => {\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n\n this._needClear = false;\n };\n\n protected _handleNodeAdjacencyClick = (graphic: IMarkGraphic) => {\n const nodeDatum = getDatumOfGraphic(graphic) as Datum;\n const highlightNodes: string[] = [nodeDatum.key];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n\n if (linkDatum.source === nodeDatum.key) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true); // 设置上用户配置选中状态\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true); // 设置上用户配置选中状态\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkAdjacencyClick = (graphic: IMarkGraphic) => {\n const curLinkDatum = getDatumOfGraphic(graphic) as Datum;\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getGraphics();\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n allLinkElements.forEach(linkEl => {\n if (linkEl === graphic) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleNodeRelatedClick = (graphic: IMarkGraphic) => {\n const nodeDatum = getDatumOfGraphic(graphic) as Datum;\n const allNodeElements = this._nodeMark.getGraphics();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = (getDatumOfGraphic(allLinkElements[0]) as Datum)?.parents ? 'parents' : 'source';\n\n if (father === 'source') {\n // node-link 型数据\n const highlightNodes: string[] = [nodeDatum.key];\n const highlightLinks: string[] = [];\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n const father = linkDatum?.parents ? 'parents' : 'source';\n\n if (array(linkDatum[father]).includes(nodeDatum.key)) {\n // 下游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n // 下游link的目标节点\n const targetNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.target;\n });\n\n // 以下游link的目标节点为起点的links\n let targetNodeSourceLinks: any[] = targetNode.data[0].sourceLinks as any[];\n while (targetNodeSourceLinks?.length > 0) {\n const newTargetNodeSourceLinks: any[] = [];\n targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum: any) => {\n if (!highlightLinks.includes(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index)) {\n highlightLinks.push(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index);\n // 该links的目标节点\n if (!highlightNodes.includes(targetNodeSourceLinkDatum.target)) {\n highlightNodes.push(targetNodeSourceLinkDatum.target);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === targetNodeSourceLinkDatum.target;\n });\n // 以该目标节点为起点的links\n newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n targetNodeSourceLinks = newTargetNodeSourceLinks;\n return;\n }\n }\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n const sourceNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.source;\n });\n let sourceNodeTargetLinks: any[] = sourceNode.data[0].targetLinks as any;\n while (sourceNodeTargetLinks?.length > 0) {\n const newSourceNodeTargetLinks: any[] = [];\n sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum: any) => {\n if (!highlightLinks.includes(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index)) {\n highlightLinks.push(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index);\n if (!highlightNodes.includes(sourceNodeTargetLinkDatum.source)) {\n highlightNodes.push(sourceNodeTargetLinkDatum.source);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === sourceNodeTargetLinkDatum.source;\n });\n newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n sourceNodeTargetLinks = newSourceNodeTargetLinks;\n return;\n }\n }\n }\n });\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n\n if (highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n } else {\n // 层级型数据\n const highlightNodes: string[] = [nodeDatum.key];\n\n const upstreamLinks = nodeDatum.targetLinks.reduce((res: any[], link: any) => {\n const dividedLinks = array((link as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = dividedLink.parents;\n const len = parents.length;\n\n for (let i = 0; i < len; i++) {\n const source = parents[i].key;\n const target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key;\n const value = dividedLink.value;\n\n // 检查 res 数组中是否已存在相同的 source 和 target\n const existingItem = res.find(item => item.source === source && item.target === target);\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 res 数组中\n res.push({ source, target, value });\n }\n }\n });\n return res;\n }, []);\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n const originalDatum = linkDatum.datum;\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => entry[father].some((par: any) => par.key === nodeDatum.key))\n : null;\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum.reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio });\n\n return;\n }\n\n if (upSelectedLink) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {\n ratio: upSelectedLink.value / linkDatum.value\n }); // 设置默认的部分高亮\n\n return;\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n\n return;\n });\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkRelatedClick = (graphic: IMarkGraphic) => {\n const allNodeElements = this._nodeMark.getGraphics();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = (getDatumOfGraphic(graphic) as Datum) ? 'parents' : 'source';\n if (father === 'source') {\n // const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n if (this._linkMark) {\n allLinkElements.forEach(linkEl => {\n // linkEl.removeState(states);\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n }\n\n if (this._nodeMark) {\n allNodeElements.forEach(el => {\n // el.removeState(states);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n }\n } else {\n const curLinkDatum = getDatumOfGraphic(graphic) as Datum;\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n const upstreamLinks: Array<{ source: string; target: string; value: number }> = [];\n\n const dividedLinks = array((curLinkDatum as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = (dividedLink as any).parents;\n const len = parents.length;\n for (let i = 0; i < len - 1; i++) {\n const source = parents[i].key;\n const target = parents[i + 1].key;\n const value = dividedLink.value;\n\n // 检查 upstreamLinks 数组中是否已存在相同的 source 和 target\n const existingItem = upstreamLinks.find(item => item.source === source && item.target === target);\n upstreamLinks.push({\n source: parents[i].key,\n target: parents[i + 1].key,\n value: dividedLink.value\n });\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 upstreamLinks 数组中\n upstreamLinks.push({ source, target, value });\n }\n }\n });\n\n allLinkElements.forEach(linkEl => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n const originalDatum = linkDatum.datum;\n\n if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) {\n // 自身\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n\n return;\n }\n\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => {\n const parentKeysList = entry.parents.map((item: any) => item.key);\n return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);\n })\n : null;\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum\n .filter((entry: any) => {\n return entry.parents.some((par: any, index: number) => {\n return par.key === curLinkDatum.source && entry.parents[index + 1]?.key === curLinkDatum.target;\n });\n })\n .reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n\n return;\n }\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (upSelectedLink) {\n // 点击节点的上游一层的节点\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {\n ratio: upSelectedLink.value / (linkDatum as Datum).value\n }); // 设置默认的部分高亮\n\n return;\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n\n return;\n });\n\n this._highLightElements(allNodeElements, highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _highLightElements(graphics: IMarkGraphic[], highlightNodes: string[]) {\n if (!graphics || !graphics.length) {\n return;\n }\n\n graphics.forEach(g => {\n g.removeState([STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS]);\n\n if (highlightNodes.includes((getDatumOfGraphic(g) as Datum).key)) {\n g.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);\n } else {\n g.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n protected initTooltip() {\n this._tooltipHelper = new SankeySeriesTooltipHelper(this);\n this._nodeMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nodeMark);\n this._linkMark && this._tooltipHelper.activeTriggerSet.mark.add(this._linkMark);\n }\n\n _setNodeOrdinalColorScale() {\n const colorScale = this._option?.globalScale?.getScale('color');\n\n if ((colorScale as any)?._specified) {\n this._colorScale = colorScale;\n return;\n }\n\n let colorDomain: string[];\n let colorRange: string[];\n\n if (colorScale) {\n colorDomain = colorScale.domain();\n colorRange = colorScale.range();\n }\n\n if (!colorRange) {\n colorRange = this._getDataScheme() as unknown as string[];\n }\n\n if (!colorDomain || isNil(colorDomain[0])) {\n // no validate domain\n colorDomain = this.getNodeList();\n\n if (colorDomain.length > 10) {\n colorRange = (this._getDataScheme()[1] as any)?.scheme;\n }\n }\n\n const ordinalScale = new ColorOrdinalScale();\n\n ordinalScale.domain(colorDomain).range?.(colorRange);\n\n this._colorScale = ordinalScale;\n return;\n }\n\n getNodeList() {\n if (this._nodeList) {\n return this._nodeList;\n }\n\n const data = this._rawData.latestData[0];\n\n const nodeList = data?.nodes\n ? data.nodes[0]?.children\n ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField))\n : data.nodes.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n })\n : data?.links\n ? Array.from(this.extractNamesFromLink(data.links))\n : data?.values?.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n });\n\n this._nodeList = nodeList;\n\n return nodeList;\n }\n\n _getNodeNameFromData(datum: Datum) {\n return datum?.datum ? datum.datum[this._spec.categoryField] : datum.key ?? datum[this._spec.categoryField];\n }\n\n extractNamesFromTree(tree: any, categoryName: string) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n\n // 遍历当前节点的子节点\n tree.forEach((node: any) => {\n // 将当前节点的 name 值添加到 Set 中\n uniqueNames.add(node[categoryName]);\n\n // 如果当前节点还有子节点,则递归调用该函数继续遍历子节点\n if (node.children) {\n const childNames = this.extractNamesFromTree(node.children, categoryName);\n childNames.forEach(name => uniqueNames.add(name));\n }\n });\n\n return uniqueNames;\n }\n\n extractNamesFromLink(links: any[]) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n const { sourceField, targetField } = this._spec;\n\n // 遍历所有的边\n links.forEach((link: any) => {\n isValid(link[sourceField]) && uniqueNames.add(link[sourceField]);\n isValid(link[targetField]) && uniqueNames.add(link[targetField]);\n });\n\n return uniqueNames;\n }\n\n getDimensionField() {\n return [this._spec.categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n // overwrite the getRawDataStatisticsByField of base-series\n if (!this._rawStatisticsCache) {\n this._rawStatisticsCache = {};\n }\n\n if (!this._rawStatisticsCache[field]) {\n const canUseViewStatistics = this._viewDataStatistics && this.getViewData().transformsArr.length <= 1;\n\n if (canUseViewStatistics && this._viewDataStatistics.latestData?.[field]) {\n this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field];\n } else if (this._rawData) {\n this._rawStatisticsCache[field] = {\n values: this._collectByField(field)\n };\n }\n }\n\n return this._rawStatisticsCache[field];\n }\n\n private _collectByField(field: string): string[] {\n const keyArray: any[] = [];\n const rawData = this.getRawData()?.latestData?.[0];\n\n if (!rawData) {\n return [];\n }\n\n if ((rawData as any).links) {\n //node-link型数据\n if ((rawData as any).nodes?.length) {\n (rawData as any).nodes.forEach((node: any) => {\n if (node[this._seriesField]) {\n keyArray.push(node[this._seriesField]);\n }\n });\n }\n } else if ((rawData as any).nodes) {\n const set = new Set<string>();\n // 层级型数据\n collectHierarchyField(set, (rawData as any).nodes, this._seriesField);\n\n return Array.from(set);\n }\n\n return keyArray;\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height);\n\n // calculate the sankeyLayout\n this.getViewData().reRunAllTransform();\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return undefined;\n }\n\n getActiveMarks(): IMark[] {\n return [this._nodeMark, this._linkMark];\n }\n\n getMarkData(datum: Datum) {\n if (datum.datum) {\n if (isArray(datum.datum)) {\n return datum.datum[datum.datum.length - 1];\n }\n return datum.datum;\n }\n return datum;\n }\n}\n\nexport const registerSankeySeries = () => {\n registerRectMark();\n registerLinkPathMark();\n registerTextMark();\n registerSankeyAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(SankeySeries.type, SankeySeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/sankey/sankey.ts"],"names":[],"mappings":"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","file":"sankey.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { Datum, IRectMarkSpec, ILinkPathMarkSpec, IComposedTextMarkSpec, StringOrNumber } from '../../typings';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { ISankeyOpt } from '../../data/transforms/sankey';\nimport { sankeyFormat, sankeyLayout, collectHierarchyField } from '../../data/transforms/sankey';\nimport { sankeyNodes } from '../../data/transforms/sankey-nodes';\nimport { sankeyLinks } from '../../data/transforms/sankey-links';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { DataView } from '@visactor/vdataset';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { Event_Bubble_Level } from '../../constant/event';\nimport { SankeySeriesTooltipHelper } from './tooltip-helper';\nimport type { IBounds } from '@visactor/vutils';\nimport { Bounds, array, isNil, isValid, isNumber, isArray } from '@visactor/vutils';\nimport { registerSankeyAnimation } from './animation';\nimport type { ISankeySeriesSpec, SankeyLinkElement, ISankeyLabelSpec, ISankeyAnimationParams } from './interface';\nimport type { ExtendEventParam } from '../../event/interface';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { ColorOrdinalScale } from '../../scale/color-ordinal-scale';\nimport { registerRectMark } from '../../mark/rect';\nimport { registerTextMark } from '../../mark/text';\nimport { registerLinkPathMark } from '../../mark/link-path';\nimport { sankeySeriesMark } from './constant';\nimport { flatten } from '../../data/transforms/flatten';\nimport type { SankeyNodeElement } from '@visactor/vlayouts';\nimport { Factory } from '../../core/factory';\nimport type { IGlyphMark, ILinkPathMark, IMark, IMarkGraphic, IRectMark, ITextMark } from '../../mark/interface';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { SankeySeriesSpecTransformer } from './sankey-transformer';\nimport { getFormatFunction } from '../../component/util';\nimport type { ILabelSpec } from '../../component';\nimport { getDatumOfGraphic } from '../../util';\nimport { addRuntimeState } from '../../mark/utils/glyph';\nimport { sankey } from '../../theme/builtin/common/series/sankey';\n\nexport class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.sankey;\n type = SeriesTypeEnum.sankey;\n\n static readonly transformerConstructor = SankeySeriesSpecTransformer as any;\n readonly transformerConstructor = SankeySeriesSpecTransformer;\n\n static readonly mark: SeriesMarkMap = sankeySeriesMark;\n static readonly builtInTheme = { sankey };\n\n private _nodeMark: IRectMark;\n private _linkMark: ILinkPathMark;\n\n private _nodeLayoutZIndex = LayoutZIndex.Node;\n private _labelLayoutZIndex = LayoutZIndex.Label;\n\n protected _nodesSeriesData?: DataView;\n protected _linksSeriesData?: DataView;\n\n private _viewBox: IBounds = new Bounds();\n\n protected _categoryField!: string;\n private _colorScale: IBaseScale;\n private _nodeList: (string | number)[];\n private _needClear: boolean;\n\n get direction() {\n return this._spec.direction ?? 'horizontal';\n }\n getCategoryField() {\n return this._categoryField;\n }\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n protected _valueField!: string;\n getValueField() {\n return this._valueField;\n }\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? this._spec.categoryField);\n }\n\n initData() {\n super.initData();\n const viewData = this.getViewData();\n const rawData = this.getRawData();\n\n if (rawData && viewData) {\n // 初始化桑基图数据\n registerDataSetInstanceTransform(this._dataSet, 'sankeyLayout', sankeyLayout);\n registerDataSetInstanceTransform(this._dataSet, 'sankeyFormat', sankeyFormat);\n\n rawData.transform(\n {\n type: 'sankeyFormat'\n },\n false\n );\n\n viewData.transform({\n type: 'sankeyLayout',\n options: {\n view: () => {\n return {\n x0: this._viewBox.x1,\n x1: this._viewBox.x2,\n y0: this._viewBox.y1,\n y1: this._viewBox.y2\n };\n },\n sourceField: this._spec.sourceField,\n targetField: this._spec.targetField,\n valueField: this._spec.valueField,\n direction: this.direction,\n crossNodeAlign: this._spec.crossNodeAlign,\n nodeAlign: this._spec.nodeAlign ?? 'justify',\n nodeGap: this._spec.nodeGap ?? 8,\n nodeWidth: this._spec.nodeWidth ?? 10,\n linkWidth: this._spec.linkWidth,\n minStepWidth: this._spec.minStepWidth,\n minNodeHeight: this._spec.minNodeHeight ?? 4,\n maxNodeHeight: this._spec.maxNodeHeight,\n minLinkHeight: this._spec.minLinkHeight,\n maxLinkHeight: this._spec.maxLinkHeight,\n iterations: this._spec.iterations,\n nodeKey: this._spec.nodeKey,\n linkSortBy: this._spec.linkSortBy,\n nodeSortBy: this._spec.nodeSortBy,\n setNodeLayer: this._spec.setNodeLayer,\n dropIsolatedNode: this._spec.dropIsolatedNode,\n nodeHeight: this._spec.nodeHeight,\n linkHeight: this._spec.linkHeight,\n equalNodeHeight: this._spec.equalNodeHeight,\n linkOverlap: this._spec.linkOverlap,\n inverse: this._spec.inverse\n } as ISankeyOpt,\n level: TransformLevel.sankeyLayout\n });\n\n // 注册扁平化算法\n const { dataSet } = this._option;\n registerDataSetInstanceTransform(dataSet, 'sankeyNodes', sankeyNodes);\n registerDataSetInstanceTransform(dataSet, 'flatten', flatten);\n const nodesDataView = new DataView(dataSet, { name: `sankey-node-${this.id}-data` });\n nodesDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n nodesDataView.transform({\n type: 'sankeyNodes'\n });\n // sankeyNode进行扁平化处理(针对层级数据)\n nodesDataView.transform(\n {\n type: 'flatten',\n options: {\n callback: (node: SankeyNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n }\n },\n false\n );\n\n nodesDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._nodesSeriesData = nodesDataView;\n\n registerDataSetInstanceTransform(dataSet, 'sankeyLinks', sankeyLinks);\n const linksDataView = new DataView(dataSet, { name: `sankey-link-${this.id}-data` });\n linksDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n linksDataView.transform({\n type: 'sankeyLinks'\n });\n\n linksDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n this._linksSeriesData = linksDataView;\n }\n }\n\n compileData() {\n super.compileData();\n\n this._linkMark?.compileData();\n this._nodeMark?.compileData();\n }\n\n initMark(): void {\n // 为了让sankey 正常的滚动,interactive 需要设置为true,不然在空白处会滚动不了\n this._rootMark.setMarkConfig({\n overflow: this._spec.overflow,\n interactive: !!this._spec.overflow\n });\n const nodeMark = this._createMark(SankeySeries.mark.node, {\n isSeriesMark: true,\n dataView: this._nodesSeriesData\n }) as IRectMark;\n if (nodeMark) {\n nodeMark.setMarkConfig({ zIndex: this._nodeLayoutZIndex });\n this._nodeMark = nodeMark;\n }\n\n const linkMark = this._createMark(SankeySeries.mark.link, {\n dataView: this._linksSeriesData\n }) as ILinkPathMark;\n if (linkMark) {\n this._linkMark = linkMark;\n }\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n\n this._markAttributeContext.valueToNode = this.valueToNode.bind(this);\n this._markAttributeContext.valueToLink = this.valueToLink.bind(this);\n }\n\n valueToNode(value: StringOrNumber | StringOrNumber[]) {\n const nodes = this._nodesSeriesData.latestData;\n const specifyValue = array(value)[0];\n return nodes && nodes.find((node: SankeyNodeElement) => node.key === specifyValue);\n }\n\n valueToLink(value: StringOrNumber | StringOrNumber[]) {\n const links = this._linksSeriesData.latestData;\n const specifyValue = array(value);\n\n return (\n links &&\n links.find(\n (link: SankeyLinkElement) => link && link.source === specifyValue[0] && link.target === specifyValue[1]\n )\n );\n }\n\n valueToPositionX(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.x0;\n }\n valueToPositionY(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.y0;\n }\n\n initMarkStyle(): void {\n this._initNodeMarkStyle();\n this._initLinkMarkStyle();\n }\n\n protected _initNodeMarkStyle() {\n const nodeMark = this._nodeMark;\n if (!nodeMark) {\n return;\n }\n\n this.setMarkStyle<IRectMarkSpec>(\n nodeMark,\n {\n x: (datum: Datum) => {\n return datum.x0;\n },\n x1: (datum: Datum) => datum.x1,\n y: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Mark\n );\n\n this.setMarkStyle(\n nodeMark,\n {\n fill: this._spec.node.style?.fill ?? this._fillByNode\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n protected _fillByNode = (datum: Datum) => {\n if (datum && datum.sourceRect && datum.targetRect) {\n return this._fillByLink(datum);\n }\n\n const fill = this._spec.node?.style?.fill;\n\n if (isValid(fill)) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const colorScale = this._option?.globalScale?.getScale('color');\n const nodeDatum = datum?.datum ? datum.datum : datum;\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n return this._colorScale?.scale(this._getNodeNameFromData(datum));\n };\n\n protected _fillByLink = (datum: Datum) => {\n const fill = this._spec.link?.style?.fill;\n\n if (fill) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const sourceNode = this._nodesSeriesData.latestData?.find((entry: any) => datum.source === entry.key);\n const nodeDatum = sourceNode?.datum;\n const colorScale = this._option?.globalScale?.getScale('color');\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n const sourceName = isNumber(datum.source) ? this.getNodeList()[datum.source] : datum.source;\n return this._colorScale?.scale(sourceName);\n };\n\n protected _initLinkMarkStyle() {\n const linkMark = this._linkMark;\n if (!linkMark) {\n return;\n }\n\n (linkMark as IGlyphMark).setGlyphConfig({\n direction: this.direction\n });\n\n this.setMarkStyle<ILinkPathMarkSpec>(\n linkMark,\n {\n x0: (datum: Datum) => datum.x0,\n x1: (datum: Datum) => datum.x1,\n y0: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1,\n thickness: (datum: Datum) => datum.thickness\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n\n this.setMarkStyle(\n linkMark,\n {\n fill: this._spec.link.style?.fill ?? this._fillByLink\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n initLabelMarkStyle(labelMark: ITextMark, labelSpec: ILabelSpec) {\n if (!labelMark) {\n return;\n }\n const position = labelSpec.position;\n\n if (position && position.includes('inside')) {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: '#ffffff',\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (datum: Datum) => (labelSpec as ISankeyLabelSpec).limit ?? datum.x1 - datum.x0\n });\n } else {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: this._fillByNode,\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (labelSpec as ISankeyLabelSpec).limit\n });\n }\n\n labelMark.setMarkConfig({ zIndex: this._labelLayoutZIndex });\n }\n\n private _createText(datum: Datum, labelSpec: ISankeyLabelSpec) {\n if (isNil(datum) || isNil(datum.datum)) {\n return '';\n }\n let text = datum.datum[this._spec.categoryField] || '';\n const { formatMethod, formatter } = labelSpec || {};\n\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, text, datum.datum);\n if (formatFunc) {\n text = formatFunc(...args, { series: this });\n }\n return text;\n }\n\n initAnimation() {\n const animationParams: ISankeyAnimationParams = {\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IMarkAnimateSpec<string>)?.preset;\n if (this._nodeMark) {\n this._nodeMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyNode')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.node, this._spec, this._markAttributeContext)\n )\n );\n }\n if (this._linkMark) {\n this._linkMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyLinkPath')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.link, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n\n this._nodesSeriesData?.target.addListener('change', this.nodesSeriesDataUpdate.bind(this));\n this._linksSeriesData?.target.addListener('change', this.linksSeriesDataUpdate.bind(this));\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n // 没有关闭交互时,才增加这些交互事件\n if (this._option.disableTriggerEvent !== true) {\n if (emphasisSpec.enable && (emphasisSpec.effect === 'adjacency' || emphasisSpec.effect === 'related')) {\n const event = emphasisSpec.trigger === 'hover' ? 'pointerover' : 'pointerdown';\n\n this.event.on(event, { level: Event_Bubble_Level.chart }, this._handleEmphasisElement);\n }\n }\n }\n\n private nodesSeriesDataUpdate() {\n this._nodeMark.getData().updateData();\n\n this._nodeList = null;\n this._setNodeOrdinalColorScale();\n }\n\n private linksSeriesDataUpdate() {\n this._linkMark.getData().updateData();\n }\n\n protected _handleEmphasisElement = (params: ExtendEventParam) => {\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n\n const graphic = params.item;\n\n if (emphasisSpec.effect === 'adjacency') {\n if (graphic && params.mark === this._nodeMark) {\n this._handleNodeAdjacencyClick(graphic);\n } else if (graphic && params.mark === this._linkMark) {\n this._handleLinkAdjacencyClick(graphic);\n } else {\n this._handleClearEmpty();\n }\n } else if (emphasisSpec.effect === 'related') {\n if (graphic && params.mark === this._nodeMark) {\n this._handleNodeRelatedClick(graphic);\n } else if (graphic && params.mark === this._linkMark) {\n this._handleLinkRelatedClick(graphic);\n } else {\n this._handleClearEmpty();\n }\n }\n };\n\n protected _handleClearEmpty = () => {\n if (!this._needClear) {\n return;\n }\n\n const allNodeElements = this._nodeMark?.getGraphics();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark?.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n // const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n\n allNodeElements.forEach(el => {\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n allLinkElements.forEach(el => {\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n\n this._needClear = false;\n };\n\n protected _handleNodeAdjacencyClick = (graphic: IMarkGraphic) => {\n const nodeDatum = getDatumOfGraphic(graphic) as Datum;\n const highlightNodes: string[] = [nodeDatum.key];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n\n if (linkDatum.source === nodeDatum.key) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true); // 设置上用户配置选中状态\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true); // 设置上用户配置选中状态\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkAdjacencyClick = (graphic: IMarkGraphic) => {\n const curLinkDatum = getDatumOfGraphic(graphic) as Datum;\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getGraphics();\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n allLinkElements.forEach(linkEl => {\n if (linkEl === graphic) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleNodeRelatedClick = (graphic: IMarkGraphic) => {\n const nodeDatum = getDatumOfGraphic(graphic) as Datum;\n const allNodeElements = this._nodeMark.getGraphics();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = (getDatumOfGraphic(allLinkElements[0]) as Datum)?.parents ? 'parents' : 'source';\n\n if (father === 'source') {\n // node-link 型数据\n const highlightNodes: string[] = [nodeDatum.key];\n const highlightLinks: string[] = [];\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n const father = linkDatum?.parents ? 'parents' : 'source';\n\n if (array(linkDatum[father]).includes(nodeDatum.key)) {\n // 下游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n // 下游link的目标节点\n const targetNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.target;\n });\n\n // 以下游link的目标节点为起点的links\n let targetNodeSourceLinks: any[] = targetNode.data[0].sourceLinks as any[];\n while (targetNodeSourceLinks?.length > 0) {\n const newTargetNodeSourceLinks: any[] = [];\n targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum: any) => {\n if (!highlightLinks.includes(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index)) {\n highlightLinks.push(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index);\n // 该links的目标节点\n if (!highlightNodes.includes(targetNodeSourceLinkDatum.target)) {\n highlightNodes.push(targetNodeSourceLinkDatum.target);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === targetNodeSourceLinkDatum.target;\n });\n // 以该目标节点为起点的links\n newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n targetNodeSourceLinks = newTargetNodeSourceLinks;\n return;\n }\n }\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n const sourceNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.source;\n });\n let sourceNodeTargetLinks: any[] = sourceNode.data[0].targetLinks as any;\n while (sourceNodeTargetLinks?.length > 0) {\n const newSourceNodeTargetLinks: any[] = [];\n sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum: any) => {\n if (!highlightLinks.includes(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index)) {\n highlightLinks.push(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index);\n if (!highlightNodes.includes(sourceNodeTargetLinkDatum.source)) {\n highlightNodes.push(sourceNodeTargetLinkDatum.source);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === sourceNodeTargetLinkDatum.source;\n });\n newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n sourceNodeTargetLinks = newSourceNodeTargetLinks;\n return;\n }\n }\n }\n });\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n\n if (highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n } else {\n // 层级型数据\n const highlightNodes: string[] = [nodeDatum.key];\n\n const upstreamLinks = nodeDatum.targetLinks.reduce((res: any[], link: any) => {\n const dividedLinks = array((link as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = dividedLink.parents;\n const len = parents.length;\n\n for (let i = 0; i < len; i++) {\n const source = parents[i].key;\n const target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key;\n const value = dividedLink.value;\n\n // 检查 res 数组中是否已存在相同的 source 和 target\n const existingItem = res.find(item => item.source === source && item.target === target);\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 res 数组中\n res.push({ source, target, value });\n }\n }\n });\n return res;\n }, []);\n\n allLinkElements.forEach((linkEl: IMarkGraphic, i: number) => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n const originalDatum = linkDatum.datum;\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => entry[father].some((par: any) => par.key === nodeDatum.key))\n : null;\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum.reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio });\n\n return;\n }\n\n if (upSelectedLink) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {\n ratio: upSelectedLink.value / linkDatum.value\n }); // 设置默认的部分高亮\n\n return;\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n\n return;\n });\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);\n }\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkRelatedClick = (graphic: IMarkGraphic) => {\n const allNodeElements = this._nodeMark.getGraphics();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n const allLinkElements = this._linkMark.getGraphics();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = (getDatumOfGraphic(graphic) as Datum) ? 'parents' : 'source';\n if (father === 'source') {\n // const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n if (this._linkMark) {\n allLinkElements.forEach(linkEl => {\n // linkEl.removeState(states);\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n }\n\n if (this._nodeMark) {\n allNodeElements.forEach(el => {\n // el.removeState(states);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n el.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n });\n }\n } else {\n const curLinkDatum = getDatumOfGraphic(graphic) as Datum;\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n const upstreamLinks: Array<{ source: string; target: string; value: number }> = [];\n\n const dividedLinks = array((curLinkDatum as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = (dividedLink as any).parents;\n const len = parents.length;\n for (let i = 0; i < len - 1; i++) {\n const source = parents[i].key;\n const target = parents[i + 1].key;\n const value = dividedLink.value;\n\n // 检查 upstreamLinks 数组中是否已存在相同的 source 和 target\n const existingItem = upstreamLinks.find(item => item.source === source && item.target === target);\n upstreamLinks.push({\n source: parents[i].key,\n target: parents[i + 1].key,\n value: dividedLink.value\n });\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 upstreamLinks 数组中\n upstreamLinks.push({ source, target, value });\n }\n }\n });\n\n allLinkElements.forEach(linkEl => {\n const linkDatum = getDatumOfGraphic(linkEl) as Datum;\n const originalDatum = linkDatum.datum;\n\n if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) {\n // 自身\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n\n return;\n }\n\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => {\n const parentKeysList = entry.parents.map((item: any) => item.key);\n return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);\n })\n : null;\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum\n .filter((entry: any) => {\n return entry.parents.some((par: any, index: number) => {\n return par.key === curLinkDatum.source && entry.parents[index + 1]?.key === curLinkDatum.target;\n });\n })\n .reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n\n return;\n }\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (upSelectedLink) {\n // 点击节点的上游一层的节点\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n addRuntimeState(linkEl, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {\n ratio: upSelectedLink.value / (linkDatum as Datum).value\n }); // 设置默认的部分高亮\n\n return;\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n\n return;\n });\n\n this._highLightElements(allNodeElements, highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _highLightElements(graphics: IMarkGraphic[], highlightNodes: string[]) {\n if (!graphics || !graphics.length) {\n return;\n }\n\n graphics.forEach(g => {\n g.removeState([STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS]);\n\n if (highlightNodes.includes((getDatumOfGraphic(g) as Datum).key)) {\n g.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);\n } else {\n g.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);\n }\n });\n }\n\n protected initTooltip() {\n this._tooltipHelper = new SankeySeriesTooltipHelper(this);\n this._nodeMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nodeMark);\n this._linkMark && this._tooltipHelper.activeTriggerSet.mark.add(this._linkMark);\n }\n\n _setNodeOrdinalColorScale() {\n const colorScale = this._option?.globalScale?.getScale('color');\n\n if ((colorScale as any)?._specified) {\n this._colorScale = colorScale;\n return;\n }\n\n let colorDomain: string[];\n let colorRange: string[];\n\n if (colorScale) {\n colorDomain = colorScale.domain();\n colorRange = colorScale.range();\n }\n\n if (!colorRange) {\n colorRange = this._getDataScheme() as unknown as string[];\n }\n\n if (!colorDomain || isNil(colorDomain[0])) {\n // no validate domain\n colorDomain = this.getNodeList();\n\n if (colorDomain && colorDomain.length > 10) {\n colorRange = (this._getDataScheme()[1] as any)?.scheme;\n }\n }\n\n const ordinalScale = new ColorOrdinalScale();\n\n ordinalScale.domain(colorDomain).range?.(colorRange);\n\n this._colorScale = ordinalScale;\n return;\n }\n\n getNodeList() {\n if (this._nodeList) {\n return this._nodeList;\n }\n\n const data = this._rawData.latestData[0];\n\n const nodeList = data?.nodes\n ? data.nodes[0]?.children\n ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField))\n : data.nodes.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n })\n : data?.links\n ? Array.from(this.extractNamesFromLink(data.links))\n : data?.values?.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n });\n\n this._nodeList = nodeList;\n\n return nodeList;\n }\n\n _getNodeNameFromData(datum: Datum) {\n return datum?.datum ? datum.datum[this._spec.categoryField] : datum.key ?? datum[this._spec.categoryField];\n }\n\n extractNamesFromTree(tree: any, categoryName: string) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n\n // 遍历当前节点的子节点\n tree.forEach((node: any) => {\n // 将当前节点的 name 值添加到 Set 中\n uniqueNames.add(node[categoryName]);\n\n // 如果当前节点还有子节点,则递归调用该函数继续遍历子节点\n if (node.children) {\n const childNames = this.extractNamesFromTree(node.children, categoryName);\n childNames.forEach(name => uniqueNames.add(name));\n }\n });\n\n return uniqueNames;\n }\n\n extractNamesFromLink(links: any[]) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n const { sourceField, targetField } = this._spec;\n\n // 遍历所有的边\n links.forEach((link: any) => {\n isValid(link[sourceField]) && uniqueNames.add(link[sourceField]);\n isValid(link[targetField]) && uniqueNames.add(link[targetField]);\n });\n\n return uniqueNames;\n }\n\n getDimensionField() {\n return [this._spec.categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n // overwrite the getRawDataStatisticsByField of base-series\n if (!this._rawStatisticsCache) {\n this._rawStatisticsCache = {};\n }\n\n if (!this._rawStatisticsCache[field]) {\n const canUseViewStatistics = this._viewDataStatistics && this.getViewData().transformsArr.length <= 1;\n\n if (canUseViewStatistics && this._viewDataStatistics.latestData?.[field]) {\n this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field];\n } else if (this._rawData) {\n this._rawStatisticsCache[field] = {\n values: this._collectByField(field)\n };\n }\n }\n\n return this._rawStatisticsCache[field];\n }\n\n private _collectByField(field: string): string[] {\n const keyArray: any[] = [];\n const rawData = this.getRawData()?.latestData?.[0];\n\n if (!rawData) {\n return [];\n }\n\n if ((rawData as any).links) {\n //node-link型数据\n if ((rawData as any).nodes?.length) {\n (rawData as any).nodes.forEach((node: any) => {\n if (node[this._seriesField]) {\n keyArray.push(node[this._seriesField]);\n }\n });\n }\n } else if ((rawData as any).nodes) {\n const set = new Set<string>();\n // 层级型数据\n collectHierarchyField(set, (rawData as any).nodes, this._seriesField);\n\n return Array.from(set);\n }\n\n return keyArray;\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height);\n\n // calculate the sankeyLayout\n this.getViewData().reRunAllTransform();\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return undefined;\n }\n\n getActiveMarks(): IMark[] {\n return [this._nodeMark, this._linkMark];\n }\n\n getMarkData(datum: Datum) {\n if (datum.datum) {\n if (isArray(datum.datum)) {\n return datum.datum[datum.datum.length - 1];\n }\n return datum.datum;\n }\n return datum;\n }\n}\n\nexport const registerSankeySeries = () => {\n registerRectMark();\n registerLinkPathMark();\n registerTextMark();\n registerSankeyAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(SankeySeries.type, SankeySeries);\n};\n"]}
|
package/esm/compile/compiler.js
CHANGED
|
@@ -153,15 +153,16 @@ export class Compiler {
|
|
|
153
153
|
return this._rootMarks.some((mark => traverseGroupMark(mark, (m => m.isCommited()), null, null, !0)));
|
|
154
154
|
}
|
|
155
155
|
_doRender(immediately) {
|
|
156
|
-
var _a, _b, _c, _d;
|
|
156
|
+
var _a, _b, _c, _d, _e, _f;
|
|
157
|
+
null === (_b = null === (_a = this._option.performanceHook) || void 0 === _a ? void 0 : _a.beforeDoRender) || void 0 === _b || _b.call(_a, this._compileChart.getOption().globalInstance),
|
|
157
158
|
this._stage && (this._rootMarks.forEach((g => {
|
|
158
159
|
traverseGroupMark(g, (m => {
|
|
159
160
|
m.needClear && (this._progressiveMarks || m.runAnimation(), m.clearExitGraphics(),
|
|
160
161
|
m.needClear = !1);
|
|
161
162
|
}), null, !0);
|
|
162
|
-
})), null === (
|
|
163
|
+
})), null === (_d = null === (_c = this._option.performanceHook) || void 0 === _c ? void 0 : _c.beforeVRenderDraw) || void 0 === _d || _d.call(_c, this._compileChart.getOption().globalInstance),
|
|
163
164
|
this._stage.disableDirtyBounds(), this._stage.afterNextRender(this._handleAfterNextRender),
|
|
164
|
-
immediately && (this._stage.render(), null === (
|
|
165
|
+
immediately && (this._stage.render(), null === (_f = null === (_e = this._option.performanceHook) || void 0 === _e ? void 0 : _e.afterVRenderDraw) || void 0 === _f || _f.call(_e, this._compileChart.getOption().globalInstance)));
|
|
165
166
|
}
|
|
166
167
|
renderMarks() {
|
|
167
168
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compile/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK1F,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAOpC,MAAM,OAAO,QAAQ;IAoBnB,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAuBD,YAAY,SAA2B,EAAE,MAAqB;QA5CtD,WAAM,GAAW,CAAC,CAAC;QAajB,eAAU,GAAY,EAAE,CAAC;QAUzB,mBAAc,GAAgD,IAAI,GAAG,EAAE,CAAC;QACxE,qBAAgB,GAAgD,IAAI,GAAG,EAAE,CAAC;QAC1E,qBAAgB,GAAgD,IAAI,GAAG,EAAE,CAAC;QAEpF,aAAQ,GAAY,KAAK,CAAC;QAUlB,cAAS,GAAY,KAAK,CAAC;QAK3B,kBAAa,GAAW,IAAI,CAAC;QAwI3B,oBAAe,GAAG,GAAG,EAAE;;YAC/B,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,QAAQ,EAAE,0CAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACrG,CAAC,CAAC;QAEQ,sBAAiB,GAAG,GAAG,EAAE;;YACjC,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,QAAQ,EAAE,0CAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC;QAgFM,2BAAsB,GAAG,GAAG,EAAE;;YACpC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBACnD,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;aACjC;YAED,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,0CAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;oBAC7D,KAAK,EAAE,IAAI,CAAC,aAAa;oBACzB,MAAM,EAAE,MAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,0CAAE,cAAc;iBACvD,CAAC,CAAC;aACJ;YACD,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,gBAAgB,mDAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC;QAClG,CAAC,CAAC;QAkbM,2BAAsB,GAAG,GAAG,EAAE;YACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACpC,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;wBAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;qBAC1B;gBACH,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC;QAnqBA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAKD,SAAS;;QACP,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAC,gBAAgB,GAAG,YAAY,CAAC;IAC7D,CAAC;IAMD,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,QAAQ;;QACN,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO;SACR;QAED,MAAM,EACJ,cAAc,EACd,GAAG,EACH,IAAI,EACJ,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,UAAU,EACX,GAAG,IAAI,CAAC,OAAO,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM;YACT,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,mCACjB,IAAI,KAAK,iBACR,UAAU,EACV,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,OAAO,EACpB,SAAS,EAAE,MAAA,IAAI,CAAC,UAAU,CAAC,GAAG,mCAAI,IAAI,EACtC,MAAM,EAAE,MAAA,IAAI,CAAC,UAAU,CAAC,MAAM,mCAAI,IAAI,EACtC,GAAG,EACH,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAC7B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAC7C,YAAY,EAAE,CAAC,KAAa,EAAE,EAAE;;oBAC9B,MAAA,IAAI,CAAC,aAAa,0CAAE,cAAc,EAAE,CAAC;oBACrC,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,YAAY,mDAAG,KAAK,CAAC,CAAC;gBACrC,CAAC,EACD,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EACrC,kBAAkB,EAAE,IAAI,EACxB,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAC3B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EACnC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EACrD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAC/B,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EACrD,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,EACzD,KAAK,EAAE;oBACL,aAAa,EAAE,aAAa;oBAC5B,kBAAkB,EAAE,kBAAkB;iBACvC,EACD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAC/B,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAClE,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,mCAAI,EAAE,CAAC,EACb,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAC;QAGzC,IAAI,CAAC,MAAc,CAAC,QAAQ,CAAC;YAC5B,MAAM,EAAE;gBACN,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,CAAC;aACR;YACD,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,SAAS;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,WAAW,CAAC;YACxB,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,MAAM,iBAAiB,GACrB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,aAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC1E,WAAW,KAAK,KAAK;YACrB,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAC7C,IAAI,CAAC,MAAiC,EACtC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAClC,CAAC;SACd;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAGvB,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7E,IAAI,WAAW,KAAK,KAAK,EAAE;YAEzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAEvC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;IACzC,CAAC;IAUO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;aAChC;SACF;IACH,CAAC;IAED,OAAO,CAAC,GAAuC,EAAE,MAA4B;QAC3E,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QAED,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;QAED,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,YAAY,EAAE,CAAC;IACvB,CAAC;IACS,eAAe;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,GAAuC;QAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAEtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,WAA0B;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;YACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC,CAAsB,CAAC;IAC1B,CAAC;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjC,OAAO,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjC,OAAO,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAgBO,SAAS,CAAC,WAAoB;;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC1B,iBAAiB,CACf,CAAC,EACD,CAAC,CAAC,EAAE;oBACF,IAAI,CAAC,CAAC,SAAS,EAAE;wBACf,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;4BAC3B,CAAC,CAAC,YAAY,EAAE,CAAC;yBAClB;wBACD,CAAC,CAAC,iBAAiB,EAAE,CAAC;wBACtB,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;qBACrB;gBACH,CAAC,EACD,IAAI,EACJ,IAAI,CACL,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,iBAAiB,mDAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC;YAEjG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEzD,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAErB,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,gBAAgB,mDAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC;aACjG;SACF;IACH,CAAC;IAED,WAAW;;QACT,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5B,OAAO;SACR;QAED,GAAG,CAAC,4BAA4B,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAGxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,MAAM,EAAE;YAE5C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC;YAC1C,MAAA,IAAI,CAAC,aAAa,0CAAE,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC;YAE3C,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAE3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,GAAG,CAAC,4BAA4B,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,cAA4B,EAAE;QAC5C,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAG,WAAW,CAAC;QAClH,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5F,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;YAKhC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACpF,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM;gBAEL,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,QAAQ;oBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBAClB,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;aACN;QACH,CAAC,CAAC,CAAC;QAGH,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,CAAC,CAAC,aAAa,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAA0B;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAGpD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;YACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7E;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,aAAa,CAAC,OAAoB,EAAE,WAAoB,IAAI;QAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,IACE,OAAO;YACP,CAAC,CAAC,WAAW;gBACX,WAAW,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;gBAC7B,WAAW,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;gBAC7B,WAAW,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;gBAC7B,WAAW,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAChC;YACC,IAAI,CAAC,MAAc,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SACpD;IACH,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc,EAAE,WAAoB,IAAI;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC;QAEnE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;YAGpB,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aAC/B;SACF;IACH,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;SAChC;IACH,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,MAAc;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;IAGH,CAAC;IAED,UAAU,CAAC,OAAoB,EAAE,WAAoB,IAAI;QACvD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB,CACd,MAAuB,EACvB,IAAY,EACZ,QAAsD;;QAGtD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;YACtC,OAAO;SACR;QACD,IAAI,MAAM,KAAK,iBAAiB,CAAC,KAAK,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,eAAe,GAAG,UAAU,KAAU;;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC7B,IAAI,WAAW,GAAiB,IAAI,CAAC;gBAErC,IAAI,OAAO,EAAE;oBACX,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBAC5B,WAAW,GAAG,OAAO,CAAC;qBACvB;yBAAM;wBACL,WAAW,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAA4B,CAAC;qBAC9E;iBACF;gBACD,MAAM,OAAO,GAAG,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,mCAAI,EAAE,CAA6B,CAAC;gBACzE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE3E,MAAM,MAAM,GAA+B;oBACzC,KAAK;oBACL,IAAI;oBACJ,MAAM;oBACN,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC;oBACrC,MAAM;oBACN,OAAO;oBACP,UAAU;oBACV,WAAW;iBACZ,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;YAIvE,MAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,CAAC,IAAI,EAAE,eAAsB,CAAC,CAAC;SAC7D;aAAM,IAAI,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE;YAC9C,MAAM,eAAe,GAAG,SAAS,eAAe,CAAC,KAAU;gBAEzD,MAAM,MAAM,GAA+B;oBACzC,KAAK;oBACL,IAAI;oBACJ,MAAM;oBACN,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,WAAW,EAAE,IAAI;iBAClB,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;YACzE,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;SACvD;aAAM,IAAI,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE;YAC9C,MAAM,eAAe,GAAG,SAAS,eAAe,CAAC,KAAU;gBAEzD,MAAM,MAAM,GAA+B;oBACzC,KAAK;oBACL,IAAI;oBACJ,MAAM;oBACN,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,WAAW,EAAE,IAAI;iBAClB,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;YACzE,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,QAAQ,EAAE,0CAAE,MAAM,CAAC;YAC7C,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;SACvD;IACH,CAAC;IAED,mBAAmB,CACjB,MAAuB,EACvB,IAAY,EACZ,QAAsD;;QAEtD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;YACtC,OAAO;SACR;QACD,IAAI,MAAM,KAAK,iBAAiB,CAAC,KAAK,EAAE;YACtC,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,QAAQ,CAAC;YACpE,eAAe,KAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA,CAAC;YAC3E,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACtC;aAAM,IAAI,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,QAAQ,CAAC;YACtE,eAAe,KAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA,CAAC;YAC5E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxC;aAAM,IAAI,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE;YAC9C,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,QAAQ,EAAE,0CAAE,MAAM,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,QAAQ,CAAC;YACtE,YAAY,IAAI,eAAe,KAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA,CAAC;YAC5F,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxC;IACH,CAAC;IAES,YAAY;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACtE;QAGD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;;QACL,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAW,CAAC;QAE7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,MAAM,MAAK,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAA,EAAE;YAEvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAMD,cAAc,CAAC,qBAA8B,KAAK;QAEhD,IAAI,kBAAkB,EAAE;YAEtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC1B,iBAAiB,CACf,CAAC,EACD,CAAC,CAAC,EAAE;oBACF,CAAC,CAAC,aAAa,EAAE,CAAC;gBACpB,CAAC,EACD,IAAI,EACJ,IAAI,CACL,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtD;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAcD,WAAW,CAAC,IAAW;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,IAAW;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAEzD,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAEjC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,cAAc;;QACpB,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,QAAQ,EAAE,0CAAE,MAAM,CAAC;IACjF,CAAC;IAEO,yBAAyB;QAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAEzC,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;iBAC5C;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,oBAAoB;QAC1B,MAAM,KAAK,GAAY,EAAE,CAAC;QAE1B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7B,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;oBACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACf;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE;YAC5F,MAAM,GAAG,GAAG,OAAO,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SAC3D;aAAM,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAE;YAC5G,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpC,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;IACH,CAAC;IAgBO,gBAAgB;QACtB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACnC;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;IACH,CAAC;CACF","file":"compiler.js","sourcesContent":["import { ChartEvent, Event_Source_Type } from './../constant/event';\nimport type {\n CompilerListenerParameters,\n ICompiler,\n ICompilerModel,\n IRenderContainer,\n IRenderOption\n} from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { LayoutState } from './interface';\nimport { GrammarType } from './interface/compilable-item';\nimport { isMobileLikeMode, isTrueBrowser } from '../util/env';\nimport { isString } from '../util/type';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isObject, isValid } from '@visactor/vutils';\nimport type { EventSourceType } from '../event/interface';\nimport type { IChart } from '../chart/interface';\nimport { createGroup, Stage, vglobal, waitForAllSubLayers } from '@visactor/vrender-core';\nimport type { IColor, IEventTarget, IGroup, IStage } from '@visactor/vrender-core';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IVChart, IVChartRenderOption } from '../core/interface';\nimport { type IGraphicContext, type IMark, type IMarkGraphic } from '../mark/interface';\nimport { Factory } from '../core/factory';\nimport type { Gesture } from '@visactor/vrender-kits';\nimport { findMarkGraphic, getDatumOfGraphic } from '../util/mark';\nimport { diffMarks, findSimpleMarks, toRenderMode, traverseGroupMark } from './util';\nimport { log } from '../util/debug';\n\ntype EventListener = {\n type: string;\n callback: (...args: any[]) => void;\n};\n\nexport class Compiler implements ICompiler {\n private _count: number = 0;\n /**\n * 更新后缓存的mark\n */\n private _cachedMarks: IMark[];\n\n private _progressiveMarks?: IMark[];\n\n /**\n * 增量渲染相关的raf id\n */\n private _progressiveRafId?: number;\n\n protected _rootMarks: IMark[] = [];\n\n protected _stage: IStage;\n\n protected _rootGroup: IGroup;\n\n getRootGroup() {\n return this._rootGroup;\n }\n\n protected _viewListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _windowListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _canvasListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n\n isInited: boolean = false;\n\n private _nextRafId: number;\n\n protected _width: number;\n protected _height: number;\n\n protected _container: IRenderContainer;\n protected _option: IRenderOption;\n // 已释放标记\n private _released: boolean = false;\n\n /** 布局阶段 */\n private _layoutState?: LayoutState;\n\n private _compileChart: IChart = null;\n\n constructor(container: IRenderContainer, option: IRenderOption) {\n this._container = container;\n this._option = option;\n }\n\n getChart() {\n return this._compileChart;\n }\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._stage?.window.getNativeHandler().nativeCanvas;\n }\n\n _gestureController?: Gesture;\n /**\n * 获取 渲染引擎\n */\n getStage(): IStage | undefined {\n return this._stage;\n }\n\n initView() {\n if (this._released) {\n return;\n }\n this.isInited = true;\n if (this._stage) {\n return;\n }\n\n const {\n autoRefreshDpr,\n dpr,\n mode,\n modeParams,\n gestureConfig,\n interactive,\n clickInterval,\n autoPreventDefault,\n background\n } = this._option;\n vglobal.setEnv(toRenderMode(mode), modeParams ?? {});\n this._stage =\n this._option.stage ??\n (new Stage({\n background,\n width: this._width,\n height: this._height,\n container: this._container.dom ?? null,\n canvas: this._container.canvas ?? null,\n dpr,\n viewBox: this._option.viewBox,\n canvasControled: this._option.canvasControled,\n beforeRender: (stage: IStage) => {\n this._compileChart?.onBeforeRender();\n this._option.beforeRender?.(stage);\n },\n afterRender: this._option.afterRender,\n disableDirtyBounds: true,\n autoRender: true,\n ticker: this._option.ticker,\n pluginList: this._option.pluginList,\n enableHtmlAttribute: this._option.enableHtmlAttribute,\n optimize: this._option.optimize,\n supportsTouchEvents: this._option.supportsTouchEvents,\n supportsPointerEvents: this._option.supportsPointerEvents,\n event: {\n clickInterval: clickInterval,\n autoPreventDefault: autoPreventDefault\n },\n ReactDOM: this._option.ReactDOM,\n autoRefresh: isValid(autoRefreshDpr) ? autoRefreshDpr : !isValid(dpr),\n ...(this._option.renderHooks ?? {})\n }) as unknown as IStage);\n\n this._stage.enableIncrementalAutoRender();\n\n // 之前vgrammar 设置了一些默认配置\n (this._stage as any).setTheme({\n symbol: {\n shape: 'circle',\n size: 8\n },\n text: {\n fontSize: 14,\n fill: '#000000'\n }\n });\n\n const group = createGroup({\n x: 0,\n y: 0,\n width: this._width,\n height: this._height\n });\n group.name = 'root';\n this._stage.defaultLayer.appendChild(group);\n this._rootGroup = group;\n const GestureController =\n (isValid(gestureConfig) ? (gestureConfig as any) : isMobileLikeMode(mode)) &&\n interactive !== false &&\n Factory.getStageEventPlugin('gesture');\n\n if (GestureController) {\n this._gestureController = new GestureController(\n this._stage as unknown as IEventTarget,\n isObject(gestureConfig) ? gestureConfig : {}\n ) as Gesture;\n }\n\n this._setCanvasStyle();\n\n // emit afterRender event\n this.getStage().hooks.afterRender.tap('chart-event', this.handleStageRender);\n\n if (interactive !== false) {\n // 将 view 实例化之前监听的事件挂载到 view 上\n this._viewListeners.forEach(listener => {\n //this._view?.addEventListener(listener.type, listener.callback);\n });\n }\n }\n\n getLayoutState() {\n return this._layoutState;\n }\n\n updateLayoutTag() {\n this._layoutState = LayoutState.before;\n }\n\n protected handleLayoutEnd = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterMarkLayoutEnd, { chart: this._compileChart });\n };\n\n protected handleStageRender = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterRender, { chart: this._compileChart });\n };\n\n private _setCanvasStyle() {\n if (!this._stage) {\n return;\n }\n if (this._container.dom && !isString(this._container.dom)) {\n this._container.dom.style.display = 'block';\n this._container.dom.style.position = 'relative';\n const canvas = this.getCanvas();\n if (canvas) {\n canvas.style.display = 'block';\n }\n }\n }\n\n compile(ctx: { chart: IChart; vChart: IVChart }, option?: IVChartRenderOption) {\n if (this._released) {\n return;\n }\n const { chart } = ctx;\n this._compileChart = chart;\n this.initView();\n if (!this._stage) {\n return;\n }\n\n if (option?.actionSource !== 'render' && this._cachedMarks) {\n this.reuseOrMorphing(option.morphConfig);\n // 清除缓存\n this._cachedMarks = null;\n }\n\n chart.compile();\n chart.afterCompile();\n }\n protected clearNextRender() {\n if (this._nextRafId) {\n vglobal.getSpecifiedCancelAnimationFrame(10)(this._nextRafId);\n this._nextRafId = null;\n\n return true;\n }\n\n return false;\n }\n\n clear(ctx: { chart: IChart; vChart: IVChart }) {\n const { chart } = ctx;\n\n this.clearNextRender();\n chart.clear();\n }\n\n renderNextTick(morphConfig?: IMorphConfig): void {\n if (this._released) {\n return;\n }\n if (this._nextRafId) {\n this.clearNextRender();\n }\n\n this._nextRafId = vglobal.getSpecifiedRequestAnimationFrame(10)(() => {\n this._nextRafId = null;\n this.render(morphConfig);\n }) as unknown as number;\n }\n\n protected _commitedAll() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.commit());\n });\n }\n\n protected _hasCommitedMark() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.isCommited(), null, null, true);\n });\n }\n\n private _handleAfterNextRender = () => {\n if (this._stage && !this._option.disableDirtyBounds) {\n this._stage.enableDirtyBounds();\n }\n\n if (this._compileChart) {\n this._compileChart.getEvent()?.emit(ChartEvent.renderFinished, {\n chart: this._compileChart,\n vchart: this._compileChart.getOption()?.globalInstance\n });\n }\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n };\n\n private _doRender(immediately: boolean) {\n if (this._stage) {\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n if (m.needClear) {\n if (!this._progressiveMarks) {\n m.runAnimation();\n }\n m.clearExitGraphics();\n m.needClear = false;\n }\n },\n null,\n true\n );\n });\n\n this._option.performanceHook?.beforeVRenderDraw?.(this._compileChart.getOption().globalInstance);\n // 全量渲染的时候先关闭dirty bounds 提升性能\n this._stage.disableDirtyBounds();\n this._stage.afterNextRender(this._handleAfterNextRender);\n\n if (immediately) {\n this._stage.render();\n\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n }\n }\n }\n\n renderMarks() {\n if (!this._hasCommitedMark()) {\n return;\n }\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this.clearProgressive();\n\n // 更新所有的mark\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n\n if (this._layoutState === LayoutState.before) {\n // 需要更新布局\n this._layoutState = LayoutState.layouting;\n this._compileChart?.onLayout();\n this._layoutState = LayoutState.reevaluate;\n\n if (this._hasCommitedMark()) {\n // 第二次更新所有的mark\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n }\n this.handleLayoutEnd();\n }\n\n this.findProgressiveMarks();\n\n this._doRender(true);\n this.doPreProgressive();\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this._count++;\n }\n\n reuseOrMorphing(morphConfig: IMorphConfig = {}) {\n const { reuse = true, morph = true, morphAll = false, animation = {}, enableExitAnimation = false } = morphConfig;\n const newMarks = findSimpleMarks(this._rootMarks);\n const { update, exit } = diffMarks(this._cachedMarks, newMarks, { morph, morphAll, reuse });\n\n update.forEach(({ prev, next }) => {\n // const enableMarkMorphConfig =\n // prev.every(mark => mark.getMarkConfig().morph) && next.every(mark => mark.getMarkConfig().morph);\n\n // 优先复用\n if (reuse && prev.length === 1 && next.length === 1 && prev[0].type === next[0].type) {\n next[0].reuse(prev[0]);\n } else {\n // 执行morphing\n const prevMark = prev.filter(item => item.getMarkConfig().morph)[0];\n prevMark &&\n next.forEach(item => {\n item.getMarkConfig().morph && item.prepareMorph(prevMark);\n });\n }\n });\n\n // todo 离场元素执行exit动画\n exit.forEach(({ prev }) => {\n prev.forEach(m => {\n m.removeProduct();\n });\n });\n }\n\n render(morphConfig?: IMorphConfig) {\n if (this._released) {\n return;\n }\n this.clearNextRender();\n\n this.initView();\n if (!this._stage) {\n return;\n }\n\n const { width, height } = this._rootGroup.attribute;\n\n // 更新rootGroup的宽高\n if (this._width !== width || this._height !== height) {\n this._rootGroup.setAttributes({ width: this._width, height: this._height });\n }\n\n this.renderMarks();\n if (this.clearNextRender()) {\n this.renderMarks();\n }\n }\n\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const prevViewBox = this._stage.viewBox;\n if (\n viewBox &&\n (!prevViewBox ||\n prevViewBox.x1 !== viewBox.x1 ||\n prevViewBox.y1 !== viewBox.y1 ||\n prevViewBox.x2 !== viewBox.x2 ||\n prevViewBox.y2 !== viewBox.y2)\n ) {\n (this._stage as any).setViewBox(viewBox, reRender);\n }\n }\n\n resize(width: number, height: number, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const hasChange = this._width !== width || this._height !== height;\n\n this._width = width;\n this._height = height;\n\n if (hasChange) {\n this._stage.resize(width, height);\n this._commitedAll();\n\n // todo resize\n if (reRender) {\n this.render({ morph: false });\n }\n }\n }\n\n setBackground(color: IColor) {\n if (this._stage) {\n this._stage.background = color;\n }\n }\n\n setSize(width: number, height: number) {\n this._width = width;\n this._height = height;\n if (!this._stage) {\n return;\n }\n\n // todo set size of stage\n }\n\n setViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n this.updateViewBox(viewBox, reRender);\n }\n\n addEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n // TODO: 需要明确一下 interactive 的作用范围,同时考虑是否存在非交互行为的事件以及是否需要生效\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const rootGroup = this.getRootGroup();\n const wrappedCallback = function (event: any) {\n const graphic = event.target;\n let markGraphic: IMarkGraphic = null;\n\n if (graphic) {\n if (isValid(graphic.context)) {\n markGraphic = graphic;\n } else {\n markGraphic = findMarkGraphic(rootGroup, graphic) as unknown as IMarkGraphic;\n }\n }\n const context = (markGraphic?.context ?? {}) as Partial<IGraphicContext>;\n const markId = isValid(context.markId) ? context.markId : null;\n const modelId = isValid(context.modelId) ? context.modelId : null;\n const modelUserId = isValid(context.modelUserId) ? context.modelUserId : null;\n const markUserId = isValid(context.markUserId) ? context.markUserId : null;\n\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: markGraphic,\n datum: getDatumOfGraphic(markGraphic), // 是否要区分图元\n markId,\n modelId,\n markUserId,\n modelUserId\n };\n callback.call(null, params);\n }.bind(this);\n this._viewListeners.set(callback, { type, callback: wrappedCallback });\n // 如果 view 已经初始化则立刻挂载监听\n // FIXME: 目前 vgrammar 类型声明没有对齐,事件相关类型声明并没有使用 SceneItem\n //todo\n this._stage?.addEventListener(type, wrappedCallback as any);\n } else if (source === Event_Source_Type.window) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._windowListeners.set(callback, { type, callback: wrappedCallback });\n const windowObject = this._getGlobalThis();\n windowObject?.addEventListener(type, wrappedCallback);\n } else if (source === Event_Source_Type.canvas) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._canvasListeners.set(callback, { type, callback: wrappedCallback });\n const canvasObject = this.getStage()?.window;\n canvasObject?.addEventListener(type, wrappedCallback);\n }\n }\n\n removeEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = this._viewListeners.get(callback)?.callback;\n wrappedCallback && this._stage?.removeEventListener(type, wrappedCallback);\n this._viewListeners.delete(callback);\n } else if (source === Event_Source_Type.window) {\n const windowObject = this._getGlobalThis();\n const wrappedCallback = this._windowListeners.get(callback)?.callback;\n wrappedCallback && windowObject?.removeEventListener(type, wrappedCallback);\n this._windowListeners.delete(callback);\n } else if (source === Event_Source_Type.canvas) {\n const canvasObject = this.getStage()?.window;\n const wrappedCallback = this._canvasListeners.get(callback)?.callback;\n canvasObject && wrappedCallback && canvasObject?.removeEventListener(type, wrappedCallback);\n this._canvasListeners.delete(callback);\n }\n }\n\n protected releaseEvent(): void {\n const stage = this.getStage();\n\n if (stage) {\n stage.hooks.afterRender.unTap('chart-event', this.handleStageRender);\n }\n\n // 相应的事件remove在model中完成\n this._viewListeners.clear();\n this._windowListeners.clear();\n this._canvasListeners.clear();\n }\n\n release(): void {\n this.clearNextRender();\n this.releaseEvent();\n this._option = this._container = null as any;\n // vgrammar release\n this.releaseGrammar(true);\n\n if (this._stage !== this._option?.stage) {\n // don't release the stage created by outside\n this._stage.release();\n }\n this._stage = null;\n\n this.isInited = false;\n this._compileChart = null;\n this._released = true;\n }\n\n /**\n * 释放VGrammar\n * @param removeGraphicItems 是否删除场景元素,在同步渲染,并且无动画时,必须设置为true,否则有绘图残留\n */\n releaseGrammar(removeGraphicItems: boolean = false) {\n // this._releaseModel();\n if (removeGraphicItems) {\n // 彻底删除图形\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n m.removeProduct();\n },\n null,\n true\n );\n });\n } else {\n this._cachedMarks = findSimpleMarks(this._rootMarks);\n }\n this._rootMarks = [];\n }\n\n // protected _releaseModel() {\n // // 释放model\n // Object.keys(this._model).forEach(type => {\n // Object.values((this._model as any)[type] as IProductMap<IGrammarItem>).forEach(grammarItemMap => {\n // Object.values(grammarItemMap).forEach((item: IGrammarItem) => {\n // item.removeProduct(true); // 保留 vgrammar 语法元素,下面一起清空\n // });\n // });\n // (this._model as any)[type] = {};\n // });\n // }\n\n addRootMark(mark: IMark) {\n if (!this._rootMarks.includes(mark)) {\n this._rootMarks.push(mark);\n }\n }\n\n getRootMarks() {\n return this._rootMarks;\n }\n\n removeRootMark(mark: IMark) {\n const index = this._rootMarks.findIndex(m => m === mark);\n\n if (index >= 0) {\n this._rootMarks.splice(index, 1);\n\n return true;\n }\n return false;\n }\n\n private _getGlobalThis() {\n return isTrueBrowser(this._option.mode) ? globalThis : this.getStage()?.window;\n }\n\n private _combineIncrementalLayers() {\n if (this._stage) {\n waitForAllSubLayers(this._stage).then(() => {\n // stage might be null in current tick\n if (this._stage) {\n this._stage.defaultLayer.combineSubLayer();\n }\n });\n }\n }\n\n private findProgressiveMarks() {\n const marks: IMark[] = [];\n\n this._rootMarks.forEach(mark => {\n traverseGroupMark(mark, m => {\n if (m.isProgressive()) {\n marks.push(m);\n }\n });\n });\n\n if (!marks.length) {\n this._progressiveMarks = null;\n return null;\n }\n\n this._progressiveMarks = marks;\n\n this._combineIncrementalLayers();\n\n return marks;\n }\n\n private doPreProgressive() {\n if (this._progressiveMarks && this._progressiveMarks.some(mark => mark.isDoingProgressive())) {\n const raf = vglobal.getSpecifiedRequestAnimationFrame(10);\n this._progressiveRafId = raf(this.handleProgressiveFrame);\n } else if (this._progressiveMarks && this._progressiveMarks.every(mark => mark.canAnimateAfterProgressive())) {\n this._progressiveMarks.forEach(mark => {\n mark.runAnimation();\n });\n } else if (this._progressiveMarks) {\n this._progressiveMarks = null;\n }\n }\n\n /** 监听frame事件,更新增量元素的mark */\n private handleProgressiveFrame = () => {\n if (this._progressiveMarks.length) {\n this._progressiveMarks.forEach(mark => {\n if (mark.isDoingProgressive()) {\n mark.renderProgressive();\n }\n });\n }\n\n this.doPreProgressive();\n };\n\n /** 清除 */\n private clearProgressive() {\n if (this._progressiveRafId) {\n const cancelRaf = vglobal.getSpecifiedCancelAnimationFrame(10);\n cancelRaf(this._progressiveRafId);\n }\n\n if (this._progressiveMarks && this._progressiveMarks.length) {\n this._progressiveMarks.forEach(entry => {\n entry.clearProgressive();\n });\n\n this._progressiveMarks = null;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/compile/compiler.ts"],"names":[],"mappings":"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","file":"compiler.js","sourcesContent":["import { ChartEvent, Event_Source_Type } from './../constant/event';\nimport type {\n CompilerListenerParameters,\n ICompiler,\n ICompilerModel,\n IRenderContainer,\n IRenderOption\n} from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { LayoutState } from './interface';\nimport { GrammarType } from './interface/compilable-item';\nimport { isMobileLikeMode, isTrueBrowser } from '../util/env';\nimport { isString } from '../util/type';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isObject, isValid } from '@visactor/vutils';\nimport type { EventSourceType } from '../event/interface';\nimport type { IChart } from '../chart/interface';\nimport { createGroup, Stage, vglobal, waitForAllSubLayers } from '@visactor/vrender-core';\nimport type { IColor, IEventTarget, IGroup, IStage } from '@visactor/vrender-core';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IVChart, IVChartRenderOption } from '../core/interface';\nimport { type IGraphicContext, type IMark, type IMarkGraphic } from '../mark/interface';\nimport { Factory } from '../core/factory';\nimport type { Gesture } from '@visactor/vrender-kits';\nimport { findMarkGraphic, getDatumOfGraphic } from '../util/mark';\nimport { diffMarks, findSimpleMarks, toRenderMode, traverseGroupMark } from './util';\nimport { log } from '../util/debug';\n\ntype EventListener = {\n type: string;\n callback: (...args: any[]) => void;\n};\n\nexport class Compiler implements ICompiler {\n private _count: number = 0;\n /**\n * 更新后缓存的mark\n */\n private _cachedMarks: IMark[];\n\n private _progressiveMarks?: IMark[];\n\n /**\n * 增量渲染相关的raf id\n */\n private _progressiveRafId?: number;\n\n protected _rootMarks: IMark[] = [];\n\n protected _stage: IStage;\n\n protected _rootGroup: IGroup;\n\n getRootGroup() {\n return this._rootGroup;\n }\n\n protected _viewListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _windowListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _canvasListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n\n isInited: boolean = false;\n\n private _nextRafId: number;\n\n protected _width: number;\n protected _height: number;\n\n protected _container: IRenderContainer;\n protected _option: IRenderOption;\n // 已释放标记\n private _released: boolean = false;\n\n /** 布局阶段 */\n private _layoutState?: LayoutState;\n\n private _compileChart: IChart = null;\n\n constructor(container: IRenderContainer, option: IRenderOption) {\n this._container = container;\n this._option = option;\n }\n\n getChart() {\n return this._compileChart;\n }\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._stage?.window.getNativeHandler().nativeCanvas;\n }\n\n _gestureController?: Gesture;\n /**\n * 获取 渲染引擎\n */\n getStage(): IStage | undefined {\n return this._stage;\n }\n\n initView() {\n if (this._released) {\n return;\n }\n this.isInited = true;\n if (this._stage) {\n return;\n }\n\n const {\n autoRefreshDpr,\n dpr,\n mode,\n modeParams,\n gestureConfig,\n interactive,\n clickInterval,\n autoPreventDefault,\n background\n } = this._option;\n vglobal.setEnv(toRenderMode(mode), modeParams ?? {});\n this._stage =\n this._option.stage ??\n (new Stage({\n background,\n width: this._width,\n height: this._height,\n container: this._container.dom ?? null,\n canvas: this._container.canvas ?? null,\n dpr,\n viewBox: this._option.viewBox,\n canvasControled: this._option.canvasControled,\n beforeRender: (stage: IStage) => {\n this._compileChart?.onBeforeRender();\n this._option.beforeRender?.(stage);\n },\n afterRender: this._option.afterRender,\n disableDirtyBounds: true,\n autoRender: true,\n ticker: this._option.ticker,\n pluginList: this._option.pluginList,\n enableHtmlAttribute: this._option.enableHtmlAttribute,\n optimize: this._option.optimize,\n supportsTouchEvents: this._option.supportsTouchEvents,\n supportsPointerEvents: this._option.supportsPointerEvents,\n event: {\n clickInterval: clickInterval,\n autoPreventDefault: autoPreventDefault\n },\n ReactDOM: this._option.ReactDOM,\n autoRefresh: isValid(autoRefreshDpr) ? autoRefreshDpr : !isValid(dpr),\n ...(this._option.renderHooks ?? {})\n }) as unknown as IStage);\n\n this._stage.enableIncrementalAutoRender();\n\n // 之前vgrammar 设置了一些默认配置\n (this._stage as any).setTheme({\n symbol: {\n shape: 'circle',\n size: 8\n },\n text: {\n fontSize: 14,\n fill: '#000000'\n }\n });\n\n const group = createGroup({\n x: 0,\n y: 0,\n width: this._width,\n height: this._height\n });\n group.name = 'root';\n this._stage.defaultLayer.appendChild(group);\n this._rootGroup = group;\n const GestureController =\n (isValid(gestureConfig) ? (gestureConfig as any) : isMobileLikeMode(mode)) &&\n interactive !== false &&\n Factory.getStageEventPlugin('gesture');\n\n if (GestureController) {\n this._gestureController = new GestureController(\n this._stage as unknown as IEventTarget,\n isObject(gestureConfig) ? gestureConfig : {}\n ) as Gesture;\n }\n\n this._setCanvasStyle();\n\n // emit afterRender event\n this.getStage().hooks.afterRender.tap('chart-event', this.handleStageRender);\n\n if (interactive !== false) {\n // 将 view 实例化之前监听的事件挂载到 view 上\n this._viewListeners.forEach(listener => {\n //this._view?.addEventListener(listener.type, listener.callback);\n });\n }\n }\n\n getLayoutState() {\n return this._layoutState;\n }\n\n updateLayoutTag() {\n this._layoutState = LayoutState.before;\n }\n\n protected handleLayoutEnd = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterMarkLayoutEnd, { chart: this._compileChart });\n };\n\n protected handleStageRender = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterRender, { chart: this._compileChart });\n };\n\n private _setCanvasStyle() {\n if (!this._stage) {\n return;\n }\n if (this._container.dom && !isString(this._container.dom)) {\n this._container.dom.style.display = 'block';\n this._container.dom.style.position = 'relative';\n const canvas = this.getCanvas();\n if (canvas) {\n canvas.style.display = 'block';\n }\n }\n }\n\n compile(ctx: { chart: IChart; vChart: IVChart }, option?: IVChartRenderOption) {\n if (this._released) {\n return;\n }\n const { chart } = ctx;\n this._compileChart = chart;\n this.initView();\n if (!this._stage) {\n return;\n }\n\n if (option?.actionSource !== 'render' && this._cachedMarks) {\n this.reuseOrMorphing(option.morphConfig);\n // 清除缓存\n this._cachedMarks = null;\n }\n\n chart.compile();\n chart.afterCompile();\n }\n protected clearNextRender() {\n if (this._nextRafId) {\n vglobal.getSpecifiedCancelAnimationFrame(10)(this._nextRafId);\n this._nextRafId = null;\n\n return true;\n }\n\n return false;\n }\n\n clear(ctx: { chart: IChart; vChart: IVChart }) {\n const { chart } = ctx;\n\n this.clearNextRender();\n chart.clear();\n }\n\n renderNextTick(morphConfig?: IMorphConfig): void {\n if (this._released) {\n return;\n }\n if (this._nextRafId) {\n this.clearNextRender();\n }\n\n this._nextRafId = vglobal.getSpecifiedRequestAnimationFrame(10)(() => {\n this._nextRafId = null;\n this.render(morphConfig);\n }) as unknown as number;\n }\n\n protected _commitedAll() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.commit());\n });\n }\n\n protected _hasCommitedMark() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.isCommited(), null, null, true);\n });\n }\n\n private _handleAfterNextRender = () => {\n if (this._stage && !this._option.disableDirtyBounds) {\n this._stage.enableDirtyBounds();\n }\n\n if (this._compileChart) {\n this._compileChart.getEvent()?.emit(ChartEvent.renderFinished, {\n chart: this._compileChart,\n vchart: this._compileChart.getOption()?.globalInstance\n });\n }\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n };\n\n private _doRender(immediately: boolean) {\n this._option.performanceHook?.beforeDoRender?.(this._compileChart.getOption().globalInstance);\n if (this._stage) {\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n if (m.needClear) {\n if (!this._progressiveMarks) {\n m.runAnimation();\n }\n m.clearExitGraphics();\n m.needClear = false;\n }\n },\n null,\n true\n );\n });\n\n this._option.performanceHook?.beforeVRenderDraw?.(this._compileChart.getOption().globalInstance);\n // 全量渲染的时候先关闭dirty bounds 提升性能\n this._stage.disableDirtyBounds();\n this._stage.afterNextRender(this._handleAfterNextRender);\n\n if (immediately) {\n this._stage.render();\n\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n }\n }\n }\n\n renderMarks() {\n if (!this._hasCommitedMark()) {\n return;\n }\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this.clearProgressive();\n\n // 更新所有的mark\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n\n if (this._layoutState === LayoutState.before) {\n // 需要更新布局\n this._layoutState = LayoutState.layouting;\n this._compileChart?.onLayout();\n this._layoutState = LayoutState.reevaluate;\n\n if (this._hasCommitedMark()) {\n // 第二次更新所有的mark\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n }\n this.handleLayoutEnd();\n }\n\n this.findProgressiveMarks();\n\n this._doRender(true);\n this.doPreProgressive();\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this._count++;\n }\n\n reuseOrMorphing(morphConfig: IMorphConfig = {}) {\n const { reuse = true, morph = true, morphAll = false, animation = {}, enableExitAnimation = false } = morphConfig;\n const newMarks = findSimpleMarks(this._rootMarks);\n const { update, exit } = diffMarks(this._cachedMarks, newMarks, { morph, morphAll, reuse });\n\n update.forEach(({ prev, next }) => {\n // const enableMarkMorphConfig =\n // prev.every(mark => mark.getMarkConfig().morph) && next.every(mark => mark.getMarkConfig().morph);\n\n // 优先复用\n if (reuse && prev.length === 1 && next.length === 1 && prev[0].type === next[0].type) {\n next[0].reuse(prev[0]);\n } else {\n // 执行morphing\n const prevMark = prev.filter(item => item.getMarkConfig().morph)[0];\n prevMark &&\n next.forEach(item => {\n item.getMarkConfig().morph && item.prepareMorph(prevMark);\n });\n }\n });\n\n // todo 离场元素执行exit动画\n exit.forEach(({ prev }) => {\n prev.forEach(m => {\n m.removeProduct();\n });\n });\n }\n\n render(morphConfig?: IMorphConfig) {\n if (this._released) {\n return;\n }\n this.clearNextRender();\n\n this.initView();\n if (!this._stage) {\n return;\n }\n\n const { width, height } = this._rootGroup.attribute;\n\n // 更新rootGroup的宽高\n if (this._width !== width || this._height !== height) {\n this._rootGroup.setAttributes({ width: this._width, height: this._height });\n }\n\n this.renderMarks();\n if (this.clearNextRender()) {\n this.renderMarks();\n }\n }\n\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const prevViewBox = this._stage.viewBox;\n if (\n viewBox &&\n (!prevViewBox ||\n prevViewBox.x1 !== viewBox.x1 ||\n prevViewBox.y1 !== viewBox.y1 ||\n prevViewBox.x2 !== viewBox.x2 ||\n prevViewBox.y2 !== viewBox.y2)\n ) {\n (this._stage as any).setViewBox(viewBox, reRender);\n }\n }\n\n resize(width: number, height: number, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const hasChange = this._width !== width || this._height !== height;\n\n this._width = width;\n this._height = height;\n\n if (hasChange) {\n this._stage.resize(width, height);\n this._commitedAll();\n\n // todo resize\n if (reRender) {\n this.render({ morph: false });\n }\n }\n }\n\n setBackground(color: IColor) {\n if (this._stage) {\n this._stage.background = color;\n }\n }\n\n setSize(width: number, height: number) {\n this._width = width;\n this._height = height;\n if (!this._stage) {\n return;\n }\n\n // todo set size of stage\n }\n\n setViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n this.updateViewBox(viewBox, reRender);\n }\n\n addEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n // TODO: 需要明确一下 interactive 的作用范围,同时考虑是否存在非交互行为的事件以及是否需要生效\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const rootGroup = this.getRootGroup();\n const wrappedCallback = function (event: any) {\n const graphic = event.target;\n let markGraphic: IMarkGraphic = null;\n\n if (graphic) {\n if (isValid(graphic.context)) {\n markGraphic = graphic;\n } else {\n markGraphic = findMarkGraphic(rootGroup, graphic) as unknown as IMarkGraphic;\n }\n }\n const context = (markGraphic?.context ?? {}) as Partial<IGraphicContext>;\n const markId = isValid(context.markId) ? context.markId : null;\n const modelId = isValid(context.modelId) ? context.modelId : null;\n const modelUserId = isValid(context.modelUserId) ? context.modelUserId : null;\n const markUserId = isValid(context.markUserId) ? context.markUserId : null;\n\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: markGraphic,\n datum: getDatumOfGraphic(markGraphic), // 是否要区分图元\n markId,\n modelId,\n markUserId,\n modelUserId\n };\n callback.call(null, params);\n }.bind(this);\n this._viewListeners.set(callback, { type, callback: wrappedCallback });\n // 如果 view 已经初始化则立刻挂载监听\n // FIXME: 目前 vgrammar 类型声明没有对齐,事件相关类型声明并没有使用 SceneItem\n //todo\n this._stage?.addEventListener(type, wrappedCallback as any);\n } else if (source === Event_Source_Type.window) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._windowListeners.set(callback, { type, callback: wrappedCallback });\n const windowObject = this._getGlobalThis();\n windowObject?.addEventListener(type, wrappedCallback);\n } else if (source === Event_Source_Type.canvas) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._canvasListeners.set(callback, { type, callback: wrappedCallback });\n const canvasObject = this.getStage()?.window;\n canvasObject?.addEventListener(type, wrappedCallback);\n }\n }\n\n removeEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = this._viewListeners.get(callback)?.callback;\n wrappedCallback && this._stage?.removeEventListener(type, wrappedCallback);\n this._viewListeners.delete(callback);\n } else if (source === Event_Source_Type.window) {\n const windowObject = this._getGlobalThis();\n const wrappedCallback = this._windowListeners.get(callback)?.callback;\n wrappedCallback && windowObject?.removeEventListener(type, wrappedCallback);\n this._windowListeners.delete(callback);\n } else if (source === Event_Source_Type.canvas) {\n const canvasObject = this.getStage()?.window;\n const wrappedCallback = this._canvasListeners.get(callback)?.callback;\n canvasObject && wrappedCallback && canvasObject?.removeEventListener(type, wrappedCallback);\n this._canvasListeners.delete(callback);\n }\n }\n\n protected releaseEvent(): void {\n const stage = this.getStage();\n\n if (stage) {\n stage.hooks.afterRender.unTap('chart-event', this.handleStageRender);\n }\n\n // 相应的事件remove在model中完成\n this._viewListeners.clear();\n this._windowListeners.clear();\n this._canvasListeners.clear();\n }\n\n release(): void {\n this.clearNextRender();\n this.releaseEvent();\n this._option = this._container = null as any;\n // vgrammar release\n this.releaseGrammar(true);\n\n if (this._stage !== this._option?.stage) {\n // don't release the stage created by outside\n this._stage.release();\n }\n this._stage = null;\n\n this.isInited = false;\n this._compileChart = null;\n this._released = true;\n }\n\n /**\n * 释放VGrammar\n * @param removeGraphicItems 是否删除场景元素,在同步渲染,并且无动画时,必须设置为true,否则有绘图残留\n */\n releaseGrammar(removeGraphicItems: boolean = false) {\n // this._releaseModel();\n if (removeGraphicItems) {\n // 彻底删除图形\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n m.removeProduct();\n },\n null,\n true\n );\n });\n } else {\n this._cachedMarks = findSimpleMarks(this._rootMarks);\n }\n this._rootMarks = [];\n }\n\n // protected _releaseModel() {\n // // 释放model\n // Object.keys(this._model).forEach(type => {\n // Object.values((this._model as any)[type] as IProductMap<IGrammarItem>).forEach(grammarItemMap => {\n // Object.values(grammarItemMap).forEach((item: IGrammarItem) => {\n // item.removeProduct(true); // 保留 vgrammar 语法元素,下面一起清空\n // });\n // });\n // (this._model as any)[type] = {};\n // });\n // }\n\n addRootMark(mark: IMark) {\n if (!this._rootMarks.includes(mark)) {\n this._rootMarks.push(mark);\n }\n }\n\n getRootMarks() {\n return this._rootMarks;\n }\n\n removeRootMark(mark: IMark) {\n const index = this._rootMarks.findIndex(m => m === mark);\n\n if (index >= 0) {\n this._rootMarks.splice(index, 1);\n\n return true;\n }\n return false;\n }\n\n private _getGlobalThis() {\n return isTrueBrowser(this._option.mode) ? globalThis : this.getStage()?.window;\n }\n\n private _combineIncrementalLayers() {\n if (this._stage) {\n waitForAllSubLayers(this._stage).then(() => {\n // stage might be null in current tick\n if (this._stage) {\n this._stage.defaultLayer.combineSubLayer();\n }\n });\n }\n }\n\n private findProgressiveMarks() {\n const marks: IMark[] = [];\n\n this._rootMarks.forEach(mark => {\n traverseGroupMark(mark, m => {\n if (m.isProgressive()) {\n marks.push(m);\n }\n });\n });\n\n if (!marks.length) {\n this._progressiveMarks = null;\n return null;\n }\n\n this._progressiveMarks = marks;\n\n this._combineIncrementalLayers();\n\n return marks;\n }\n\n private doPreProgressive() {\n if (this._progressiveMarks && this._progressiveMarks.some(mark => mark.isDoingProgressive())) {\n const raf = vglobal.getSpecifiedRequestAnimationFrame(10);\n this._progressiveRafId = raf(this.handleProgressiveFrame);\n } else if (this._progressiveMarks && this._progressiveMarks.every(mark => mark.canAnimateAfterProgressive())) {\n this._progressiveMarks.forEach(mark => {\n mark.runAnimation();\n });\n } else if (this._progressiveMarks) {\n this._progressiveMarks = null;\n }\n }\n\n /** 监听frame事件,更新增量元素的mark */\n private handleProgressiveFrame = () => {\n if (this._progressiveMarks.length) {\n this._progressiveMarks.forEach(mark => {\n if (mark.isDoingProgressive()) {\n mark.renderProgressive();\n }\n });\n }\n\n this.doPreProgressive();\n };\n\n /** 清除 */\n private clearProgressive() {\n if (this._progressiveRafId) {\n const cancelRaf = vglobal.getSpecifiedCancelAnimationFrame(10);\n cancelRaf(this._progressiveRafId);\n }\n\n if (this._progressiveMarks && this._progressiveMarks.length) {\n this._progressiveMarks.forEach(entry => {\n entry.clearProgressive();\n });\n\n this._progressiveMarks = null;\n }\n }\n}\n"]}
|
package/esm/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "2.0.5-alpha.
|
|
4
|
+
export declare const version = "2.0.5-alpha.5";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export type { IRegion } from '../region/interface';
|