@visactor/vchart 1.13.6 → 1.13.7

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 (38) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +115 -92
  3. package/build/index.js +127 -91
  4. package/build/index.min.js +1 -1
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/component/label/interface.d.ts +7 -3
  7. package/cjs/component/label/interface.js.map +1 -1
  8. package/cjs/component/label/label.js +6 -1
  9. package/cjs/component/label/label.js.map +1 -1
  10. package/cjs/component/label/total-label.d.ts +1 -1
  11. package/cjs/component/label/total-label.js +22 -11
  12. package/cjs/component/label/total-label.js.map +1 -1
  13. package/cjs/core/index.d.ts +1 -1
  14. package/cjs/core/index.js +3 -2
  15. package/cjs/core/index.js.map +1 -1
  16. package/cjs/core/interface.js +1 -2
  17. package/cjs/core/vchart.js +6 -2
  18. package/cjs/core/vchart.js.map +1 -1
  19. package/cjs/index.d.ts +3 -0
  20. package/cjs/index.js +7 -6
  21. package/cjs/index.js.map +1 -1
  22. package/esm/component/label/interface.d.ts +7 -3
  23. package/esm/component/label/interface.js.map +1 -1
  24. package/esm/component/label/label.js +6 -1
  25. package/esm/component/label/label.js.map +1 -1
  26. package/esm/component/label/total-label.d.ts +1 -1
  27. package/esm/component/label/total-label.js +23 -12
  28. package/esm/component/label/total-label.js.map +1 -1
  29. package/esm/core/index.d.ts +1 -1
  30. package/esm/core/index.js +3 -2
  31. package/esm/core/index.js.map +1 -1
  32. package/esm/core/interface.js +1 -2
  33. package/esm/core/vchart.js +7 -3
  34. package/esm/core/vchart.js.map +1 -1
  35. package/esm/index.d.ts +3 -0
  36. package/esm/index.js +6 -0
  37. package/esm/index.js.map +1 -1
  38. package/package.json +13 -13
@@ -1,4 +1,4 @@
1
- import type { BaseLabelAttrs } from '@visactor/vrender-components';
1
+ import type { BaseLabelAttrs, DataLabelAttrs } from '@visactor/vrender-components';
2
2
  import type { ConvertToMarkStyleSpec, Datum, IComposedTextMarkSpec, IFormatMethod, ITextMarkSpec } from '../../typings';
3
3
  import type { IComponentSpec } from '../base/interface';
4
4
  import type { ILabelMark } from '../../mark/interface';
