@visactor/vchart 2.0.2 → 2.0.3-alpha.1

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 (80) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +547 -487
  3. package/build/index.js +547 -486
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/animation/utils.js +1 -1
  7. package/cjs/animation/utils.js.map +1 -1
  8. package/cjs/chart/base/base-chart-transformer.js +3 -3
  9. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  10. package/cjs/chart/base/base-chart.js.map +1 -1
  11. package/cjs/chart/index.d.ts +2 -2
  12. package/cjs/chart/index.js +7 -2
  13. package/cjs/chart/index.js.map +1 -1
  14. package/cjs/chart/interface/common.d.ts +1 -1
  15. package/cjs/chart/interface/common.js.map +1 -1
  16. package/cjs/component/axis/base-axis.js +14 -13
  17. package/cjs/component/axis/base-axis.js.map +1 -1
  18. package/cjs/component/custom-mark/custom-mark.js +6 -9
  19. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  20. package/cjs/core/index.d.ts +1 -1
  21. package/cjs/core/index.js +1 -1
  22. package/cjs/core/index.js.map +1 -1
  23. package/cjs/core/interface.d.ts +1 -0
  24. package/cjs/core/interface.js.map +1 -1
  25. package/cjs/core/vchart.d.ts +1 -0
  26. package/cjs/core/vchart.js +6 -5
  27. package/cjs/core/vchart.js.map +1 -1
  28. package/cjs/mark/base/base-line.d.ts +1 -1
  29. package/cjs/mark/base/base-line.js.map +1 -1
  30. package/cjs/model/interface.d.ts +1 -1
  31. package/cjs/model/interface.js.map +1 -1
  32. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -1
  33. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +4 -3
  34. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  35. package/cjs/series/base/base-series-transformer.js +1 -1
  36. package/cjs/series/base/base-series-transformer.js.map +1 -1
  37. package/cjs/series/sankey/sankey.d.ts +10 -10
  38. package/cjs/series/sankey/sankey.js +199 -194
  39. package/cjs/series/sankey/sankey.js.map +1 -1
  40. package/cjs/util/object.d.ts +1 -0
  41. package/cjs/util/object.js +13 -2
  42. package/cjs/util/object.js.map +1 -1
  43. package/esm/animation/utils.js +1 -1
  44. package/esm/animation/utils.js.map +1 -1
  45. package/esm/chart/base/base-chart-transformer.js +3 -3
  46. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  47. package/esm/chart/base/base-chart.js.map +1 -1
  48. package/esm/chart/index.d.ts +2 -2
  49. package/esm/chart/index.js +2 -2
  50. package/esm/chart/index.js.map +1 -1
  51. package/esm/chart/interface/common.d.ts +1 -1
  52. package/esm/chart/interface/common.js.map +1 -1
  53. package/esm/component/axis/base-axis.js +8 -8
  54. package/esm/component/axis/base-axis.js.map +1 -1
  55. package/esm/component/custom-mark/custom-mark.js +6 -9
  56. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  57. package/esm/core/index.d.ts +1 -1
  58. package/esm/core/index.js +1 -1
  59. package/esm/core/index.js.map +1 -1
  60. package/esm/core/interface.d.ts +1 -0
  61. package/esm/core/interface.js.map +1 -1
  62. package/esm/core/vchart.d.ts +1 -0
  63. package/esm/core/vchart.js +7 -6
  64. package/esm/core/vchart.js.map +1 -1
  65. package/esm/mark/base/base-line.d.ts +1 -1
  66. package/esm/mark/base/base-line.js.map +1 -1
  67. package/esm/model/interface.d.ts +1 -1
  68. package/esm/model/interface.js.map +1 -1
  69. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -1
  70. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +4 -3
  71. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  72. package/esm/series/base/base-series-transformer.js +1 -1
  73. package/esm/series/base/base-series-transformer.js.map +1 -1
  74. package/esm/series/sankey/sankey.d.ts +10 -10
  75. package/esm/series/sankey/sankey.js +192 -187
  76. package/esm/series/sankey/sankey.js.map +1 -1
  77. package/esm/util/object.d.ts +1 -0
  78. package/esm/util/object.js +11 -0
  79. package/esm/util/object.js.map +1 -1
  80. package/package.json +12 -12
