@visactor/vchart 2.0.13-alpha.9 → 2.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +79 -103
  3. package/build/index.js +79 -103
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/compile/compiler.d.ts +0 -1
  7. package/cjs/compile/compiler.js +0 -3
  8. package/cjs/compile/compiler.js.map +1 -1
  9. package/cjs/compile/interface/compilable-item.d.ts +1 -2
  10. package/cjs/compile/interface/compilable-item.js.map +1 -1
  11. package/cjs/component/brush/brush.d.ts +1 -4
  12. package/cjs/component/brush/brush.js +14 -31
  13. package/cjs/component/brush/brush.js.map +1 -1
  14. package/cjs/component/brush/interface.d.ts +1 -3
  15. package/cjs/component/brush/interface.js.map +1 -1
  16. package/cjs/component/crosshair/interface/spec.d.ts +0 -1
  17. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  18. package/cjs/component/tooltip/interface/common.d.ts +0 -1
  19. package/cjs/component/tooltip/interface/common.js.map +1 -1
  20. package/cjs/component/tooltip/processor/base.js +1 -1
  21. package/cjs/component/tooltip/processor/base.js.map +1 -1
  22. package/cjs/component/tooltip/tooltip.d.ts +0 -1
  23. package/cjs/component/tooltip/tooltip.js +2 -3
  24. package/cjs/component/tooltip/tooltip.js.map +1 -1
  25. package/cjs/component/tooltip/utils/show-tooltip.d.ts +1 -0
  26. package/cjs/component/tooltip/utils/show-tooltip.js +30 -6
  27. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  28. package/cjs/constant/correlation.js +1 -1
  29. package/cjs/constant/data.js +1 -1
  30. package/cjs/constant/event.js +1 -1
  31. package/cjs/constant/funnel.js +1 -1
  32. package/cjs/constant/gradient.js +1 -1
  33. package/cjs/constant/hierarchy.js +1 -1
  34. package/cjs/constant/label.js +1 -1
  35. package/cjs/constant/layout.js +1 -1
  36. package/cjs/constant/marker.js +1 -1
  37. package/cjs/constant/polar.js +1 -1
  38. package/cjs/constant/scatter.js +1 -1
  39. package/cjs/constant/scroll-bar.js +2 -1
  40. package/cjs/constant/sunburst.js +1 -1
  41. package/cjs/constant/waterfall.js +1 -1
  42. package/cjs/constant/word-cloud.js +1 -1
  43. package/cjs/core/index.d.ts +1 -1
  44. package/cjs/core/index.js +1 -1
  45. package/cjs/core/index.js.map +1 -1
  46. package/cjs/core/interface.d.ts +1 -9
  47. package/cjs/core/interface.js +1 -1
  48. package/cjs/core/interface.js.map +1 -1
  49. package/cjs/core/util.js +1 -1
  50. package/cjs/core/vchart.d.ts +0 -4
  51. package/cjs/core/vchart.js +2 -11
  52. package/cjs/core/vchart.js.map +1 -1
  53. package/cjs/data/initialize.js +1 -1
  54. package/cjs/data/register.js +1 -1
  55. package/cjs/env/env.js +1 -1
  56. package/cjs/env/index.js +1 -1
  57. package/cjs/event/bubble.js +1 -1
  58. package/cjs/event/event-dispatcher.js +1 -1
  59. package/cjs/event/event.js +2 -2
  60. package/cjs/event/event.js.map +1 -1
  61. package/cjs/event/events/dimension/dimension-hover.js +2 -4
  62. package/cjs/event/events/dimension/dimension-hover.js.map +1 -1
  63. package/cjs/event/index.js +1 -1
  64. package/cjs/event/interface.js +1 -2
  65. package/cjs/interaction/config.js +1 -1
  66. package/cjs/interaction/index.js +1 -1
  67. package/cjs/interaction/interaction.js +1 -1
  68. package/cjs/mark/base/base-mark.js +9 -5
  69. package/cjs/mark/base/base-mark.js.map +1 -1
  70. package/esm/compile/compiler.d.ts +0 -1
  71. package/esm/compile/compiler.js +0 -3
  72. package/esm/compile/compiler.js.map +1 -1
  73. package/esm/compile/interface/compilable-item.d.ts +1 -2
  74. package/esm/compile/interface/compilable-item.js.map +1 -1
  75. package/esm/component/brush/brush.d.ts +1 -4
  76. package/esm/component/brush/brush.js +14 -31
  77. package/esm/component/brush/brush.js.map +1 -1
  78. package/esm/component/brush/interface.d.ts +1 -3
  79. package/esm/component/brush/interface.js.map +1 -1
  80. package/esm/component/crosshair/interface/spec.d.ts +0 -1
  81. package/esm/component/crosshair/interface/spec.js.map +1 -1
  82. package/esm/component/tooltip/interface/common.d.ts +0 -1
  83. package/esm/component/tooltip/interface/common.js.map +1 -1
  84. package/esm/component/tooltip/processor/base.js +1 -1
  85. package/esm/component/tooltip/processor/base.js.map +1 -1
  86. package/esm/component/tooltip/tooltip.d.ts +0 -1
  87. package/esm/component/tooltip/tooltip.js +2 -3
  88. package/esm/component/tooltip/tooltip.js.map +1 -1
  89. package/esm/component/tooltip/utils/show-tooltip.d.ts +1 -0
  90. package/esm/component/tooltip/utils/show-tooltip.js +30 -6
  91. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  92. package/esm/constant/correlation.js +1 -1
  93. package/esm/constant/data.js +1 -1
  94. package/esm/constant/event.js +1 -1
  95. package/esm/constant/funnel.js +1 -1
  96. package/esm/constant/gradient.js +1 -1
  97. package/esm/constant/hierarchy.js +1 -1
  98. package/esm/constant/label.js +1 -1
  99. package/esm/constant/layout.js +1 -1
  100. package/esm/constant/marker.js +1 -1
  101. package/esm/constant/polar.js +1 -1
  102. package/esm/constant/scatter.js +1 -1
  103. package/esm/constant/scroll-bar.js +2 -1
  104. package/esm/constant/sunburst.js +1 -1
  105. package/esm/constant/waterfall.js +1 -1
  106. package/esm/constant/word-cloud.js +1 -1
  107. package/esm/core/index.d.ts +1 -1
  108. package/esm/core/index.js +1 -1
  109. package/esm/core/index.js.map +1 -1
  110. package/esm/core/interface.d.ts +1 -9
  111. package/esm/core/interface.js +1 -1
  112. package/esm/core/interface.js.map +1 -1
  113. package/esm/core/util.js +1 -1
  114. package/esm/core/vchart.d.ts +0 -4
  115. package/esm/core/vchart.js +2 -11
  116. package/esm/core/vchart.js.map +1 -1
  117. package/esm/data/initialize.js +1 -1
  118. package/esm/data/register.js +1 -1
  119. package/esm/env/env.js +1 -1
  120. package/esm/env/index.js +1 -1
  121. package/esm/event/bubble.js +1 -1
  122. package/esm/event/event-dispatcher.js +1 -1
  123. package/esm/event/event.js +2 -2
  124. package/esm/event/event.js.map +1 -1
  125. package/esm/event/events/dimension/dimension-hover.js +2 -4
  126. package/esm/event/events/dimension/dimension-hover.js.map +1 -1
  127. package/esm/event/index.js +1 -1
  128. package/esm/event/interface.js +1 -2
  129. package/esm/interaction/config.js +1 -1
  130. package/esm/interaction/index.js +1 -1
  131. package/esm/interaction/interaction.js +1 -1
  132. package/esm/mark/base/base-mark.js +9 -5
  133. package/esm/mark/base/base-mark.js.map +1 -1
  134. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/vchart.ts"],"names":[],"mappings":"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","file":"vchart.js","sourcesContent":["import type { ISeries } from '../series/interface/series';\nimport { arrayParser } from '../data/parser/array';\nimport type { ILayoutConstructor, LayoutCallBack } from '../layout/interface';\nimport type { IDataValues, IMarkStateSpec, IInitOption } from '../typings/spec/common';\n// eslint-disable-next-line no-duplicate-imports\nimport { RenderModeEnum } from '../typings/spec/common';\nimport type { ISeriesConstructor } from '../series/interface';\nimport {\n ChartTypeEnum,\n type DimensionIndexOption,\n type IChart,\n type IChartConstructor,\n type IChartOption,\n type IChartSpecInfo,\n type IChartSpecTransformer\n} from '../chart/interface';\nimport type { IComponentConstructor } from '../component/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../component/interface/type';\nimport type {\n EventCallback,\n EventQuery,\n EventType,\n ExtendEventParam,\n IEvent,\n IEventDispatcher\n} from '../event/interface';\nimport type { IParserOptions, IFields, Transform } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, dataViewParser, DataView } from '@visactor/vdataset';\nimport type { IStage, Stage } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport { isString, isValid, isNil, array, specTransform, functionTransform, removeUndefined } from '../util';\nimport { createID } from '../util/id';\nimport { convertPoint } from '../util/space';\nimport { isTrueBrowser } from '../util/env';\nimport { warn } from '../util/debug';\nimport { getThemeObject } from '../util/theme/common';\nimport { mergeSpec, mergeSpecWithFilter } from '@visactor/vutils-extension';\nimport { Factory } from './factory';\nimport { Event } from '../event/event';\nimport { EventDispatcher } from '../event/event-dispatcher';\nimport type { GeoSourceType } from '../typings/geo';\nimport type { GeoSourceOption } from '../series/map/geo-source';\n// eslint-disable-next-line no-duplicate-imports\nimport { getMapSource } from '../series/map/geo-source';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IMark, IMarkGraphic, MarkConstructor } from '../mark/interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nimport { dataToDataView } from '../data/initialize';\nimport { copyDataView } from '../data/transforms/copy-data-view';\nimport type { ITooltipHandler } from '../typings/tooltip';\nimport type { ITooltip, Tooltip } from '../component/tooltip';\nimport type {\n Datum,\n IPoint,\n IRegionQuerier,\n IShowTooltipOption,\n ISpec,\n Maybe,\n MaybeArray,\n StringOrNumber\n} from '../typings';\nimport { AnimationStateEnum } from '../animation/interface';\nimport type { IBoundsLike, ILogger } from '@visactor/vutils';\nimport { ThemeManager } from '../theme/theme-manager';\nimport type { ITheme } from '../theme';\nimport type { IModel, IUpdateDataResult, IUpdateSpecResult } from '../model/interface';\nimport { Compiler } from '../compile/compiler';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { ILegend } from '../component/legend/interface';\nimport { getCanvasDataURL, URLToImage } from '../util/image';\nimport { ChartEvent } from '../constant/event';\nimport { DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH } from '../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isArray,\n isEmpty,\n Logger,\n isFunction,\n LoggerLevel,\n isEqual,\n get,\n cloneDeep,\n isObject,\n throttle\n} from '@visactor/vutils';\nimport type {\n DataLinkAxis,\n DataLinkSeries,\n IGlobalConfig,\n IVChart,\n IVChartRenderOption,\n UserEvent,\n VChartRenderActionSource\n} from './interface';\nimport { InstanceManager } from './instance-manager';\nimport type { IAxis } from '../component/axis';\nimport type { PopTipAttributes } from '@visactor/vrender-components';\nimport { setPoptipTheme } from '@visactor/vrender-components';\nimport { calculateChartSize, mergeUpdateResult } from '../chart/util';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { registerGroupMark } from '../mark/group';\nimport { VCHART_UTILS } from './util';\nimport { ExpressionFunction } from './expression-function';\nimport { registerBrowserEnv, registerNodeEnv } from '../env';\nimport { mergeTheme, preprocessTheme } from '../util/theme';\nimport { darkTheme, registerTheme } from '../theme/builtin';\nimport type { IChartPluginService } from '../plugin/chart/interface';\nimport { ChartPluginService } from '../plugin/chart/plugin-service';\nimport type { IIndicator } from '../component/indicator';\nimport type { IGeoCoordinate } from '../component/geo';\nimport { registerGesturePlugin } from '../plugin/other';\nimport { registerElementHighlight } from '../interaction/triggers/element-highlight';\nimport { registerElementSelect } from '../interaction/triggers/element-select';\nimport type { IVChartPluginService } from '../plugin/vchart/interface';\nimport { VChartPluginService } from '../plugin/vchart/plugin-service';\nimport { RenderStateEnum } from '../constant/animate';\nimport type { ICrossHair } from '../component/crosshair';\n\nexport class VChart implements IVChart {\n readonly id = createID();\n\n /**\n * 按需注册图表和组件\n * @param comps\n * @since 1.5.1\n */\n static useRegisters(comps: (() => void)[]) {\n comps.forEach((fn: () => void) => {\n if (typeof fn === 'function') {\n // 确保元素是函数类型\n fn();\n } else {\n console.error('Invalid function:', fn);\n }\n });\n }\n\n /**\n * 注册自定义图表\n * @param charts 图表类\n * @description 若用于按需加载,1.5.1版本后,请统一使用 `useRegisters` API,例如:`VChart.useRegisters([registerLineChart])`。\n */\n static useChart(charts: IChartConstructor[]) {\n charts.forEach(c => Factory.registerChart(c.type, c));\n }\n /**\n * 注册自定义系列\n * @param series 系列类\n * @description 若用于按需加载,1.5.1版本后,统一使用 `useRegisters` API,例如 `VChart.useRegisters([registerLineSeries])`。\n */\n static useSeries(series: ISeriesConstructor[]) {\n series.forEach(s => Factory.registerSeries(s.type, s));\n }\n /**\n * 注册自定义组件\n * @param components 组件类\n * @description 若用于按需加载,1.5.1版本后,统一使用 `useRegisters` API,例如 `VChart.useRegisters([registerCartesianLinearAxis])`。\n */\n static useComponent(components: IComponentConstructor[]) {\n components.forEach(c => Factory.registerComponent(c.type, c));\n }\n /**\n * 注册自定义 Mark\n * @param marks Mark 图元类\n */\n static useMark(marks: MarkConstructor[]) {\n marks.forEach(m => Factory.registerMark(m.constructorType ?? m.type, m));\n }\n /**\n * 注册自定义布局\n * @param layouts 布局类\n */\n static useLayout(layouts: ILayoutConstructor[]) {\n layouts.forEach(l => Factory.registerLayout(l.type, l));\n }\n /**\n * 注册 DataSet 数据方法\n * @param name 数据 transform 方法名称\n * @param transform 具体的 Transform 执行方法\n */\n static registerDataSetTransform(name: string, transform: Transform) {\n Factory.registerTransform(name, transform);\n }\n\n /**\n * 注册函数(全局注册)\n * @param key 函数名称\n * @param fun 函数内容\n */\n static registerFunction(key: string, fun: Function) {\n if (!key || !fun) {\n return;\n }\n ExpressionFunction.instance().registerFunction(key, fun);\n }\n\n /**\n * 注销函数(全局注销)\n * @param key 函数名称\n */\n static unregisterFunction(key: string) {\n if (!key) {\n return;\n }\n ExpressionFunction.instance().unregisterFunction(key);\n }\n\n /**\n * 获取函数(全局)\n * @param key\n * @returns\n */\n static getFunction(key: string): Function | null {\n if (!key) {\n return null;\n }\n return ExpressionFunction.instance().getFunction(key);\n }\n\n /**\n * 获取函数列表(全局获取)\n * @returns\n */\n static getFunctionList(): string[] | null {\n return ExpressionFunction.instance().getFunctionNameList();\n }\n\n /**\n * 注册地图数据\n * @param key 地图名称\n * @param source 地图数据\n * @param option 地图数据配置\n */\n static registerMap(key: string, source: GeoSourceType, option?: GeoSourceOption) {\n const impl = Factory.getImplementInKey('registerMap');\n impl && impl(key, source, option);\n }\n\n /**\n * 注销地图数据\n * @param key 地图名称\n */\n static unregisterMap(key: string) {\n const impl = Factory.getImplementInKey('unregisterMap');\n impl && impl(key);\n }\n\n /**\n * 根据地图名称获取地图数据\n * @param key 地图名称\n * @returns 地图数据\n */\n static getMap(key: string): GeoSourceType {\n return getMapSource(key);\n }\n\n /**\n * 注册地图数据\n * @param key 地图名称\n * @param source 地图数据\n * @param option 地图数据配置\n */\n static registerSVG(key: string, source: GeoSourceType, option?: GeoSourceOption) {\n const impl = Factory.getImplementInKey('registerSVG');\n impl && impl(key, source, option);\n }\n\n /**\n * 注销地图数据\n * @param key 地图名称\n */\n static unregisterSVG(key: string) {\n const impl = Factory.getImplementInKey('unregisterSVG');\n impl && impl(key);\n }\n\n /**\n * 全局关闭 tooltip\n * @param excludeId 可选,指定不需要关闭 tooltip 的实例 id\n */\n static hideTooltip(excludeId: MaybeArray<number> = []): void {\n InstanceManager.forEach(instance => instance?.hideTooltip?.(), excludeId);\n }\n\n /** 获取 Logger */\n static getLogger(): ILogger {\n return Logger.getInstance();\n }\n\n /** 图表实例管理器 */\n static readonly InstanceManager = InstanceManager;\n /** 主题管理器 */\n static readonly ThemeManager = ThemeManager;\n\n /** 全局配置 */\n static globalConfig: IGlobalConfig = {\n uniqueTooltip: true\n };\n\n /** 工具方法 */\n static readonly Utils = VCHART_UTILS;\n\n static readonly vglobal = vglobal;\n\n protected _originalSpec: any;\n protected _spec: any;\n getSpec() {\n return this._spec;\n }\n\n protected _specInfo: IChartSpecInfo;\n getSpecInfo() {\n return this._specInfo;\n }\n\n private _viewBox: IBoundsLike;\n private _chart!: Maybe<IChart>;\n private _chartSpecTransformer!: Maybe<IChartSpecTransformer>;\n private _compiler: Compiler;\n private _event: Maybe<IEvent>;\n get event() {\n return this._event;\n }\n private _userEvents: UserEvent[] = [];\n private _eventDispatcher: Maybe<IEventDispatcher>;\n private _dataSet!: Maybe<DataSet>;\n getDataSet() {\n return this._dataSet;\n }\n\n private _container?: HTMLElement;\n private _canvas?: HTMLCanvasElement | OffscreenCanvas | string;\n private _stage?: Stage;\n\n private _autoSize: boolean = true;\n private _option: IInitOption = {\n mode: RenderModeEnum['desktop-browser'],\n onError: (msg: string) => {\n throw new Error(msg);\n },\n optimize: {\n disableCheckGraphicWidthOutRange: true\n }\n };\n\n private _currentSize: { width: number; height: number };\n private _observer: ResizeObserver = null;\n\n private _currentThemeName: string;\n private _currentTheme: ITheme;\n private _cachedProcessedTheme: ITheme;\n\n private _onError?: (...args: any[]) => void;\n\n private _context: any = {}; // 存放用户在model初始化前通过实例方法传入的配置等\n private _isReleased: boolean;\n\n private _chartPlugin?: IChartPluginService;\n private _vChartPlugin?: IVChartPluginService;\n\n private _onResize?: () => void;\n\n private _renderState: RenderStateEnum = RenderStateEnum.render;\n\n protected _disableDimensionHoverEvent: boolean = false;\n\n constructor(spec: ISpec, options: IInitOption) {\n removeUndefined(options);\n this._option = {\n ...this._option,\n ...options\n };\n if (options?.optimize) {\n this._option.optimize = {\n ...this._option.optimize,\n ...options.optimize\n };\n }\n this._onError = this._option?.onError;\n\n const { dom, renderCanvas, mode, stage, poptip, ...restOptions } = this._option;\n const isTrueBrowseEnv = isTrueBrowser(mode);\n\n // 根据 mode 配置动态加载浏览器或 node 环境代码\n if (isTrueBrowseEnv) {\n registerBrowserEnv();\n } else if (mode === 'node') {\n registerNodeEnv();\n }\n\n if (isTrueBrowseEnv && dom) {\n this._container = isString(dom) ? vglobal.getElementById(dom) : dom;\n }\n if (renderCanvas) {\n this._canvas = renderCanvas;\n }\n if (stage) {\n this._stage = stage as unknown as Stage; // FIXME: 等待 vrender 解决类型和接口不匹配的问题 @zhouxinyu\n }\n\n if (mode !== 'node' && !this._container && !this._canvas && !this._stage) {\n this._option?.onError('please specify container or renderCanvas!');\n return;\n }\n\n this._viewBox = this._option.viewBox;\n this._currentThemeName = ThemeManager.getCurrentThemeName();\n this._setNewSpec(spec);\n this._updateCurrentTheme();\n this._currentSize = this.getCurrentSize();\n const pluginList: string[] = [];\n\n if (poptip !== false) {\n pluginList.push('poptipForText');\n }\n\n if (spec.type === ChartTypeEnum.sankey) {\n // 桑基图默认记载滚动条组件\n pluginList.push('scrollbar');\n }\n\n const logger = new Logger(this._option.logLevel ?? LoggerLevel.Error);\n Logger.setInstance(logger);\n if (this._option?.onError) {\n logger.addErrorHandler((...args) => {\n this._option?.onError?.(...args);\n });\n }\n this._compiler = new Compiler(\n {\n dom: this._container ?? 'none',\n canvas: renderCanvas\n },\n {\n mode: this._option.mode,\n stage,\n pluginList,\n ...restOptions,\n background: this._getBackground(),\n onError: this._onError\n }\n );\n this._compiler.setSize(this._currentSize.width, this._currentSize.height);\n this._eventDispatcher = new EventDispatcher(this, this._compiler);\n this._event = new Event(this._eventDispatcher, mode);\n this._compiler.initView();\n this._compiler.updateLayoutTag();\n // TODO: 如果通过 updateSpec 更新主题字体的验证\n // 设置全局字体\n this._setFontFamilyTheme(this.getTheme('fontFamily') as string);\n this._initDataSet(this._option.dataSet);\n this._autoSize = isTrueBrowseEnv ? (spec.autoFit ?? this._option.autoFit ?? true) : false;\n this._bindResizeEvent();\n this._bindViewEvent();\n this._initChartPlugin();\n\n InstanceManager.registerInstance(this);\n this._option.performanceHook?.afterCreateVChart?.(this);\n }\n\n /** 设置新 spec,返回是否成功 */\n private _setNewSpec(spec: any, forceMerge?: boolean): boolean {\n if (!spec) {\n return false;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n if (forceMerge && this._originalSpec) {\n spec = mergeSpec({}, this._originalSpec, spec);\n }\n this._originalSpec = spec;\n this._spec = this._getSpecFromOriginalSpec();\n return true;\n }\n\n private _getSpecFromOriginalSpec() {\n // 转换在实例上注册的函数 + 深拷贝 spec,保证 _originalSpec 和 _spec 的不同\n const spec = specTransform(this._originalSpec) as any;\n // because of in data-init, data will be set as array;\n spec.data = spec.data ?? [];\n return spec;\n }\n\n private _initChartSpec(spec: any, actionSource: VChartRenderActionSource) {\n // 如果用户注册了函数,在配置中替换相应函数名为函数内容\n if (VChart.getFunctionList() && VChart.getFunctionList().length) {\n spec = functionTransform(spec, VChart);\n }\n this._spec = spec;\n if (!this._chartSpecTransformer) {\n this._chartSpecTransformer = Factory.createChartSpecTransformer(\n this._spec.type,\n this._getChartOption(this._spec.type)\n );\n }\n\n this._chartSpecTransformer?.transformSpec(this._spec);\n\n // 插件生命周期\n this._chartPluginApply('onAfterChartSpecTransform', this._spec, actionSource);\n this._specInfo = this._chartSpecTransformer?.transformModelSpec(this._spec);\n\n // 插件生命周期\n this._chartPluginApply('onAfterModelSpecTransform', this._spec, this._specInfo, actionSource);\n }\n\n private _updateSpecInfo() {\n if (!this._chartSpecTransformer) {\n this._chartSpecTransformer = Factory.createChartSpecTransformer(\n this._spec.type,\n this._getChartOption(this._spec.type)\n );\n }\n this._specInfo = this._chartSpecTransformer?.createSpecInfo(this._spec);\n }\n\n private _initChart(spec: any) {\n if (!this._compiler) {\n this._option?.onError('compiler is not initialized');\n return;\n }\n if (this._chart) {\n this._option?.onError('chart is already initialized');\n return;\n }\n\n // 放到这里而不是放到chart内的考虑\n // 用户spec更新,也许会有core上图表实例的内容存在\n // 如果要支持spec的类似Proxy监听,更新逻辑应当从这一层开始。如果在chart上做,就需要在再向上发送spec更新消息,不是很合理。\n // todo: 问题1 存不存在 chart 需要在这个阶段处理的特殊字段?目前没有,但是理论上可以有?\n const chart = Factory.createChart(spec.type, spec, this._getChartOption(spec.type));\n if (!chart) {\n this._option?.onError('init chart fail');\n return;\n }\n this._chart = chart;\n this._chart.setCanvasRect(this._currentSize.width, this._currentSize.height);\n this._chart.created(this._chartSpecTransformer);\n this._chart.init();\n this._event.emit(ChartEvent.initialized, {\n chart,\n vchart: this\n });\n }\n\n private _releaseData() {\n if (this._dataSet) {\n // Object.values(this._dataSet.dataViewMap).forEach(d => {\n // d.target.removeAllListeners();\n // d.destroy();\n // });\n this._dataSet.dataViewMap = {};\n this._dataSet = null;\n }\n }\n\n private _bindViewEvent() {\n if (!this._compiler) {\n return;\n }\n\n (this._compiler.getStage()?.getTimeline() as any)?.on('animationEnd', () => {\n this._event.emit(ChartEvent.animationFinished, {\n chart: this._chart,\n vchart: this\n });\n });\n }\n\n private _bindResizeEvent() {\n if (this._autoSize) {\n this._onResize = throttle(this._doResize, this._option.resizeDelay ?? 100);\n\n if (this._container) {\n const ResizeObserverWindow: any = window.ResizeObserver;\n\n if (ResizeObserverWindow) {\n this._observer = new ResizeObserverWindow(this._onResize);\n this._observer?.observe(this._container);\n }\n }\n window.addEventListener('resize', this._onResize);\n }\n }\n\n private _unBindResizeEvent() {\n if (this._autoSize) {\n window.removeEventListener('resize', this._onResize);\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n }\n }\n\n getCurrentSize() {\n return calculateChartSize(\n this._spec,\n {\n container: this._container,\n canvas: this._canvas,\n mode: this._getMode(),\n modeParams: this._option.modeParams\n },\n {\n width: this._currentSize?.width ?? DEFAULT_CHART_WIDTH,\n height: this._currentSize?.height ?? DEFAULT_CHART_HEIGHT\n }\n );\n }\n\n private _doResize = () => {\n const { width, height } = this.getCurrentSize();\n if (this._currentSize.width !== width || this._currentSize.height !== height) {\n this._currentSize = { width, height };\n this.resizeSync(width, height);\n }\n };\n\n private _initDataSet(dataSet?: DataSet) {\n if (dataSet instanceof DataSet) {\n this._dataSet = dataSet;\n } else {\n this._dataSet = new DataSet();\n }\n registerDataSetInstanceParser(this._dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceParser(this._dataSet, 'array', arrayParser);\n registerDataSetInstanceTransform(this._dataSet, 'copyDataView', copyDataView);\n // 注册 dataset transform\n for (const key in Factory.transforms) {\n registerDataSetInstanceTransform(this._dataSet, key, Factory.transforms[key]);\n }\n // 注册 dataview parser\n for (const key in Factory.dataParser) {\n registerDataSetInstanceParser(this._dataSet, key, Factory.dataParser[key]);\n }\n }\n\n /** 在修改图表配置后重新渲染 */\n updateCustomConfigAndRerender(\n updateSpecResult: IUpdateSpecResult | (() => IUpdateSpecResult),\n sync?: boolean,\n option: IVChartRenderOption = {}\n ) {\n if (this._isReleased || !updateSpecResult) {\n return undefined;\n }\n if (isFunction(updateSpecResult)) {\n updateSpecResult = (updateSpecResult as () => IUpdateSpecResult)();\n }\n\n if ((updateSpecResult as IUpdateSpecResult).reAnimate) {\n this.stopAnimation();\n this._updateAnimateState(true);\n }\n\n this._reCompile(updateSpecResult as IUpdateSpecResult);\n if (sync) {\n return this._renderSync(option);\n }\n return this._renderAsync(option);\n }\n\n /** 执行自定义的回调修改图表配置,并重新编译(不渲染) */\n protected _updateCustomConfigAndRecompile(updateSpecResult: IUpdateSpecResult, option: IVChartRenderOption = {}) {\n if (!updateSpecResult) {\n return false;\n }\n this._reCompile(updateSpecResult);\n return this._beforeRender(option);\n }\n\n protected _reCompile(updateResult: IUpdateSpecResult, morphConfig?: IMorphConfig) {\n if (updateResult.reMake) {\n this._releaseData();\n this._initDataSet();\n this._chart?.release();\n this._chart = null as unknown as IChart;\n }\n\n if (updateResult.reTransformSpec) {\n // 释放图表等等\n this._chartSpecTransformer = null;\n }\n\n // 卸载了chart之后再设置主题 避免多余的reInit\n if (updateResult.changeTheme) {\n this._setCurrentTheme();\n this._setFontFamilyTheme(this.getTheme('fontFamily') as string);\n } else if (updateResult.changeBackground) {\n this._compiler?.setBackground(this._getBackground());\n }\n\n if (updateResult.reMake) {\n // 如果不需要动画,那么释放item,避免元素残留\n this._compiler?.releaseGrammar();\n // chart 内部事件 模块自己必须删除\n // 内部模块删除事件时,调用了event Dispatcher.release() 导致用户事件被一起删除\n // 外部事件现在需要重新添加\n this._userEvents.forEach(e => this._event?.on(e.eType as any, e.query as any, e.handler as any));\n } else if (updateResult.reCompile) {\n // recompile\n // 清除之前的所有 compile 内容\n this._compiler?.clear({ chart: this._chart, vChart: this });\n // 重新compile\n this._compiler?.compile({ chart: this._chart, vChart: this });\n }\n if (updateResult.reSize) {\n const { width, height } = this.getCurrentSize();\n\n this._currentSize = { width, height };\n this._chart?.onResize(width, height, false);\n this._compiler?.resize(width, height, false);\n }\n }\n\n /** 渲染之前的步骤,返回是否成功 */\n protected _beforeRender(option: IVChartRenderOption = {}): boolean {\n // 如果 vchart 实例已经卸载,终止渲染\n if (this._isReleased) {\n return false;\n }\n // 如果图表已经实例化,跳过该步骤\n if (this._chart) {\n return true;\n }\n\n const { transformSpec, actionSource } = option;\n\n if (transformSpec) {\n // 初始化图表 spec\n this._initChartSpec(this._spec, 'render');\n // 插件生命周期\n }\n this._chartPluginApply('onBeforeInitChart', this._spec, actionSource);\n\n // 实例化图表\n this._option.performanceHook?.beforeInitializeChart?.(this);\n this._initChart(this._spec);\n this._option.performanceHook?.afterInitializeChart?.(this);\n // 如果实例化失败,终止渲染\n if (!this._chart || !this._compiler) {\n return false;\n }\n this._chartPluginApply('onAfterInitChart', this._spec, actionSource);\n\n // compile\n this._option.performanceHook?.beforeCompileToVGrammar?.(this);\n this._compiler.compile({ chart: this._chart, vChart: this }, option);\n this._option.performanceHook?.afterCompileToVGrammar?.(this);\n return true;\n }\n\n /** 渲染之后的步骤 */\n protected _afterRender(): boolean {\n if (this._isReleased) {\n return false;\n }\n this._event.emit(ChartEvent.rendered, {\n chart: this._chart,\n vchart: this\n });\n return true;\n }\n\n /**\n * **同步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderSync(morphConfig?: IMorphConfig) {\n return this._renderSync({\n morphConfig,\n transformSpec: true,\n actionSource: 'render'\n });\n }\n\n /**\n * **异步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n async renderAsync(morphConfig?: IMorphConfig) {\n return this._renderAsync({\n morphConfig,\n transformSpec: true,\n actionSource: 'render'\n });\n }\n\n protected _renderSync = (option: IVChartRenderOption = {}) => {\n const self = this as unknown as IVChart;\n if (!this._beforeRender(option)) {\n return self;\n }\n // 填充数据绘图\n this._compiler?.render(option.morphConfig);\n this._updateAnimateState(false);\n\n this._afterRender();\n return self;\n };\n\n protected async _renderAsync(option: IVChartRenderOption = {}) {\n return this._renderSync(option);\n }\n\n private _updateAnimateState(initial?: boolean) {\n if (this.isAnimationEnable()) {\n const updateGraphicAnimationState = (graphic: IMarkGraphic) => {\n const diffState = graphic.context?.diffState;\n if (initial) {\n return diffState === 'exit' ? AnimationStateEnum.none : AnimationStateEnum.appear;\n }\n return diffState;\n };\n\n this._chart?.getAllRegions().forEach(region => {\n region.updateAnimateStateCallback(updateGraphicAnimationState);\n });\n this._chart?.getAllComponents().forEach(component => {\n component.updateAnimateStateCallback(updateGraphicAnimationState);\n });\n }\n }\n\n /**\n * 销毁图表\n */\n release() {\n if ((this._onResize as any)?.cancel) {\n (this._onResize as any).cancel();\n }\n this._chartPluginApply('releaseAll');\n this._chartPlugin = null;\n this._chartSpecTransformer = null;\n this._chart?.release();\n // eventDispatcher 的release 依赖 compiler\n this._eventDispatcher?.release();\n this._compiler?.release();\n this._unBindResizeEvent();\n // resetID(); // 为什么要重置ID呢?\n\n this._releaseData();\n\n this._onError = null;\n this._onResize = null;\n this._container = null;\n this._currentTheme = null;\n this._cachedProcessedTheme = null;\n this._option = null;\n this._chart = null;\n this._compiler = null;\n this._spec = null;\n this._specInfo = null;\n this._originalSpec = null;\n // this._option = null;\n this._userEvents = null;\n this._event = null;\n this._eventDispatcher = null;\n this._isReleased = true;\n\n InstanceManager.unregisterInstance(this);\n }\n\n /**\n * **异步方法** 更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param parserOptions 数据参数\n * @returns VChart 实例\n */\n async updateData(\n id: StringOrNumber,\n data: DataView | Datum[] | string,\n parserOptions?: IParserOptions,\n userUpdateOptions?: IUpdateDataResult\n ): Promise<IVChart> {\n return this.updateDataSync(id, data, parserOptions, userUpdateOptions);\n }\n\n private _updateDataById(id: StringOrNumber, data: DataView | Datum[] | string, parserOptions?: IParserOptions) {\n const preDV = this._spec.data.find((dv: any) => dv.name === id || dv.id === id);\n if (preDV) {\n if (preDV.id === id) {\n preDV.values = data;\n } else if (preDV.name === id) {\n preDV.parse(data, parserOptions);\n }\n } else {\n if (isArray(data)) {\n this._spec.data.push({\n id,\n values: data\n });\n } else {\n this._spec.data.push(data);\n }\n }\n }\n\n /**\n * **异步方法** 批量更新数据。\n * @param list 待更新的数据列表\n * @returns VChart 实例\n */\n async updateDataInBatches(list: { id: string; data: Datum[]; options?: IParserOptions }[]): Promise<IVChart> {\n if (this._chart) {\n this._chart.updateFullData(\n list.map(({ id, data, options }) => {\n return { id, values: data, parser: options };\n })\n );\n this._chart.updateGlobalScaleDomain();\n this._compiler.render();\n return this as unknown as IVChart;\n }\n\n this._spec.data = array(this._spec.data);\n list.forEach(({ id, data, options }) => {\n this._updateDataById(id, data, options);\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param id 数据 id\n * @param data 数据值\n * @param parserOptions 数据参数\n * @returns VChart 实例\n */\n updateDataSync(\n id: StringOrNumber,\n data: DataView | Datum[] | string,\n parserOptions?: IParserOptions,\n userUpdateOptions?: IUpdateDataResult\n ) {\n this._reSetRenderState();\n if (isNil(this._dataSet)) {\n return this as unknown as IVChart;\n }\n if (this._chart) {\n this._chart.updateData(id, data, true, parserOptions);\n\n if (userUpdateOptions?.reAnimate) {\n this.stopAnimation();\n this._updateAnimateState(true);\n }\n this._compiler.render();\n\n return this as unknown as IVChart;\n }\n this._spec.data = array(this._spec.data);\n\n this._updateDataById(id, data, parserOptions);\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n updateFullDataSync(\n data: IDataValues | IDataValues[],\n reRender: boolean = true,\n userUpdateOptions?: IUpdateSpecResult\n ) {\n this._reSetRenderState();\n if (this._chart) {\n this._chart.updateFullData(data);\n if (reRender) {\n if (userUpdateOptions?.reAnimate) {\n this.stopAnimation();\n this._updateAnimateState(true);\n }\n\n this._compiler.render();\n }\n return this as unknown as IVChart;\n }\n\n const prevData = array(this._spec.data) as DataView[];\n const list: IDataValues[] = array(data);\n list.forEach(d => {\n // only support update this attrs\n const { id, values, parser, fields } = d;\n const preDV = prevData.find(dv => dv.name === id);\n if (preDV) {\n if (preDV instanceof DataView) {\n preDV.setFields(cloneDeep(fields) as IFields);\n preDV.parse(values, cloneDeep(parser) as IParserOptions);\n } else {\n (preDV as IDataValues).values = values;\n isValid(parser) && ((preDV as IDataValues).parser = parser);\n isValid(fields) && ((preDV as IDataValues).fields = fields);\n }\n } else {\n // new data\n const dataView = dataToDataView(d, <DataSet>this._dataSet, prevData);\n\n if (isArray(this._spec.data)) {\n this._spec.data.push(dataView);\n }\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n async updateFullData(data: IDataValues | IDataValues[], reRender: boolean = true) {\n return this.updateFullDataSync(data, reRender);\n }\n\n /**\n * **异步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n async updateSpec(\n spec: ISpec,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig,\n userUpdateOptions?: IUpdateSpecResult\n ) {\n const result = this._updateSpec(spec, forceMerge, userUpdateOptions);\n\n if (!result) {\n return this as unknown as IVChart;\n }\n\n await this.updateCustomConfigAndRerender(result, false, {\n morphConfig,\n transformSpec: result.reTransformSpec,\n actionSource: 'updateSpec'\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n updateSpecSync(\n spec: ISpec,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig,\n userUpdateOptions?: IUpdateSpecResult\n ) {\n const result = this._updateSpec(spec, forceMerge, userUpdateOptions);\n\n if (!result) {\n return this as unknown as IVChart;\n }\n\n this.updateCustomConfigAndRerender(result, true, {\n morphConfig,\n transformSpec: result.reTransformSpec,\n actionSource: 'updateSpec'\n });\n return this as unknown as IVChart;\n }\n\n /** 更新 spec 并重新编译(不渲染),返回是否成功 */\n updateSpecAndRecompile(spec: ISpec, forceMerge: boolean = false, option: IVChartRenderOption = {}) {\n const result = this._updateSpec(spec, forceMerge);\n return this._updateCustomConfigAndRecompile(result, {\n actionSource: 'updateSpecAndRecompile',\n ...option\n });\n }\n\n private _updateSpec = (\n spec: ISpec,\n forceMerge: boolean = false,\n userUpdateOptions?: IUpdateSpecResult\n ): IUpdateSpecResult | undefined => {\n this._reSetRenderState();\n\n const lastSpec = this._spec;\n\n const result: IUpdateSpecResult = {\n changeBackground: false,\n reTransformSpec: false,\n change: false,\n reMake: false,\n reCompile: false,\n reSize: false,\n changeTheme: false\n };\n\n // 这里已经将 this._spec 设置为新spec\n if (!this._setNewSpec(spec, forceMerge)) {\n return undefined;\n }\n\n // 这时图表内对象是旧的,对应上一份 spec\n if (!isEqual(lastSpec.theme, this._spec.theme)) {\n result.changeTheme = true;\n // setCurrentTheme 会导致 chart 实例的 reInit。\n // 只要模块从 vchart 实例获取与 spec 相关的信息,都会出现错误,它们已经不匹配了\n // this._setCurrentTheme();\n } else if (!isEqual(this._spec.background, lastSpec.background)) {\n result.reMake = true;\n result.changeBackground = true;\n }\n\n const reSize = this._shouldChartResize(lastSpec);\n result.reSize = reSize;\n\n if (this._spec.type !== lastSpec.type) {\n this._compiler?.updateLayoutTag();\n result.reMake = true;\n result.reTransformSpec = true;\n result.change = true;\n result.changeTheme = true; // 支持了根据图表类型 merge 当前主题。当 type 变了后,需要更新主题\n return result;\n }\n\n // 再次处理 spec 并得到 specInfo\n this._initChartSpec(this._spec, 'updateSpec');\n\n const res = mergeUpdateResult(this._chart.updateSpec(this._spec), result);\n\n return userUpdateOptions\n ? {\n ...res,\n ...userUpdateOptions\n }\n : res;\n };\n\n /**\n * **异步方法** spec 更新\n * @param filter\n * @param spec\n * @param forceMerge\n * @returns\n * @sync 1.4.0\n */\n async updateModelSpec(\n filter: string | { type: string; index: number } | ((model: IModel) => boolean),\n spec: unknown,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig\n ) {\n return this.updateModelSpecSync(filter, spec, forceMerge, morphConfig);\n }\n\n /**\n * **同步方法** spec 更新\n * @param filter\n * @param spec\n * @param forceMerge\n * @returns\n * @sync 1.4.0\n */\n updateModelSpecSync(\n filter: string | { type: string; index: number } | ((model: IModel) => boolean),\n spec: unknown,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig\n ) {\n if (!spec || !this._spec) {\n return this as unknown as IVChart;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n\n if (!isFunction(filter)) {\n // find spec and update\n mergeSpecWithFilter(this._spec, filter, spec, forceMerge);\n }\n\n if (this._chart) {\n const model = this._chart.getModelInFilter(filter);\n if (model) {\n return this._updateModelSpec(model, spec, true, forceMerge, morphConfig) as IVChart;\n }\n }\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 模块 spec 更新\n * @param model\n * @param spec\n * @param forceMerge\n * @returns\n */\n protected _updateModelSpec(\n model: IModel,\n spec: unknown,\n sync: boolean = false,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig\n ) {\n if (forceMerge) {\n spec = mergeSpec({}, model.getSpec(), spec);\n }\n\n const result = model.updateSpec(spec);\n model.reInit(spec);\n if (result.change || result.reCompile || result.reMake || result.reSize || result.reRender) {\n this._chart.reDataFlow();\n }\n\n return this.updateCustomConfigAndRerender(result, sync, {\n morphConfig,\n transformSpec: false,\n actionSource: 'updateModelSpec'\n });\n }\n\n /**\n * **异步方法**,图表尺寸更新方法\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n async resize(width: number, height: number) {\n return this.resizeSync(width, height);\n }\n\n /**\n * **同步方法**,图表尺寸更新方法\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n resizeSync(width: number, height: number) {\n if (!this._beforeResize(width, height)) {\n return this as unknown as IVChart;\n }\n this._compiler.resize?.(width, height);\n return this._afterResize();\n }\n\n protected _beforeResize(width: number, height: number): boolean {\n if (!this._chart || !this._compiler) {\n return false;\n }\n // 如果宽高未变化,不需要重新执行 resize,防止当图表初始化时会执行一次多余的 resize\n const chartCanvasRect = this._chart.getCanvasRect();\n if (chartCanvasRect && chartCanvasRect.width === width && chartCanvasRect.height === height) {\n return false;\n }\n\n // 插件生命周期\n this._chartPluginApply('onBeforeResize', width, height);\n\n this._option.performanceHook?.beforeResizeWithUpdate?.(this);\n this._chart.onResize(width, height, false);\n this._option.performanceHook?.afterResizeWithUpdate?.(this);\n\n return true;\n }\n\n protected _afterResize() {\n if (!this._isReleased) {\n // emit resize event\n this._event.emit(ChartEvent.afterResize, { chart: this._chart });\n }\n return this as unknown as IVChart;\n }\n\n /**\n * 更新绘制区域\n * @param viewBox 绘制区域\n * @param reRender 是否重新渲染,默认为 true\n * @param reLayout 是否重新布局,默认为 true\n * @returns\n */\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true, reLayout: boolean = true) {\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n this._viewBox = viewBox;\n // 更新 layout 参数\n this._chart.updateViewBox(viewBox, reLayout);\n if (reLayout) {\n // 重新布局\n this._compiler.render();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this._chart.onEvaluateEnd();\n }\n // 获取 compiler\n this._compiler.updateViewBox(viewBox, reRender);\n return this as unknown as IVChart;\n }\n\n // 事件相关方法\n on(eType: EventType, handler: EventCallback<ExtendEventParam>): void;\n on(eType: EventType, query: EventQuery, handler: EventCallback<ExtendEventParam>): void;\n on(\n eType: EventType,\n query: EventQuery | EventCallback<ExtendEventParam>,\n handler?: EventCallback<ExtendEventParam>\n ): void {\n if (!this._userEvents) {\n // userEvents正常情况下有默认值,如果!userEvents,说明此时chart被release了,就可以终止流程\n return;\n }\n this._userEvents.push({\n eType,\n query: typeof query === 'function' ? null : query,\n handler:\n typeof query === 'function'\n ? (query as EventCallback<ExtendEventParam>)\n : (handler as EventCallback<ExtendEventParam>)\n });\n this._event?.on(eType as any, query as any, handler as any);\n }\n off(eType: EventType, handler?: EventCallback<ExtendEventParam>): void {\n if (!this._userEvents || this._userEvents.length === 0) {\n return;\n }\n if (handler) {\n const index = this._userEvents.findIndex(e => e.eType === eType && e.handler === handler);\n if (index >= 0) {\n this._userEvents.splice(index, 1);\n this._event?.off(eType, handler);\n }\n } else {\n this._userEvents.forEach(e => {\n if (e.eType === eType) {\n this._event?.off(eType, e.handler);\n }\n });\n this._userEvents = this._userEvents.filter(e => e.eType !== eType);\n }\n }\n\n // 状态相关方法\n /**\n * 更新或设置图元状态\n * @param state 状态筛选器\n * @param filter 筛选器\n */\n updateState(\n state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>,\n filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean //series + mark 筛选\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.updateState(state, filter);\n }\n\n /**\n * 更新图元选中状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setSelected(\n datum: MaybeArray<any> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setSelected(datum, filter, region);\n }\n\n /**\n * 更新图元 hover 状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setHovered(\n datum: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setHovered(datum, filter, region);\n }\n\n /**\n * 清除所有图元的状态\n *\n * @since 1.11.0\n */\n clearState(state: string) {\n if (!this._chart) {\n return;\n }\n this._chart.clearState(state);\n }\n\n /**\n * 清除所有图元的所有状态\n *\n * @since 1.12.4\n */\n clearAllStates() {\n if (!this._chart) {\n return;\n }\n this._chart.clearAllStates();\n }\n\n /**\n * 清除所有图元的选中状态\n *\n * @since 1.11.0\n */\n clearSelected() {\n if (!this._chart) {\n return;\n }\n this._chart.clearSelected();\n }\n\n /**\n * 清除所有图元的hover状态\n *\n * @since 1.11.0\n */\n clearHovered() {\n if (!this._chart) {\n return;\n }\n this._chart.clearHovered();\n }\n\n // 主题相关方法\n /**\n * 当 spec 或者 currentThemeName 有变化时需要调用此方法对 currentTheme 进行更新\n * @param nextThemeName 通过 setCurrentTheme 方法新设的主题\n */\n private _updateCurrentTheme(nextThemeName?: string) {\n const optionTheme: Maybe<string | ITheme> = this._option.theme;\n const specTheme: Maybe<string | ITheme> = this._spec?.theme;\n const chartType: string = this._spec?.type;\n if (nextThemeName) {\n this._currentThemeName = nextThemeName;\n }\n\n const processThemeByChartType = (type: string, theme: ITheme) => {\n if (theme.chart?.[type]) {\n theme = mergeTheme({}, theme, theme.chart[type]);\n }\n return theme;\n };\n\n let currentTheme;\n // 处理 specTheme 和 optionTheme, merge -> transform\n // 优先级 currentTheme < optionTheme < specTheme\n if (!isEmpty(optionTheme) || !isEmpty(specTheme)) {\n if (\n (isString(optionTheme) && (!specTheme || isString(specTheme))) ||\n (isString(specTheme) && (!optionTheme || isString(optionTheme)))\n ) {\n const finalTheme = mergeTheme(\n {},\n getThemeObject(this._currentThemeName),\n getThemeObject(optionTheme),\n getThemeObject(specTheme)\n );\n\n this._currentTheme = processThemeByChartType(chartType, finalTheme);\n } else {\n const finalTheme = mergeTheme(\n {},\n getThemeObject(this._currentThemeName),\n getThemeObject(optionTheme),\n getThemeObject(specTheme)\n );\n this._currentTheme = processThemeByChartType(chartType, finalTheme);\n }\n } else {\n currentTheme = getThemeObject(this._currentThemeName);\n this._currentTheme = processThemeByChartType(chartType, currentTheme);\n }\n this._cachedProcessedTheme = null;\n\n // 设置 poptip 的主题\n setPoptipTheme(this.getTheme('component', 'poptip') as PopTipAttributes);\n // 设置背景色\n this._compiler?.setBackground(this._getBackground());\n }\n\n private _shouldChartResize(oldSpec: ISpec): boolean {\n let resize = false;\n\n if (isNil(this._spec.width)) {\n !isNil(oldSpec.width) && (this._spec.width = oldSpec.width);\n } else if (this._spec.width !== oldSpec.width) {\n resize = true;\n }\n\n if (isNil(this._spec.height)) {\n !isNil(oldSpec.height) && (this._spec.height = oldSpec.height);\n } else if (this._spec.height !== oldSpec.height) {\n resize = true;\n }\n\n const lasAutoSize = this._autoSize;\n this._autoSize = isTrueBrowser(this._option.mode) ? (this._spec.autoFit ?? this._option.autoFit ?? true) : false;\n if (this._autoSize !== lasAutoSize) {\n resize = true;\n }\n return resize;\n }\n\n private _getBackground() {\n const specBackground =\n typeof this._spec.background === 'string' || (isObject(this._spec.background) && this._spec.background.gradient)\n ? this._spec.background\n : null;\n // spec > spec.theme > initOptions.theme\n return specBackground || this.getTheme('background') || this._option.background;\n }\n\n /**\n * 获取当前主题,会返回完整的主题配置(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n * */\n getCurrentTheme() {\n return getThemeObject(this._currentThemeName);\n }\n\n /**\n * 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n */\n getCurrentThemeName() {\n return this._currentThemeName;\n }\n\n /**\n * **异步方法**, 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n async setCurrentTheme(name: string) {\n return this.setCurrentThemeSync(name);\n }\n\n /**\n * **同步方法** 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n setCurrentThemeSync(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return this as unknown as IVChart;\n }\n const result = this._setCurrentTheme(name);\n this._setFontFamilyTheme(this.getTheme('fontFamily') as string);\n this.updateCustomConfigAndRerender(result, true, {\n transformSpec: false,\n actionSource: 'setCurrentTheme'\n });\n return this as unknown as IVChart;\n }\n\n protected _setCurrentTheme(name?: string): IUpdateSpecResult {\n this._updateCurrentTheme(name);\n this._initChartSpec(this._getSpecFromOriginalSpec(), 'setCurrentTheme');\n this._chart?.setCurrentTheme();\n return { change: true, reMake: false };\n }\n\n private _setFontFamilyTheme(fontFamily: string) {\n if (!fontFamily) {\n return;\n }\n // 全局字体的特殊设置逻辑\n // 设置全局字体\n (this.getStage() as any)?.setTheme({\n text: { fontFamily },\n richtext: { fontFamily }\n });\n }\n\n // Tooltip 相关方法\n private _getTooltipComponent(): Tooltip | undefined {\n const tooltip = this._chart?.getComponentsByType(ComponentTypeEnum.tooltip)[0] as unknown as Tooltip;\n return tooltip;\n }\n\n /**\n * 自定义 TooltipHandler\n * @param tooltipHandler\n */\n setTooltipHandler(tooltipHandler: ITooltipHandler) {\n this._context.tooltipHandler = tooltipHandler;\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n tooltip.tooltipHandler?.release?.();\n tooltip.tooltipHandler = tooltipHandler;\n }\n }\n\n /**\n * 获取用户定义的 TooltipHandler\n * @returns ITooltipHandler\n */\n getTooltipHandlerByUser(): ITooltipHandler | undefined {\n return this._context?.tooltipHandler;\n }\n\n /**\n * 获取 TooltipHandler\n * @returns\n */\n getTooltipHandler(): ITooltipHandler | undefined {\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n return tooltip.tooltipHandler;\n }\n return this._context.tooltipHandler;\n }\n\n /**\n * 手动调用展示 tooltip\n * @param datum 原始数据\n * @param options\n * @returns\n */\n showTooltip(datum: Datum, options: IShowTooltipOption): boolean {\n const tooltip = this._getTooltipComponent();\n return (isValid(datum) && tooltip?.showTooltip(datum, options) !== 'none') ?? false;\n }\n\n /**\n * 手动调用,关闭 tooltip\n * @returns\n */\n hideTooltip(): boolean {\n const tooltip = this._getTooltipComponent();\n return tooltip?.hideTooltip() ?? false;\n }\n\n // 图例相关 api\n /**\n * 根据图例组件 id 获取图例数据\n * @param id 组件 id\n * @returns\n */\n getLegendDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getLegendData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取图例数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendDataByIndex(index: number = 0) {\n const legends = this._chart?.getComponentsByType(ComponentTypeEnum.discreteLegend) as unknown as ILegend[];\n\n if (legends && legends[index]) {\n return legends[index].getLegendData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 获取当前图例的选中项\n * @param id 组件 id\n * @returns\n */\n getLegendSelectedDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getSelectedData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取当前图例的选中项\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendSelectedDataByIndex(index: number = 0) {\n const legends = this._chart?.getComponentsByType(ComponentTypeEnum.discreteLegend) as unknown as ILegend[];\n\n if (legends && legends[index]) {\n return legends[index].getSelectedData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 更新图例选中数据\n * @param id\n * @returns\n */\n setLegendSelectedDataById(id: string, selectedData: StringOrNumber[]) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n legendComponent.setSelectedData(selectedData);\n }\n }\n\n /**\n * 根据图例组件索引更新图例选中数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n setLegendSelectedDataByIndex(index: number = 0, selectedData: StringOrNumber[]) {\n const legends = this._chart?.getComponentsByType(ComponentTypeEnum.discreteLegend) as unknown as ILegend[];\n\n if (legends && legends[index]) {\n legends[index].setSelectedData(selectedData);\n }\n }\n\n // 保存图片相关的方法\n /**\n * **异步方法**返回一个包含图片展示的 data URI。\n * @returns data URI\n */\n async getDataURL() {\n const stage = this.getStage();\n if (this._chart && stage) {\n // 因为 vrender 是 autoRender 的,它不能确认第几帧才是完整的图表,所以这里调用一次 render 以保证获取到的是完整的画布\n stage.render();\n const canvas = this._chart.getCanvas();\n const url = await getCanvasDataURL(canvas, {\n onError: this._onError\n });\n return url;\n }\n this._option?.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n /**\n * **异步方法** 导出图表图片,只支持浏览器端。\n * @param name 保存的图片名称\n * @returns\n */\n async exportImg(name?: string) {\n if (!isTrueBrowser(this._option.mode)) {\n this._option?.onError(new TypeError(`non-browser environment can not export img`));\n return;\n }\n\n const dataURL = await this.getDataURL();\n if (dataURL) {\n URLToImage(name, dataURL);\n } else {\n this._option?.onError(new ReferenceError(`render is not defined`));\n }\n }\n /**\n * 导出绘制了图表内容的 canvas\n * @returns HTMLCanvasElement\n */\n exportCanvas(): HTMLCanvasElement | undefined {\n const stage = this.getStage();\n if (this._chart && stage) {\n return stage.toCanvas();\n }\n this._option?.onError(new ReferenceError(`render is not defined`));\n return undefined;\n }\n\n /**\n * 目前仅支持 node 环境,用于 node 端的图片导出\n * @returns\n */\n getImageBuffer() {\n if (this._option.mode !== 'node') {\n this._option?.onError(new TypeError('getImageBuffer() now only support node environment.'));\n return;\n }\n const stage = this.getStage();\n if (stage) {\n stage.render();\n const buffer = stage.window.getImageBuffer();\n return buffer;\n }\n this._option?.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n // 布局相关的方法\n /**\n * 设置自定义布局\n */\n setLayout(layout: LayoutCallBack) {\n this._option.layout = layout;\n this._chart?.setLayout(layout);\n }\n /**\n * 强制重新布局\n */\n reLayout() {\n this._chart.resetLayoutItemTag();\n this._chart?.setLayoutTag(true);\n }\n\n /**\n * 获取编译器实例\n * @returns\n */\n getCompiler() {\n return this._compiler;\n }\n\n /**\n * Get the chart instance\n * 获取 Chart 图表实例。\n * @returns Chart 实例\n */\n getChart() {\n return this._chart;\n }\n\n /**\n * Get the renderer instance.\n * 获取渲染引擎实例。\n * @returns the instance of VRender Stage\n */\n getStage(): IStage {\n return this._compiler.getStage();\n }\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._compiler?.getCanvas();\n }\n\n /**\n * 获取图表的 dom 容器\n * @returns\n */\n getContainer(): Maybe<HTMLElement> {\n // 用户传入 dom container\n if (isValid(this._container)) {\n return this._container;\n }\n\n // 用户传入 canvas\n let canvasNode: Maybe<HTMLCanvasElement>;\n if (isString(this._canvas)) {\n canvasNode = vglobal.getElementById(this._canvas) as HTMLCanvasElement;\n } else {\n canvasNode = this._canvas as HTMLCanvasElement;\n }\n if (isValid(canvasNode)) {\n return canvasNode.parentElement;\n }\n\n // 用户传入 stage\n return this.getCanvas()?.parentElement;\n }\n\n /**\n * 获取图表所有的组件实例\n * @returns 组件实例\n */\n getComponents() {\n return this._chart.getAllComponents();\n }\n\n /**\n * 获取全局scale\n * @param scaleName 指定scale的id\n * @returns scale实例\n */\n getScale(scaleId: string) {\n const globalScale = this._chart?.getGlobalScale();\n\n return globalScale?.getScale(scaleId);\n }\n\n /**\n * setDimensionIndex could trigger mark state, tooltip, crosshair\n * @param value dimension value\n * @param opt option for set trigger\n */\n setDimensionIndex(value: StringOrNumber, opt: DimensionIndexOption = {}) {\n return this._chart?.setDimensionIndex(value, opt);\n }\n\n disableDimensionHoverEvent(value?: boolean) {\n if (value !== undefined) {\n this._disableDimensionHoverEvent = value;\n }\n return this._disableDimensionHoverEvent;\n }\n disableCrossHair(value: boolean = true) {\n this.getChart()\n .getComponentsByKey('crosshair')\n .forEach(crosshair => ((crosshair as ICrossHair).enable = !value));\n }\n disableTooltip(value: boolean = true) {\n this.getChart()\n .getComponentsByKey('tooltip')\n .forEach(tooltip => ((tooltip as ITooltip).enable = !value));\n }\n\n showCrosshair(cb: (axis: IAxis) => false | string | number) {\n this._chart?.showCrosshair(cb);\n }\n\n /** 停止正在进行的所有动画 */\n stopAnimation() {\n (this.getStage() as any)?.stopAnimation(true);\n }\n\n reRunNormalAnimation() {\n (this.getStage() as any)?.reApplyAnimationState('normal', true);\n }\n\n /** 暂停正在进行的所有动画 */\n pauseAnimation() {\n (this.getStage() as any)?.pauseAnimation(true);\n }\n\n /** 恢复暂停时正在进行的所有动画 */\n resumeAnimation() {\n (this.getStage() as any)?.resumeAnimation(true);\n }\n\n // TODO: 后续需要考虑滚动场景\n /**\n * Convert the data corresponding to the graph into coordinates\n * 将图形对应的数据转换为坐标,该数据需要从传入图表的数据集中获取,如果数据不存在数据集中,可以使用 `convertValueToPosition` 方法\n * @param datum 要转化的数据 the datum(from data source)to convert\n * @param dataLinkInfo 数据的绑定信息,the data link info, could be seriesId or seriesIndex, default is { seriesIndex: 0 }\n * @param isRelativeToCanvas 是否相对画布坐标 Whether relative to canvas coordinates\n * @param checkInViewData 是否检查数据对应的图元是否在视图中,如果不在视图中,返回 null\n * @returns\n */\n convertDatumToPosition(\n datum: Datum,\n dataLinkInfo: DataLinkSeries = {},\n isRelativeToCanvas: boolean = false,\n checkInViewData?: boolean\n ): IPoint | null {\n if (!this._chart) {\n return null;\n }\n if (isEmpty(datum)) {\n return null;\n }\n const { seriesId, seriesIndex = 0 } = dataLinkInfo;\n\n let series: ISeries;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (series) {\n const keys = Object.keys(datum);\n const handledDatum = series\n .getViewData()\n // eslint-disable-next-line eqeqeq\n .latestData.find((viewDatum: Datum) => keys.every(k => viewDatum[k] == datum[k]));\n const seriesLayoutStartPoint = series.getRegion().getLayoutStartPoint();\n let point: IPoint;\n if (handledDatum) {\n point = series.dataToPosition(handledDatum, checkInViewData);\n } else {\n point = series.dataToPosition(datum, checkInViewData);\n }\n if (!point) {\n return null;\n }\n return convertPoint(point, seriesLayoutStartPoint, isRelativeToCanvas);\n }\n\n return null;\n }\n\n // TODO: 1. 后续需要考虑滚动场景 2. 极坐标场景支持\n convertValueToPosition(\n value: StringOrNumber,\n dataLinkInfo: DataLinkAxis,\n isRelativeToCanvas?: boolean\n ): number | null;\n convertValueToPosition(\n value: [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkSeries,\n isRelativeToCanvas?: boolean\n ): IPoint | null;\n convertValueToPosition(\n value: StringOrNumber | [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkAxis | DataLinkSeries,\n isRelativeToCanvas: boolean = false\n ): number | IPoint | null {\n if (!this._chart || isNil(value) || isEmpty(dataLinkInfo)) {\n return null;\n }\n\n if (!isArray(value)) {\n // 如果单个值,则默认使用 axis 绑定信息\n const { axisId, axisIndex } = dataLinkInfo as DataLinkAxis;\n let axis;\n if (isValid(axisId)) {\n axis = this._chart.getComponentsByKey('axes').find(s => s.userId === axisId);\n } else if (isValid(axisIndex)) {\n axis = this._chart.getComponentsByKey('axes')?.[axisIndex];\n }\n if (!axis) {\n warn('Please check whether the `axisId` or `axisIndex` is set!');\n return null;\n }\n\n const pointValue = (axis as IAxis)?.valueToPosition(value);\n if (isRelativeToCanvas) {\n const axisLayoutStartPoint = axis.getLayoutStartPoint();\n const axisOrient = (axis as IAxis).getOrient();\n return (\n pointValue +\n (axisOrient === 'bottom' || axisOrient === 'top' ? axisLayoutStartPoint.x : axisLayoutStartPoint.y)\n );\n }\n\n return pointValue;\n }\n const { seriesId, seriesIndex } = dataLinkInfo as DataLinkSeries;\n let series;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (!series) {\n warn('Please check whether the `seriesId` or `seriesIndex` is set!');\n return null;\n }\n\n return convertPoint(\n (series as ISeries).valueToPosition(value[0], value[1]),\n series.getRegion().getLayoutStartPoint(),\n isRelativeToCanvas\n );\n }\n\n /**\n * 获取实例函数\n * @param key 函数名称\n * @returns\n */\n getFunction(key: string): Function | null {\n return ExpressionFunction.instance().getFunction(key);\n }\n\n /**\n * 注册实例函数(对内包装一层,区分名字,避免重名问题)\n * @param key 函数名称\n * @param fun 函数内容\n * @returns\n */\n registerFunction(key: string, fun: Function) {\n if (!key || !fun) {\n return;\n }\n ExpressionFunction.instance().registerFunction(key, fun);\n }\n\n /**\n * 注销实例函数\n * @param key 函数名称\n */\n unregisterFunction(key: string) {\n if (!key) {\n return;\n }\n ExpressionFunction.instance().unregisterFunction(key);\n }\n\n /**\n * 获取实例函数列表\n * @returns\n */\n getFunctionList() {\n return ExpressionFunction.instance().getFunctionNameList();\n }\n\n /** 设置运行时 spec */\n setRuntimeSpec(spec: any) {\n this._spec = spec;\n this._updateSpecInfo();\n }\n\n /**\n * 根据 indicator 组件 id 更新 indicator 数据\n * @since 1.11.7\n */\n updateIndicatorDataById(id: string, datum?: Datum) {\n const indicator = this._chart?.getComponentByUserId(id) as unknown as IIndicator;\n if (indicator) {\n indicator.updateDatum(datum);\n }\n }\n\n /**\n * 根据 indicator 组件索引更新 indicator 数据\n * @since 1.11.7\n */\n updateIndicatorDataByIndex(index: number = 0, datum?: Datum) {\n const indicators = this._chart?.getComponentsByType(ComponentTypeEnum.indicator) as unknown as IIndicator[];\n if (indicators && indicators[index]) {\n indicators[index].updateDatum(datum);\n }\n }\n\n /**\n * 地图缩放 API\n * @param [regionIndex=0] 根据索引顺序指定某个 region 区域的地图坐标系进行缩放\n * @param zoom 缩放比例\n * @param center 缩放中心\n * @since 1.11.10\n */\n geoZoomByIndex(regionIndex: number = 0, zoom: number, center?: { x: number; y: number }) {\n this._geoZoomByQuery({ regionIndex }, zoom, center);\n }\n\n /**\n * 地图缩放 API\n * @param [regionId=0] 根据 region id 指定某个 region 区域的地图坐标系进行缩放\n * @param zoom 缩放比例\n * @param center 缩放中心\n * @since 1.11.10\n */\n geoZoomById(regionId: string | number, zoom: number, center?: { x: number; y: number }) {\n this._geoZoomByQuery({ regionId }, zoom, center);\n }\n\n _geoZoomByQuery(query: MaybeArray<IRegionQuerier>, zoom: number, center?: { x: number; y: number }) {\n const region = this._chart?.getRegionsInQuerier(query)[0];\n const geoCoordinates = this._chart?.getComponentsByType(\n ComponentTypeEnum.geoCoordinate\n ) as unknown as IGeoCoordinate[];\n const coord = geoCoordinates?.find(coord => coord.getRegions()?.includes(region));\n if (coord) {\n coord.dispatchZoom(zoom, center);\n }\n }\n\n private _initChartPlugin() {\n const pluginList = Factory.getChartPlugins();\n if (pluginList.length > 0) {\n this._chartPlugin = new ChartPluginService(this);\n this._chartPlugin.load(pluginList.map(p => new p()));\n // 插件生命周期\n this._chartPluginApply('onInit', this._spec);\n }\n\n const vChartPluginList = Factory.getVChartPlugins();\n if (vChartPluginList.length > 0) {\n this._vChartPlugin = new VChartPluginService(this);\n this._vChartPlugin.load(vChartPluginList.map(p => new p()));\n // 插件生命周期\n this._vChartPlugin.onInit();\n }\n }\n\n private _chartPluginApply(funcName: keyof IChartPluginService, ...args: any[]) {\n if (!this._chartPlugin || !this._chartPlugin[funcName]) {\n return;\n }\n (this._chartPlugin[funcName] as (...args: any[]) => any).apply(this._chartPlugin, args);\n }\n\n protected _getMode() {\n return this._option.mode || RenderModeEnum['desktop-browser'];\n }\n\n protected getTheme = (...keys: string[]): any => {\n if (!this._currentTheme || !keys || !keys.length) {\n return undefined;\n }\n if (!this._cachedProcessedTheme) {\n this._cachedProcessedTheme = {};\n }\n\n const cacheKey = keys.join('.');\n\n if ((this._cachedProcessedTheme as any)[cacheKey]) {\n return (this._cachedProcessedTheme as any)[cacheKey];\n }\n let theme: any = this._currentTheme;\n keys.forEach((key: string, index: number) => {\n if (index === 1 && (keys[0] === 'series' || keys[0] === 'component')) {\n const buildInTheme =\n keys[0] === 'series' ? Factory.getSeriesBuiltInTheme(key) : Factory.getComponentBuiltInTheme(key);\n\n theme = theme ? mergeSpec({}, buildInTheme, (theme as any)[key]) : buildInTheme;\n } else {\n theme = theme?.[key];\n }\n\n if (index === keys.length - 1 && isValid(theme)) {\n theme = preprocessTheme(\n {\n [key]: theme\n },\n this._currentTheme.colorScheme,\n this._currentTheme.token\n )[key];\n }\n });\n\n (this._cachedProcessedTheme as any)[cacheKey] = theme;\n\n return theme;\n };\n\n isAnimationEnable() {\n if ('animation' in this._option) {\n return !!this._option.animation;\n }\n\n return this._spec.animation !== false;\n }\n\n protected _getChartOption(type: string): IChartOption {\n return {\n type,\n globalInstance: this,\n eventDispatcher: this._eventDispatcher!,\n dataSet: this._dataSet!,\n container: this._container,\n canvas: this._canvas,\n map: new Map(),\n mode: this._getMode(),\n modeParams: this._option.modeParams,\n getCompiler: () => this._compiler,\n viewBox: this._viewBox,\n getTheme: this.getTheme,\n getSpecInfo: () => this._specInfo ?? {},\n\n layout: this._option.layout,\n onError: this._onError,\n disableTriggerEvent: this._option.disableTriggerEvent === true,\n componentShowContent: this._option.componentShowContent\n };\n }\n\n runDisappearAnimation() {\n this._renderState = RenderStateEnum.disappear;\n this.getStage().eventSystem.pauseTriggerEvent();\n this.getStage().applyAnimationState(\n ['disappear'],\n [\n {\n name: 'disappear',\n animation: this._compiler.stateAnimationConfig.disappear\n }\n ]\n );\n }\n\n private _reSetRenderState() {\n this._renderState = RenderStateEnum.render;\n this.getStage().eventSystem.resumeTriggerEvent();\n }\n}\n\nexport const registerVChartCore = () => {\n // install region module\n Factory.registerRegion('region', Region);\n // install layout module\n Factory.registerLayout('base', Layout);\n // install essential marks\n registerGroupMark();\n // install essential vgrammar transform\n registerGesturePlugin();\n // install default interaction\n registerElementHighlight();\n registerElementSelect();\n // install default theme\n registerTheme(darkTheme.name, darkTheme);\n};\n\nregisterVChartCore();\n"]}