@@ -28,7 +28,9 @@ export interface ILabelSpec extends IComponentSpec, ILabelAnimationSpec {
28
28
  position?: string;
29
29
  style?: ConvertToMarkStyleSpec<IComposedTextMarkSpec>;
30
30
  state?: LabelStateStyle<Partial<IComposedTextMarkSpec>>;
31
- overlap?: BaseLabelAttrs['overlap'];
31
+ overlap?: BaseLabelAttrs['overlap'] & {
32
+ padding?: DataLabelAttrs['size']['padding'];
33
+ };
32
34
  smartInvert?: BaseLabelAttrs['smartInvert'];
33
35
  stackDataFilterType?: 'min' | 'max';
34
36
  dataFilter?: BaseLabelAttrs['dataFilter'];
@@ -48,7 +50,9 @@ type LabelStateStyle<T> = {
48
50
  selected?: T;
49
51
  selected_reverse?: T;
50
52
  };
51
- export type ITotalLabelSpec = Pick<ILabelSpec, 'visible' | 'formatMethod' | 'interactive' | 'offset' | 'style' | 'state' | 'textType' | 'overlap'>;
53
+ export type ITotalLabelSpec = Pick<ILabelSpec, 'visible' | 'formatMethod' | 'interactive' | 'offset' | 'style' | 'state' | 'textType' | 'overlap'> & {
54
+ position?: 'top' | 'bottom';
55
+ };
52
56
  export interface ITotalLabelTheme extends Pick<ILabelSpec, 'visible' | 'interactive' | 'offset' | 'overlap' | 'smartInvert' | 'animation'> {
53
57
  style?: ITextMarkSpec;
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/label/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { BaseLabelAttrs } from '@visactor/vrender-components';\nimport type { ConvertToMarkStyleSpec, Datum, IComposedTextMarkSpec, IFormatMethod, ITextMarkSpec } from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { ILabelMark } from '../../mark/interface';\nimport type { ISeries } from '../../series/interface';\nimport type { ICompilableMark } from '../../compile/mark/interface';\nimport type { IRegion } from '../../region/interface';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: TransformedLabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\nexport interface ILabelFormatMethodContext {\n series?: ISeries;\n}\n\n/**\n * 系列图元标签配置,一般用于展示数据项\n */\nexport interface ILabelSpec extends IComponentSpec, ILabelAnimationSpec {\n /** 默认不显示标签 */\n visible?: boolean;\n /**\n * 是否支持交互。\n * @default false\n */\n interactive?: boolean;\n /**\n * 文本类型:text, rich,\n * @since 1.7.0\n * @deprecated\n */\n textType?: 'text' | 'rich';\n /**\n * 格式化函数\n * @since 1.10.0 支持返回结构 `{type:'rich', text: [{text:'some text', fill:'black', fontSize: 20}]}\n */\n formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum, ctx?: ILabelFormatMethodContext]>;\n /**\n * 字符串模版\n * 用{}包裹变量名的字符串模版, 变量名取自数据属性值\n * eg: 'type={type},value={value}'\n * @since 1.7.0\n */\n formatter?: string | string[];\n /** 标签与其对应数据图元的间距 */\n offset?: number;\n /** 标签位置 */\n position?: string;\n /** 标签样式配置 */\n style?: ConvertToMarkStyleSpec<IComposedTextMarkSpec>;\n /** 交互样式配置 */\n state?: LabelStateStyle<Partial<IComposedTextMarkSpec>>;\n /** 标签防重叠配置 */\n overlap?: BaseLabelAttrs['overlap'];\n /** 标签智能反色配置 */\n smartInvert?: BaseLabelAttrs['smartInvert'];\n /**\n * 堆积数据过滤类型\n * @since 1.12.0\n */\n stackDataFilterType?: 'min' | 'max';\n /** 自定义标签数据筛选和排序\n * @since 1.3.0\n */\n dataFilter?: BaseLabelAttrs['dataFilter'];\n /** 自定义标签布局函数。\n * @description 当配置了 customLayoutFunc 后,默认布局和防重叠逻辑将不再生效。(overlap/position/offset不生效)\n * @since 1.3.0\n */\n customLayoutFunc?: BaseLabelAttrs['customLayoutFunc'];\n /** 自定义标签躲避函数\n * @description 当配置了 customOverlapFunc 后,会根据 position 和 offset 进行初始布局。配置的防重叠逻辑(overlap)不生效。\n * @since 1.3.0\n */\n customOverlapFunc?: BaseLabelAttrs['customOverlapFunc'];\n /**\n * 防重叠计算完成后的回调函数\n * @since 1.13.5\n */\n onAfterOverlapping?: BaseLabelAttrs['onAfterOverlapping'];\n /**\n * 标签布局\n */\n labelLayout?: 'series' | 'region';\n /**\n * 是否支持3D\n */\n support3d?: boolean;\n /**\n * 是否同步数据图元的状态变化\n * @default false\n * @since 1.9.0\n */\n syncState?: boolean;\n /**\n * 是否显示标签关联图元的 mark tooltip\n * @default false\n * @since 1.13.5\n */\n showRelatedMarkTooltip?: boolean;\n}\n\nexport type ILabelAnimationSpec = Pick<\n BaseLabelAttrs,\n 'animation' | 'animationEnter' | 'animationUpdate' | 'animationExit'\n>;\nexport type IMultiLabelSpec<T extends Omit<ILabelSpec, 'position'>> = T | T[];\n\ntype LabelStateStyle<T> = {\n /**\n * 标签hover状态样式配置\n */\n hover?: T;\n /**\n * 标签hover_reverse状态样式配置\n */\n hover_reverse?: T;\n /**\n * 标签选中状态样式配置\n */\n selected?: T;\n /**\n * 标签未选中状态样式配置\n */\n selected_reverse?: T;\n};\n\nexport type ITotalLabelSpec = Pick<\n ILabelSpec,\n 'visible' | 'formatMethod' | 'interactive' | 'offset' | 'style' | 'state' | 'textType' | 'overlap'\n>;\n\nexport interface ITotalLabelTheme\n extends Pick<ILabelSpec, 'visible' | 'interactive' | 'offset' | 'overlap' | 'smartInvert' | 'animation'> {\n style?: ITextMarkSpec;\n}\n\n// 内部处理转换后的标签配置\nexport type TransformedLabelSpec = ILabelSpec & {\n getStyleHandler: (series: ISeries) => (mark?: ILabelMark, spec?: any) => void;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/label/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { BaseLabelAttrs, DataLabelAttrs } from '@visactor/vrender-components';\nimport type { ConvertToMarkStyleSpec, Datum, IComposedTextMarkSpec, IFormatMethod, ITextMarkSpec } from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { ILabelMark } from '../../mark/interface';\nimport type { ISeries } from '../../series/interface';\nimport type { ICompilableMark } from '../../compile/mark/interface';\nimport type { IRegion } from '../../region/interface';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: TransformedLabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\nexport interface ILabelFormatMethodContext {\n series?: ISeries;\n}\n\n/**\n * 系列图元标签配置,一般用于展示数据项\n */\nexport interface ILabelSpec extends IComponentSpec, ILabelAnimationSpec {\n /** 默认不显示标签 */\n visible?: boolean;\n /**\n * 是否支持交互。\n * @default false\n */\n interactive?: boolean;\n /**\n * 文本类型:text, rich,\n * @since 1.7.0\n * @deprecated\n */\n textType?: 'text' | 'rich';\n /**\n * 格式化函数\n * @since 1.10.0 支持返回结构 `{type:'rich', text: [{text:'some text', fill:'black', fontSize: 20}]}\n */\n formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum, ctx?: ILabelFormatMethodContext]>;\n /**\n * 字符串模版\n * 用{}包裹变量名的字符串模版, 变量名取自数据属性值\n * eg: 'type={type},value={value}'\n * @since 1.7.0\n */\n formatter?: string | string[];\n /** 标签与其对应数据图元的间距 */\n offset?: number;\n /** 标签位置 */\n position?: string;\n /** 标签样式配置 */\n style?: ConvertToMarkStyleSpec<IComposedTextMarkSpec>;\n /** 交互样式配置 */\n state?: LabelStateStyle<Partial<IComposedTextMarkSpec>>;\n /** 标签防重叠配置 */\n overlap?: BaseLabelAttrs['overlap'] & {\n /**\n * 防重叠区域边距\n * @since 1.13.7\n */\n padding?: DataLabelAttrs['size']['padding'];\n };\n /** 标签智能反色配置 */\n smartInvert?: BaseLabelAttrs['smartInvert'];\n /**\n * 堆积数据过滤类型\n * @since 1.12.0\n */\n stackDataFilterType?: 'min' | 'max';\n /** 自定义标签数据筛选和排序\n * @since 1.3.0\n */\n dataFilter?: BaseLabelAttrs['dataFilter'];\n /** 自定义标签布局函数。\n * @description 当配置了 customLayoutFunc 后,默认布局和防重叠逻辑将不再生效。(overlap/position/offset不生效)\n * @since 1.3.0\n */\n customLayoutFunc?: BaseLabelAttrs['customLayoutFunc'];\n /** 自定义标签躲避函数\n * @description 当配置了 customOverlapFunc 后,会根据 position 和 offset 进行初始布局。配置的防重叠逻辑(overlap)不生效。\n * @since 1.3.0\n */\n customOverlapFunc?: BaseLabelAttrs['customOverlapFunc'];\n /**\n * 防重叠计算完成后的回调函数\n * @since 1.13.5\n */\n onAfterOverlapping?: BaseLabelAttrs['onAfterOverlapping'];\n /**\n * 标签布局\n */\n labelLayout?: 'series' | 'region';\n /**\n * 是否支持3D\n */\n support3d?: boolean;\n /**\n * 是否同步数据图元的状态变化\n * @default false\n * @since 1.9.0\n */\n syncState?: boolean;\n /**\n * 是否显示标签关联图元的 mark tooltip\n * @default false\n * @since 1.13.5\n */\n showRelatedMarkTooltip?: boolean;\n}\n\nexport type ILabelAnimationSpec = Pick<\n BaseLabelAttrs,\n 'animation' | 'animationEnter' | 'animationUpdate' | 'animationExit'\n>;\nexport type IMultiLabelSpec<T extends Omit<ILabelSpec, 'position'>> = T | T[];\n\ntype LabelStateStyle<T> = {\n /**\n * 标签hover状态样式配置\n */\n hover?: T;\n /**\n * 标签hover_reverse状态样式配置\n */\n hover_reverse?: T;\n /**\n * 标签选中状态样式配置\n */\n selected?: T;\n /**\n * 标签未选中状态样式配置\n */\n selected_reverse?: T;\n};\n\nexport type ITotalLabelSpec = Pick<\n ILabelSpec,\n 'visible' | 'formatMethod' | 'interactive' | 'offset' | 'style' | 'state' | 'textType' | 'overlap'\n> & {\n /** 堆叠汇总标签的位置,在一组堆积图元的上方或下方\n * @default 'top'\n */\n position?: 'top' | 'bottom';\n};\n\nexport interface ITotalLabelTheme\n extends Pick<ILabelSpec, 'visible' | 'interactive' | 'offset' | 'overlap' | 'smartInvert' | 'animation'> {\n style?: ITextMarkSpec;\n}\n\n// 内部处理转换后的标签配置\nexport type TransformedLabelSpec = ILabelSpec & {\n getStyleHandler: (series: ISeries) => (mark?: ILabelMark, spec?: any) => void;\n};\n"]}
@@ -170,7 +170,12 @@ class Label extends base_label_1.BaseLabelComponent {
170
170
  data: datum
171
171
  } : (0, util_1.textAttribute)(labelInfos[params.labelIndex], datum, labelSpec.formatMethod, labelSpec.formatter);
172
172
  }
173
- })).size((() => labelInfos[0].series.getRegion().getLayoutRect()));
173
+ })).size((() => {
174
+ var _a;
175
+ return Object.assign({
176
+ padding: null === (_a = labelInfos[0].labelSpec.overlap) || void 0 === _a ? void 0 : _a.padding
177
+ }, labelInfos[0].series.getRegion().getLayoutRect());
178
+ }));
174
179
  }