@@ -117,7 +117,7 @@ function isAnimationEnabledForSeries(series) {
117
117
  var _a, _b, _c, _d, _e, _f;
118
118
  const seriesSpec = series.getSpec();
119
119
  if (!1 === seriesSpec.animation) return !1;
120
- if (!1 === (null === (_b = null === (_a = series.getChart()) || void 0 === _a ? void 0 : _a.getOption()) || void 0 === _b ? void 0 : _b.animation)) return !1;
120
+ if (!1 === (null === (_b = null === (_a = series.getOption()) || void 0 === _a ? void 0 : _a.globalInstance) || void 0 === _b ? void 0 : _b.isAnimationEnable())) return !1;
121
121
  let animationThreshold = null !== (_c = seriesSpec.animationThreshold) && void 0 !== _c ? _c : Number.MAX_SAFE_INTEGER;
122
122
  return null === (_d = series.getMarks()) || void 0 === _d || _d.forEach((m => {
123
123
  const config = m.getMarkConfig();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animation/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type {\n MarkAnimationSpec,\n IAnimationState,\n IAnimationConfig,\n ChannelAnimationConfig,\n IAnimationTypeConfig,\n IAnimationTimeline,\n TypeAnimationConfig\n} from './interface';\nimport type { IStateAnimateSpec, IAnimationSpec } from './spec';\nimport { isFunction, isValidNumber } from '../util/type';\nimport { DEFAULT_DATA_INDEX } from '../constant/data';\nimport { DEFAULT_ANIMATION_CONFIG } from './config';\nimport { cloneDeep, isArray, isObject, isValid } from '@visactor/vutils';\nimport type { SeriesMarkNameEnum } from '../series/interface/type';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ISeries } from '../series';\nimport type { ISeriesSpec } from '../typings';\nimport type { IModelMarkAttributeContext } from '../compile/mark';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type { IMarkGraphic } from '../core';\n\nexport const AnimationStates = [...Object.keys(DEFAULT_ANIMATION_CONFIG), 'normal'];\n\nexport function animationConfig<Preset extends string>(\n defaultConfig: MarkAnimationSpec = {},\n userConfig?: Partial<\n Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>\n >,\n params?: {\n dataIndex: (datum: any, params: any) => number;\n dataCount: () => number;\n }\n) {\n const config = {} as MarkAnimationSpec;\n for (let i = 0; i < AnimationStates.length; i++) {\n const state = AnimationStates[i];\n const userStateConfig = userConfig ? (userConfig as any)[state] : undefined;\n\n if (userStateConfig === false) {\n continue;\n }\n\n if (state === 'normal') {\n userStateConfig && (config.normal = userStateConfig as IAnimationTypeConfig);\n continue;\n } else if (state === 'state') {\n if (userStateConfig !== false) {\n config.state = (userStateConfig ?? DEFAULT_ANIMATION_CONFIG.state) as any;\n }\n continue;\n }\n\n if (state !== 'update' && !userStateConfig && !(defaultConfig as any)[state]) {\n // no user config and default config\n continue;\n }\n\n // 开始处理默认动画逻辑\n let defaultStateConfig: IAnimationConfig[];\n if (isArray((defaultConfig as any)[state])) {\n defaultStateConfig = (defaultConfig as any)[state] as IAnimationConfig[];\n } else {\n defaultStateConfig = [{ ...(DEFAULT_ANIMATION_CONFIG as any)[state], ...(defaultConfig as any)[state] } as any];\n }\n // FIXME: 用来控制当动画状态发生变更时是否清除正在执行的动画。\n // 现在 vrender 对于同一个视觉通道的 tween 不会做覆盖的处理。若不做动画清空同时 exit 动画比 update 动画时间长的情况下,效果会不正确\n if (state === 'exit') {\n defaultStateConfig.forEach(exitConfig => {\n exitConfig.controlOptions = { stopWhenStateChange: true };\n });\n }\n\n if (!userStateConfig) {\n (config as any)[state] = defaultStateConfig;\n continue;\n }\n\n // 开始处理用户配置的动画逻辑\n let stateConfig: IAnimationConfig[];\n if (isArray(userStateConfig)) {\n stateConfig = userStateConfig.map((userConfig, i) => {\n let singleConfig: IAnimationConfig = userConfig;\n // not merge default config when user animation config is array\n if (isChannelAnimation(singleConfig)) {\n // `type` and `channel` is conflict, and `type` has a higher priority.\n // here if user configured `channel`, we should remove `type` which will come from default animation config\n delete (singleConfig as TypeAnimationConfig).type;\n }\n if (singleConfig.oneByOne) {\n singleConfig = produceOneByOne(\n singleConfig as IAnimationTypeConfig,\n params?.dataIndex ?? defaultDataIndex,\n params?.dataCount\n );\n }\n return singleConfig;\n });\n } else {\n stateConfig = defaultStateConfig.map((stateConfig, i) => {\n let singleConfig: IAnimationConfig = mergeSpec({}, defaultStateConfig[i], userStateConfig) as IAnimationConfig;\n if (isChannelAnimation(singleConfig)) {\n // `type` and `channel` is conflict, and `type` has a higher priority.\n // here if user configured `channel`, we should remove `type` which will come from default animation config\n delete (singleConfig as TypeAnimationConfig).type;\n }\n\n if (singleConfig.oneByOne) {\n singleConfig = produceOneByOne(\n singleConfig as IAnimationTypeConfig,\n params?.dataIndex ?? defaultDataIndex,\n params?.dataCount\n );\n }\n return singleConfig;\n });\n }\n\n (config as any)[state] = stateConfig;\n }\n return config;\n}\n\nexport function userAnimationConfig<M extends string, Preset extends string>(\n markName: SeriesMarkNameEnum | string,\n spec: IAnimationSpec<M, Preset>,\n ctx: IModelMarkAttributeContext\n) {\n const userConfig: Partial<\n Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>\n > = {};\n\n if (isValid(spec.animationAppear)) {\n userConfig.appear = spec.animationAppear[markName] ?? spec.animationAppear;\n }\n if (isValid(spec.animationDisappear)) {\n userConfig.disappear = spec.animationDisappear[markName] ?? spec.animationDisappear;\n }\n if (isValid(spec.animationEnter)) {\n userConfig.enter = spec.animationEnter[markName] ?? spec.animationEnter;\n }\n if (isValid(spec.animationExit)) {\n userConfig.exit = spec.animationExit[markName] ?? spec.animationExit;\n }\n if (isValid(spec.animationUpdate)) {\n userConfig.update = spec.animationUpdate[markName] ?? spec.animationUpdate;\n }\n if (isValid(spec.animationState)) {\n userConfig.state = spec.animationState[markName] ?? spec.animationState;\n }\n if (spec.animationNormal && spec.animationNormal[markName]) {\n userConfig.normal = spec.animationNormal[markName];\n }\n\n return uniformAnimationConfig(userConfig, ctx);\n}\n\n/**\n * oneByOne\n */\nfunction produceOneByOne(\n stateConfig: IAnimationTypeConfig,\n dataIndex: (datum: any, params: any) => number,\n dataCount?: () => number\n) {\n const { oneByOne, duration, delay, delayAfter } = stateConfig;\n stateConfig.delay = (datum: any, g: IGraphic, params: any) => {\n const index = dataIndex(datum, params);\n const durationTime = isFunction(duration) ? duration(datum, g, params) : isValidNumber(duration) ? duration : 0;\n const userDelay = isFunction(delay) ? delay(datum, g, params) : isValidNumber(delay) ? delay : 0;\n let oneByOneTime = isFunction(oneByOne) ? oneByOne(datum, g, params) : oneByOne;\n if (oneByOneTime === false) {\n return userDelay;\n }\n oneByOneTime = oneByOneTime === true ? 0 : oneByOneTime;\n return userDelay + index * (durationTime + oneByOneTime);\n };\n stateConfig.delayAfter = (datum: any, g: IGraphic, params: any) => {\n const index = dataIndex(datum, params);\n const durationTime = isFunction(duration) ? duration(datum, g, params) : isValidNumber(duration) ? duration : 0;\n const userDelayAfter = isFunction(delayAfter)\n ? delayAfter(datum, g, params)\n : isValidNumber(delayAfter)\n ? delayAfter\n : 0;\n let oneByOneTime = isFunction(oneByOne) ? oneByOne(datum, g, params) : oneByOne;\n if (oneByOneTime === false) {\n return userDelayAfter;\n }\n const indexCount = dataCount ? dataCount() : g.parent.count - 1;\n oneByOneTime = oneByOneTime === true ? 0 : oneByOneTime;\n return userDelayAfter + (indexCount - index) * (durationTime + oneByOneTime);\n };\n delete stateConfig.oneByOne;\n return stateConfig;\n}\n\nfunction defaultDataIndex(datum: any, graphic: IMarkGraphic) {\n return datum?.[DEFAULT_DATA_INDEX] ?? graphic.context.graphicIndex;\n}\n\nexport function shouldMarkDoMorph(spec: ISeriesSpec & IAnimationSpec<string, string>, markName: string) {\n if (spec.animation === false) {\n return false;\n }\n\n if (spec.morph?.enable === false) {\n return false;\n }\n\n const appearAnimationEnabled = (spec.animationAppear?.[markName] ?? spec.animationAppear) !== false;\n const updateAnimationEnabled = (spec.animationUpdate?.[markName] ?? spec.animationUpdate) !== false;\n\n if (!appearAnimationEnabled || !updateAnimationEnabled) {\n return false;\n }\n\n return true;\n}\n\nexport function isTimeLineAnimation(animationConfig: IAnimationConfig) {\n return isValid((animationConfig as IAnimationTimeline).timeSlices);\n}\n\nexport function isChannelAnimation(animationConfig: IAnimationConfig) {\n return !isTimeLineAnimation(animationConfig) && isValid((animationConfig as ChannelAnimationConfig).channel);\n}\n\nexport function uniformAnimationConfig<Preset extends string>(\n config: Partial<Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>>,\n ctx: IModelMarkAttributeContext\n) {\n if (!config) {\n return config;\n }\n const excludeKeys = ['custom', 'customParameters'];\n config = cloneDeep(config, null, excludeKeys);\n traverseSpec(\n config,\n (node: any) => {\n // 将函数转换为 vchart 代理的函数\n // 这里可能会传自定义动画的构造函数,不能被代理\n if (isFunction(node) && node.prototype?.constructor !== node) {\n const name = (...args: any) => {\n return node(...args, ctx);\n };\n return name;\n }\n return node;\n },\n excludeKeys\n );\n\n return config;\n}\n\nfunction traverseSpec(spec: any, transform: (node: any, key: string | number) => any, excludeKeys: string[] = []) {\n if (isArray(spec)) {\n spec.forEach((i: any, index: number) => {\n spec[index] = transform(spec[index], index);\n traverseSpec(spec[index], transform, excludeKeys);\n });\n } else if (isObject(spec)) {\n for (const key in spec) {\n if (!excludeKeys.includes(key)) {\n spec[key] = transform(spec[key], key);\n traverseSpec(spec[key], transform, excludeKeys);\n }\n }\n }\n}\n\nexport function isAnimationEnabledForSeries(series: ISeries) {\n const seriesSpec = series.getSpec();\n\n if (seriesSpec.animation === false) {\n return false;\n }\n\n if (series.getChart()?.getOption()?.animation === false) {\n return false;\n }\n\n // if (!isValid(series.getRegion().animate)) {\n // return false;\n // }\n\n let animationThreshold = seriesSpec.animationThreshold ?? Number.MAX_SAFE_INTEGER;\n\n // set mark stroke color follow series color\n // only set normal state in the level lower than level Series\n series.getMarks()?.forEach(m => {\n const config = m.getMarkConfig();\n if (config) {\n if (config.large && config.largeThreshold) {\n animationThreshold = Math.min(animationThreshold, config.largeThreshold);\n }\n if (config.progressiveThreshold) {\n animationThreshold = Math.min(animationThreshold, config.progressiveThreshold);\n }\n }\n });\n // auto close animation\n if (series.getRawData()?.latestData?.length >= animationThreshold) {\n return false;\n }\n\n return true;\n}\n"]}
1
+ {"version":3,"sources":["../src/animation/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type {\n MarkAnimationSpec,\n IAnimationState,\n IAnimationConfig,\n ChannelAnimationConfig,\n IAnimationTypeConfig,\n IAnimationTimeline,\n TypeAnimationConfig\n} from './interface';\nimport type { IStateAnimateSpec, IAnimationSpec } from './spec';\nimport { isFunction, isValidNumber } from '../util/type';\nimport { DEFAULT_DATA_INDEX } from '../constant/data';\nimport { DEFAULT_ANIMATION_CONFIG } from './config';\nimport { cloneDeep, isArray, isObject, isValid } from '@visactor/vutils';\nimport type { SeriesMarkNameEnum } from '../series/interface/type';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ISeries } from '../series';\nimport type { ISeriesSpec } from '../typings';\nimport type { IModelMarkAttributeContext } from '../compile/mark';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type { IMarkGraphic } from '../core';\n\nexport const AnimationStates = [...Object.keys(DEFAULT_ANIMATION_CONFIG), 'normal'];\n\nexport function animationConfig<Preset extends string>(\n defaultConfig: MarkAnimationSpec = {},\n userConfig?: Partial<\n Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>\n >,\n params?: {\n dataIndex: (datum: any, params: any) => number;\n dataCount: () => number;\n }\n) {\n const config = {} as MarkAnimationSpec;\n for (let i = 0; i < AnimationStates.length; i++) {\n const state = AnimationStates[i];\n const userStateConfig = userConfig ? (userConfig as any)[state] : undefined;\n\n if (userStateConfig === false) {\n continue;\n }\n\n if (state === 'normal') {\n userStateConfig && (config.normal = userStateConfig as IAnimationTypeConfig);\n continue;\n } else if (state === 'state') {\n if (userStateConfig !== false) {\n config.state = (userStateConfig ?? DEFAULT_ANIMATION_CONFIG.state) as any;\n }\n continue;\n }\n\n if (state !== 'update' && !userStateConfig && !(defaultConfig as any)[state]) {\n // no user config and default config\n continue;\n }\n\n // 开始处理默认动画逻辑\n let defaultStateConfig: IAnimationConfig[];\n if (isArray((defaultConfig as any)[state])) {\n defaultStateConfig = (defaultConfig as any)[state] as IAnimationConfig[];\n } else {\n defaultStateConfig = [{ ...(DEFAULT_ANIMATION_CONFIG as any)[state], ...(defaultConfig as any)[state] } as any];\n }\n // FIXME: 用来控制当动画状态发生变更时是否清除正在执行的动画。\n // 现在 vrender 对于同一个视觉通道的 tween 不会做覆盖的处理。若不做动画清空同时 exit 动画比 update 动画时间长的情况下,效果会不正确\n if (state === 'exit') {\n defaultStateConfig.forEach(exitConfig => {\n exitConfig.controlOptions = { stopWhenStateChange: true };\n });\n }\n\n if (!userStateConfig) {\n (config as any)[state] = defaultStateConfig;\n continue;\n }\n\n // 开始处理用户配置的动画逻辑\n let stateConfig: IAnimationConfig[];\n if (isArray(userStateConfig)) {\n stateConfig = userStateConfig.map((userConfig, i) => {\n let singleConfig: IAnimationConfig = userConfig;\n // not merge default config when user animation config is array\n if (isChannelAnimation(singleConfig)) {\n // `type` and `channel` is conflict, and `type` has a higher priority.\n // here if user configured `channel`, we should remove `type` which will come from default animation config\n delete (singleConfig as TypeAnimationConfig).type;\n }\n if (singleConfig.oneByOne) {\n singleConfig = produceOneByOne(\n singleConfig as IAnimationTypeConfig,\n params?.dataIndex ?? defaultDataIndex,\n params?.dataCount\n );\n }\n return singleConfig;\n });\n } else {\n stateConfig = defaultStateConfig.map((stateConfig, i) => {\n let singleConfig: IAnimationConfig = mergeSpec({}, defaultStateConfig[i], userStateConfig) as IAnimationConfig;\n if (isChannelAnimation(singleConfig)) {\n // `type` and `channel` is conflict, and `type` has a higher priority.\n // here if user configured `channel`, we should remove `type` which will come from default animation config\n delete (singleConfig as TypeAnimationConfig).type;\n }\n\n if (singleConfig.oneByOne) {\n singleConfig = produceOneByOne(\n singleConfig as IAnimationTypeConfig,\n params?.dataIndex ?? defaultDataIndex,\n params?.dataCount\n );\n }\n return singleConfig;\n });\n }\n\n (config as any)[state] = stateConfig;\n }\n return config;\n}\n\nexport function userAnimationConfig<M extends string, Preset extends string>(\n markName: SeriesMarkNameEnum | string,\n spec: IAnimationSpec<M, Preset>,\n ctx: IModelMarkAttributeContext\n) {\n const userConfig: Partial<\n Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>\n > = {};\n\n if (isValid(spec.animationAppear)) {\n userConfig.appear = spec.animationAppear[markName] ?? spec.animationAppear;\n }\n if (isValid(spec.animationDisappear)) {\n userConfig.disappear = spec.animationDisappear[markName] ?? spec.animationDisappear;\n }\n if (isValid(spec.animationEnter)) {\n userConfig.enter = spec.animationEnter[markName] ?? spec.animationEnter;\n }\n if (isValid(spec.animationExit)) {\n userConfig.exit = spec.animationExit[markName] ?? spec.animationExit;\n }\n if (isValid(spec.animationUpdate)) {\n userConfig.update = spec.animationUpdate[markName] ?? spec.animationUpdate;\n }\n if (isValid(spec.animationState)) {\n userConfig.state = spec.animationState[markName] ?? spec.animationState;\n }\n if (spec.animationNormal && spec.animationNormal[markName]) {\n userConfig.normal = spec.animationNormal[markName];\n }\n\n return uniformAnimationConfig(userConfig, ctx);\n}\n\n/**\n * oneByOne\n */\nfunction produceOneByOne(\n stateConfig: IAnimationTypeConfig,\n dataIndex: (datum: any, params: any) => number,\n dataCount?: () => number\n) {\n const { oneByOne, duration, delay, delayAfter } = stateConfig;\n stateConfig.delay = (datum: any, g: IGraphic, params: any) => {\n const index = dataIndex(datum, params);\n const durationTime = isFunction(duration) ? duration(datum, g, params) : isValidNumber(duration) ? duration : 0;\n const userDelay = isFunction(delay) ? delay(datum, g, params) : isValidNumber(delay) ? delay : 0;\n let oneByOneTime = isFunction(oneByOne) ? oneByOne(datum, g, params) : oneByOne;\n if (oneByOneTime === false) {\n return userDelay;\n }\n oneByOneTime = oneByOneTime === true ? 0 : oneByOneTime;\n return userDelay + index * (durationTime + oneByOneTime);\n };\n stateConfig.delayAfter = (datum: any, g: IGraphic, params: any) => {\n const index = dataIndex(datum, params);\n const durationTime = isFunction(duration) ? duration(datum, g, params) : isValidNumber(duration) ? duration : 0;\n const userDelayAfter = isFunction(delayAfter)\n ? delayAfter(datum, g, params)\n : isValidNumber(delayAfter)\n ? delayAfter\n : 0;\n let oneByOneTime = isFunction(oneByOne) ? oneByOne(datum, g, params) : oneByOne;\n if (oneByOneTime === false) {\n return userDelayAfter;\n }\n const indexCount = dataCount ? dataCount() : g.parent.count - 1;\n oneByOneTime = oneByOneTime === true ? 0 : oneByOneTime;\n return userDelayAfter + (indexCount - index) * (durationTime + oneByOneTime);\n };\n delete stateConfig.oneByOne;\n return stateConfig;\n}\n\nfunction defaultDataIndex(datum: any, graphic: IMarkGraphic) {\n return datum?.[DEFAULT_DATA_INDEX] ?? graphic.context.graphicIndex;\n}\n\nexport function shouldMarkDoMorph(spec: ISeriesSpec & IAnimationSpec<string, string>, markName: string) {\n if (spec.animation === false) {\n return false;\n }\n\n if (spec.morph?.enable === false) {\n return false;\n }\n\n const appearAnimationEnabled = (spec.animationAppear?.[markName] ?? spec.animationAppear) !== false;\n const updateAnimationEnabled = (spec.animationUpdate?.[markName] ?? spec.animationUpdate) !== false;\n\n if (!appearAnimationEnabled || !updateAnimationEnabled) {\n return false;\n }\n\n return true;\n}\n\nexport function isTimeLineAnimation(animationConfig: IAnimationConfig) {\n return isValid((animationConfig as IAnimationTimeline).timeSlices);\n}\n\nexport function isChannelAnimation(animationConfig: IAnimationConfig) {\n return !isTimeLineAnimation(animationConfig) && isValid((animationConfig as ChannelAnimationConfig).channel);\n}\n\nexport function uniformAnimationConfig<Preset extends string>(\n config: Partial<Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>>,\n ctx: IModelMarkAttributeContext\n) {\n if (!config) {\n return config;\n }\n const excludeKeys = ['custom', 'customParameters'];\n config = cloneDeep(config, null, excludeKeys);\n traverseSpec(\n config,\n (node: any) => {\n // 将函数转换为 vchart 代理的函数\n // 这里可能会传自定义动画的构造函数,不能被代理\n if (isFunction(node) && node.prototype?.constructor !== node) {\n const name = (...args: any) => {\n return node(...args, ctx);\n };\n return name;\n }\n return node;\n },\n excludeKeys\n );\n\n return config;\n}\n\nfunction traverseSpec(spec: any, transform: (node: any, key: string | number) => any, excludeKeys: string[] = []) {\n if (isArray(spec)) {\n spec.forEach((i: any, index: number) => {\n spec[index] = transform(spec[index], index);\n traverseSpec(spec[index], transform, excludeKeys);\n });\n } else if (isObject(spec)) {\n for (const key in spec) {\n if (!excludeKeys.includes(key)) {\n spec[key] = transform(spec[key], key);\n traverseSpec(spec[key], transform, excludeKeys);\n }\n }\n }\n}\n\nexport function isAnimationEnabledForSeries(series: ISeries) {\n const seriesSpec = series.getSpec();\n\n if (seriesSpec.animation === false) {\n return false;\n }\n\n if (series.getOption()?.globalInstance?.isAnimationEnable() === false) {\n return false;\n }\n\n // if (!isValid(series.getRegion().animate)) {\n // return false;\n // }\n\n let animationThreshold = seriesSpec.animationThreshold ?? Number.MAX_SAFE_INTEGER;\n\n // set mark stroke color follow series color\n // only set normal state in the level lower than level Series\n series.getMarks()?.forEach(m => {\n const config = m.getMarkConfig();\n if (config) {\n if (config.large && config.largeThreshold) {\n animationThreshold = Math.min(animationThreshold, config.largeThreshold);\n }\n if (config.progressiveThreshold) {\n animationThreshold = Math.min(animationThreshold, config.progressiveThreshold);\n }\n }\n });\n // auto close animation\n if (series.getRawData()?.latestData?.length >= animationThreshold) {\n return false;\n }\n\n return true;\n}\n"]}
@@ -69,15 +69,15 @@ class BaseChartSpecTransformer {
69
69
  return !0;
70
70
  }
71
71
  _getDefaultSeriesSpec(chartSpec, pickKeys, pickKeys2) {
72
- var _a, _b, _c, _d;
72
+ var _a, _b, _c, _d, _e;
73
73
  const series = {
74
74
  dataKey: chartSpec.dataKey,
75
75
  hover: chartSpec.hover,
76
76
  select: chartSpec.select,
77
77
  label: chartSpec.label,
78
78
  seriesStyle: chartSpec.seriesStyle,
79
- animation: null !== (_a = chartSpec.animation) && void 0 !== _a ? _a : this._option.animation,
80
- animationThreshold: null !== (_b = chartSpec.animationThreshold) && void 0 !== _b ? _b : null === (_d = (_c = this._option).getTheme) || void 0 === _d ? void 0 : _d.call(_c, "animationThreshold"),
79
+ animation: null !== (_a = chartSpec.animation) && void 0 !== _a ? _a : null === (_b = this._option.globalInstance) || void 0 === _b ? void 0 : _b.isAnimationEnable(),
80
+ animationThreshold: null !== (_c = chartSpec.animationThreshold) && void 0 !== _c ? _c : null === (_e = (_d = this._option).getTheme) || void 0 === _e ? void 0 : _e.call(_d, "animationThreshold"),
81
81
  animationAppear: chartSpec.animationAppear,
82
82
  animationDisappear: chartSpec.animationDisappear,
83
83
  animationEnter: chartSpec.animationEnter,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart/base/base-chart-transformer.ts"],"names":[],"mappings":"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","file":"base-chart-transformer.js","sourcesContent":["import { isArray, isNumber, isValid } from '@visactor/vutils';\nimport type { IChartSpec, ISeriesSpec } from '../../typings';\nimport type { IChartSpecInfo, IChartSpecTransformer, IChartSpecTransformerOption } from '../interface';\nimport type { IModelConstructor, IModelSpecInfo } from '../../model/interface';\nimport type { IRegionConstructor, RegionSpec } from '../../region/interface';\nimport { Factory } from '../../core';\nimport type { ISeriesConstructor } from '../../series';\nimport type { IComponentConstructor } from '../../component/interface/common';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { setProperty } from '@visactor/vutils-extension';\nimport { getRelatedRegionInfo, getRelatedSeriesInfo } from './util';\nimport type { ICartesianBandAxisSpec } from '../..//component/axis/cartesian/interface';\nimport { array } from '../../util';\nimport { getSpecInfo } from '../../component/util';\n\nexport class BaseChartSpecTransformer<T extends IChartSpec> implements IChartSpecTransformer {\n readonly type: string;\n readonly seriesType: string;\n\n protected _option: IChartSpecTransformerOption;\n\n constructor(option: IChartSpecTransformerOption) {\n this._option = option;\n this.type = option.type;\n this.seriesType = option.seriesType;\n }\n\n /** 此方法不建议重写 */\n initChartSpec(chartSpec: T): IChartSpecInfo {\n this.transformSpec(chartSpec);\n return this.transformModelSpec(chartSpec);\n }\n\n /**\n * 转换 chart spec。包含以下步骤:\n * - 将图表 spec 统一转换为 common 图表 spec\n * - 图表层级的在初始化阶段的 spec 修改\n */\n transformSpec(chartSpec: T): void {\n if (!chartSpec.region || chartSpec.region.length === 0) {\n chartSpec.region = [{}];\n }\n if (chartSpec.tooltip === undefined) {\n chartSpec.tooltip = {};\n }\n // 堆积逆序\n if (isValid(chartSpec.stackInverse)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackInverse) && (r.stackInverse = chartSpec.stackInverse);\n });\n }\n // 堆积排序\n if (isValid(chartSpec.stackSort)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackSort) && (r.stackSort = chartSpec.stackSort);\n });\n }\n }\n\n generateTransform(chartSpec: T, isRuntime?: boolean) {\n return (constructor: IModelConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => {\n const { spec, specPath, specInfoPath, type } = specInfo;\n const transformer = new constructor.transformerConstructor({\n ...this._option,\n type\n });\n // 调用 model 自己的 transformer 进行转换\n const transformResult = transformer.transformSpec(spec, chartSpec, chartSpecInfo);\n const chartSpecInfoValue = {\n ...specInfo,\n ...transformResult\n };\n if (isRuntime) {\n chartSpecInfoValue.theme = transformer.getTheme(spec, chartSpec);\n } else {\n setProperty(chartSpec, specPath, transformResult.spec);\n }\n setProperty(chartSpecInfo, specInfoPath ?? specPath, chartSpecInfoValue);\n };\n }\n\n /**\n * 转换 model spec。包含以下步骤:\n * - model 层级的主题合并\n * - model 层级的在初始化阶段的 spec 修改,如添加 label spec\n */\n transformModelSpec(chartSpec: T): IChartSpecInfo {\n return this.createSpecInfo(chartSpec, this.generateTransform(chartSpec, false));\n }\n\n /** 遍历图表 spec 中包含的所有的 model,进行 spec 转换并生成图表 spec info */\n createSpecInfo(\n chartSpec: T,\n transform?: (\n /** 当前 model 的类 */\n constructor: IModelConstructor,\n /** 当前 model 的 spec info */\n specInfo: IModelSpecInfo,\n /** 图表 spec info */\n chartSpecInfo?: IChartSpecInfo\n ) => void\n ): IChartSpecInfo {\n if (!transform) {\n transform = this.generateTransform(chartSpec, true);\n }\n\n const currentChartSpecInfo: IChartSpecInfo = {};\n\n /* 预处理 region */\n this.forEachRegionInSpec(chartSpec, transform, currentChartSpecInfo);\n\n /* 预处理 series */\n this.forEachSeriesInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 series 关联的 region\n currentChartSpecInfo.series?.forEach((seriesSpecInfo, i) => {\n const relatedRegion =\n getRelatedRegionInfo(seriesSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n const region = relatedRegion[0];\n if (region) {\n if (!region.seriesIndexes) {\n region.seriesIndexes = [];\n }\n region.seriesIndexes.push(i);\n seriesSpecInfo.regionIndexes = region.regionIndexes.slice();\n }\n });\n\n /* 预处理 component */\n this.forEachComponentInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 component 关联的 region、series\n Object.values(currentChartSpecInfo.component ?? {}).forEach(specInfoList =>\n specInfoList.forEach((componentSpecInfo, i) => {\n if (!componentSpecInfo) {\n return;\n }\n if (!componentSpecInfo.regionIndexes) {\n const relatedRegion =\n getRelatedRegionInfo(componentSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n componentSpecInfo.regionIndexes = relatedRegion.map(region => region.regionIndexes[0]);\n }\n if (!componentSpecInfo.seriesIndexes) {\n const seriesInfo = getRelatedSeriesInfo(componentSpecInfo, currentChartSpecInfo);\n if (!seriesInfo) {\n const seriesIndexSet = new Set<number>();\n (componentSpecInfo.regionIndexes ?? []).forEach(regionIndex => {\n const region = currentChartSpecInfo.region?.[regionIndex];\n region?.seriesIndexes?.forEach(seriesIndex => seriesIndexSet.add(seriesIndex));\n });\n componentSpecInfo.seriesIndexes = Array.from(seriesIndexSet);\n } else {\n componentSpecInfo.seriesIndexes = seriesInfo.map(({ seriesIndexes }) => seriesIndexes[0]);\n }\n }\n })\n );\n return currentChartSpecInfo;\n }\n\n protected _isValidSeries(seriesType: string): boolean {\n return true;\n }\n\n protected _getDefaultSeriesSpec(chartSpec: any, pickKeys?: string[], pickKeys2?: string[]) {\n const series: any = {\n dataKey: chartSpec.dataKey,\n\n hover: chartSpec.hover,\n select: chartSpec.select,\n\n label: chartSpec.label,\n\n seriesStyle: chartSpec.seriesStyle,\n\n animation: chartSpec.animation ?? this._option.animation,\n animationThreshold: chartSpec.animationThreshold ?? this._option.getTheme?.('animationThreshold'),\n animationAppear: chartSpec.animationAppear,\n animationDisappear: chartSpec.animationDisappear,\n animationEnter: chartSpec.animationEnter,\n animationUpdate: chartSpec.animationUpdate,\n animationExit: chartSpec.animationExit,\n animationNormal: chartSpec.animationNormal,\n animationState: chartSpec.animationState,\n\n extensionMark: chartSpec.extensionMark,\n\n large: chartSpec.large,\n largeThreshold: chartSpec.largeThreshold,\n progressiveStep: chartSpec.progressiveStep,\n progressiveThreshold: chartSpec.progressiveThreshold,\n background: chartSpec.seriesBackground,\n\n invalidType: chartSpec.invalidType,\n\n seriesField: chartSpec.seriesField,\n\n morph: chartSpec.morph,\n\n interactions: chartSpec.interactions\n };\n\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = (chartSpec as any)[seriesType];\n }\n\n if (pickKeys && pickKeys.length) {\n pickKeys.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n if (pickKeys2 && pickKeys2.length) {\n pickKeys2.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n return series;\n }\n\n /** 遍历 spec 中每个有效的 region */\n forEachRegionInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IRegionConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const regionSpec = (chartSpec.region as RegionSpec[]) ?? [];\n return regionSpec.map((spec, index) =>\n callbackfn(\n Factory.getRegionInType('region'),\n {\n spec,\n specPath: ['region', index],\n type: 'region',\n regionIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 series */\n forEachSeriesInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: ISeriesConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const seriesSpec = (chartSpec.series as ISeriesSpec[]) ?? [];\n return seriesSpec.map((spec, index) =>\n callbackfn(\n Factory.getSeriesInType(spec.type),\n {\n spec,\n specPath: ['series', index],\n type: spec.type,\n seriesIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 component */\n forEachComponentInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IComponentConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const results: K[] = [];\n const components = Factory.getComponents();\n\n // 坐标轴组件只需要调用一次\n let cartesianAxis: IComponentConstructor;\n let polarAxis: IComponentConstructor;\n let geoCoordinate: IComponentConstructor;\n let tooltip: IComponentConstructor;\n const otherComponents = [];\n\n for (let index = 0; index < components.length; index++) {\n const { cmp, alwaysCheck } = components[index];\n if (cmp.type.startsWith(ComponentTypeEnum.cartesianAxis)) {\n cartesianAxis = cmp;\n } else if (cmp.type.startsWith(ComponentTypeEnum.polarAxis)) {\n polarAxis = cmp;\n } else if (cmp.type === ComponentTypeEnum.geoCoordinate) {\n geoCoordinate = cmp;\n } else if (alwaysCheck || (chartSpec as any)[cmp.specKey ?? cmp.type]) {\n if (cmp.type === ComponentTypeEnum.tooltip) {\n tooltip = cmp;\n } else {\n otherComponents.push(components[index]);\n }\n }\n }\n\n // NOTE: 坐标轴组件需要在其他组件之前创建\n let hasInitAxis = false;\n if (cartesianAxis) {\n const infoList = cartesianAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (polarAxis && !hasInitAxis) {\n const infoList = polarAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (geoCoordinate && !hasInitAxis) {\n geoCoordinate.getSpecInfo(chartSpec, chartSpecInfo)?.forEach(info => {\n results.push(callbackfn(geoCoordinate, info, chartSpecInfo));\n });\n }\n\n otherComponents.sort((a, b) => {\n return a.createOrder - b.createOrder;\n });\n\n otherComponents.forEach(({ cmp: C }) => {\n (C.getSpecInfo ? C.getSpecInfo(chartSpec, chartSpecInfo) : getSpecInfo(chartSpec, C.specKey, C.type))?.forEach(\n info => {\n results.push(callbackfn(C, info, chartSpecInfo));\n }\n );\n });\n\n // NOTE: tooltip 组件需要在 crosshair 组件之后创建\n if (tooltip) {\n getSpecInfo(chartSpec, tooltip.specKey, tooltip.type)?.forEach(info => {\n results.push(callbackfn(tooltip, info, chartSpecInfo));\n });\n }\n\n return results;\n }\n\n /** 处理series配置 */\n transformSeriesSpec(spec: T): void {\n const defaultSeriesSpec = this._getDefaultSeriesSpec(spec);\n if (!spec.series || spec.series.length === 0) {\n spec.series = [defaultSeriesSpec];\n } else {\n spec.series.forEach(s => {\n if (!this._isValidSeries(s.type)) {\n return;\n }\n Object.keys(defaultSeriesSpec).forEach(k => {\n if (!(k in s)) {\n (s as any)[k] = defaultSeriesSpec[k];\n }\n });\n });\n }\n }\n\n protected _findBandAxisBySeries(seriesSpec: ISeriesSpec, seriesIndex: number, axesSpec: any) {\n const isHorizontal = (seriesSpec as any)?.direction === 'horizontal';\n const matchOrient = isHorizontal ? ['left', 'right'] : ['top', 'bottom'];\n const targetBandAxis: any = axesSpec.find((axis: any) => {\n if (!matchOrient.includes(axis.orient)) {\n // orient必须匹配\n return false;\n }\n if (isValid(axis.seriesId)) {\n // 1. 通过seriesId绑定\n if (array(axis.seriesId).includes(seriesSpec?.id)) {\n return true;\n }\n } else if (isValid(axis.seriesIndex)) {\n // 2. 通过seriesIndex绑定\n if (array(axis.seriesIndex).includes(seriesIndex)) {\n return true;\n }\n } else if (axis.type === 'band') {\n // 3. 通过axis type识别\n return true;\n }\n // 4. 剩下的情况满足axis orient要求\n return true;\n });\n\n return targetBandAxis;\n }\n\n /**\n * @description bar chart 和 common chart支持autoBandsize, 此方法用于识别barWidth配置后应用到轴上\n * */\n protected _applyAxisBandSize(\n axis: ICartesianBandAxisSpec,\n extend: number,\n barWidthSpec: {\n barMaxWidth: number | string;\n barMinWidth: number | string;\n barWidth: number | string;\n barGapInGroup: number | string | (number | string)[];\n }\n ) {\n const { barMaxWidth, barMinWidth, barWidth, barGapInGroup } = barWidthSpec;\n let hasBarWidth = false;\n if (isNumber(barMinWidth)) {\n axis.minBandSize = barMinWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barWidth)) {\n axis.minBandSize = barWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barMaxWidth)) {\n axis.minBandSize = barMaxWidth as number;\n hasBarWidth = true;\n }\n if (hasBarWidth) {\n axis.bandSizeLevel = Number.MAX_VALUE; // 影响最底层的 scale\n axis.bandSizeExtend = {\n extend,\n gap: isArray(barGapInGroup) ? barGapInGroup[(barGapInGroup as any[]).length - 1] : barGapInGroup\n };\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/chart/base/base-chart-transformer.ts"],"names":[],"mappings":"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","file":"base-chart-transformer.js","sourcesContent":["import { isArray, isNumber, isValid } from '@visactor/vutils';\nimport type { IChartSpec, ISeriesSpec } from '../../typings';\nimport type { IChartSpecInfo, IChartSpecTransformer, IChartSpecTransformerOption } from '../interface';\nimport type { IModelConstructor, IModelSpecInfo } from '../../model/interface';\nimport type { IRegionConstructor, RegionSpec } from '../../region/interface';\nimport { Factory } from '../../core';\nimport type { ISeriesConstructor } from '../../series';\nimport type { IComponentConstructor } from '../../component/interface/common';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { setProperty } from '@visactor/vutils-extension';\nimport { getRelatedRegionInfo, getRelatedSeriesInfo } from './util';\nimport type { ICartesianBandAxisSpec } from '../..//component/axis/cartesian/interface';\nimport { array } from '../../util';\nimport { getSpecInfo } from '../../component/util';\n\nexport class BaseChartSpecTransformer<T extends IChartSpec> implements IChartSpecTransformer {\n readonly type: string;\n readonly seriesType: string;\n\n protected _option: IChartSpecTransformerOption;\n\n constructor(option: IChartSpecTransformerOption) {\n this._option = option;\n this.type = option.type;\n this.seriesType = option.seriesType;\n }\n\n /** 此方法不建议重写 */\n initChartSpec(chartSpec: T): IChartSpecInfo {\n this.transformSpec(chartSpec);\n return this.transformModelSpec(chartSpec);\n }\n\n /**\n * 转换 chart spec。包含以下步骤:\n * - 将图表 spec 统一转换为 common 图表 spec\n * - 图表层级的在初始化阶段的 spec 修改\n */\n transformSpec(chartSpec: T): void {\n if (!chartSpec.region || chartSpec.region.length === 0) {\n chartSpec.region = [{}];\n }\n if (chartSpec.tooltip === undefined) {\n chartSpec.tooltip = {};\n }\n // 堆积逆序\n if (isValid(chartSpec.stackInverse)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackInverse) && (r.stackInverse = chartSpec.stackInverse);\n });\n }\n // 堆积排序\n if (isValid(chartSpec.stackSort)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackSort) && (r.stackSort = chartSpec.stackSort);\n });\n }\n }\n\n generateTransform(chartSpec: T, isRuntime?: boolean) {\n return (constructor: IModelConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => {\n const { spec, specPath, specInfoPath, type } = specInfo;\n const transformer = new constructor.transformerConstructor({\n ...this._option,\n type\n });\n // 调用 model 自己的 transformer 进行转换\n const transformResult = transformer.transformSpec(spec, chartSpec, chartSpecInfo);\n const chartSpecInfoValue = {\n ...specInfo,\n ...transformResult\n };\n if (isRuntime) {\n chartSpecInfoValue.theme = transformer.getTheme(spec, chartSpec);\n } else {\n setProperty(chartSpec, specPath, transformResult.spec);\n }\n setProperty(chartSpecInfo, specInfoPath ?? specPath, chartSpecInfoValue);\n };\n }\n\n /**\n * 转换 model spec。包含以下步骤:\n * - model 层级的主题合并\n * - model 层级的在初始化阶段的 spec 修改,如添加 label spec\n */\n transformModelSpec(chartSpec: T): IChartSpecInfo {\n return this.createSpecInfo(chartSpec, this.generateTransform(chartSpec, false));\n }\n\n /** 遍历图表 spec 中包含的所有的 model,进行 spec 转换并生成图表 spec info */\n createSpecInfo(\n chartSpec: T,\n transform?: (\n /** 当前 model 的类 */\n constructor: IModelConstructor,\n /** 当前 model 的 spec info */\n specInfo: IModelSpecInfo,\n /** 图表 spec info */\n chartSpecInfo?: IChartSpecInfo\n ) => void\n ): IChartSpecInfo {\n if (!transform) {\n transform = this.generateTransform(chartSpec, true);\n }\n\n const currentChartSpecInfo: IChartSpecInfo = {};\n\n /* 预处理 region */\n this.forEachRegionInSpec(chartSpec, transform, currentChartSpecInfo);\n\n /* 预处理 series */\n this.forEachSeriesInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 series 关联的 region\n currentChartSpecInfo.series?.forEach((seriesSpecInfo, i) => {\n const relatedRegion =\n getRelatedRegionInfo(seriesSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n const region = relatedRegion[0];\n if (region) {\n if (!region.seriesIndexes) {\n region.seriesIndexes = [];\n }\n region.seriesIndexes.push(i);\n seriesSpecInfo.regionIndexes = region.regionIndexes.slice();\n }\n });\n\n /* 预处理 component */\n this.forEachComponentInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 component 关联的 region、series\n Object.values(currentChartSpecInfo.component ?? {}).forEach(specInfoList =>\n specInfoList.forEach((componentSpecInfo, i) => {\n if (!componentSpecInfo) {\n return;\n }\n if (!componentSpecInfo.regionIndexes) {\n const relatedRegion =\n getRelatedRegionInfo(componentSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n componentSpecInfo.regionIndexes = relatedRegion.map(region => region.regionIndexes[0]);\n }\n if (!componentSpecInfo.seriesIndexes) {\n const seriesInfo = getRelatedSeriesInfo(componentSpecInfo, currentChartSpecInfo);\n if (!seriesInfo) {\n const seriesIndexSet = new Set<number>();\n (componentSpecInfo.regionIndexes ?? []).forEach(regionIndex => {\n const region = currentChartSpecInfo.region?.[regionIndex];\n region?.seriesIndexes?.forEach(seriesIndex => seriesIndexSet.add(seriesIndex));\n });\n componentSpecInfo.seriesIndexes = Array.from(seriesIndexSet);\n } else {\n componentSpecInfo.seriesIndexes = seriesInfo.map(({ seriesIndexes }) => seriesIndexes[0]);\n }\n }\n })\n );\n return currentChartSpecInfo;\n }\n\n protected _isValidSeries(seriesType: string): boolean {\n return true;\n }\n\n protected _getDefaultSeriesSpec(chartSpec: any, pickKeys?: string[], pickKeys2?: string[]) {\n const series: any = {\n dataKey: chartSpec.dataKey,\n\n hover: chartSpec.hover,\n select: chartSpec.select,\n\n label: chartSpec.label,\n\n seriesStyle: chartSpec.seriesStyle,\n\n animation: chartSpec.animation ?? this._option.globalInstance?.isAnimationEnable(),\n animationThreshold: chartSpec.animationThreshold ?? this._option.getTheme?.('animationThreshold'),\n animationAppear: chartSpec.animationAppear,\n animationDisappear: chartSpec.animationDisappear,\n animationEnter: chartSpec.animationEnter,\n animationUpdate: chartSpec.animationUpdate,\n animationExit: chartSpec.animationExit,\n animationNormal: chartSpec.animationNormal,\n animationState: chartSpec.animationState,\n\n extensionMark: chartSpec.extensionMark,\n\n large: chartSpec.large,\n largeThreshold: chartSpec.largeThreshold,\n progressiveStep: chartSpec.progressiveStep,\n progressiveThreshold: chartSpec.progressiveThreshold,\n background: chartSpec.seriesBackground,\n\n invalidType: chartSpec.invalidType,\n\n seriesField: chartSpec.seriesField,\n\n morph: chartSpec.morph,\n\n interactions: chartSpec.interactions\n };\n\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = (chartSpec as any)[seriesType];\n }\n\n if (pickKeys && pickKeys.length) {\n pickKeys.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n if (pickKeys2 && pickKeys2.length) {\n pickKeys2.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n return series;\n }\n\n /** 遍历 spec 中每个有效的 region */\n forEachRegionInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IRegionConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const regionSpec = (chartSpec.region as RegionSpec[]) ?? [];\n return regionSpec.map((spec, index) =>\n callbackfn(\n Factory.getRegionInType('region'),\n {\n spec,\n specPath: ['region', index],\n type: 'region',\n regionIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 series */\n forEachSeriesInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: ISeriesConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const seriesSpec = (chartSpec.series as ISeriesSpec[]) ?? [];\n return seriesSpec.map((spec, index) =>\n callbackfn(\n Factory.getSeriesInType(spec.type),\n {\n spec,\n specPath: ['series', index],\n type: spec.type,\n seriesIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 component */\n forEachComponentInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IComponentConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const results: K[] = [];\n const components = Factory.getComponents();\n\n // 坐标轴组件只需要调用一次\n let cartesianAxis: IComponentConstructor;\n let polarAxis: IComponentConstructor;\n let geoCoordinate: IComponentConstructor;\n let tooltip: IComponentConstructor;\n const otherComponents = [];\n\n for (let index = 0; index < components.length; index++) {\n const { cmp, alwaysCheck } = components[index];\n if (cmp.type.startsWith(ComponentTypeEnum.cartesianAxis)) {\n cartesianAxis = cmp;\n } else if (cmp.type.startsWith(ComponentTypeEnum.polarAxis)) {\n polarAxis = cmp;\n } else if (cmp.type === ComponentTypeEnum.geoCoordinate) {\n geoCoordinate = cmp;\n } else if (alwaysCheck || (chartSpec as any)[cmp.specKey ?? cmp.type]) {\n if (cmp.type === ComponentTypeEnum.tooltip) {\n tooltip = cmp;\n } else {\n otherComponents.push(components[index]);\n }\n }\n }\n\n // NOTE: 坐标轴组件需要在其他组件之前创建\n let hasInitAxis = false;\n if (cartesianAxis) {\n const infoList = cartesianAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (polarAxis && !hasInitAxis) {\n const infoList = polarAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (geoCoordinate && !hasInitAxis) {\n geoCoordinate.getSpecInfo(chartSpec, chartSpecInfo)?.forEach(info => {\n results.push(callbackfn(geoCoordinate, info, chartSpecInfo));\n });\n }\n\n otherComponents.sort((a, b) => {\n return a.createOrder - b.createOrder;\n });\n\n otherComponents.forEach(({ cmp: C }) => {\n (C.getSpecInfo ? C.getSpecInfo(chartSpec, chartSpecInfo) : getSpecInfo(chartSpec, C.specKey, C.type))?.forEach(\n info => {\n results.push(callbackfn(C, info, chartSpecInfo));\n }\n );\n });\n\n // NOTE: tooltip 组件需要在 crosshair 组件之后创建\n if (tooltip) {\n getSpecInfo(chartSpec, tooltip.specKey, tooltip.type)?.forEach(info => {\n results.push(callbackfn(tooltip, info, chartSpecInfo));\n });\n }\n\n return results;\n }\n\n /** 处理series配置 */\n transformSeriesSpec(spec: T): void {\n const defaultSeriesSpec = this._getDefaultSeriesSpec(spec);\n if (!spec.series || spec.series.length === 0) {\n spec.series = [defaultSeriesSpec];\n } else {\n spec.series.forEach(s => {\n if (!this._isValidSeries(s.type)) {\n return;\n }\n Object.keys(defaultSeriesSpec).forEach(k => {\n if (!(k in s)) {\n (s as any)[k] = defaultSeriesSpec[k];\n }\n });\n });\n }\n }\n\n protected _findBandAxisBySeries(seriesSpec: ISeriesSpec, seriesIndex: number, axesSpec: any) {\n const isHorizontal = (seriesSpec as any)?.direction === 'horizontal';\n const matchOrient = isHorizontal ? ['left', 'right'] : ['top', 'bottom'];\n const targetBandAxis: any = axesSpec.find((axis: any) => {\n if (!matchOrient.includes(axis.orient)) {\n // orient必须匹配\n return false;\n }\n if (isValid(axis.seriesId)) {\n // 1. 通过seriesId绑定\n if (array(axis.seriesId).includes(seriesSpec?.id)) {\n return true;\n }\n } else if (isValid(axis.seriesIndex)) {\n // 2. 通过seriesIndex绑定\n if (array(axis.seriesIndex).includes(seriesIndex)) {\n return true;\n }\n } else if (axis.type === 'band') {\n // 3. 通过axis type识别\n return true;\n }\n // 4. 剩下的情况满足axis orient要求\n return true;\n });\n\n return targetBandAxis;\n }\n\n /**\n * @description bar chart 和 common chart支持autoBandsize, 此方法用于识别barWidth配置后应用到轴上\n * */\n protected _applyAxisBandSize(\n axis: ICartesianBandAxisSpec,\n extend: number,\n barWidthSpec: {\n barMaxWidth: number | string;\n barMinWidth: number | string;\n barWidth: number | string;\n barGapInGroup: number | string | (number | string)[];\n }\n ) {\n const { barMaxWidth, barMinWidth, barWidth, barGapInGroup } = barWidthSpec;\n let hasBarWidth = false;\n if (isNumber(barMinWidth)) {\n axis.minBandSize = barMinWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barWidth)) {\n axis.minBandSize = barWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barMaxWidth)) {\n axis.minBandSize = barMaxWidth as number;\n hasBarWidth = true;\n }\n if (hasBarWidth) {\n axis.bandSizeLevel = Number.MAX_VALUE; // 影响最底层的 scale\n axis.bandSizeExtend = {\n extend,\n gap: isArray(barGapInGroup) ? barGapInGroup[(barGapInGroup as any[]).length - 1] : barGapInGroup\n };\n }\n }\n}\n"]}