1
+ {"version":3,"sources":["../src/core/vchart.ts"],"names":[],"mappings":"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","file":"vchart.js","sourcesContent":["import type { ISeries } from '../series/interface/series';\nimport { arrayParser } from '../data/parser/array';\nimport type { ILayoutConstructor, LayoutCallBack } from '../layout/interface';\nimport type { IDataValues, IMarkStateSpec, IInitOption } from '../typings/spec/common';\n// eslint-disable-next-line no-duplicate-imports\nimport { RenderModeEnum } from '../typings/spec/common';\nimport type { ISeriesConstructor } from '../series/interface';\nimport {\n ChartTypeEnum,\n type DimensionIndexOption,\n type IChart,\n type IChartConstructor,\n type IChartOption,\n type IChartSpecInfo,\n type IChartSpecTransformer\n} from '../chart/interface';\nimport type { IComponentConstructor } from '../component/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../component/interface/type';\nimport type {\n EventCallback,\n EventParamsDefinition,\n EventQuery,\n EventType,\n ExtendEventParam,\n IEvent,\n IEventDispatcher\n} from '../event/interface';\nimport type { IParserOptions, IFields, Transform } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, dataViewParser, DataView } from '@visactor/vdataset';\nimport type { IStage, Stage } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport { isString, isValid, isNil, array, specTransform, functionTransform, removeUndefined } from '../util';\nimport { createID } from '../util/id';\nimport { convertPoint } from '../util/space';\nimport { isTrueBrowser } from '../util/env';\nimport { warn } from '../util/debug';\nimport { getThemeObject } from '../util/theme/common';\nimport { mergeSpec, mergeSpecWithFilter } from '@visactor/vutils-extension';\nimport { Factory } from './factory';\nimport { Event } from '../event/event';\nimport { EventDispatcher } from '../event/event-dispatcher';\nimport type { GeoSourceType } from '../typings/geo';\nimport type { GeoSourceOption } from '../series/map/geo-source';\n// eslint-disable-next-line no-duplicate-imports\nimport { getMapSource } from '../series/map/geo-source';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IMark, IMarkGraphic, MarkConstructor } from '../mark/interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nimport { dataToDataView } from '../data/initialize';\nimport { copyDataView } from '../data/transforms/copy-data-view';\nimport type { ITooltipHandler } from '../typings/tooltip';\nimport type { Tooltip } from '../component/tooltip';\nimport type {\n Datum,\n IPoint,\n IRegionQuerier,\n IShowTooltipOption,\n ISpec,\n Maybe,\n MaybeArray,\n StringOrNumber\n} from '../typings';\nimport { AnimationStateEnum } from '../animation/interface';\nimport type { IBoundsLike, ILogger } from '@visactor/vutils';\nimport { ThemeManager } from '../theme/theme-manager';\nimport type { ITheme } from '../theme';\nimport type { IModel, IUpdateDataResult, IUpdateSpecResult } from '../model/interface';\nimport { Compiler } from '../compile/compiler';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { ILegend } from '../component/legend/interface';\nimport { getCanvasDataURL, URLToImage } from '../util/image';\nimport { ChartEvent } from '../constant/event';\nimport { DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH } from '../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isArray,\n isEmpty,\n Logger,\n isFunction,\n LoggerLevel,\n isEqual,\n get,\n cloneDeep,\n isObject,\n throttle\n} from '@visactor/vutils';\nimport type {\n DataLinkAxis,\n DataLinkSeries,\n IGlobalConfig,\n IVChart,\n IVChartRenderOption,\n VChartRenderActionSource\n} from './interface';\nimport { InstanceManager } from './instance-manager';\nimport type { IAxis } from '../component/axis';\nimport type { PopTipAttributes } from '@visactor/vrender-components';\nimport { setPoptipTheme } from '@visactor/vrender-components';\nimport { calculateChartSize, mergeUpdateResult } from '../chart/util';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { registerGroupMark } from '../mark/group';\nimport { VCHART_UTILS } from './util';\nimport { ExpressionFunction } from './expression-function';\nimport { registerBrowserEnv, registerNodeEnv } from '../env';\nimport { mergeTheme, preprocessTheme } from '../util/theme';\nimport { darkTheme, registerTheme } from '../theme/builtin';\nimport type { IChartPluginService } from '../plugin/chart/interface';\nimport { ChartPluginService } from '../plugin/chart/plugin-service';\nimport type { IIndicator } from '../component/indicator';\nimport type { IGeoCoordinate } from '../component/geo';\nimport { registerGesturePlugin } from '../plugin/other';\nimport { registerElementHighlight } from '../interaction/triggers/element-highlight';\nimport { registerElementSelect } from '../interaction/triggers/element-select';\nimport type { IVChartPluginService } from '../plugin/vchart/interface';\nimport { VChartPluginService } from '../plugin/vchart/plugin-service';\nimport { RenderStateEnum } from '../constant/animate';\n\nexport class VChart implements IVChart {\n readonly id = createID();\n\n /**\n * 按需注册图表和组件\n * @param comps\n * @since 1.5.1\n */\n static useRegisters(comps: (() => void)[]) {\n comps.forEach((fn: () => void) => {\n if (typeof fn === 'function') {\n // 确保元素是函数类型\n fn();\n } else {\n console.error('Invalid function:', fn);\n }\n });\n }\n\n /**\n * 注册自定义图表\n * @param charts 图表类\n * @description 若用于按需加载,1.5.1版本后,请统一使用 `useRegisters` API,例如:`VChart.useRegisters([registerLineChart])`。\n */\n static useChart(charts: IChartConstructor[]) {\n charts.forEach(c => Factory.registerChart(c.type, c));\n }\n /**\n * 注册自定义系列\n * @param series 系列类\n * @description 若用于按需加载,1.5.1版本后,统一使用 `useRegisters` API,例如 `VChart.useRegisters([registerLineSeries])`。\n */\n static useSeries(series: ISeriesConstructor[]) {\n series.forEach(s => Factory.registerSeries(s.type, s));\n }\n /**\n * 注册自定义组件\n * @param components 组件类\n * @description 若用于按需加载,1.5.1版本后,统一使用 `useRegisters` API,例如 `VChart.useRegisters([registerCartesianLinearAxis])`。\n */\n static useComponent(components: IComponentConstructor[]) {\n components.forEach(c => Factory.registerComponent(c.type, c));\n }\n /**\n * 注册自定义 Mark\n * @param marks Mark 图元类\n */\n static useMark(marks: MarkConstructor[]) {\n marks.forEach(m => Factory.registerMark(m.constructorType ?? m.type, m));\n }\n /**\n * 注册自定义布局\n * @param layouts 布局类\n */\n static useLayout(layouts: ILayoutConstructor[]) {\n layouts.forEach(l => Factory.registerLayout(l.type, l));\n }\n /**\n * 注册 DataSet 数据方法\n * @param name 数据 transform 方法名称\n * @param transform 具体的 Transform 执行方法\n */\n static registerDataSetTransform(name: string, transform: Transform) {\n Factory.registerTransform(name, transform);\n }\n\n /**\n * 注册函数(全局注册)\n * @param key 函数名称\n * @param fun 函数内容\n */\n static registerFunction(key: string, fun: Function) {\n if (!key || !fun) {\n return;\n }\n ExpressionFunction.instance().registerFunction(key, fun);\n }\n\n /**\n * 注销函数(全局注销)\n * @param key 函数名称\n */\n static unregisterFunction(key: string) {\n if (!key) {\n return;\n }\n ExpressionFunction.instance().unregisterFunction(key);\n }\n\n /**\n * 获取函数(全局)\n * @param key\n * @returns\n */\n static getFunction(key: string): Function | null {\n if (!key) {\n return null;\n }\n return ExpressionFunction.instance().getFunction(key);\n }\n\n /**\n * 获取函数列表(全局获取)\n * @returns\n */\n static getFunctionList(): string[] | null {\n return ExpressionFunction.instance().getFunctionNameList();\n }\n\n /**\n * 注册地图数据\n * @param key 地图名称\n * @param source 地图数据\n * @param option 地图数据配置\n */\n static registerMap(key: string, source: GeoSourceType, option?: GeoSourceOption) {\n const impl = Factory.getImplementInKey('registerMap');\n impl && impl(key, source, option);\n }\n\n /**\n * 注销地图数据\n * @param key 地图名称\n */\n static unregisterMap(key: string) {\n const impl = Factory.getImplementInKey('unregisterMap');\n impl && impl(key);\n }\n\n /**\n * 根据地图名称获取地图数据\n * @param key 地图名称\n * @returns 地图数据\n */\n static getMap(key: string): GeoSourceType {\n return getMapSource(key);\n }\n\n /**\n * 注册地图数据\n * @param key 地图名称\n * @param source 地图数据\n * @param option 地图数据配置\n */\n static registerSVG(key: string, source: GeoSourceType, option?: GeoSourceOption) {\n const impl = Factory.getImplementInKey('registerSVG');\n impl && impl(key, source, option);\n }\n\n /**\n * 注销地图数据\n * @param key 地图名称\n */\n static unregisterSVG(key: string) {\n const impl = Factory.getImplementInKey('unregisterSVG');\n impl && impl(key);\n }\n\n /**\n * 全局关闭 tooltip\n * @param excludeId 可选,指定不需要关闭 tooltip 的实例 id\n */\n static hideTooltip(excludeId: MaybeArray<number> = []): void {\n InstanceManager.forEach(instance => instance?.hideTooltip?.(), excludeId);\n }\n\n /** 获取 Logger */\n static getLogger(): ILogger {\n return Logger.getInstance();\n }\n\n /** 图表实例管理器 */\n static readonly InstanceManager = InstanceManager;\n /** 主题管理器 */\n static readonly ThemeManager = ThemeManager;\n\n /** 全局配置 */\n static globalConfig: IGlobalConfig = {\n uniqueTooltip: true\n };\n\n /** 工具方法 */\n static readonly Utils = VCHART_UTILS;\n\n static readonly vglobal = vglobal;\n\n protected _originalSpec: any;\n protected _spec: any;\n getSpec() {\n return this._spec;\n }\n\n protected _specInfo: IChartSpecInfo;\n getSpecInfo() {\n return this._specInfo;\n }\n\n private _viewBox: IBoundsLike;\n private _chart!: Maybe<IChart>;\n private _chartSpecTransformer!: Maybe<IChartSpecTransformer>;\n private _compiler: Compiler;\n private _event: Maybe<IEvent>;\n get event() {\n return this._event;\n }\n private _userEvents: {\n eType: EventType;\n query: EventQuery | EventCallback<EventParamsDefinition[EventType]>;\n handler?: EventCallback<EventParamsDefinition[EventType]>;\n }[] = [];\n private _eventDispatcher: Maybe<IEventDispatcher>;\n private _dataSet!: Maybe<DataSet>;\n getDataSet() {\n return this._dataSet;\n }\n\n private _container?: HTMLElement;\n private _canvas?: HTMLCanvasElement | OffscreenCanvas | string;\n private _stage?: Stage;\n\n private _autoSize: boolean = true;\n private _option: IInitOption = {\n mode: RenderModeEnum['desktop-browser'],\n onError: (msg: string) => {\n throw new Error(msg);\n },\n optimize: {\n disableCheckGraphicWidthOutRange: true\n }\n };\n\n private _currentSize: { width: number; height: number };\n private _observer: ResizeObserver = null;\n\n private _currentThemeName: string;\n private _currentTheme: ITheme;\n private _cachedProcessedTheme: ITheme;\n\n private _onError?: (...args: any[]) => void;\n\n private _context: any = {}; // 存放用户在model初始化前通过实例方法传入的配置等\n private _isReleased: boolean;\n\n private _chartPlugin?: IChartPluginService;\n private _vChartPlugin?: IVChartPluginService;\n\n private _onResize?: () => void;\n\n private _renderState: RenderStateEnum = RenderStateEnum.render;\n\n constructor(spec: ISpec, options: IInitOption) {\n removeUndefined(options);\n this._option = {\n ...this._option,\n ...options\n };\n if (options?.optimize) {\n this._option.optimize = {\n ...this._option.optimize,\n ...options.optimize\n };\n }\n this._onError = this._option?.onError;\n\n const { dom, renderCanvas, mode, stage, poptip, ...restOptions } = this._option;\n const isTrueBrowseEnv = isTrueBrowser(mode);\n\n // 根据 mode 配置动态加载浏览器或 node 环境代码\n if (isTrueBrowseEnv) {\n registerBrowserEnv();\n } else if (mode === 'node') {\n registerNodeEnv();\n }\n\n if (isTrueBrowseEnv && dom) {\n this._container = isString(dom) ? vglobal.getElementById(dom) : dom;\n }\n if (renderCanvas) {\n this._canvas = renderCanvas;\n }\n if (stage) {\n this._stage = stage as unknown as Stage; // FIXME: 等待 vrender 解决类型和接口不匹配的问题 @zhouxinyu\n }\n\n if (mode !== 'node' && !this._container && !this._canvas && !this._stage) {\n this._option?.onError('please specify container or renderCanvas!');\n return;\n }\n\n this._viewBox = this._option.viewBox;\n this._currentThemeName = ThemeManager.getCurrentThemeName();\n this._setNewSpec(spec);\n this._updateCurrentTheme();\n this._currentSize = this.getCurrentSize();\n const pluginList: string[] = [];\n\n if (poptip !== false) {\n pluginList.push('poptipForText');\n }\n\n if (spec.type === ChartTypeEnum.sankey) {\n // 桑基图默认记载滚动条组件\n pluginList.push('scrollbar');\n }\n\n const logger = new Logger(this._option.logLevel ?? LoggerLevel.Error);\n Logger.setInstance(logger);\n if (this._option?.onError) {\n logger.addErrorHandler((...args) => {\n this._option?.onError?.(...args);\n });\n }\n this._compiler = new Compiler(\n {\n dom: this._container ?? 'none',\n canvas: renderCanvas\n },\n {\n mode: this._option.mode,\n stage,\n pluginList,\n ...restOptions,\n background: this._getBackground(),\n onError: this._onError\n }\n );\n this._compiler.setSize(this._currentSize.width, this._currentSize.height);\n this._eventDispatcher = new EventDispatcher(this, this._compiler);\n this._event = new Event(this._eventDispatcher, mode);\n this._compiler.initView();\n this._compiler.updateLayoutTag();\n // TODO: 如果通过 updateSpec 更新主题字体的验证\n // 设置全局字体\n this._setFontFamilyTheme(this.getTheme('fontFamily') as string);\n this._initDataSet(this._option.dataSet);\n this._autoSize = isTrueBrowseEnv ? spec.autoFit ?? this._option.autoFit ?? true : false;\n this._bindResizeEvent();\n this._bindViewEvent();\n this._initChartPlugin();\n\n InstanceManager.registerInstance(this);\n this._option.performanceHook?.afterCreateVChart?.(this);\n }\n\n /** 设置新 spec,返回是否成功 */\n private _setNewSpec(spec: any, forceMerge?: boolean): boolean {\n if (!spec) {\n return false;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n if (forceMerge && this._originalSpec) {\n spec = mergeSpec({}, this._originalSpec, spec);\n }\n this._originalSpec = spec;\n this._spec = this._getSpecFromOriginalSpec();\n return true;\n }\n\n private _getSpecFromOriginalSpec() {\n // 转换在实例上注册的函数 + 深拷贝 spec,保证 _originalSpec 和 _spec 的不同\n const spec = specTransform(this._originalSpec) as any;\n // because of in data-init, data will be set as array;\n spec.data = spec.data ?? [];\n return spec;\n }\n\n private _initChartSpec(spec: any, actionSource: VChartRenderActionSource) {\n // 如果用户注册了函数,在配置中替换相应函数名为函数内容\n if (VChart.getFunctionList() && VChart.getFunctionList().length) {\n spec = functionTransform(spec, VChart);\n }\n this._spec = spec;\n if (!this._chartSpecTransformer) {\n this._chartSpecTransformer = Factory.createChartSpecTransformer(\n this._spec.type,\n this._getChartOption(this._spec.type)\n );\n }\n\n this._chartSpecTransformer?.transformSpec(this._spec);\n\n // 插件生命周期\n this._chartPluginApply('onAfterChartSpecTransform', this._spec, actionSource);\n this._specInfo = this._chartSpecTransformer?.transformModelSpec(this._spec);\n\n // 插件生命周期\n this._chartPluginApply('onAfterModelSpecTransform', this._spec, this._specInfo, actionSource);\n }\n\n private _updateSpecInfo() {\n if (!this._chartSpecTransformer) {\n this._chartSpecTransformer = Factory.createChartSpecTransformer(\n this._spec.type,\n this._getChartOption(this._spec.type)\n );\n }\n this._specInfo = this._chartSpecTransformer?.createSpecInfo(this._spec);\n }\n\n private _initChart(spec: any) {\n if (!this._compiler) {\n this._option?.onError('compiler is not initialized');\n return;\n }\n if (this._chart) {\n this._option?.onError('chart is already initialized');\n return;\n }\n\n // 放到这里而不是放到chart内的考虑\n // 用户spec更新,也许会有core上图表实例的内容存在\n // 如果要支持spec的类似Proxy监听,更新逻辑应当从这一层开始。如果在chart上做,就需要在再向上发送spec更新消息,不是很合理。\n // todo: 问题1 存不存在 chart 需要在这个阶段处理的特殊字段?目前没有,但是理论上可以有?\n const chart = Factory.createChart(spec.type, spec, this._getChartOption(spec.type));\n if (!chart) {\n this._option?.onError('init chart fail');\n return;\n }\n this._chart = chart;\n this._chart.setCanvasRect(this._currentSize.width, this._currentSize.height);\n this._chart.created(this._chartSpecTransformer);\n this._chart.init();\n this._event.emit(ChartEvent.initialized, {\n chart,\n vchart: this\n });\n }\n\n private _releaseData() {\n if (this._dataSet) {\n // Object.values(this._dataSet.dataViewMap).forEach(d => {\n // d.target.removeAllListeners();\n // d.destroy();\n // });\n this._dataSet.dataViewMap = {};\n this._dataSet = null;\n }\n }\n\n private _bindViewEvent() {\n if (!this._compiler) {\n return;\n }\n\n (this._compiler.getStage()?.getTimeline() as any)?.on('animationEnd', () => {\n this._event.emit(ChartEvent.animationFinished, {\n chart: this._chart,\n vchart: this\n });\n });\n }\n\n private _bindResizeEvent() {\n if (this._autoSize) {\n this._onResize = throttle(this._doResize, this._option.resizeDelay ?? 100);\n\n if (this._container) {\n const ResizeObserverWindow: any = window.ResizeObserver;\n\n if (ResizeObserverWindow) {\n this._observer = new ResizeObserverWindow(this._onResize);\n this._observer?.observe(this._container);\n }\n }\n window.addEventListener('resize', this._onResize);\n }\n }\n\n private _unBindResizeEvent() {\n if (this._autoSize) {\n window.removeEventListener('resize', this._onResize);\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n }\n }\n\n getCurrentSize() {\n return calculateChartSize(\n this._spec,\n {\n container: this._container,\n canvas: this._canvas,\n mode: this._getMode(),\n modeParams: this._option.modeParams\n },\n {\n width: this._currentSize?.width ?? DEFAULT_CHART_WIDTH,\n height: this._currentSize?.height ?? DEFAULT_CHART_HEIGHT\n }\n );\n }\n\n private _doResize = () => {\n const { width, height } = this.getCurrentSize();\n if (this._currentSize.width !== width || this._currentSize.height !== height) {\n this._currentSize = { width, height };\n this.resizeSync(width, height);\n }\n };\n\n private _initDataSet(dataSet?: DataSet) {\n if (dataSet instanceof DataSet) {\n this._dataSet = dataSet;\n } else {\n this._dataSet = new DataSet();\n }\n registerDataSetInstanceParser(this._dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceParser(this._dataSet, 'array', arrayParser);\n registerDataSetInstanceTransform(this._dataSet, 'copyDataView', copyDataView);\n // 注册 dataset transform\n for (const key in Factory.transforms) {\n registerDataSetInstanceTransform(this._dataSet, key, Factory.transforms[key]);\n }\n // 注册 dataview parser\n for (const key in Factory.dataParser) {\n registerDataSetInstanceParser(this._dataSet, key, Factory.dataParser[key]);\n }\n }\n\n /** 在修改图表配置后重新渲染 */\n updateCustomConfigAndRerender(\n updateSpecResult: IUpdateSpecResult | (() => IUpdateSpecResult),\n sync?: boolean,\n option: IVChartRenderOption = {}\n ) {\n if (this._isReleased || !updateSpecResult) {\n return undefined;\n }\n if (isFunction(updateSpecResult)) {\n updateSpecResult = (updateSpecResult as () => IUpdateSpecResult)();\n }\n\n if ((updateSpecResult as IUpdateSpecResult).reAnimate) {\n this.stopAnimation();\n this._updateAnimateState(true);\n }\n\n this._reCompile(updateSpecResult as IUpdateSpecResult);\n if (sync) {\n return this._renderSync(option);\n }\n return this._renderAsync(option);\n }\n\n /** 执行自定义的回调修改图表配置,并重新编译(不渲染) */\n protected _updateCustomConfigAndRecompile(updateSpecResult: IUpdateSpecResult, option: IVChartRenderOption = {}) {\n if (!updateSpecResult) {\n return false;\n }\n this._reCompile(updateSpecResult);\n return this._beforeRender(option);\n }\n\n protected _reCompile(updateResult: IUpdateSpecResult, morphConfig?: IMorphConfig) {\n if (updateResult.reMake) {\n this._releaseData();\n this._initDataSet();\n this._chart?.release();\n this._chart = null as unknown as IChart;\n }\n\n if (updateResult.reTransformSpec) {\n // 释放图表等等\n this._chartSpecTransformer = null;\n }\n\n // 卸载了chart之后再设置主题 避免多余的reInit\n if (updateResult.changeTheme) {\n this._setCurrentTheme();\n this._setFontFamilyTheme(this.getTheme('fontFamily') as string);\n } else if (updateResult.changeBackground) {\n this._compiler?.setBackground(this._getBackground());\n }\n\n if (updateResult.reMake) {\n // 如果不需要动画,那么释放item,避免元素残留\n this._compiler?.releaseGrammar();\n // chart 内部事件 模块自己必须删除\n // 内部模块删除事件时,调用了event Dispatcher.release() 导致用户事件被一起删除\n // 外部事件现在需要重新添加\n this._userEvents.forEach(e => this._event?.on(e.eType as any, e.query as any, e.handler as any));\n } else if (updateResult.reCompile) {\n // recompile\n // 清除之前的所有 compile 内容\n this._compiler?.clear({ chart: this._chart, vChart: this });\n // 重新compile\n this._compiler?.compile({ chart: this._chart, vChart: this });\n }\n if (updateResult.reSize) {\n const { width, height } = this.getCurrentSize();\n\n this._currentSize = { width, height };\n this._chart?.onResize(width, height, false);\n this._compiler?.resize(width, height, false);\n }\n }\n\n /** 渲染之前的步骤,返回是否成功 */\n protected _beforeRender(option: IVChartRenderOption = {}): boolean {\n // 如果 vchart 实例已经卸载,终止渲染\n if (this._isReleased) {\n return false;\n }\n // 如果图表已经实例化,跳过该步骤\n if (this._chart) {\n return true;\n }\n\n const { transformSpec, actionSource } = option;\n\n if (transformSpec) {\n // 初始化图表 spec\n this._initChartSpec(this._spec, 'render');\n // 插件生命周期\n }\n this._chartPluginApply('onBeforeInitChart', this._spec, actionSource);\n\n // 实例化图表\n this._option.performanceHook?.beforeInitializeChart?.(this);\n this._initChart(this._spec);\n this._option.performanceHook?.afterInitializeChart?.(this);\n // 如果实例化失败,终止渲染\n if (!this._chart || !this._compiler) {\n return false;\n }\n this._chartPluginApply('onAfterInitChart', this._spec, actionSource);\n\n // compile\n this._option.performanceHook?.beforeCompileToVGrammar?.(this);\n this._compiler.compile({ chart: this._chart, vChart: this }, option);\n this._option.performanceHook?.afterCompileToVGrammar?.(this);\n return true;\n }\n\n /** 渲染之后的步骤 */\n protected _afterRender(): boolean {\n if (this._isReleased) {\n return false;\n }\n this._event.emit(ChartEvent.rendered, {\n chart: this._chart,\n vchart: this\n });\n return true;\n }\n\n /**\n * **同步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderSync(morphConfig?: IMorphConfig) {\n return this._renderSync({\n morphConfig,\n transformSpec: true,\n actionSource: 'render'\n });\n }\n\n /**\n * **异步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n async renderAsync(morphConfig?: IMorphConfig) {\n return this._renderAsync({\n morphConfig,\n transformSpec: true,\n actionSource: 'render'\n });\n }\n\n protected _renderSync = (option: IVChartRenderOption = {}) => {\n const self = this as unknown as IVChart;\n if (!this._beforeRender(option)) {\n return self;\n }\n // 填充数据绘图\n this._compiler?.render(option.morphConfig);\n this._updateAnimateState(false);\n\n this._afterRender();\n return self;\n };\n\n protected async _renderAsync(option: IVChartRenderOption = {}) {\n return this._renderSync(option);\n }\n\n private _updateAnimateState(initial?: boolean) {\n if (this.isAnimationEnable()) {\n const updateGraphicAnimationState = (graphic: IMarkGraphic) => {\n const diffState = graphic.context?.diffState;\n if (initial) {\n return diffState === 'exit' ? AnimationStateEnum.none : AnimationStateEnum.appear;\n }\n return diffState;\n };\n\n this._chart?.getAllRegions().forEach(region => {\n region.updateAnimateStateCallback(updateGraphicAnimationState);\n });\n this._chart?.getAllComponents().forEach(component => {\n component.updateAnimateStateCallback(updateGraphicAnimationState);\n });\n }\n }\n\n /**\n * 销毁图表\n */\n release() {\n if ((this._onResize as any)?.cancel) {\n (this._onResize as any).cancel();\n }\n this._chartPluginApply('releaseAll');\n this._chartPlugin = null;\n this._chartSpecTransformer = null;\n this._chart?.release();\n // eventDispatcher 的release 依赖 compiler\n this._eventDispatcher?.release();\n this._compiler?.release();\n this._unBindResizeEvent();\n // resetID(); // 为什么要重置ID呢?\n\n this._releaseData();\n\n this._onError = null;\n this._onResize = null;\n this._container = null;\n this._currentTheme = null;\n this._cachedProcessedTheme = null;\n this._option = null;\n this._chart = null;\n this._compiler = null;\n this._spec = null;\n this._specInfo = null;\n this._originalSpec = null;\n // this._option = null;\n this._userEvents = null;\n this._event = null;\n this._eventDispatcher = null;\n this._isReleased = true;\n\n InstanceManager.unregisterInstance(this);\n }\n\n /**\n * **异步方法** 更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param parserOptions 数据参数\n * @returns VChart 实例\n */\n async updateData(\n id: StringOrNumber,\n data: DataView | Datum[] | string,\n parserOptions?: IParserOptions,\n userUpdateOptions?: IUpdateDataResult\n ): Promise<IVChart> {\n return this.updateDataSync(id, data, parserOptions, userUpdateOptions);\n }\n\n private _updateDataById(id: StringOrNumber, data: DataView | Datum[] | string, parserOptions?: IParserOptions) {\n const preDV = this._spec.data.find((dv: any) => dv.name === id || dv.id === id);\n if (preDV) {\n if (preDV.id === id) {\n preDV.values = data;\n } else if (preDV.name === id) {\n preDV.parse(data, parserOptions);\n }\n } else {\n if (isArray(data)) {\n this._spec.data.push({\n id,\n values: data\n });\n } else {\n this._spec.data.push(data);\n }\n }\n }\n\n /**\n * **异步方法** 批量更新数据。\n * @param list 待更新的数据列表\n * @returns VChart 实例\n */\n async updateDataInBatches(list: { id: string; data: Datum[]; options?: IParserOptions }[]): Promise<IVChart> {\n if (this._chart) {\n this._chart.updateFullData(\n list.map(({ id, data, options }) => {\n return { id, values: data, parser: options };\n })\n );\n this._chart.updateGlobalScaleDomain();\n this._compiler.render();\n return this as unknown as IVChart;\n }\n\n this._spec.data = array(this._spec.data);\n list.forEach(({ id, data, options }) => {\n this._updateDataById(id, data, options);\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param id 数据 id\n * @param data 数据值\n * @param parserOptions 数据参数\n * @returns VChart 实例\n */\n updateDataSync(\n id: StringOrNumber,\n data: DataView | Datum[] | string,\n parserOptions?: IParserOptions,\n userUpdateOptions?: IUpdateDataResult\n ) {\n this._reSetRenderState();\n if (isNil(this._dataSet)) {\n return this as unknown as IVChart;\n }\n if (this._chart) {\n this._chart.updateData(id, data, true, parserOptions);\n\n if (userUpdateOptions?.reAnimate) {\n this.stopAnimation();\n this._updateAnimateState(true);\n }\n this._compiler.render();\n\n return this as unknown as IVChart;\n }\n this._spec.data = array(this._spec.data);\n\n this._updateDataById(id, data, parserOptions);\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n updateFullDataSync(\n data: IDataValues | IDataValues[],\n reRender: boolean = true,\n userUpdateOptions?: IUpdateSpecResult\n ) {\n this._reSetRenderState();\n if (this._chart) {\n this._chart.updateFullData(data);\n if (reRender) {\n if (userUpdateOptions?.reAnimate) {\n this.stopAnimation();\n this._updateAnimateState(true);\n }\n\n this._compiler.render();\n }\n return this as unknown as IVChart;\n }\n\n const prevData = array(this._spec.data) as DataView[];\n const list: IDataValues[] = array(data);\n list.forEach(d => {\n // only support update this attrs\n const { id, values, parser, fields } = d;\n const preDV = prevData.find(dv => dv.name === id);\n if (preDV) {\n if (preDV instanceof DataView) {\n preDV.setFields(cloneDeep(fields) as IFields);\n preDV.parse(values, cloneDeep(parser) as IParserOptions);\n } else {\n (preDV as IDataValues).values = values;\n isValid(parser) && ((preDV as IDataValues).parser = parser);\n isValid(fields) && ((preDV as IDataValues).fields = fields);\n }\n } else {\n // new data\n const dataView = dataToDataView(d, <DataSet>this._dataSet, prevData);\n\n if (isArray(this._spec.data)) {\n this._spec.data.push(dataView);\n }\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n async updateFullData(data: IDataValues | IDataValues[], reRender: boolean = true) {\n return this.updateFullDataSync(data, reRender);\n }\n\n /**\n * **异步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n async updateSpec(\n spec: ISpec,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig,\n userUpdateOptions?: IUpdateSpecResult\n ) {\n const result = this._updateSpec(spec, forceMerge, userUpdateOptions);\n\n if (!result) {\n return this as unknown as IVChart;\n }\n\n await this.updateCustomConfigAndRerender(result, false, {\n morphConfig,\n transformSpec: result.reTransformSpec,\n actionSource: 'updateSpec'\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n updateSpecSync(\n spec: ISpec,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig,\n userUpdateOptions?: IUpdateSpecResult\n ) {\n const result = this._updateSpec(spec, forceMerge, userUpdateOptions);\n\n if (!result) {\n return this as unknown as IVChart;\n }\n\n this.updateCustomConfigAndRerender(result, true, {\n morphConfig,\n transformSpec: result.reTransformSpec,\n actionSource: 'updateSpec'\n });\n return this as unknown as IVChart;\n }\n\n /** 更新 spec 并重新编译(不渲染),返回是否成功 */\n updateSpecAndRecompile(spec: ISpec, forceMerge: boolean = false, option: IVChartRenderOption = {}) {\n const result = this._updateSpec(spec, forceMerge);\n return this._updateCustomConfigAndRecompile(result, {\n actionSource: 'updateSpecAndRecompile',\n ...option\n });\n }\n\n private _updateSpec = (\n spec: ISpec,\n forceMerge: boolean = false,\n userUpdateOptions?: IUpdateSpecResult\n ): IUpdateSpecResult | undefined => {\n this._reSetRenderState();\n\n const lastSpec = this._spec;\n\n const result: IUpdateSpecResult = {\n changeBackground: false,\n reTransformSpec: false,\n change: false,\n reMake: false,\n reCompile: false,\n reSize: false,\n changeTheme: false\n };\n\n // 这里已经将 this._spec 设置为新spec\n if (!this._setNewSpec(spec, forceMerge)) {\n return undefined;\n }\n\n // 这时图表内对象是旧的,对应上一份 spec\n if (!isEqual(lastSpec.theme, this._spec.theme)) {\n result.changeTheme = true;\n // setCurrentTheme 会导致 chart 实例的 reInit。\n // 只要模块从 vchart 实例获取与 spec 相关的信息,都会出现错误,它们已经不匹配了\n // this._setCurrentTheme();\n } else if (!isEqual(this._spec.background, lastSpec.background)) {\n result.reMake = true;\n result.changeBackground = true;\n }\n\n const reSize = this._shouldChartResize(lastSpec);\n result.reSize = reSize;\n\n if (this._spec.type !== lastSpec.type) {\n this._compiler?.updateLayoutTag();\n result.reMake = true;\n result.reTransformSpec = true;\n result.change = true;\n result.changeTheme = true; // 支持了根据图表类型 merge 当前主题。当 type 变了后,需要更新主题\n return result;\n }\n\n // 再次处理 spec 并得到 specInfo\n this._initChartSpec(this._spec, 'updateSpec');\n\n const res = mergeUpdateResult(this._chart.updateSpec(this._spec), result);\n\n return userUpdateOptions\n ? {\n ...res,\n ...userUpdateOptions\n }\n : res;\n };\n\n /**\n * **异步方法** spec 更新\n * @param filter\n * @param spec\n * @param forceMerge\n * @returns\n * @sync 1.4.0\n */\n async updateModelSpec(\n filter: string | { type: string; index: number } | ((model: IModel) => boolean),\n spec: unknown,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig\n ) {\n return this.updateModelSpecSync(filter, spec, forceMerge, morphConfig);\n }\n\n /**\n * **同步方法** spec 更新\n * @param filter\n * @param spec\n * @param forceMerge\n * @returns\n * @sync 1.4.0\n */\n updateModelSpecSync(\n filter: string | { type: string; index: number } | ((model: IModel) => boolean),\n spec: unknown,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig\n ) {\n if (!spec || !this._spec) {\n return this as unknown as IVChart;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n\n if (!isFunction(filter)) {\n // find spec and update\n mergeSpecWithFilter(this._spec, filter, spec, forceMerge);\n }\n\n if (this._chart) {\n const model = this._chart.getModelInFilter(filter);\n if (model) {\n return this._updateModelSpec(model, spec, true, forceMerge, morphConfig) as IVChart;\n }\n }\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 模块 spec 更新\n * @param model\n * @param spec\n * @param forceMerge\n * @returns\n */\n protected _updateModelSpec(\n model: IModel,\n spec: unknown,\n sync: boolean = false,\n forceMerge: boolean = false,\n morphConfig?: IMorphConfig\n ) {\n if (forceMerge) {\n spec = mergeSpec({}, model.getSpec(), spec);\n }\n\n const result = model.updateSpec(spec);\n model.reInit(spec);\n if (result.change || result.reCompile || result.reMake || result.reSize || result.reRender) {\n this._chart.reDataFlow();\n }\n\n return this.updateCustomConfigAndRerender(result, sync, {\n morphConfig,\n transformSpec: false,\n actionSource: 'updateModelSpec'\n });\n }\n\n /**\n * **异步方法**,图表尺寸更新方法\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n async resize(width: number, height: number) {\n return this.resizeSync(width, height);\n }\n\n /**\n * **同步方法**,图表尺寸更新方法\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n resizeSync(width: number, height: number) {\n if (!this._beforeResize(width, height)) {\n return this as unknown as IVChart;\n }\n this._compiler.resize?.(width, height);\n return this._afterResize();\n }\n\n protected _beforeResize(width: number, height: number): boolean {\n if (!this._chart || !this._compiler) {\n return false;\n }\n // 如果宽高未变化,不需要重新执行 resize,防止当图表初始化时会执行一次多余的 resize\n const chartCanvasRect = this._chart.getCanvasRect();\n if (chartCanvasRect && chartCanvasRect.width === width && chartCanvasRect.height === height) {\n return false;\n }\n\n // 插件生命周期\n this._chartPluginApply('onBeforeResize', width, height);\n\n this._option.performanceHook?.beforeResizeWithUpdate?.(this);\n this._chart.onResize(width, height, false);\n this._option.performanceHook?.afterResizeWithUpdate?.(this);\n\n return true;\n }\n\n protected _afterResize() {\n if (!this._isReleased) {\n // emit resize event\n this._event.emit(ChartEvent.afterResize, { chart: this._chart });\n }\n return this as unknown as IVChart;\n }\n\n /**\n * 更新绘制区域\n * @param viewBox 绘制区域\n * @param reRender 是否重新渲染,默认为 true\n * @param reLayout 是否重新布局,默认为 true\n * @returns\n */\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true, reLayout: boolean = true) {\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n this._viewBox = viewBox;\n // 更新 layout 参数\n this._chart.updateViewBox(viewBox, reLayout);\n if (reLayout) {\n // 重新布局\n this._compiler.render();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this._chart.onEvaluateEnd();\n }\n // 获取 compiler\n this._compiler.updateViewBox(viewBox, reRender);\n return this as unknown as IVChart;\n }\n\n // 事件相关方法\n on(eType: EventType, handler: EventCallback<ExtendEventParam>): void;\n on(eType: EventType, query: EventQuery, handler: EventCallback<ExtendEventParam>): void;\n on(\n eType: EventType,\n query: EventQuery | EventCallback<ExtendEventParam>,\n handler?: EventCallback<ExtendEventParam>\n ): void {\n if (!this._userEvents) {\n // userEvents正常情况下有默认值,如果!userEvents,说明此时chart被release了,就可以终止流程\n return;\n }\n this._userEvents.push({\n eType,\n query: typeof query === 'function' ? null : query,\n handler:\n typeof query === 'function'\n ? (query as EventCallback<ExtendEventParam>)\n : (handler as EventCallback<ExtendEventParam>)\n });\n this._event?.on(eType as any, query as any, handler as any);\n }\n off(eType: EventType, handler?: EventCallback<ExtendEventParam>): void {\n if (!this._userEvents || this._userEvents.length === 0) {\n return;\n }\n if (handler) {\n const index = this._userEvents.findIndex(e => e.eType === eType && e.handler === handler);\n if (index >= 0) {\n this._userEvents.splice(index, 1);\n this._event?.off(eType, handler);\n }\n } else {\n this._userEvents.forEach(e => {\n if (e.eType === eType) {\n this._event?.off(eType, e.handler);\n }\n });\n this._userEvents = this._userEvents.filter(e => e.eType !== eType);\n }\n }\n\n // 状态相关方法\n /**\n * 更新或设置图元状态\n * @param state 状态筛选器\n * @param filter 筛选器\n */\n updateState(\n state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>,\n filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean //series + mark 筛选\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.updateState(state, filter);\n }\n\n /**\n * 更新图元选中状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setSelected(\n datum: MaybeArray<any> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setSelected(datum, filter, region);\n }\n\n /**\n * 更新图元 hover 状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setHovered(\n datum: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setHovered(datum, filter, region);\n }\n\n /**\n * 清除所有图元的状态\n *\n * @since 1.11.0\n */\n clearState(state: string) {\n if (!this._chart) {\n return;\n }\n this._chart.clearState(state);\n }\n\n /**\n * 清除所有图元的所有状态\n *\n * @since 1.12.4\n */\n clearAllStates() {\n if (!this._chart) {\n return;\n }\n this._chart.clearAllStates();\n }\n\n /**\n * 清除所有图元的选中状态\n *\n * @since 1.11.0\n */\n clearSelected() {\n if (!this._chart) {\n return;\n }\n this._chart.clearSelected();\n }\n\n /**\n * 清除所有图元的hover状态\n *\n * @since 1.11.0\n */\n clearHovered() {\n if (!this._chart) {\n return;\n }\n this._chart.clearHovered();\n }\n\n // 主题相关方法\n /**\n * 当 spec 或者 currentThemeName 有变化时需要调用此方法对 currentTheme 进行更新\n * @param nextThemeName 通过 setCurrentTheme 方法新设的主题\n */\n private _updateCurrentTheme(nextThemeName?: string) {\n const optionTheme: Maybe<string | ITheme> = this._option.theme;\n const specTheme: Maybe<string | ITheme> = this._spec?.theme;\n const chartType: string = this._spec?.type;\n if (nextThemeName) {\n this._currentThemeName = nextThemeName;\n }\n\n const processThemeByChartType = (type: string, theme: ITheme) => {\n if (theme.chart?.[type]) {\n theme = mergeTheme({}, theme, theme.chart[type]);\n }\n return theme;\n };\n\n let currentTheme;\n // 处理 specTheme 和 optionTheme, merge -> transform\n // 优先级 currentTheme < optionTheme < specTheme\n if (!isEmpty(optionTheme) || !isEmpty(specTheme)) {\n if (\n (isString(optionTheme) && (!specTheme || isString(specTheme))) ||\n (isString(specTheme) && (!optionTheme || isString(optionTheme)))\n ) {\n const finalTheme = mergeTheme(\n {},\n getThemeObject(this._currentThemeName),\n getThemeObject(optionTheme),\n getThemeObject(specTheme)\n );\n\n this._currentTheme = processThemeByChartType(chartType, finalTheme);\n } else {\n const finalTheme = mergeTheme(\n {},\n getThemeObject(this._currentThemeName),\n getThemeObject(optionTheme),\n getThemeObject(specTheme)\n );\n this._currentTheme = processThemeByChartType(chartType, finalTheme);\n }\n } else {\n currentTheme = getThemeObject(this._currentThemeName);\n this._currentTheme = processThemeByChartType(chartType, currentTheme);\n }\n this._cachedProcessedTheme = null;\n\n // 设置 poptip 的主题\n setPoptipTheme(this.getTheme('component', 'poptip') as PopTipAttributes);\n // 设置背景色\n this._compiler?.setBackground(this._getBackground());\n }\n\n private _shouldChartResize(oldSpec: ISpec): boolean {\n let resize = false;\n\n if (isNil(this._spec.width)) {\n !isNil(oldSpec.width) && (this._spec.width = oldSpec.width);\n } else if (this._spec.width !== oldSpec.width) {\n resize = true;\n }\n\n if (isNil(this._spec.height)) {\n !isNil(oldSpec.height) && (this._spec.height = oldSpec.height);\n } else if (this._spec.height !== oldSpec.height) {\n resize = true;\n }\n\n const lasAutoSize = this._autoSize;\n this._autoSize = isTrueBrowser(this._option.mode) ? this._spec.autoFit ?? this._option.autoFit ?? true : false;\n if (this._autoSize !== lasAutoSize) {\n resize = true;\n }\n return resize;\n }\n\n private _getBackground() {\n const specBackground =\n typeof this._spec.background === 'string' || (isObject(this._spec.background) && this._spec.background.gradient)\n ? this._spec.background\n : null;\n // spec > spec.theme > initOptions.theme\n return specBackground || this.getTheme('background') || this._option.background;\n }\n\n /**\n * 获取当前主题,会返回完整的主题配置(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n * */\n getCurrentTheme() {\n return getThemeObject(this._currentThemeName);\n }\n\n /**\n * 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n */\n getCurrentThemeName() {\n return this._currentThemeName;\n }\n\n /**\n * **异步方法**, 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n async setCurrentTheme(name: string) {\n return this.setCurrentThemeSync(name);\n }\n\n /**\n * **同步方法** 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n setCurrentThemeSync(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return this as unknown as IVChart;\n }\n const result = this._setCurrentTheme(name);\n this._setFontFamilyTheme(this.getTheme('fontFamily') as string);\n this.updateCustomConfigAndRerender(result, true, {\n transformSpec: false,\n actionSource: 'setCurrentTheme'\n });\n return this as unknown as IVChart;\n }\n\n protected _setCurrentTheme(name?: string): IUpdateSpecResult {\n this._updateCurrentTheme(name);\n this._initChartSpec(this._getSpecFromOriginalSpec(), 'setCurrentTheme');\n this._chart?.setCurrentTheme();\n return { change: true, reMake: false };\n }\n\n private _setFontFamilyTheme(fontFamily: string) {\n if (!fontFamily) {\n return;\n }\n // 全局字体的特殊设置逻辑\n // 设置全局字体\n (this.getStage() as any)?.setTheme({\n text: { fontFamily },\n richtext: { fontFamily }\n });\n }\n\n // Tooltip 相关方法\n private _getTooltipComponent(): Tooltip | undefined {\n const tooltip = this._chart?.getComponentsByType(ComponentTypeEnum.tooltip)[0] as unknown as Tooltip;\n return tooltip;\n }\n\n /**\n * 自定义 TooltipHandler\n * @param tooltipHandler\n */\n setTooltipHandler(tooltipHandler: ITooltipHandler) {\n this._context.tooltipHandler = tooltipHandler;\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n tooltip.tooltipHandler?.release?.();\n tooltip.tooltipHandler = tooltipHandler;\n }\n }\n\n /**\n * 获取用户定义的 TooltipHandler\n * @returns ITooltipHandler\n */\n getTooltipHandlerByUser(): ITooltipHandler | undefined {\n return this._context?.tooltipHandler;\n }\n\n /**\n * 获取 TooltipHandler\n * @returns\n */\n getTooltipHandler(): ITooltipHandler | undefined {\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n return tooltip.tooltipHandler;\n }\n return this._context.tooltipHandler;\n }\n\n /**\n * 手动调用展示 tooltip\n * @param datum 原始数据\n * @param options\n * @returns\n */\n showTooltip(datum: Datum, options: IShowTooltipOption): boolean {\n const tooltip = this._getTooltipComponent();\n return (isValid(datum) && tooltip?.showTooltip(datum, options) !== 'none') ?? false;\n }\n\n /**\n * 手动调用,关闭 tooltip\n * @returns\n */\n hideTooltip(): boolean {\n const tooltip = this._getTooltipComponent();\n return tooltip?.hideTooltip() ?? false;\n }\n\n // 图例相关 api\n /**\n * 根据图例组件 id 获取图例数据\n * @param id 组件 id\n * @returns\n */\n getLegendDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getLegendData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取图例数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendDataByIndex(index: number = 0) {\n const legends = this._chart?.getComponentsByType(ComponentTypeEnum.discreteLegend) as unknown as ILegend[];\n\n if (legends && legends[index]) {\n return legends[index].getLegendData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 获取当前图例的选中项\n * @param id 组件 id\n * @returns\n */\n getLegendSelectedDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getSelectedData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取当前图例的选中项\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendSelectedDataByIndex(index: number = 0) {\n const legends = this._chart?.getComponentsByType(ComponentTypeEnum.discreteLegend) as unknown as ILegend[];\n\n if (legends && legends[index]) {\n return legends[index].getSelectedData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 更新图例选中数据\n * @param id\n * @returns\n */\n setLegendSelectedDataById(id: string, selectedData: StringOrNumber[]) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n legendComponent.setSelectedData(selectedData);\n }\n }\n\n /**\n * 根据图例组件索引更新图例选中数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n setLegendSelectedDataByIndex(index: number = 0, selectedData: StringOrNumber[]) {\n const legends = this._chart?.getComponentsByType(ComponentTypeEnum.discreteLegend) as unknown as ILegend[];\n\n if (legends && legends[index]) {\n legends[index].setSelectedData(selectedData);\n }\n }\n\n // 保存图片相关的方法\n /**\n * **异步方法**返回一个包含图片展示的 data URI。\n * @returns data URI\n */\n async getDataURL() {\n const stage = this.getStage();\n if (this._chart && stage) {\n // 因为 vrender 是 autoRender 的,它不能确认第几帧才是完整的图表,所以这里调用一次 render 以保证获取到的是完整的画布\n stage.render();\n const canvas = this._chart.getCanvas();\n const url = await getCanvasDataURL(canvas, {\n onError: this._onError\n });\n return url;\n }\n this._option?.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n /**\n * **异步方法** 导出图表图片,只支持浏览器端。\n * @param name 保存的图片名称\n * @returns\n */\n async exportImg(name?: string) {\n if (!isTrueBrowser(this._option.mode)) {\n this._option?.onError(new TypeError(`non-browser environment can not export img`));\n return;\n }\n\n const dataURL = await this.getDataURL();\n if (dataURL) {\n URLToImage(name, dataURL);\n } else {\n this._option?.onError(new ReferenceError(`render is not defined`));\n }\n }\n /**\n * 导出绘制了图表内容的 canvas\n * @returns HTMLCanvasElement\n */\n exportCanvas(): HTMLCanvasElement | undefined {\n const stage = this.getStage();\n if (this._chart && stage) {\n return stage.toCanvas();\n }\n this._option?.onError(new ReferenceError(`render is not defined`));\n return undefined;\n }\n\n /**\n * 目前仅支持 node 环境,用于 node 端的图片导出\n * @returns\n */\n getImageBuffer() {\n if (this._option.mode !== 'node') {\n this._option?.onError(new TypeError('getImageBuffer() now only support node environment.'));\n return;\n }\n const stage = this.getStage();\n if (stage) {\n stage.render();\n const buffer = stage.window.getImageBuffer();\n return buffer;\n }\n this._option?.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n // 布局相关的方法\n /**\n * 设置自定义布局\n */\n setLayout(layout: LayoutCallBack) {\n this._option.layout = layout;\n this._chart?.setLayout(layout);\n }\n /**\n * 强制重新布局\n */\n reLayout() {\n this._chart.resetLayoutItemTag();\n this._chart?.setLayoutTag(true);\n }\n\n /**\n * 获取编译器实例\n * @returns\n */\n getCompiler() {\n return this._compiler;\n }\n\n /**\n * Get the chart instance\n * 获取 Chart 图表实例。\n * @returns Chart 实例\n */\n getChart() {\n return this._chart;\n }\n\n /**\n * Get the renderer instance.\n * 获取渲染引擎实例。\n * @returns the instance of VRender Stage\n */\n getStage(): IStage {\n return this._compiler.getStage();\n }\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._compiler?.getCanvas();\n }\n\n /**\n * 获取图表的 dom 容器\n * @returns\n */\n getContainer(): Maybe<HTMLElement> {\n // 用户传入 dom container\n if (isValid(this._container)) {\n return this._container;\n }\n\n // 用户传入 canvas\n let canvasNode: Maybe<HTMLCanvasElement>;\n if (isString(this._canvas)) {\n canvasNode = vglobal.getElementById(this._canvas) as HTMLCanvasElement;\n } else {\n canvasNode = this._canvas as HTMLCanvasElement;\n }\n if (isValid(canvasNode)) {\n return canvasNode.parentElement;\n }\n\n // 用户传入 stage\n return this.getCanvas()?.parentElement;\n }\n\n /**\n * 获取图表所有的组件实例\n * @returns 组件实例\n */\n getComponents() {\n return this._chart.getAllComponents();\n }\n\n /**\n * 获取全局scale\n * @param scaleName 指定scale的id\n * @returns scale实例\n */\n getScale(scaleId: string) {\n const globalScale = this._chart?.getGlobalScale();\n\n return globalScale?.getScale(scaleId);\n }\n\n /**\n * setDimensionIndex could trigger mark state, tooltip, crosshair\n * @param value dimension value\n * @param opt option for set trigger\n */\n setDimensionIndex(value: StringOrNumber, opt: DimensionIndexOption = {}) {\n return this._chart?.setDimensionIndex(value, opt);\n }\n\n showCrosshair(cb: (axis: IAxis) => false | string | number) {\n this._chart?.showCrosshair(cb);\n }\n\n /** 停止正在进行的所有动画 */\n stopAnimation() {\n (this.getStage() as any)?.stopAnimation(true);\n }\n\n reRunNormalAnimation() {\n (this.getStage() as any)?.reApplyAnimationState('normal', true);\n }\n\n /** 暂停正在进行的所有动画 */\n pauseAnimation() {\n (this.getStage() as any)?.pauseAnimation(true);\n }\n\n /** 恢复暂停时正在进行的所有动画 */\n resumeAnimation() {\n (this.getStage() as any)?.resumeAnimation(true);\n }\n\n // TODO: 后续需要考虑滚动场景\n /**\n * Convert the data corresponding to the graph into coordinates\n * 将图形对应的数据转换为坐标,该数据需要从传入图表的数据集中获取,如果数据不存在数据集中,可以使用 `convertValueToPosition` 方法\n * @param datum 要转化的数据 the datum(from data source)to convert\n * @param dataLinkInfo 数据的绑定信息,the data link info, could be seriesId or seriesIndex, default is { seriesIndex: 0 }\n * @param isRelativeToCanvas 是否相对画布坐标 Whether relative to canvas coordinates\n * @param checkInViewData 是否检查数据对应的图元是否在视图中,如果不在视图中,返回 null\n * @returns\n */\n convertDatumToPosition(\n datum: Datum,\n dataLinkInfo: DataLinkSeries = {},\n isRelativeToCanvas: boolean = false,\n checkInViewData?: boolean\n ): IPoint | null {\n if (!this._chart) {\n return null;\n }\n if (isEmpty(datum)) {\n return null;\n }\n const { seriesId, seriesIndex = 0 } = dataLinkInfo;\n\n let series: ISeries;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (series) {\n const keys = Object.keys(datum);\n const handledDatum = series\n .getViewData()\n // eslint-disable-next-line eqeqeq\n .latestData.find((viewDatum: Datum) => keys.every(k => viewDatum[k] == datum[k]));\n const seriesLayoutStartPoint = series.getRegion().getLayoutStartPoint();\n let point: IPoint;\n if (handledDatum) {\n point = series.dataToPosition(handledDatum, checkInViewData);\n } else {\n point = series.dataToPosition(datum, checkInViewData);\n }\n if (!point) {\n return null;\n }\n return convertPoint(point, seriesLayoutStartPoint, isRelativeToCanvas);\n }\n\n return null;\n }\n\n // TODO: 1. 后续需要考虑滚动场景 2. 极坐标场景支持\n convertValueToPosition(\n value: StringOrNumber,\n dataLinkInfo: DataLinkAxis,\n isRelativeToCanvas?: boolean\n ): number | null;\n convertValueToPosition(\n value: [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkSeries,\n isRelativeToCanvas?: boolean\n ): IPoint | null;\n convertValueToPosition(\n value: StringOrNumber | [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkAxis | DataLinkSeries,\n isRelativeToCanvas: boolean = false\n ): number | IPoint | null {\n if (!this._chart || isNil(value) || isEmpty(dataLinkInfo)) {\n return null;\n }\n\n if (!isArray(value)) {\n // 如果单个值,则默认使用 axis 绑定信息\n const { axisId, axisIndex } = dataLinkInfo as DataLinkAxis;\n let axis;\n if (isValid(axisId)) {\n axis = this._chart.getComponentsByKey('axes').find(s => s.userId === axisId);\n } else if (isValid(axisIndex)) {\n axis = this._chart.getComponentsByKey('axes')?.[axisIndex];\n }\n if (!axis) {\n warn('Please check whether the `axisId` or `axisIndex` is set!');\n return null;\n }\n\n const pointValue = (axis as IAxis)?.valueToPosition(value);\n if (isRelativeToCanvas) {\n const axisLayoutStartPoint = axis.getLayoutStartPoint();\n const axisOrient = (axis as IAxis).getOrient();\n return (\n pointValue +\n (axisOrient === 'bottom' || axisOrient === 'top' ? axisLayoutStartPoint.x : axisLayoutStartPoint.y)\n );\n }\n\n return pointValue;\n }\n const { seriesId, seriesIndex } = dataLinkInfo as DataLinkSeries;\n let series;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (!series) {\n warn('Please check whether the `seriesId` or `seriesIndex` is set!');\n return null;\n }\n\n return convertPoint(\n (series as ISeries).valueToPosition(value[0], value[1]),\n series.getRegion().getLayoutStartPoint(),\n isRelativeToCanvas\n );\n }\n\n /**\n * 获取实例函数\n * @param key 函数名称\n * @returns\n */\n getFunction(key: string): Function | null {\n return ExpressionFunction.instance().getFunction(key);\n }\n\n /**\n * 注册实例函数(对内包装一层,区分名字,避免重名问题)\n * @param key 函数名称\n * @param fun 函数内容\n * @returns\n */\n registerFunction(key: string, fun: Function) {\n if (!key || !fun) {\n return;\n }\n ExpressionFunction.instance().registerFunction(key, fun);\n }\n\n /**\n * 注销实例函数\n * @param key 函数名称\n */\n unregisterFunction(key: string) {\n if (!key) {\n return;\n }\n ExpressionFunction.instance().unregisterFunction(key);\n }\n\n /**\n * 获取实例函数列表\n * @returns\n */\n getFunctionList() {\n return ExpressionFunction.instance().getFunctionNameList();\n }\n\n /** 设置运行时 spec */\n setRuntimeSpec(spec: any) {\n this._spec = spec;\n this._updateSpecInfo();\n }\n\n /**\n * 根据 indicator 组件 id 更新 indicator 数据\n * @since 1.11.7\n */\n updateIndicatorDataById(id: string, datum?: Datum) {\n const indicator = this._chart?.getComponentByUserId(id) as unknown as IIndicator;\n if (indicator) {\n indicator.updateDatum(datum);\n }\n }\n\n /**\n * 根据 indicator 组件索引更新 indicator 数据\n * @since 1.11.7\n */\n updateIndicatorDataByIndex(index: number = 0, datum?: Datum) {\n const indicators = this._chart?.getComponentsByType(ComponentTypeEnum.indicator) as unknown as IIndicator[];\n if (indicators && indicators[index]) {\n indicators[index].updateDatum(datum);\n }\n }\n\n /**\n * 地图缩放 API\n * @param [regionIndex=0] 根据索引顺序指定某个 region 区域的地图坐标系进行缩放\n * @param zoom 缩放比例\n * @param center 缩放中心\n * @since 1.11.10\n */\n geoZoomByIndex(regionIndex: number = 0, zoom: number, center?: { x: number; y: number }) {\n this._geoZoomByQuery({ regionIndex }, zoom, center);\n }\n\n /**\n * 地图缩放 API\n * @param [regionId=0] 根据 region id 指定某个 region 区域的地图坐标系进行缩放\n * @param zoom 缩放比例\n * @param center 缩放中心\n * @since 1.11.10\n */\n geoZoomById(regionId: string | number, zoom: number, center?: { x: number; y: number }) {\n this._geoZoomByQuery({ regionId }, zoom, center);\n }\n\n _geoZoomByQuery(query: MaybeArray<IRegionQuerier>, zoom: number, center?: { x: number; y: number }) {\n const region = this._chart?.getRegionsInQuerier(query)[0];\n const geoCoordinates = this._chart?.getComponentsByType(\n ComponentTypeEnum.geoCoordinate\n ) as unknown as IGeoCoordinate[];\n const coord = geoCoordinates?.find(coord => coord.getRegions()?.includes(region));\n if (coord) {\n coord.dispatchZoom(zoom, center);\n }\n }\n\n private _initChartPlugin() {\n const pluginList = Factory.getChartPlugins();\n if (pluginList.length > 0) {\n this._chartPlugin = new ChartPluginService(this);\n this._chartPlugin.load(pluginList.map(p => new p()));\n // 插件生命周期\n this._chartPluginApply('onInit', this._spec);\n }\n\n const vChartPluginList = Factory.getVChartPlugins();\n if (vChartPluginList.length > 0) {\n this._vChartPlugin = new VChartPluginService(this);\n this._vChartPlugin.load(vChartPluginList.map(p => new p()));\n // 插件生命周期\n this._vChartPlugin.onInit();\n }\n }\n\n private _chartPluginApply(funcName: keyof IChartPluginService, ...args: any[]) {\n if (!this._chartPlugin || !this._chartPlugin[funcName]) {\n return;\n }\n (this._chartPlugin[funcName] as (...args: any[]) => any).apply(this._chartPlugin, args);\n }\n\n protected _getMode() {\n return this._option.mode || RenderModeEnum['desktop-browser'];\n }\n\n protected getTheme = (...keys: string[]): any => {\n if (!this._currentTheme || !keys || !keys.length) {\n return undefined;\n }\n if (!this._cachedProcessedTheme) {\n this._cachedProcessedTheme = {};\n }\n\n const cacheKey = keys.join('.');\n\n if ((this._cachedProcessedTheme as any)[cacheKey]) {\n return (this._cachedProcessedTheme as any)[cacheKey];\n }\n let theme: any = this._currentTheme;\n keys.forEach((key: string, index: number) => {\n if (index === 1 && (keys[0] === 'series' || keys[0] === 'component')) {\n const buildInTheme =\n keys[0] === 'series' ? Factory.getSeriesBuiltInTheme(key) : Factory.getComponentBuiltInTheme(key);\n\n theme = theme ? mergeSpec({}, buildInTheme, (theme as any)[key]) : buildInTheme;\n } else {\n theme = theme?.[key];\n }\n\n if (index === keys.length - 1 && isValid(theme)) {\n theme = preprocessTheme(\n {\n [key]: theme\n },\n this._currentTheme.colorScheme,\n this._currentTheme.token\n )[key];\n }\n });\n\n (this._cachedProcessedTheme as any)[cacheKey] = theme;\n\n return theme;\n };\n\n isAnimationEnable() {\n if ('animation' in this._option) {\n return !!this._option.animation;\n }\n\n return this._spec.animation !== false;\n }\n\n protected _getChartOption(type: string): IChartOption {\n return {\n type,\n globalInstance: this,\n eventDispatcher: this._eventDispatcher!,\n dataSet: this._dataSet!,\n container: this._container,\n canvas: this._canvas,\n map: new Map(),\n mode: this._getMode(),\n modeParams: this._option.modeParams,\n getCompiler: () => this._compiler,\n viewBox: this._viewBox,\n getTheme: this.getTheme,\n getSpecInfo: () => this._specInfo ?? {},\n\n layout: this._option.layout,\n onError: this._onError,\n disableTriggerEvent: this._option.disableTriggerEvent === true,\n componentShowContent: this._option.componentShowContent\n };\n }\n\n public runDisappearAnimation() {\n this._renderState = RenderStateEnum.disappear;\n this.getStage().eventSystem.pauseTriggerEvent();\n this.getStage().applyAnimationState(\n ['disappear'],\n [\n {\n name: 'disappear',\n animation: this._compiler.stateAnimationConfig.disappear\n }\n ]\n );\n }\n\n private _reSetRenderState() {\n this._renderState = RenderStateEnum.render;\n this.getStage().eventSystem.resumeTriggerEvent();\n }\n}\n\nexport const registerVChartCore = () => {\n // install region module\n Factory.registerRegion('region', Region);\n // install layout module\n Factory.registerLayout('base', Layout);\n // install essential marks\n registerGroupMark();\n // install essential vgrammar transform\n registerGesturePlugin();\n // install default interaction\n registerElementHighlight();\n registerElementSelect();\n // install default theme\n registerTheme(darkTheme.name, darkTheme);\n};\n\nregisterVChartCore();\n"]}
@@ -81,4 +81,4 @@ export var TransformLevel;
81
81
  TransformLevel[TransformLevel.linkDotInfo = -7] = "linkDotInfo", TransformLevel[TransformLevel.sankeyLayout = -7] = "sankeyLayout",
82
82
  TransformLevel[TransformLevel.dataZoomFilter = -6] = "dataZoomFilter", TransformLevel[TransformLevel.legendFilter = -5] = "legendFilter";
83
83
  }(TransformLevel || (TransformLevel = {}));
84
- //# sourceMappingURL=initialize.js.map
84
+ //# sourceMappingURL=initialize.js.map
@@ -5,4 +5,4 @@ export function registerDataSetInstanceTransform(dataSet, name, transform) {
5
5
  export function registerDataSetInstanceParser(dataSet, name, parse) {
6
6
  dataSet.getParser(name) || dataSet.registerParser(name, parse);
7
7
  }
8
- //# sourceMappingURL=register.js.map
8
+ //# sourceMappingURL=register.js.map
package/esm/env/env.js CHANGED
@@ -37,4 +37,4 @@ export const registerTTEnv = () => {
37
37
  export const registerHarmonyEnv = () => {
38
38
  loadHarmonyEnv(container);
39
39
  };
40
- //# sourceMappingURL=env.js.map
40
+ //# sourceMappingURL=env.js.map
package/esm/env/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export * from "./env";
2
- //# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map