175
180
  compileMarks() {
176
181
  this.getMarks().forEach((m => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/label/label.ts"],"names":[],"mappings":";;;AAEA,4CAAsD;AAGtD,8CAAsF;AACtF,gDAAuE;AACvE,wDAA0D;AAC1D,kDAAqD;AAGrD,iEAAuD;AACvD,4CAA8C;AAI9C,2DAAiF;AACjF,iCAA2D;AAE3D,oDAA6D;AAC7D,6CAAkD;AAGlD,6CAAoF;AAEpF,gDAA6C;AAE7C,4CAAqD;AAGrD,2DAA2D;AAG3D,MAAa,KAAkC,SAAQ,+BAAqB;IAmB1E,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAlBvB,SAAI,GAAG,wBAAiB,CAAC,KAAK,CAAC;QAC/B,SAAI,GAAW,wBAAiB,CAAC,KAAK,CAAC;QAGvC,YAAO,GAAG,OAAO,CAAC;QAGT,2BAAsB,GAAG,wCAAoB,CAAC;QAEvD,iBAAY,GAAW,qBAAY,CAAC,KAAK,CAAC;QAUxC,IAAI,CAAC,WAAW,GAAI,IAAY,CAAC,WAAW,IAAI,QAAQ,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,SAAc,EAAE,aAA6B;QAC9D,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,KAAI,EAAE,CAAC;QACnD,MAAM,cAAc,GAAG,CAAC,aAA2B,EAAE,EAAE;YACrD,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC;YACrD,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACvD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC;gBAE1C,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CACtC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC,CAC/E,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,eAAe,EAAE;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,wBAAiB,CAAC,KAAK;oBAC7B,YAAY,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5C,aAAa,EAAE,CAAC,CAAC,CAAC;iBACnB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,MAAwB;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,IAAQ;QACb,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAU,CAAC,cAAc,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;gBAClD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACjE,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,gBAAgB,EAAE,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,2BAAmB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;gBAClD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACjE,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,eAAe,EAAE,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,2BAAmB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;QAC7E,CAAC,CAAC;IACJ,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;SAChC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;SACrC;QACD,IAAA,kBAAU,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAe,EAAE,EAAE;YAC5C,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAElC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aACpC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,CAAC,IAAI,EAAE;oBACT,SAAS;iBACV;gBACD,aAAa,CAAC,QAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,IAA0B,EAAE,KAAa,EAAE,EAAE;;oBAClG,IAAI,IAAI,CAAC,OAAO,EAAE;wBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAChC;4BACE,IAAI,SAAoB;4BACxB,IAAI,EAAE,GAAG,QAAQ,UAAU,KAAK,EAAE;yBACnC,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,uBAAuB,EAAE,EAAE,CAChE,CAAC;wBAChB,IAAI,IAAI,CAAC,sBAAsB,EAAE;4BAC/B,MAAA,MAAA,MAAM,CAAC,aAAa,0CAAE,gBAAgB,CAAC,IAAI,0CAAE,GAAG,CAAC,SAAS,CAAC,CAAC;yBAC7D;wBACD,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC;4BACR,SAAS;4BACT,QAAQ,EAAE,IAAI;4BACd,MAAM;4BACN,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,mBAAmB;QAC3B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE;YACrD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAChC,EAAE,IAAI,aAAwB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,kBAAkB,EAAE,EACvF;oBACE,aAAa,EAAE,OAAO;oBACtB,eAAe,EAAE,IAAI;iBACtB,EACD;oBACE,SAAS,EAAG,IAAI,CAAC,KAAa,CAAC,SAAS;iBACzC,CACF,CAAC;gBACF,IAAI,SAAS,EAAE;oBACb,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;oBAEtC,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAO,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;wBACtE,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;qBAC1E;oBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;wBAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACxC,CAAC,CAAC,CAAC;iBACJ;aACF;iBAAM;gBACL,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;oBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAChC,EAAE,IAAI,aAAwB,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,YAAY,EAAE,EAC/E;wBACE,aAAa,EAAE,OAAO;wBACtB,eAAe,EAAE,IAAI;qBACtB,EACD;wBACE,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS;qBACxD,CACF,CAAC;oBACF,IAAI,SAAS,EAAE;wBACb,IAAI,IAAA,gBAAO,EAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;4BACvC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;yBACjE;wBAED,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;wBACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;4BAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC3C,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE;YAC9D,MAAM,cAAc,GAAG,IAAA,cAAK,EAAC,WAAW,EAAE,CAAC,CAAC;YAC5C,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;gBACvC,SAAS,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACtC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;gBACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,IAAA,mBAAU,EAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,CAAC,EAAE;oBAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACvD,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBAClD;gBACD,IAAI,MAAA,MAAA,SAAS,CAAC,UAAU,0CAAE,MAAM,0CAAE,SAAS,EAAE;oBAC3C,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,0BAAc,CAAC,WAAW,CAAC,CAAC;iBACpG;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE;YAC9D,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;YAChC,IAAI,IAAA,gBAAO,EAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;aAC5D;iBAAM;gBACL,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;aAC7D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,0BAA0B,CAAC,SAAuB,EAAE,cAA8B;QAC1F,IAAI,CAAC,8BAA8B,CACjC,cAAc,CAAC,UAAU,EAAY,EACrC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EACtD,SAAS,CACV,CAAC;IACJ,CAAC;IAES,2BAA2B,CAAC,SAAqB,EAAE,cAA8B;QACzF,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,UAAU,EAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACjH,CAAC;IAES,8BAA8B,CACtC,SAAiB,EACjB,MAAuC,EACvC,UAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACjE,SAAS;aACN,MAAM,CAAC,MAAM,CAAC;aACd,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;aACjC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;aAC5D,UAAU,CAAC,CAAC,IAAmB,EAAE,MAA2B,EAAE,EAAE;;YAC/D,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE;gBACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBACnD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAEvD,MAAM,YAAY,GAAG,MAAA,MAAC,IAAI,CAAC,KAAa,0CAAE,YAAY,mCAAI,CAAC,CAAC;gBAC5D,IAAI,IAAI,GAAG,IAAA,4BAAS,EAClB;oBACE,SAAS,kBAAI,QAAQ,EAAE,SAAS,CAAC,WAAW,KAAK,IAAI,IAAK,SAAS,CAAC,KAAK,CAAE;oBAC3E,OAAO,EAAE;wBACP,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;qBACnE;iBACF,EACD,IAAA,yBAAkB,EAAC,IAAI,EAAE,SAAS,CAAC,gDAE9B,IAAA,oBAAW,EAAC,SAAS,EAAE;oBACxB,UAAU;oBACV,OAAO;oBACP,OAAO;oBACP,MAAM;oBACN,qBAAqB;oBACrB,iBAAiB;iBAClB,CAAC,GACC,WAAW,KACd,YAAY,KAEd,SAAS,CAAC,mBAAmB;oBAC3B,CAAC,CAAC;wBACE,UAAU,EACR,SAAS,CAAC,mBAAmB,KAAK,KAAK;4BACrC,CAAC,CAAC,CAAC,IAAS,EAAE,EAAE;gCACZ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,+BAAwB,CAAC,CAAC,CAAC;4BACnE,CAAC;4BACH,CAAC,CAAC,CAAC,IAAS,EAAE,EAAE;gCACZ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,4BAAqB,CAAC,CAAC,CAAC;4BAChE,CAAC;qBACR;oBACH,CAAC,CAAC,EAAE,CACP,CAAC;gBAEF,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE;oBACpC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBAC3D;gBAED,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;oBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;gBACD,OAAO,IAAI,CAAC;aACb;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAA2B,EAAE,EAAE;YACtD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE;gBACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE/D,OAAO,SAAS,CAAC,UAAU;oBACzB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;oBACjB,CAAC,CAAC,IAAA,oBAAa,EAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;aACtG;QACH,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,IAAI,KAAK,CAAC;YACV,IAAI,IAAA,gBAAO,EAAC,SAAS,CAAC,EAAE;gBACtB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;aACnF;iBAAM;gBACL,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;aAChF;YACD,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE;YACtD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE,CAAC;YACjE,IAAI,WAAW,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB,CAAC,IAAc;QACtC,IAAI,SAAqB,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC;QAClC,MAAM,gBAAgB,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC;QAC9C,IAAI,gBAAgB,EAAE;YACpB,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAmB,CAAC,CAAC;YAC/E,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE;gBACtD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACjE,IAAI,WAAW,KAAK,gBAAgB,EAAE;oBACpC,SAAS,GAAG,IAAA,cAAK,EAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;iBAC3C;YACH,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;;AA7VH,sBA8VC;AA7VQ,UAAI,GAAG,wBAAiB,CAAC,KAAK,CAAC;AAI/B,aAAO,GAAG,OAAO,CAAC;AAGT,4BAAsB,GAAG,wCAA2B,CAAC;AAwVhE,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,IAAA,6BAAqB,GAAE,CAAC;IACxB,IAAA,yBAAiB,GAAE,CAAC;IACpB,IAAA,iCAAqB,GAAE,CAAC;IACxB,iBAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AALW,QAAA,aAAa,iBAKxB","file":"label.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption, IModelSpecInfo } from '../../model/interface';\nimport { STACK_FIELD_TOTAL_BOTTOM, STACK_FIELD_TOTAL_TOP } from '../../constant/data';\nimport { ChartEvent, VGRAMMAR_HOOK_EVENT } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IComponentMark, ILabelMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { eachSeries } from '../../util/model';\nimport type { ISeries, SeriesMarkNameEnum } from '../../series/interface';\nimport type { IGroupMark, ILabel, IMark as IVGrammarMark } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabel as registerVGrammarLabel } from '@visactor/vgrammar-core';\nimport { defaultLabelConfig, textAttribute } from './util';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isArray, isFunction, isValid, pickWithout } from '@visactor/vutils';\nimport type { ILabelInfo, ILabelSpec, TransformedLabelSpec } from './interface';\nimport { Factory } from '../../core/factory';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabelMark } from '../../mark/label';\nimport type { IChartSpecInfo } from '../../chart/interface';\nimport type { IChartSpec } from '../../typings';\nimport { LabelSpecTransformer } from './label-transformer';\nimport type { IGraphic } from '@visactor/vrender-core';\n\nexport class Label<T extends IChartSpec = any> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n static specKey = 'label';\n specKey = 'label';\n\n static readonly transformerConstructor = LabelSpecTransformer as any;\n readonly transformerConstructor = LabelSpecTransformer;\n\n layoutZIndex: number = LayoutZIndex.Label;\n\n protected _labelInfoMap: Map<IRegion, ILabelInfo[]>;\n\n protected _labelComponentMap: Map<IComponentMark, () => ILabelInfo | ILabelInfo[]>;\n\n protected _layoutRule: 'series' | 'region';\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._layoutRule = (spec as any).labelLayout || 'series';\n }\n\n static getSpecInfo(chartSpec: any, chartSpecInfo: IChartSpecInfo): Maybe<IModelSpecInfo[]> {\n const specInfo: IModelSpecInfo[] = [];\n const regionSpecInfo = chartSpecInfo?.region || [];\n const isLabelVisible = (labelSpecList: ILabelSpec[]) => {\n return labelSpecList.some(labelSpec => labelSpec.visible);\n };\n\n regionSpecInfo.forEach((regionInfo, i) => {\n const seriesIndexes = regionInfo.seriesIndexes || [];\n const hasVisibleLabel = seriesIndexes.some(seriesIndex => {\n const seriesInfo = chartSpecInfo.series[seriesIndex];\n const { markLabelSpec = {} } = seriesInfo;\n\n return Object.values(markLabelSpec).some(\n labelSpecList => Array.isArray(labelSpecList) && isLabelVisible(labelSpecList)\n );\n });\n if (hasVisibleLabel) {\n specInfo.push({\n spec: chartSpec,\n type: ComponentTypeEnum.label,\n specInfoPath: ['component', this.specKey, i],\n regionIndexes: [i]\n });\n }\n });\n return specInfo;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initEvent();\n this._initTextMark();\n this._initLabelComponent();\n this._initTextMarkStyle();\n }\n\n reInit(spec?: T) {\n super.reInit(spec);\n this._labelInfoMap && this._labelInfoMap.clear();\n this._initTextMark();\n this._initTextMarkStyle();\n }\n\n initEvent() {\n this.event.on(ChartEvent.dataZoomChange, () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.disableAnimation();\n }\n });\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n });\n const enableAnimation = () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.enableAnimation();\n }\n });\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n };\n }\n\n protected _initTextMark() {\n if (!this._labelInfoMap) {\n this._labelInfoMap = new Map();\n }\n\n if (!this._labelComponentMap) {\n this._labelComponentMap = new Map();\n }\n eachSeries(this._regions, (series: ISeries) => {\n const { markLabelSpec = {} } = series.getSpecInfo();\n const markNames = Object.keys(markLabelSpec);\n const region = series.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < markNames.length; i++) {\n const markName = markNames[i];\n const mark = series.getMarkInName(markName);\n if (!mark) {\n continue;\n }\n markLabelSpec[markName as SeriesMarkNameEnum].forEach((spec: TransformedLabelSpec, index: number) => {\n if (spec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark(\n {\n type: MarkTypeEnum.label,\n name: `${markName}-label-${index}`\n },\n { noSeparateStyle: true, attributeContext: series.getMarkAttributeContext() }\n ) as ILabelMark;\n if (spec.showRelatedMarkTooltip) {\n series.tooltipHelper?.activeTriggerSet.mark?.add(labelMark);\n }\n labelMark.setTarget(mark);\n info.push({\n labelMark,\n baseMark: mark,\n series,\n labelSpec: spec\n });\n }\n });\n }\n });\n }\n\n protected _initLabelComponent() {\n this._labelInfoMap.forEach((regionLabelInfo, region) => {\n if (this._layoutRule === 'region') {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${region.getGroupMark().name}-label-component` },\n {\n componentType: 'label',\n noSeparateStyle: true\n },\n {\n support3d: (this._spec as any).support3d\n }\n );\n if (component) {\n component.setSkipBeforeLayouted(true);\n\n if (regionLabelInfo[0] && isValid(regionLabelInfo[0].labelSpec.zIndex)) {\n component.setMarkConfig({ zIndex: regionLabelInfo[0].labelSpec.zIndex });\n }\n this._marks.addMark(component);\n this._labelComponentMap.set(component, () => {\n return this._labelInfoMap.get(region);\n });\n }\n } else {\n regionLabelInfo.forEach((labelInfo, i) => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n noSeparateStyle: true\n },\n {\n support3d: labelInfo.baseMark.getMarkConfig().support3d\n }\n );\n if (component) {\n if (isValid(labelInfo.labelSpec.zIndex)) {\n component.setMarkConfig({ zIndex: labelInfo.labelSpec.zIndex });\n }\n\n component.setSkipBeforeLayouted(true);\n this._marks.addMark(component);\n this._labelComponentMap.set(component, () => {\n return this._labelInfoMap.get(region)[i];\n });\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelComponentMap.forEach((labelInfoCb, labelComponent) => {\n const labelInfoArray = array(labelInfoCb());\n labelInfoArray.forEach(({ labelMark }) => {\n labelMark.setComponent(labelComponent);\n });\n });\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec, undefined);\n if (isFunction(labelSpec?.getStyleHandler)) {\n const styleHandler = labelSpec.getStyleHandler(series);\n styleHandler?.call(series, labelMark, labelSpec);\n }\n if (labelMark.stateStyle?.normal?.lineWidth) {\n labelMark.setAttribute('stroke', series.getColorAttribute(), 'normal', AttributeLevel.Base_Series);\n }\n });\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._labelComponentMap.forEach((labelInfoCb, labelComponent) => {\n const labelInfo = labelInfoCb();\n if (isArray(labelInfo)) {\n this._updateMultiLabelAttribute(labelInfo, labelComponent);\n } else {\n this._updateSingleLabelAttribute(labelInfo, labelComponent);\n }\n });\n }\n\n protected _updateMultiLabelAttribute(labelInfo: ILabelInfo[], labelComponent: IComponentMark) {\n this._updateLabelComponentAttribute(\n labelComponent.getProduct() as ILabel,\n labelInfo.map(({ baseMark }) => baseMark.getProduct()),\n labelInfo\n );\n }\n\n protected _updateSingleLabelAttribute(labelInfo: ILabelInfo, labelComponent: IComponentMark) {\n const { baseMark } = labelInfo;\n this._updateLabelComponentAttribute(labelComponent.getProduct() as ILabel, baseMark.getProduct(), [labelInfo]);\n }\n\n protected _updateLabelComponentAttribute(\n component: ILabel,\n target: IVGrammarMark | IVGrammarMark[],\n labelInfos: ILabelInfo[]\n ) {\n const dependCmp = this._option.getComponentsByType('totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle((mark: IVGrammarMark, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { labelSpec, labelMark, series } = labelInfo;\n const rule = labelMark.getRule();\n const interactive = this._interactiveConfig(labelSpec);\n /** arc label When setting the centerOffset of the spec, the label also needs to be offset accordingly, and the centerOffset is not in the labelSpec */\n const centerOffset = (this._spec as any)?.centerOffset ?? 0;\n let spec = mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: dependCmp.map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n defaultLabelConfig(rule, labelInfo),\n {\n ...pickWithout(labelSpec, [\n 'position',\n 'style',\n 'state',\n 'type',\n 'stackDataFilterType',\n 'getStyleHandler'\n ]),\n ...interactive,\n centerOffset\n },\n labelSpec.stackDataFilterType\n ? {\n dataFilter:\n labelSpec.stackDataFilterType === 'min'\n ? (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_BOTTOM]);\n }\n : (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_TOP]);\n }\n }\n : {}\n );\n\n if (series && series.parseLabelStyle) {\n spec = series.parseLabelStyle(spec, labelSpec, labelMark);\n }\n // TODO 可以优化。vgrammar 的 label 图元类型分发是完全依赖 baseMark 的类型。默认情况下,line/area 图元的标签会使用'line-data'标签,此时需要 vchart 将类型传给 vgrammar\n if (rule === 'line' || rule === 'area') {\n spec.type = rule;\n }\n return spec;\n }\n })\n .encode((datum, element, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { labelSpec, labelMark } = labelInfos[params.labelIndex];\n\n return labelMark.skipEncode\n ? { data: datum }\n : textAttribute(labelInfos[params.labelIndex], datum, labelSpec.formatMethod, labelSpec.formatter);\n }\n })\n .size(() => labelInfos[0].series.getRegion().getLayoutRect());\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const labelInfo = this._labelComponentMap.get(m)();\n let group;\n if (isArray(labelInfo)) {\n group = labelInfo[0].series.getRegion().getGroupMark().getProduct() as IGroupMark;\n } else {\n group = labelInfo.series.getRegion().getGroupMark().getProduct() as IGroupMark;\n }\n m.compile({ group, context: { model: this, labelInfo } });\n });\n }\n\n getVRenderComponents() {\n const labels: any[] = [];\n this._labelComponentMap.forEach((infoFunc, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n labels.push(graphicItem);\n }\n });\n return labels;\n }\n\n getLabelInfoByTextGraphic(text: IGraphic): ILabelInfo {\n let labelInfo: ILabelInfo;\n const vrenderLabel = text?.parent;\n const vrenderDataLabel = vrenderLabel?.parent;\n if (vrenderDataLabel) {\n const labelIndex = vrenderDataLabel.getChildren().indexOf(vrenderLabel as any);\n this._labelComponentMap.forEach((infoFunc, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem === vrenderDataLabel) {\n labelInfo = array(infoFunc())[labelIndex];\n }\n });\n }\n return labelInfo;\n }\n}\n\nexport const registerLabel = () => {\n registerVGrammarLabel();\n registerLabelMark();\n registerComponentMark();\n Factory.registerComponent(Label.type, Label, true);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/label/label.ts"],"names":[],"mappings":"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","file":"label.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption, IModelSpecInfo } from '../../model/interface';\nimport { STACK_FIELD_TOTAL_BOTTOM, STACK_FIELD_TOTAL_TOP } from '../../constant/data';\nimport { ChartEvent, VGRAMMAR_HOOK_EVENT } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IComponentMark, ILabelMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { eachSeries } from '../../util/model';\nimport type { ISeries, SeriesMarkNameEnum } from '../../series/interface';\nimport type { IGroupMark, ILabel, IMark as IVGrammarMark } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabel as registerVGrammarLabel } from '@visactor/vgrammar-core';\nimport { defaultLabelConfig, textAttribute } from './util';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isArray, isFunction, isValid, pickWithout } from '@visactor/vutils';\nimport type { ILabelInfo, ILabelSpec, TransformedLabelSpec } from './interface';\nimport { Factory } from '../../core/factory';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabelMark } from '../../mark/label';\nimport type { IChartSpecInfo } from '../../chart/interface';\nimport type { IChartSpec } from '../../typings';\nimport { LabelSpecTransformer } from './label-transformer';\nimport type { IGraphic } from '@visactor/vrender-core';\n\nexport class Label<T extends IChartSpec = any> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n static specKey = 'label';\n specKey = 'label';\n\n static readonly transformerConstructor = LabelSpecTransformer as any;\n readonly transformerConstructor = LabelSpecTransformer;\n\n layoutZIndex: number = LayoutZIndex.Label;\n\n protected _labelInfoMap: Map<IRegion, ILabelInfo[]>;\n\n protected _labelComponentMap: Map<IComponentMark, () => ILabelInfo | ILabelInfo[]>;\n\n protected _layoutRule: 'series' | 'region';\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._layoutRule = (spec as any).labelLayout || 'series';\n }\n\n static getSpecInfo(chartSpec: any, chartSpecInfo: IChartSpecInfo): Maybe<IModelSpecInfo[]> {\n const specInfo: IModelSpecInfo[] = [];\n const regionSpecInfo = chartSpecInfo?.region || [];\n const isLabelVisible = (labelSpecList: ILabelSpec[]) => {\n return labelSpecList.some(labelSpec => labelSpec.visible);\n };\n\n regionSpecInfo.forEach((regionInfo, i) => {\n const seriesIndexes = regionInfo.seriesIndexes || [];\n const hasVisibleLabel = seriesIndexes.some(seriesIndex => {\n const seriesInfo = chartSpecInfo.series[seriesIndex];\n const { markLabelSpec = {} } = seriesInfo;\n\n return Object.values(markLabelSpec).some(\n labelSpecList => Array.isArray(labelSpecList) && isLabelVisible(labelSpecList)\n );\n });\n if (hasVisibleLabel) {\n specInfo.push({\n spec: chartSpec,\n type: ComponentTypeEnum.label,\n specInfoPath: ['component', this.specKey, i],\n regionIndexes: [i]\n });\n }\n });\n return specInfo;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initEvent();\n this._initTextMark();\n this._initLabelComponent();\n this._initTextMarkStyle();\n }\n\n reInit(spec?: T) {\n super.reInit(spec);\n this._labelInfoMap && this._labelInfoMap.clear();\n this._initTextMark();\n this._initTextMarkStyle();\n }\n\n initEvent() {\n this.event.on(ChartEvent.dataZoomChange, () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.disableAnimation();\n }\n });\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n });\n const enableAnimation = () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.enableAnimation();\n }\n });\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n };\n }\n\n protected _initTextMark() {\n if (!this._labelInfoMap) {\n this._labelInfoMap = new Map();\n }\n\n if (!this._labelComponentMap) {\n this._labelComponentMap = new Map();\n }\n eachSeries(this._regions, (series: ISeries) => {\n const { markLabelSpec = {} } = series.getSpecInfo();\n const markNames = Object.keys(markLabelSpec);\n const region = series.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < markNames.length; i++) {\n const markName = markNames[i];\n const mark = series.getMarkInName(markName);\n if (!mark) {\n continue;\n }\n markLabelSpec[markName as SeriesMarkNameEnum].forEach((spec: TransformedLabelSpec, index: number) => {\n if (spec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark(\n {\n type: MarkTypeEnum.label,\n name: `${markName}-label-${index}`\n },\n { noSeparateStyle: true, attributeContext: series.getMarkAttributeContext() }\n ) as ILabelMark;\n if (spec.showRelatedMarkTooltip) {\n series.tooltipHelper?.activeTriggerSet.mark?.add(labelMark);\n }\n labelMark.setTarget(mark);\n info.push({\n labelMark,\n baseMark: mark,\n series,\n labelSpec: spec\n });\n }\n });\n }\n });\n }\n\n protected _initLabelComponent() {\n this._labelInfoMap.forEach((regionLabelInfo, region) => {\n if (this._layoutRule === 'region') {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${region.getGroupMark().name}-label-component` },\n {\n componentType: 'label',\n noSeparateStyle: true\n },\n {\n support3d: (this._spec as any).support3d\n }\n );\n if (component) {\n component.setSkipBeforeLayouted(true);\n\n if (regionLabelInfo[0] && isValid(regionLabelInfo[0].labelSpec.zIndex)) {\n component.setMarkConfig({ zIndex: regionLabelInfo[0].labelSpec.zIndex });\n }\n this._marks.addMark(component);\n this._labelComponentMap.set(component, () => {\n return this._labelInfoMap.get(region);\n });\n }\n } else {\n regionLabelInfo.forEach((labelInfo, i) => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n noSeparateStyle: true\n },\n {\n support3d: labelInfo.baseMark.getMarkConfig().support3d\n }\n );\n if (component) {\n if (isValid(labelInfo.labelSpec.zIndex)) {\n component.setMarkConfig({ zIndex: labelInfo.labelSpec.zIndex });\n }\n\n component.setSkipBeforeLayouted(true);\n this._marks.addMark(component);\n this._labelComponentMap.set(component, () => {\n return this._labelInfoMap.get(region)[i];\n });\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelComponentMap.forEach((labelInfoCb, labelComponent) => {\n const labelInfoArray = array(labelInfoCb());\n labelInfoArray.forEach(({ labelMark }) => {\n labelMark.setComponent(labelComponent);\n });\n });\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec, undefined);\n if (isFunction(labelSpec?.getStyleHandler)) {\n const styleHandler = labelSpec.getStyleHandler(series);\n styleHandler?.call(series, labelMark, labelSpec);\n }\n if (labelMark.stateStyle?.normal?.lineWidth) {\n labelMark.setAttribute('stroke', series.getColorAttribute(), 'normal', AttributeLevel.Base_Series);\n }\n });\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._labelComponentMap.forEach((labelInfoCb, labelComponent) => {\n const labelInfo = labelInfoCb();\n if (isArray(labelInfo)) {\n this._updateMultiLabelAttribute(labelInfo, labelComponent);\n } else {\n this._updateSingleLabelAttribute(labelInfo, labelComponent);\n }\n });\n }\n\n protected _updateMultiLabelAttribute(labelInfo: ILabelInfo[], labelComponent: IComponentMark) {\n this._updateLabelComponentAttribute(\n labelComponent.getProduct() as ILabel,\n labelInfo.map(({ baseMark }) => baseMark.getProduct()),\n labelInfo\n );\n }\n\n protected _updateSingleLabelAttribute(labelInfo: ILabelInfo, labelComponent: IComponentMark) {\n const { baseMark } = labelInfo;\n this._updateLabelComponentAttribute(labelComponent.getProduct() as ILabel, baseMark.getProduct(), [labelInfo]);\n }\n\n protected _updateLabelComponentAttribute(\n component: ILabel,\n target: IVGrammarMark | IVGrammarMark[],\n labelInfos: ILabelInfo[]\n ) {\n const dependCmp = this._option.getComponentsByType('totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle((mark: IVGrammarMark, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { labelSpec, labelMark, series } = labelInfo;\n const rule = labelMark.getRule();\n const interactive = this._interactiveConfig(labelSpec);\n /** arc label When setting the centerOffset of the spec, the label also needs to be offset accordingly, and the centerOffset is not in the labelSpec */\n const centerOffset = (this._spec as any)?.centerOffset ?? 0;\n let spec = mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: dependCmp.map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n defaultLabelConfig(rule, labelInfo),\n {\n ...pickWithout(labelSpec, [\n 'position',\n 'style',\n 'state',\n 'type',\n 'stackDataFilterType',\n 'getStyleHandler'\n ]),\n ...interactive,\n centerOffset\n },\n labelSpec.stackDataFilterType\n ? {\n dataFilter:\n labelSpec.stackDataFilterType === 'min'\n ? (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_BOTTOM]);\n }\n : (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_TOP]);\n }\n }\n : {}\n );\n\n if (series && series.parseLabelStyle) {\n spec = series.parseLabelStyle(spec, labelSpec, labelMark);\n }\n // TODO 可以优化。vgrammar 的 label 图元类型分发是完全依赖 baseMark 的类型。默认情况下,line/area 图元的标签会使用'line-data'标签,此时需要 vchart 将类型传给 vgrammar\n if (rule === 'line' || rule === 'area') {\n spec.type = rule;\n }\n return spec;\n }\n })\n .encode((datum, element, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { labelSpec, labelMark } = labelInfos[params.labelIndex];\n\n return labelMark.skipEncode\n ? { data: datum }\n : textAttribute(labelInfos[params.labelIndex], datum, labelSpec.formatMethod, labelSpec.formatter);\n }\n })\n .size(() => {\n return {\n padding: labelInfos[0].labelSpec.overlap?.padding,\n ...labelInfos[0].series.getRegion().getLayoutRect()\n };\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const labelInfo = this._labelComponentMap.get(m)();\n let group;\n if (isArray(labelInfo)) {\n group = labelInfo[0].series.getRegion().getGroupMark().getProduct() as IGroupMark;\n } else {\n group = labelInfo.series.getRegion().getGroupMark().getProduct() as IGroupMark;\n }\n m.compile({ group, context: { model: this, labelInfo } });\n });\n }\n\n getVRenderComponents() {\n const labels: any[] = [];\n this._labelComponentMap.forEach((infoFunc, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n labels.push(graphicItem);\n }\n });\n return labels;\n }\n\n getLabelInfoByTextGraphic(text: IGraphic): ILabelInfo {\n let labelInfo: ILabelInfo;\n const vrenderLabel = text?.parent;\n const vrenderDataLabel = vrenderLabel?.parent;\n if (vrenderDataLabel) {\n const labelIndex = vrenderDataLabel.getChildren().indexOf(vrenderLabel as any);\n this._labelComponentMap.forEach((infoFunc, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem === vrenderDataLabel) {\n labelInfo = array(infoFunc())[labelIndex];\n }\n });\n }\n return labelInfo;\n }\n}\n\nexport const registerLabel = () => {\n registerVGrammarLabel();\n registerLabelMark();\n registerComponentMark();\n Factory.registerComponent(Label.type, Label, true);\n};\n"]}
@@ -25,5 +25,5 @@ export declare class TotalLabel extends BaseLabelComponent {
25
25
  getVRenderComponents(): any[];
26
26
  protected _getSeries(): ISeries;
27
27
  }
28
- export declare function totalLabelPosition(series: ISeries, type: MarkType): string;
28
+ export declare function totalLabelPosition(series: ISeries, type: MarkType, position?: 'top' | 'bottom'): string;
29
29
  export declare const registerTotalLabel: () => void;
@@ -78,12 +78,12 @@ class TotalLabel extends base_label_1.BaseLabelComponent {
78
78
  }).labelStyle((() => {
79
79
  var _a, _b;
80
80
  if (this._baseMark) {
81
- const {offset: offset, animation: animation, overlap: overlap} = this._spec, interactive = this._interactiveConfig(this._spec);
81
+ const {offset: offset, animation: animation, overlap: overlap, position: position = "top"} = this._spec, interactive = this._interactiveConfig(this._spec);
82
82
  return (0, vutils_extension_1.mergeSpec)({
83
83
  textStyle: {
84
84
  pickable: !0 === this._spec.interactive
85
85
  },
86
- position: totalLabelPosition(series, this._baseMark.type),
86
+ position: totalLabelPosition(series, this._baseMark.type, position),
87
87
  x: 0,
88
88
  y: 0
89
89
  }, null !== (_b = null === (_a = series.getTotalLabelComponentStyle) || void 0 === _a ? void 0 : _a.call(series, {
@@ -93,7 +93,7 @@ class TotalLabel extends base_label_1.BaseLabelComponent {
93
93
  offset: offset,
94
94
  animation: animation,
95
95
  overlap: overlap,
96
- dataFilter: data => data.filter((d => d.data[data_1.STACK_FIELD_TOTAL_TOP]))
96
+ dataFilter: data => data.filter((d => "bottom" === position ? d.data[data_1.STACK_FIELD_TOTAL_BOTTOM] : d.data[data_1.STACK_FIELD_TOTAL_TOP]))
97
97
  }, interactive));
98
98
  }
99
99
  })).encode((datum => (0, util_1.textAttribute)({
@@ -101,7 +101,12 @@ class TotalLabel extends base_label_1.BaseLabelComponent {
101
101
  labelMark: this._textMark,
102
102
  series: series,
103
103
  labelSpec: series.getSpec().totalLabel
104
- }, datum, this._spec.formatMethod))).size((() => this._regions[0].getLayoutRect()));
104
+ }, datum, this._spec.formatMethod))).size((() => {
105
+ var _a;
106
+ return Object.assign({
107
+ padding: null === (_a = this._spec.overlap) || void 0 === _a ? void 0 : _a.padding
108
+ }, this._regions[0].getLayoutRect());
109
+ }));
105
110
  }));
106
111
  }
107
112
  compileMarks() {
@@ -127,23 +132,29 @@ class TotalLabel extends base_label_1.BaseLabelComponent {
127
132
  }
128
133
  }
129
134
 
130
- function totalLabelPosition(series, type) {
135
+ function totalLabelPosition(series, type, position = "top") {
131
136
  var _a, _b;
132
- let position;
133
- const {direction: direction} = series, positionMap = {
137
+ let finalPosition;
138
+ const {direction: direction} = series;
139
+ let positionMap;
140
+ positionMap = "bottom" === position ? {
141
+ vertical: [ "bottom", "top" ],
142
+ horizontal: [ "left", "right" ]
143
+ } : {
134
144
  vertical: [ "top", "bottom" ],
135
145
  horizontal: [ "right", "left" ]
136
- }, index = ("horizontal" === direction ? null === (_a = series.getXAxisHelper()) || void 0 === _a ? void 0 : _a.isInverse() : null === (_b = series.getYAxisHelper()) || void 0 === _b ? void 0 : _b.isInverse()) ? 1 : 0;
146
+ };
147
+ const index = ("horizontal" === direction ? null === (_a = series.getXAxisHelper()) || void 0 === _a ? void 0 : _a.isInverse() : null === (_b = series.getYAxisHelper()) || void 0 === _b ? void 0 : _b.isInverse()) ? 1 : 0;
137
148
  switch (type) {
138
149
  case "rect":
139
150
  case "symbol":
140
- position = positionMap[direction][index];
151
+ finalPosition = positionMap[direction][index];
141
152
  break;
142
153
 
143
154
  default:
144
- position = "top";
155
+ finalPosition = "top";
145
156
  }
146
- return position;
157
+ return finalPosition;
147
158
  }
148
159
 
149
160
  exports.TotalLabel = TotalLabel, TotalLabel.type = type_1.ComponentTypeEnum.totalLabel,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/label/total-label.ts"],"names":[],"mappings":"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","file":"total-label.js","sourcesContent":["// eslint-disable-next-line no-duplicate-imports\nimport { registerLabelMark } from '../../mark/label';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_TOP } from '../../constant/data';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { ILabelMark, IMark, MarkType } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { IGroupMark, IView } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabel as registerVGrammarLabel } from '@visactor/vgrammar-core';\nimport { textAttribute } from './util';\nimport { BaseLabelComponent } from './base-label';\nimport type { IModelInitOption, IModelSpecInfo } from '../../model/interface';\nimport type { Datum, Maybe } from '../../typings';\nimport { Factory } from '../../core/factory';\nimport { registerComponentMark } from '../../mark/component';\nimport type { IChartSpecInfo } from '../../chart/interface';\n\nexport class TotalLabel extends BaseLabelComponent {\n static type = ComponentTypeEnum.totalLabel;\n type = ComponentTypeEnum.totalLabel;\n name: string = ComponentTypeEnum.totalLabel;\n\n static specKey = 'totalLabel';\n specKey = 'totalLabel';\n\n layoutZIndex: number = LayoutZIndex.Label;\n\n private _textMark?: ILabelMark;\n private _baseMark?: IMark;\n\n static getSpecInfo(chartSpec: any, chartSpecInfo?: IChartSpecInfo): Maybe<IModelSpecInfo[]> {\n const specInfo: IModelSpecInfo[] = [];\n chartSpecInfo?.region?.forEach((regionInfo, regionIndex) => {\n regionInfo.seriesIndexes?.forEach(seriesIndex => {\n const { spec } = chartSpecInfo.series[seriesIndex];\n const labelSpec = spec[this.specKey];\n if (labelSpec?.visible) {\n specInfo.push({\n spec: labelSpec,\n type: ComponentTypeEnum.totalLabel,\n specPath: ['series', seriesIndex, this.specKey],\n specInfoPath: ['component', this.specKey, seriesIndex],\n regionIndexes: [regionIndex],\n seriesIndexes: [seriesIndex]\n });\n }\n });\n });\n return specInfo;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this._initTextMark();\n this._initLabelComponent();\n }\n\n reInit(spec?: any) {\n super.reInit(spec);\n this._initTextMark();\n }\n\n protected _initTextMark() {\n const series = this._getSeries();\n if (series.getSpec().totalLabel?.visible) {\n const mark = series.getSeriesMark();\n if (mark) {\n const textMark = this._createMark({ type: MarkTypeEnum.label, name: `${mark.name}-total-label` }) as ILabelMark;\n this._baseMark = mark;\n this._textMark = textMark;\n this._initTextMarkStyle();\n }\n }\n }\n\n _initTextMarkStyle() {\n super.initMarkStyleWithSpec(this._textMark, this._spec);\n this.setMarkStyle(\n this._textMark,\n {\n text: (datum: Datum) => {\n return datum[STACK_FIELD_TOTAL];\n }\n },\n 'normal',\n AttributeLevel.Default\n );\n\n const series = this._getSeries();\n series.initTotalLabelMarkStyle?.(this._textMark);\n }\n\n protected _initLabelComponent() {\n const series = this._getSeries();\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${series.name}-total-label-component` },\n {\n componentType: 'label',\n noSeparateStyle: true\n },\n {\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n }\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n const series = this._getSeries();\n this._marks.forEach((componentMark, index) => {\n const component = componentMark.getProduct() as ReturnType<IView['label']>;\n component\n .target(this._baseMark.getProduct())\n .configure({ interactive: false })\n .labelStyle(() => {\n if (this._baseMark) {\n const { offset, animation, overlap } = this._spec;\n const interactive = this._interactiveConfig(this._spec);\n return mergeSpec(\n {\n textStyle: { pickable: this._spec.interactive === true },\n position: totalLabelPosition(series, this._baseMark.type),\n x: 0,\n y: 0\n },\n series.getTotalLabelComponentStyle?.({\n baseMark: this._baseMark,\n labelMark: this._textMark\n }) ?? {},\n {\n offset,\n animation,\n overlap,\n dataFilter: (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_TOP]);\n },\n ...interactive\n }\n );\n }\n })\n .encode(datum => {\n return textAttribute(\n {\n baseMark: this._baseMark,\n labelMark: this._textMark,\n series,\n labelSpec: series.getSpec().totalLabel\n },\n datum,\n this._spec.formatMethod\n );\n })\n .size(() => this._regions[0].getLayoutRect());\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const group = this._regions[0].getGroupMark().getProduct() as IGroupMark;\n m.compile({ group, context: { model: this } });\n });\n }\n\n getVRenderComponents() {\n const labels: any[] = [];\n this.getMarks().forEach(m => {\n const graphicItem = m.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n labels.push(graphicItem);\n }\n });\n return labels;\n }\n\n protected _getSeries() {\n return this._option.getSeriesInIndex([this.getSpecPath()[1] as number])[0];\n }\n}\n\nexport function totalLabelPosition(series: ISeries, type: MarkType) {\n let position;\n const { direction } = series as ICartesianSeries;\n const isInverse =\n direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = isInverse ? 1 : 0;\n switch (type) {\n case 'rect':\n case 'symbol':\n position = positionMap[direction][index];\n break;\n default:\n position = 'top';\n }\n return position;\n}\n\nexport const registerTotalLabel = () => {\n registerVGrammarLabel();\n registerLabelMark();\n registerComponentMark();\n Factory.registerComponent(TotalLabel.type, TotalLabel, true);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/label/total-label.ts"],"names":[],"mappings":"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","file":"total-label.js","sourcesContent":["// eslint-disable-next-line no-duplicate-imports\nimport { registerLabelMark } from '../../mark/label';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_BOTTOM, STACK_FIELD_TOTAL_TOP } from '../../constant/data';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { ILabelMark, IMark, MarkType } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { IGroupMark, IView } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabel as registerVGrammarLabel } from '@visactor/vgrammar-core';\nimport { textAttribute } from './util';\nimport { BaseLabelComponent } from './base-label';\nimport type { IModelInitOption, IModelSpecInfo } from '../../model/interface';\nimport type { Datum, Maybe } from '../../typings';\nimport { Factory } from '../../core/factory';\nimport { registerComponentMark } from '../../mark/component';\nimport type { IChartSpecInfo } from '../../chart/interface';\n\nexport class TotalLabel extends BaseLabelComponent {\n static type = ComponentTypeEnum.totalLabel;\n type = ComponentTypeEnum.totalLabel;\n name: string = ComponentTypeEnum.totalLabel;\n\n static specKey = 'totalLabel';\n specKey = 'totalLabel';\n\n layoutZIndex: number = LayoutZIndex.Label;\n\n private _textMark?: ILabelMark;\n private _baseMark?: IMark;\n\n static getSpecInfo(chartSpec: any, chartSpecInfo?: IChartSpecInfo): Maybe<IModelSpecInfo[]> {\n const specInfo: IModelSpecInfo[] = [];\n chartSpecInfo?.region?.forEach((regionInfo, regionIndex) => {\n regionInfo.seriesIndexes?.forEach(seriesIndex => {\n const { spec } = chartSpecInfo.series[seriesIndex];\n const labelSpec = spec[this.specKey];\n if (labelSpec?.visible) {\n specInfo.push({\n spec: labelSpec,\n type: ComponentTypeEnum.totalLabel,\n specPath: ['series', seriesIndex, this.specKey],\n specInfoPath: ['component', this.specKey, seriesIndex],\n regionIndexes: [regionIndex],\n seriesIndexes: [seriesIndex]\n });\n }\n });\n });\n return specInfo;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this._initTextMark();\n this._initLabelComponent();\n }\n\n reInit(spec?: any) {\n super.reInit(spec);\n this._initTextMark();\n }\n\n protected _initTextMark() {\n const series = this._getSeries();\n if (series.getSpec().totalLabel?.visible) {\n const mark = series.getSeriesMark();\n if (mark) {\n const textMark = this._createMark({ type: MarkTypeEnum.label, name: `${mark.name}-total-label` }) as ILabelMark;\n this._baseMark = mark;\n this._textMark = textMark;\n this._initTextMarkStyle();\n }\n }\n }\n\n _initTextMarkStyle() {\n super.initMarkStyleWithSpec(this._textMark, this._spec);\n this.setMarkStyle(\n this._textMark,\n {\n text: (datum: Datum) => {\n return datum[STACK_FIELD_TOTAL];\n }\n },\n 'normal',\n AttributeLevel.Default\n );\n\n const series = this._getSeries();\n series.initTotalLabelMarkStyle?.(this._textMark);\n }\n\n protected _initLabelComponent() {\n const series = this._getSeries();\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${series.name}-total-label-component` },\n {\n componentType: 'label',\n noSeparateStyle: true\n },\n {\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n }\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n const series = this._getSeries();\n this._marks.forEach((componentMark, index) => {\n const component = componentMark.getProduct() as ReturnType<IView['label']>;\n component\n .target(this._baseMark.getProduct())\n .configure({ interactive: false })\n .labelStyle(() => {\n if (this._baseMark) {\n const { offset, animation, overlap, position = 'top' } = this._spec;\n const interactive = this._interactiveConfig(this._spec);\n return mergeSpec(\n {\n textStyle: { pickable: this._spec.interactive === true },\n position: totalLabelPosition(series, this._baseMark.type, position),\n x: 0,\n y: 0\n },\n series.getTotalLabelComponentStyle?.({\n baseMark: this._baseMark,\n labelMark: this._textMark\n }) ?? {},\n {\n offset,\n animation,\n overlap,\n dataFilter: (data: any) => {\n return data.filter((d: any) =>\n position === 'bottom' ? d.data[STACK_FIELD_TOTAL_BOTTOM] : d.data[STACK_FIELD_TOTAL_TOP]\n );\n },\n ...interactive\n }\n );\n }\n })\n .encode(datum => {\n return textAttribute(\n {\n baseMark: this._baseMark,\n labelMark: this._textMark,\n series,\n labelSpec: series.getSpec().totalLabel\n },\n datum,\n this._spec.formatMethod\n );\n })\n .size(() => {\n return {\n padding: this._spec.overlap?.padding,\n ...this._regions[0].getLayoutRect()\n };\n });\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const group = this._regions[0].getGroupMark().getProduct() as IGroupMark;\n m.compile({ group, context: { model: this } });\n });\n }\n\n getVRenderComponents() {\n const labels: any[] = [];\n this.getMarks().forEach(m => {\n const graphicItem = m.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n labels.push(graphicItem);\n }\n });\n return labels;\n }\n\n protected _getSeries() {\n return this._option.getSeriesInIndex([this.getSpecPath()[1] as number])[0];\n }\n}\n\nexport function totalLabelPosition(series: ISeries, type: MarkType, position: 'top' | 'bottom' = 'top') {\n let finalPosition;\n const { direction } = series as ICartesianSeries;\n const isInverse =\n direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n let positionMap;\n if (position === 'bottom') {\n positionMap = { vertical: ['bottom', 'top'], horizontal: ['left', 'right'] };\n } else {\n positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n }\n const index = isInverse ? 1 : 0;\n switch (type) {\n case 'rect':\n case 'symbol':\n finalPosition = positionMap[direction][index];\n break;\n default:\n finalPosition = 'top';\n }\n return finalPosition;\n}\n\nexport const registerTotalLabel = () => {\n registerVGrammarLabel();\n registerLabelMark();\n registerComponentMark();\n Factory.registerComponent(TotalLabel.type, TotalLabel, true);\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { VChart } from './vchart';
2
2
  import { Factory } from './factory';
3
3
  export { VChart, Factory };
4
- export declare const version = "1.13.6";
4
+ export declare const version = "1.13.7";
5
5
  export type { IVChart } from './interface';
6
6
  export type { IStateSpec, StateValueType } from '../compile/mark';
7
7
  export type { IRegion } from '../region/interface';
package/cjs/core/index.js CHANGED
@@ -35,7 +35,7 @@ Object.defineProperty(exports, "Factory", {
35
35
  get: function() {
36
36
  return factory_1.Factory;
37
37
  }
38
- }), exports.version = "1.13.6", __exportStar(require("../typings/spec/common"), exports),
38
+ }), exports.version = "1.13.7", __exportStar(require("../typings/spec/common"), exports),
39
39
  __exportStar(require("../event/interface"), exports), __exportStar(require("../theme/interface"), exports),
40
40
  __exportStar(require("./interface"), exports), __exportStar(require("../constant/base"), exports),
41
41
  __exportStar(require("../constant/data"), exports), __exportStar(require("../typings/spec/index"), exports),
@@ -88,4 +88,5 @@ Object.defineProperty(exports, "vglobal", {
88
88
  get: function() {
89
89
  return vrender_core_1.createSymbol;
90
90
  }
91
- });
91
+ });
92
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,QAAQ,CAAC;AAOhC,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAG5B,mDAAiC;AACjC,mDAAiC;AAKjC,wDAAsC;AAGtC,qDAAmC;AAGnC,iDAA+B;AAG/B,uDAUgC;AAT9B,uGAAA,OAAO,OAAA;AACP,2GAAA,WAAW,OAAA;AACX,8GAAA,cAAc,OAAA;AACd,0GAAA,UAAU,OAAA;AACV,yGAAA,SAAS,OAAA;AACT,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,4GAAA,YAAY,OAAA","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.13.6\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from './interface';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,QAAQ,CAAC;AAOhC,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAG5B,mDAAiC;AACjC,mDAAiC;AAKjC,wDAAsC;AAGtC,qDAAmC;AAGnC,iDAA+B;AAG/B,uDAUgC;AAT9B,uGAAA,OAAO,OAAA;AACP,2GAAA,WAAW,OAAA;AACX,8GAAA,cAAc,OAAA;AACd,0GAAA,UAAU,OAAA;AACV,yGAAA,SAAS,OAAA;AACT,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,4GAAA,YAAY,OAAA","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.13.7\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from './interface';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\n"]}
@@ -2,5 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
6
- //# sourceMappingURL=interface.js.map
5
+ });
@@ -161,9 +161,10 @@ class VChart {
161
161
  this._initChartSpec(this._spec, "updateSpec");
162
162
  const res = (0, util_2.mergeUpdateResult)(this._chart.updateSpec(this._spec), result);
163
163
  return userUpdateOptions ? Object.assign(Object.assign({}, res), userUpdateOptions) : res;
164
- }, this._option = (0, vutils_1.merge)(this._option, {
164
+ }, this._option = Object.assign(Object.assign(Object.assign({}, this._option), {
165
165
  animation: !1 !== spec.animation
166
- }, options), this._onError = null === (_a = this._option) || void 0 === _a ? void 0 : _a.onError;
166
+ }), options), (null == options ? void 0 : options.optimize) && (this._option.optimize = Object.assign(Object.assign({}, this._option.optimize), options.optimize)),
167
+ this._onError = null === (_a = this._option) || void 0 === _a ? void 0 : _a.onError;
167
168
  const _j = this._option, {dom: dom, renderCanvas: renderCanvas, mode: mode, stage: stage, poptip: poptip} = _j, restOptions = __rest(_j, [ "dom", "renderCanvas", "mode", "stage", "poptip" ]), isTrueBrowseEnv = (0,
168
169
  env_1.isTrueBrowser)(mode);
169
170
  if (isTrueBrowseEnv ? (0, env_2.registerBrowserEnv)() : "node" === mode && (0, env_2.registerNodeEnv)(),
@@ -619,6 +620,9 @@ class VChart {
619
620
  fontFamily && (null === (_a = this.getStage()) || void 0 === _a || _a.setTheme({
620
621
  text: {
621
622
  fontFamily: fontFamily
623
+ },
624
+ richtext: {
625
+ fontFamily: fontFamily
622
626
  }
623
627
  }));
624
628
  }