@visactor/vchart 1.4.0 → 1.4.1-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 (187) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +177 -165
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base-chart.d.ts +4 -4
  6. package/cjs/chart/base-chart.js +17 -12
  7. package/cjs/chart/base-chart.js.map +1 -1
  8. package/cjs/chart/interface/chart.d.ts +1 -1
  9. package/cjs/chart/interface/chart.js.map +1 -1
  10. package/cjs/chart/rose/rose.js +1 -1
  11. package/cjs/chart/rose/rose.js.map +1 -1
  12. package/cjs/component/axis/cartesian/band-axis.js +2 -2
  13. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  14. package/cjs/component/axis/cartesian/config.d.ts +1 -0
  15. package/cjs/component/axis/cartesian/config.js +3 -2
  16. package/cjs/component/axis/cartesian/config.js.map +1 -1
  17. package/cjs/component/axis/interface.d.ts +1 -0
  18. package/cjs/component/axis/interface.js.map +1 -1
  19. package/cjs/component/axis/polar/axis.js +5 -4
  20. package/cjs/component/axis/polar/axis.js.map +1 -1
  21. package/cjs/component/axis/polar/band-axis.d.ts +2 -2
  22. package/cjs/component/axis/polar/band-axis.js +4 -3
  23. package/cjs/component/axis/polar/band-axis.js.map +1 -1
  24. package/cjs/component/axis/polar/config.d.ts +1 -0
  25. package/cjs/component/axis/polar/config.js +3 -2
  26. package/cjs/component/axis/polar/config.js.map +1 -1
  27. package/cjs/component/data-zoom/data-zoom/data-zoom.js +1 -1
  28. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  29. package/cjs/component/label/label.d.ts +1 -1
  30. package/cjs/component/label/label.js +28 -20
  31. package/cjs/component/label/label.js.map +1 -1
  32. package/cjs/component/marker/interface.d.ts +5 -2
  33. package/cjs/component/marker/interface.js.map +1 -1
  34. package/cjs/component/marker/mark-area/interface/theme.d.ts +2 -2
  35. package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
  36. package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
  37. package/cjs/core/index.d.ts +1 -1
  38. package/cjs/core/index.js +1 -1
  39. package/cjs/core/index.js.map +1 -1
  40. package/cjs/core/vchart.js +2 -1
  41. package/cjs/core/vchart.js.map +1 -1
  42. package/cjs/model/base-model.d.ts +1 -0
  43. package/cjs/model/base-model.js +3 -0
  44. package/cjs/model/base-model.js.map +1 -1
  45. package/cjs/model/interface.d.ts +1 -0
  46. package/cjs/model/interface.js.map +1 -1
  47. package/cjs/series/cartesian/cartesian.js.map +1 -1
  48. package/cjs/series/rose/rose.js +2 -2
  49. package/cjs/series/rose/rose.js.map +1 -1
  50. package/cjs/series/word-cloud/base.js +39 -35
  51. package/cjs/series/word-cloud/base.js.map +1 -1
  52. package/cjs/series/word-cloud/word-cloud-3d.js +39 -35
  53. package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
  54. package/cjs/theme/builtin/common/component/axis/common-axis.js +0 -2
  55. package/cjs/theme/builtin/common/component/axis/common-axis.js.map +1 -1
  56. package/cjs/theme/builtin/common/component/crosshair.js +1 -2
  57. package/cjs/theme/builtin/common/component/crosshair.js.map +1 -1
  58. package/cjs/theme/builtin/common/component/data-zoom.js +0 -2
  59. package/cjs/theme/builtin/common/component/data-zoom.js.map +1 -1
  60. package/cjs/theme/builtin/common/component/indicator.js +0 -2
  61. package/cjs/theme/builtin/common/component/indicator.js.map +1 -1
  62. package/cjs/theme/builtin/common/component/legend/continuous.js +0 -4
  63. package/cjs/theme/builtin/common/component/legend/continuous.js.map +1 -1
  64. package/cjs/theme/builtin/common/component/legend/discrete-legend.js +0 -2
  65. package/cjs/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  66. package/cjs/theme/builtin/common/component/map-label.js +2 -4
  67. package/cjs/theme/builtin/common/component/map-label.js.map +1 -1
  68. package/cjs/theme/builtin/common/component/mark-area.js +0 -1
  69. package/cjs/theme/builtin/common/component/mark-area.js.map +1 -1
  70. package/cjs/theme/builtin/common/component/mark-line.js +0 -1
  71. package/cjs/theme/builtin/common/component/mark-line.js.map +1 -1
  72. package/cjs/theme/builtin/common/component/poptip.js +0 -2
  73. package/cjs/theme/builtin/common/component/poptip.js.map +1 -1
  74. package/cjs/theme/builtin/common/component/title.js +0 -2
  75. package/cjs/theme/builtin/common/component/title.js.map +1 -1
  76. package/cjs/theme/builtin/common/component/tooltip.js +0 -3
  77. package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
  78. package/cjs/theme/builtin/common/component/total-label.js +0 -1
  79. package/cjs/theme/builtin/common/component/total-label.js.map +1 -1
  80. package/cjs/theme/builtin/common/mark.js +0 -2
  81. package/cjs/theme/builtin/common/mark.js.map +1 -1
  82. package/cjs/theme/builtin/common/series/circle-packing.js +1 -2
  83. package/cjs/theme/builtin/common/series/circle-packing.js.map +1 -1
  84. package/cjs/theme/builtin/common/series/dot.js +2 -4
  85. package/cjs/theme/builtin/common/series/dot.js.map +1 -1
  86. package/cjs/theme/builtin/common/series/funnel.js +0 -2
  87. package/cjs/theme/builtin/common/series/funnel.js.map +1 -1
  88. package/cjs/theme/builtin/common/series/funnel3d.js +0 -2
  89. package/cjs/theme/builtin/common/series/funnel3d.js.map +1 -1
  90. package/cjs/theme/builtin/common/series/sunburst.js +1 -2
  91. package/cjs/theme/builtin/common/series/sunburst.js.map +1 -1
  92. package/cjs/theme/builtin/common/series/treemap.js +1 -3
  93. package/cjs/theme/builtin/common/series/treemap.js.map +1 -1
  94. package/cjs/theme/builtin/common/series/waterfall.js +1 -2
  95. package/cjs/theme/builtin/common/series/waterfall.js.map +1 -1
  96. package/esm/chart/base-chart.d.ts +4 -4
  97. package/esm/chart/base-chart.js +18 -11
  98. package/esm/chart/base-chart.js.map +1 -1
  99. package/esm/chart/interface/chart.d.ts +1 -1
  100. package/esm/chart/interface/chart.js.map +1 -1
  101. package/esm/chart/rose/rose.js +2 -2
  102. package/esm/chart/rose/rose.js.map +1 -1
  103. package/esm/component/axis/cartesian/band-axis.js +3 -3
  104. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  105. package/esm/component/axis/cartesian/config.d.ts +1 -0
  106. package/esm/component/axis/cartesian/config.js +2 -0
  107. package/esm/component/axis/cartesian/config.js.map +1 -1
  108. package/esm/component/axis/interface.d.ts +1 -0
  109. package/esm/component/axis/interface.js.map +1 -1
  110. package/esm/component/axis/polar/axis.js +6 -3
  111. package/esm/component/axis/polar/axis.js.map +1 -1
  112. package/esm/component/axis/polar/band-axis.d.ts +2 -2
  113. package/esm/component/axis/polar/band-axis.js +5 -4
  114. package/esm/component/axis/polar/band-axis.js.map +1 -1
  115. package/esm/component/axis/polar/config.d.ts +1 -0
  116. package/esm/component/axis/polar/config.js +2 -0
  117. package/esm/component/axis/polar/config.js.map +1 -1
  118. package/esm/component/data-zoom/data-zoom/data-zoom.js +1 -1
  119. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  120. package/esm/component/label/label.d.ts +1 -1
  121. package/esm/component/label/label.js +27 -19
  122. package/esm/component/label/label.js.map +1 -1
  123. package/esm/component/marker/interface.d.ts +5 -2
  124. package/esm/component/marker/interface.js.map +1 -1
  125. package/esm/component/marker/mark-area/interface/theme.d.ts +2 -2
  126. package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
  127. package/esm/component/marker/mark-area/mark-area.js.map +1 -1
  128. package/esm/core/index.d.ts +1 -1
  129. package/esm/core/index.js +1 -1
  130. package/esm/core/index.js.map +1 -1
  131. package/esm/core/vchart.js +3 -2
  132. package/esm/core/vchart.js.map +1 -1
  133. package/esm/model/base-model.d.ts +1 -0
  134. package/esm/model/base-model.js +3 -0
  135. package/esm/model/base-model.js.map +1 -1
  136. package/esm/model/interface.d.ts +1 -0
  137. package/esm/model/interface.js.map +1 -1
  138. package/esm/series/cartesian/cartesian.js.map +1 -1
  139. package/esm/series/rose/rose.js +2 -2
  140. package/esm/series/rose/rose.js.map +1 -1
  141. package/esm/series/word-cloud/base.js +38 -34
  142. package/esm/series/word-cloud/base.js.map +1 -1
  143. package/esm/series/word-cloud/word-cloud-3d.js +38 -34
  144. package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
  145. package/esm/theme/builtin/common/component/axis/common-axis.js +0 -2
  146. package/esm/theme/builtin/common/component/axis/common-axis.js.map +1 -1
  147. package/esm/theme/builtin/common/component/crosshair.js +1 -2
  148. package/esm/theme/builtin/common/component/crosshair.js.map +1 -1
  149. package/esm/theme/builtin/common/component/data-zoom.js +0 -2
  150. package/esm/theme/builtin/common/component/data-zoom.js.map +1 -1
  151. package/esm/theme/builtin/common/component/indicator.js +0 -2
  152. package/esm/theme/builtin/common/component/indicator.js.map +1 -1
  153. package/esm/theme/builtin/common/component/legend/continuous.js +0 -4
  154. package/esm/theme/builtin/common/component/legend/continuous.js.map +1 -1
  155. package/esm/theme/builtin/common/component/legend/discrete-legend.js +0 -2
  156. package/esm/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  157. package/esm/theme/builtin/common/component/map-label.js +2 -4
  158. package/esm/theme/builtin/common/component/map-label.js.map +1 -1
  159. package/esm/theme/builtin/common/component/mark-area.js +0 -1
  160. package/esm/theme/builtin/common/component/mark-area.js.map +1 -1
  161. package/esm/theme/builtin/common/component/mark-line.js +0 -1
  162. package/esm/theme/builtin/common/component/mark-line.js.map +1 -1
  163. package/esm/theme/builtin/common/component/poptip.js +0 -2
  164. package/esm/theme/builtin/common/component/poptip.js.map +1 -1
  165. package/esm/theme/builtin/common/component/title.js +0 -2
  166. package/esm/theme/builtin/common/component/title.js.map +1 -1
  167. package/esm/theme/builtin/common/component/tooltip.js +0 -3
  168. package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
  169. package/esm/theme/builtin/common/component/total-label.js +0 -1
  170. package/esm/theme/builtin/common/component/total-label.js.map +1 -1
  171. package/esm/theme/builtin/common/mark.js +0 -2
  172. package/esm/theme/builtin/common/mark.js.map +1 -1
  173. package/esm/theme/builtin/common/series/circle-packing.js +1 -2
  174. package/esm/theme/builtin/common/series/circle-packing.js.map +1 -1
  175. package/esm/theme/builtin/common/series/dot.js +2 -4
  176. package/esm/theme/builtin/common/series/dot.js.map +1 -1
  177. package/esm/theme/builtin/common/series/funnel.js +0 -2
  178. package/esm/theme/builtin/common/series/funnel.js.map +1 -1
  179. package/esm/theme/builtin/common/series/funnel3d.js +0 -2
  180. package/esm/theme/builtin/common/series/funnel3d.js.map +1 -1
  181. package/esm/theme/builtin/common/series/sunburst.js +1 -2
  182. package/esm/theme/builtin/common/series/sunburst.js.map +1 -1
  183. package/esm/theme/builtin/common/series/treemap.js +1 -3
  184. package/esm/theme/builtin/common/series/treemap.js.map +1 -1
  185. package/esm/theme/builtin/common/series/waterfall.js +1 -2
  186. package/esm/theme/builtin/common/series/waterfall.js.map +1 -1
  187. package/package.json +9 -9
@@ -121,33 +121,41 @@ class Label extends base_label_1.BaseLabelComponent {
121
121
  }));
122
122
  }
123
123
  _updateMultiLabelAttribute(labelInfo, labelComponent) {
124
- this._updateLabelComponentAttribute(labelComponent.getProduct(), labelInfo.map((({baseMark: baseMark}) => baseMark.getProduct())), labelInfo[0]);
124
+ this._updateLabelComponentAttribute(labelComponent.getProduct(), labelInfo.map((({baseMark: baseMark}) => baseMark.getProduct())), labelInfo);
125
125
  }
126
126
  _updateSingleLabelAttribute(labelInfo, labelComponent) {
127
127
  const {baseMark: baseMark} = labelInfo;
128
- this._updateLabelComponentAttribute(labelComponent.getProduct(), baseMark.getProduct(), labelInfo);
128
+ this._updateLabelComponentAttribute(labelComponent.getProduct(), baseMark.getProduct(), [ labelInfo ]);
129
129
  }
130
- _updateLabelComponentAttribute(component, target, labelInfo) {
131
- const {baseMark: baseMark, labelSpec: labelSpec, series: series, labelMark: labelMark} = labelInfo, dependCmp = this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type));
130
+ _updateLabelComponentAttribute(component, target, labelInfos) {
131
+ const dependCmp = this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type));
132
132
  component.target(target).configure({
133
133
  interactive: !1
134
- }).depend(dependCmp.map((cmp => cmp.getMarks()[0].getProduct()))).labelStyle((() => {
134
+ }).depend(dependCmp.map((cmp => cmp.getMarks()[0].getProduct()))).labelStyle(((mark, params) => {
135
135
  var _a, _b, _c;
136
- const rule = labelMark.getRule() || baseMark.type, configFunc = null !== (_a = util_2.labelRuleMap[rule]) && void 0 !== _a ? _a : util_2.labelRuleMap.point, interactive = this._interactiveConfig(labelSpec), passiveLabelSpec = (0,
137
- vutils_1.pickWithout)(labelSpec, [ "position", "style", "state" ]), centerOffset = null !== (_c = null === (_b = this._spec) || void 0 === _b ? void 0 : _b.centerOffset) && void 0 !== _c ? _c : 0;
138
- return (0, util_1.mergeSpec)({
139
- textStyle: Object.assign({
140
- pickable: !0 === labelSpec.interactive
141
- }, labelSpec.style),
142
- overlap: {
143
- avoidMarks: this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type)).map((cmp => cmp.getMarks()[0].getProductId()))
144
- }
145
- }, configFunc(labelInfo), Object.assign(Object.assign(Object.assign({}, passiveLabelSpec), interactive), {
146
- centerOffset: centerOffset
147
- }));
148
- })).encode((datum => labelMark.skipEncode ? {
149
- data: datum
150
- } : (0, util_2.textAttribute)(labelInfo, datum, labelSpec.formatMethod))).size((() => series.getRegion().getLayoutRect()));
136
+ const labelInfo = labelInfos[params.labelIndex];
137
+ if (labelInfo) {
138
+ const {baseMark: baseMark, labelSpec: labelSpec, labelMark: labelMark} = labelInfo, rule = labelMark.getRule() || baseMark.type, configFunc = null !== (_a = util_2.labelRuleMap[rule]) && void 0 !== _a ? _a : util_2.labelRuleMap.point, interactive = this._interactiveConfig(labelSpec), passiveLabelSpec = (0,
139
+ vutils_1.pickWithout)(labelSpec, [ "position", "style", "state" ]), centerOffset = null !== (_c = null === (_b = this._spec) || void 0 === _b ? void 0 : _b.centerOffset) && void 0 !== _c ? _c : 0;
140
+ return (0, util_1.mergeSpec)({
141
+ textStyle: Object.assign({
142
+ pickable: !0 === labelSpec.interactive
143
+ }, labelSpec.style),
144
+ overlap: {
145
+ avoidMarks: this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type)).map((cmp => cmp.getMarks()[0].getProductId()))
146
+ }
147
+ }, configFunc(labelInfo), Object.assign(Object.assign(Object.assign({}, passiveLabelSpec), interactive), {
148
+ centerOffset: centerOffset
149
+ }));
150
+ }
151
+ })).encode(((datum, element, params) => {
152
+ if (labelInfos[params.labelIndex]) {
153
+ const {labelSpec: labelSpec, labelMark: labelMark} = labelInfos[params.labelIndex];
154
+ return labelMark.skipEncode ? {
155
+ data: datum
156
+ } : (0, util_2.textAttribute)(labelInfos[params.labelIndex], datum, labelSpec.formatMethod);
157
+ }
158
+ })).size((() => labelInfos[0].series.getRegion().getLayoutRect()));
151
159
  }
152
160
  compileMarks() {
153
161
  this.getMarks().forEach((m => {
@@ -1 +1 @@
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';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { AttributeLevel, ChartEvent, LayoutZIndex, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { eachSeries, mergeSpec } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { registerLabel, type IGroupMark, type ILabel, type IMark } from '@visactor/vgrammar-core';\nimport { labelRuleMap, textAttribute } from './util';\nimport type { IComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { LooseFunction } from '@visactor/vutils';\nimport { isArray, pickWithout } from '@visactor/vutils';\nimport type { IGroup, IText } from '@visactor/vrender';\nimport type { LabelItem } from '@visactor/vrender-components';\nimport type { ILabelSpec } from './interface';\nimport { VChart } from '../../core';\nimport { LabelMark, type ILabelMark } from '../../mark/label';\nimport type { ICompilableMark } from '../../compile/mark';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: ILabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\n// call the register fucntion when register this component to VChart\nregisterLabel();\nVChart.useMark([LabelMark]);\n\nexport class Label<T extends ILabelSpec = ILabelSpec> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = 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.labelLayout || 'series';\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents = [];\n for (let i = 0; i < regions.length; i++) {\n const marks = regions[i]\n .getSeries()\n .map(s => s.getMarksWithoutRoot())\n .flat();\n const labelVisible = marks.some(mark => {\n return mark.getLabelSpec()?.some(labelSpec => labelSpec.visible);\n });\n if (labelVisible) {\n labelComponents.push(new Label(spec, { ...options, specIndex: i, specKey: 'label' }));\n continue;\n }\n }\n return labelComponents;\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 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 this.event.on('afterElementEncode', eventParams => {\n const mark = eventParams.item;\n\n if (this._option.getChart().getLayoutTag() === false && mark.context?.model === this) {\n this._delegateLabelEvent(mark.getGroupGraphicItem());\n }\n });\n }\n\n protected _delegateLabelEvent(component: IGroup) {\n const textNodes = component\n ?.findAll(node => node.type === 'text', true)\n // label 组件的底层实现是有 text 图元复用的,这里为了避免重复的事件监听\n .filter(text => !(text as any).__vchart_event) as IText[];\n if (textNodes && textNodes.length > 0) {\n textNodes.forEach(text => {\n text.__vchart_event = true;\n text.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component, event, type, text, (text.attribute as LabelItem).data)) as LooseFunction);\n });\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, (s: ISeries) => {\n const marks = s.getMarks();\n const region = s.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < marks.length; i++) {\n const mark = marks[i];\n if (mark.getLabelSpec()?.length > 0) {\n mark.getLabelSpec().forEach((labelSpec, index) => {\n if (labelSpec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark({\n type: MarkTypeEnum.label,\n name: `${mark.name}-label-${index}`\n }) as ILabelMark;\n labelMark.setTarget(mark);\n info.push({ labelMark, baseMark: mark, series: s, labelSpec });\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 support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, regionLabelInfo);\n }\n } else {\n regionLabelInfo.forEach(labelInfo => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n support3d: labelInfo.baseMark.getSupport3d()\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, labelInfo);\n labelInfo.labelMark.setComponent(component);\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec);\n series.initLabelMarkStyle?.(labelMark);\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((labelInfo, labelComponent) => {\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[0]\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(component: ILabel, target: IMark | IMark[], labelInfo: ILabelInfo) {\n const { baseMark, labelSpec, series, labelMark } = labelInfo;\n const dependCmp = this._option.getAllComponents().filter(cmp => cmp.type === 'totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle(() => {\n const rule = labelMark.getRule() || baseMark.type;\n const configFunc = labelRuleMap[rule] ?? labelRuleMap.point;\n const interactive = this._interactiveConfig(labelSpec);\n const passiveLabelSpec = pickWithout(labelSpec, ['position', 'style', 'state']);\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?.centerOffset ?? 0;\n return mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: this._option\n .getAllComponents()\n .filter(cmp => cmp.type === 'totalLabel')\n .map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n configFunc(labelInfo),\n {\n ...passiveLabelSpec,\n ...interactive,\n centerOffset\n }\n );\n })\n .encode(datum => {\n return labelMark.skipEncode ? { data: datum } : textAttribute(labelInfo, datum, labelSpec.formatMethod);\n })\n .size(() => 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 });\n m.getProduct()?.configure({\n context: {\n model: this,\n labelInfo\n }\n });\n });\n }\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';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { AttributeLevel, ChartEvent, LayoutZIndex, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { eachSeries, mergeSpec } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { registerLabel, type IGroupMark, type ILabel, type IMark } from '@visactor/vgrammar-core';\nimport { labelRuleMap, textAttribute } from './util';\nimport type { IComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { LooseFunction } from '@visactor/vutils';\nimport { isArray, pickWithout } from '@visactor/vutils';\nimport type { IGroup, IText } from '@visactor/vrender';\nimport type { LabelItem } from '@visactor/vrender-components';\nimport type { ILabelSpec } from './interface';\nimport { VChart } from '../../core';\nimport { LabelMark, type ILabelMark } from '../../mark/label';\nimport type { ICompilableMark } from '../../compile/mark';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: ILabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\n// call the register fucntion when register this component to VChart\nregisterLabel();\nVChart.useMark([LabelMark]);\n\nexport class Label<T extends ILabelSpec = ILabelSpec> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = 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.labelLayout || 'series';\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents = [];\n for (let i = 0; i < regions.length; i++) {\n const marks = regions[i]\n .getSeries()\n .map(s => s.getMarksWithoutRoot())\n .flat();\n const labelVisible = marks.some(mark => {\n return mark.getLabelSpec()?.some(labelSpec => labelSpec.visible);\n });\n if (labelVisible) {\n labelComponents.push(new Label(spec, { ...options, specIndex: i, specKey: 'label' }));\n continue;\n }\n }\n return labelComponents;\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 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 this.event.on('afterElementEncode', eventParams => {\n const mark = eventParams.item;\n\n if (this._option.getChart().getLayoutTag() === false && mark.context?.model === this) {\n this._delegateLabelEvent(mark.getGroupGraphicItem());\n }\n });\n }\n\n protected _delegateLabelEvent(component: IGroup) {\n const textNodes = component\n ?.findAll(node => node.type === 'text', true)\n // label 组件的底层实现是有 text 图元复用的,这里为了避免重复的事件监听\n .filter(text => !(text as any).__vchart_event) as IText[];\n if (textNodes && textNodes.length > 0) {\n textNodes.forEach(text => {\n text.__vchart_event = true;\n text.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component, event, type, text, (text.attribute as LabelItem).data)) as LooseFunction);\n });\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, (s: ISeries) => {\n const marks = s.getMarks();\n const region = s.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < marks.length; i++) {\n const mark = marks[i];\n if (mark.getLabelSpec()?.length > 0) {\n mark.getLabelSpec().forEach((labelSpec, index) => {\n if (labelSpec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark({\n type: MarkTypeEnum.label,\n name: `${mark.name}-label-${index}`\n }) as ILabelMark;\n labelMark.setTarget(mark);\n info.push({ labelMark, baseMark: mark, series: s, labelSpec });\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 support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, regionLabelInfo);\n }\n } else {\n regionLabelInfo.forEach(labelInfo => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n support3d: labelInfo.baseMark.getSupport3d()\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, labelInfo);\n labelInfo.labelMark.setComponent(component);\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec);\n series.initLabelMarkStyle?.(labelMark);\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((labelInfo, labelComponent) => {\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(component: ILabel, target: IMark | IMark[], labelInfos: ILabelInfo[]) {\n const dependCmp = this._option.getAllComponents().filter(cmp => cmp.type === 'totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle((mark: IMark, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { baseMark, labelSpec, labelMark } = labelInfo;\n const rule = labelMark.getRule() || baseMark.type;\n const configFunc = labelRuleMap[rule] ?? labelRuleMap.point;\n const interactive = this._interactiveConfig(labelSpec);\n const passiveLabelSpec = pickWithout(labelSpec, ['position', 'style', 'state']);\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?.centerOffset ?? 0;\n return mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: this._option\n .getAllComponents()\n .filter(cmp => cmp.type === 'totalLabel')\n .map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n configFunc(labelInfo),\n {\n ...passiveLabelSpec,\n ...interactive,\n centerOffset\n }\n );\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 return labelMark.skipEncode\n ? { data: datum }\n : textAttribute(labelInfos[params.labelIndex], datum, labelSpec.formatMethod);\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 });\n m.getProduct()?.configure({\n context: {\n model: this,\n labelInfo\n }\n });\n });\n }\n}\n"]}
@@ -14,7 +14,7 @@ export type IDataPointSpec = {
14
14
  export type IMarkerPositionsSpec = {
15
15
  positions: IPointLike[];
16
16
  };
17
- export type IMarkerLabelSpec = {
17
+ export type IMarkerLabelWithoutRefSpec = {
18
18
  visible?: boolean;
19
19
  autoRotate?: boolean;
20
20
  minWidth?: number;
@@ -33,7 +33,10 @@ export type IMarkerLabelSpec = {
33
33
  };
34
34
  space?: number;
35
35
  confine?: boolean;
36
- } & IMarkerRef;
36
+ dx?: number;
37
+ dy?: number;
38
+ };
39
+ export type IMarkerLabelSpec = IMarkerLabelWithoutRefSpec & IMarkerRef;
37
40
  export interface IMarkerRef {
38
41
  refX?: number;
39
42
  refY?: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IPadding, IPointLike } from '@visactor/vutils';\nimport type { SymbolType } from '@visactor/vrender';\nimport type { IRectMarkSpec, ISymbolMarkSpec, ITextMarkSpec, StringOrNumber } from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { Datum } from '@visactor/vrender-components';\n\nexport type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';\nexport type IDataPos = string | number | IAggrType;\nexport type IDataPosCallback = (\n relativeSeriesData: any,\n startRelativeSeriesData: any,\n endRelativeSeriesData: any\n) => IDataPos;\nexport type IDataPointSpec = {\n [key: string]: IDataPos;\n /**\n * 具体某个数据元素关联的series(仅在标注目标:数据元素下有效)\n */\n refRelativeSeriesIndex?: number;\n refRelativeSeriesId?: StringOrNumber;\n};\nexport type IMarkerPositionsSpec = {\n positions: IPointLike[];\n};\n\nexport type IMarkerLabelSpec = {\n visible?: boolean;\n /**\n * label整体 - 是否自动旋转\n */\n autoRotate?: boolean;\n /**\n * label整体 - 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * label整体 - 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * label整体 - 背景面板配置\n */\n labelBackground?: {\n visible?: boolean;\n /**\n * 内部边距\n */\n padding?: IPadding | number[] | number;\n /**\n * 背景面板样式\n */\n style: Omit<IRectMarkSpec, 'visible'>;\n };\n /**\n * label文本 - 文本内容,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n */\n text?: string | string[] | number | number[];\n /**\n * label文本 - 文本格式化\n * @param markData 组成标注的数据\n * @param seriesData 标注关联的数据\n * @returns 格式化后的文本\n */\n formatMethod?: (markData: Datum[], seriesData: Datum[]) => string | string[] | number | number[];\n /**\n * label文本 - 文本样式\n */\n style?: Omit<ITextMarkSpec, 'visible'>;\n\n /**\n * label文本 - 文本前 mark 图元\n */\n shape?: {\n visible?: boolean;\n style: Omit<ISymbolMarkSpec, 'visible'>;\n };\n /**\n * label文本 - shape 同文本之间的间距\n */\n space?: number;\n\n /**\n * 是否自动调整 label 使其展示在 marker 可见区域内。\n * @default false\n * @since 1.4.0\n */\n confine?: boolean;\n} & IMarkerRef;\n\nexport interface IMarkerRef {\n /**\n * label or symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label or symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label or symbol 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n}\n\nexport interface IMarkerAxisSpec {\n /**\n * 起点和终点关联的series(仅在标注目标:坐标空间下有效)\n */\n startRelativeSeriesIndex?: number;\n endRelativeSeriesIndex?: number;\n startRelativeSeriesId?: string;\n endRelativeSeriesId?: string;\n /**\n * 被标注数据关联的series\n */\n relativeRelativeSeriesIndex?: number;\n}\n\nexport interface IMarkerSpec extends IComponentSpec {\n /**\n * 标注数据关联的series\n */\n relativeSeriesIndex?: number;\n relativeSeriesId?: number;\n /**\n * marker组件是否可见\n * @default true\n */\n visible?: boolean;\n /**\n * marker组件是否可交互\n * @default false\n */\n interactive?: boolean;\n /**\n * marker组件是否自动拓展轴范围\n * @default false\n * @since 1.1.0\n */\n autoRange?: boolean;\n /**\n * marker组件超出图表区域是否被裁剪\n * @default false\n * @since 1.3.0\n */\n clip?: boolean;\n}\n\nexport interface IMarkerSymbol extends IMarkerRef {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n style?: Omit<ISymbolMarkSpec, 'visible'>;\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IPadding, IPointLike } from '@visactor/vutils';\nimport type { SymbolType } from '@visactor/vrender';\nimport type { IRectMarkSpec, ISymbolMarkSpec, ITextMarkSpec, StringOrNumber } from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { Datum } from '@visactor/vrender-components';\n\nexport type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';\nexport type IDataPos = string | number | IAggrType;\nexport type IDataPosCallback = (\n relativeSeriesData: any,\n startRelativeSeriesData: any,\n endRelativeSeriesData: any\n) => IDataPos;\nexport type IDataPointSpec = {\n [key: string]: IDataPos;\n /**\n * 具体某个数据元素关联的series(仅在标注目标:数据元素下有效)\n */\n refRelativeSeriesIndex?: number;\n refRelativeSeriesId?: StringOrNumber;\n};\nexport type IMarkerPositionsSpec = {\n positions: IPointLike[];\n};\n\nexport type IMarkerLabelWithoutRefSpec = {\n visible?: boolean;\n /**\n * label整体 - 是否自动旋转\n */\n autoRotate?: boolean;\n /**\n * label整体 - 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * label整体 - 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * label整体 - 背景面板配置\n */\n labelBackground?: {\n visible?: boolean;\n /**\n * 内部边距\n */\n padding?: IPadding | number[] | number;\n /**\n * 背景面板样式\n */\n style: Omit<IRectMarkSpec, 'visible'>;\n };\n /**\n * label文本 - 文本内容,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n */\n text?: string | string[] | number | number[];\n /**\n * label文本 - 文本格式化\n * @param markData 组成标注的数据\n * @param seriesData 标注关联的数据\n * @returns 格式化后的文本\n */\n formatMethod?: (markData: Datum[], seriesData: Datum[]) => string | string[] | number | number[];\n /**\n * label文本 - 文本样式\n */\n style?: Omit<ITextMarkSpec, 'visible'>;\n\n /**\n * label文本 - 文本前 mark 图元\n */\n shape?: {\n visible?: boolean;\n style: Omit<ISymbolMarkSpec, 'visible'>;\n };\n /**\n * label文本 - shape 同文本之间的间距\n */\n space?: number;\n\n /**\n * 是否自动调整 label 使其展示在 marker 可见区域内。\n * @default false\n * @since 1.4.0\n */\n confine?: boolean;\n /**\n * 水平方向的偏移\n */\n dx?: number;\n /**\n * 垂直方向的偏移\n */\n dy?: number;\n};\n\nexport type IMarkerLabelSpec = IMarkerLabelWithoutRefSpec & IMarkerRef;\n\nexport interface IMarkerRef {\n /**\n * label or symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label or symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label or symbol 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n}\n\nexport interface IMarkerAxisSpec {\n /**\n * 起点和终点关联的series(仅在标注目标:坐标空间下有效)\n */\n startRelativeSeriesIndex?: number;\n endRelativeSeriesIndex?: number;\n startRelativeSeriesId?: string;\n endRelativeSeriesId?: string;\n /**\n * 被标注数据关联的series\n */\n relativeRelativeSeriesIndex?: number;\n}\n\nexport interface IMarkerSpec extends IComponentSpec {\n /**\n * 标注数据关联的series\n */\n relativeSeriesIndex?: number;\n relativeSeriesId?: number;\n /**\n * marker组件是否可见\n * @default true\n */\n visible?: boolean;\n /**\n * marker组件是否可交互\n * @default false\n */\n interactive?: boolean;\n /**\n * marker组件是否自动拓展轴范围\n * @default false\n * @since 1.1.0\n */\n autoRange?: boolean;\n /**\n * marker组件超出图表区域是否被裁剪\n * @default false\n * @since 1.3.0\n */\n clip?: boolean;\n}\n\nexport interface IMarkerSymbol extends IMarkerRef {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n style?: Omit<ISymbolMarkSpec, 'visible'>;\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import type { IMarkAreaLabelPosition } from '@visactor/vrender-components';
2
2
  import type { IPolygonMarkSpec } from '../../../../typings';
3
- import type { IMarkerLabelSpec } from '../../interface';
3
+ import type { IMarkerLabelWithoutRefSpec } from '../../interface';
4
4
  export interface IMarkAreaTheme {
5
5
  area?: {
6
6
  style?: IPolygonMarkSpec;
7
7
  };
8
8
  label?: {
9
9
  position?: IMarkAreaLabelPosition;
10
- } & IMarkerLabelSpec;
10
+ } & IMarkerLabelWithoutRefSpec;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-area/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IMarkAreaLabelPosition } from '@visactor/vrender-components';\nimport type { IPolygonMarkSpec } from '../../../../typings';\nimport type { IMarkerLabelSpec } from '../../interface';\n\nexport interface IMarkAreaTheme {\n area?: {\n style?: IPolygonMarkSpec;\n };\n\n label?: {\n /**\n * label整体 - 相对line的位置\n */\n position?: IMarkAreaLabelPosition;\n } & IMarkerLabelSpec;\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-area/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IMarkAreaLabelPosition } from '@visactor/vrender-components';\nimport type { IPolygonMarkSpec } from '../../../../typings';\nimport type { IMarkerLabelWithoutRefSpec } from '../../interface';\n\nexport interface IMarkAreaTheme {\n area?: {\n style?: IPolygonMarkSpec;\n };\n\n label?: {\n /**\n * label整体 - 相对line的位置\n */\n position?: IMarkAreaLabelPosition;\n } & IMarkerLabelWithoutRefSpec;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-area/mark-area.ts"],"names":[],"mappings":"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","file":"mark-area.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkArea, IMarkAreaSpec, IMarkAreaTheme } from './interface';\nimport { isNil, isArray } from '../../../util';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface';\nimport type { IOptionAggr } from '../../../data/transforms/aggregation';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport { xLayout, yLayout, coordinateLayout } from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { MarkArea as MarkAreaComponent } from '@visactor/vrender-components';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isValid } from '@visactor/vutils';\nimport { transformToGraphic } from '../../../util/style';\nimport type { IOptionRegr } from '../../../data/transforms/regression';\nimport { BaseMarker } from '../base-marker';\nimport { LayoutZIndex } from '../../../constant';\nimport type { LayoutItem } from '../../../model/layout-item';\nimport type { INode } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerRegression } from '../../../data/transforms/regression';\n\nexport class MarkArea extends BaseMarker<IMarkAreaSpec & IMarkAreaTheme> implements IMarkArea {\n static type = ComponentTypeEnum.markArea;\n type = ComponentTypeEnum.markArea;\n name: string = ComponentTypeEnum.markArea;\n\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.MarkArea;\n\n static speckey = 'markArea';\n\n protected declare _theme: IMarkAreaTheme;\n\n // markArea组件\n protected declare _markerComponent: MarkAreaComponent;\n\n static createComponent(spec: any, options: IComponentOption) {\n const markAreaSpec = spec.markArea || options.defaultSpec;\n if (isNil(markAreaSpec)) {\n return undefined;\n }\n if (!isArray(markAreaSpec) && markAreaSpec.visible !== false) {\n return new MarkArea(markAreaSpec, { ...options, specKey: MarkArea.speckey });\n }\n const markAreas: MarkArea[] = [];\n markAreaSpec.forEach((m: any, i: number) => {\n if (m.visible !== false) {\n markAreas.push(new MarkArea(m, { ...options, specIndex: i, specKey: MarkArea.speckey }));\n }\n });\n return markAreas;\n }\n\n protected _createMarkerComponent() {\n const markArea = new MarkAreaComponent({\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? false,\n points: [\n {\n x: 0,\n y: 0\n }\n ],\n areaStyle: transformToGraphic(this._spec.area?.style),\n label: {\n ...this._spec.label,\n padding: this._spec.label?.labelBackground?.padding,\n shape: {\n ...transformToGraphic(this._spec.label?.shape),\n visible: this._spec.label?.shape?.visible ?? false\n },\n panel: {\n ...transformToGraphic(this._spec.label?.labelBackground?.style),\n visible: this._spec.label?.labelBackground?.visible ?? true\n },\n textStyle: transformToGraphic(this._spec.label?.style)\n },\n clipInRange: this._spec.clip ?? false\n });\n this._markerComponent = markArea;\n this._markerComponent.name = 'markArea';\n this._markerComponent.id = this._spec.id ?? `markArea-${this.id}`;\n this.getContainer().add(this._markerComponent as unknown as INode);\n }\n\n protected _markerLayout() {\n const spec = this._spec as any;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const isXLayout = isValid(spec.x) && isValid(spec.x1);\n const isYLayout = isValid(spec.y) && isValid(spec.y1);\n const isCoordinateLayout = isValid(spec.coordinates);\n const isPositionLayout = isValid(spec.positions);\n const autoRange = spec.autoRange ?? false;\n\n let points: IPointLike[] = [];\n let lines: [IPointLike, IPointLike][] = [];\n if (isXLayout) {\n lines = xLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n points = [...lines[0], lines[1][1], lines[1][0]];\n } else if (isYLayout) {\n lines = yLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n points = [...lines[0], lines[1][1], lines[1][0]];\n } else if (isCoordinateLayout) {\n points = coordinateLayout(data, relativeSeries, autoRange);\n } else if (isPositionLayout) {\n points = spec.positions;\n }\n\n const dataPoints = data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n let limitRect;\n if (spec.clip || spec.label?.confine) {\n const { minX, maxX, minY, maxY } = this._computeClipRange([\n startRelativeSeries.getRegion(),\n endRelativeSeries.getRegion(),\n relativeSeries.getRegion()\n ]);\n limitRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n\n this._markerComponent?.setAttributes({\n points: points,\n label: {\n ...this._markerComponent?.attribute?.label,\n text: this._spec.label.formatMethod\n ? this._spec.label.formatMethod(dataPoints, this._relativeSeries.getViewData().latestData)\n : this._markerComponent?.attribute?.label?.text\n },\n limitRect,\n dx: this.layoutOffsetX,\n dy: this.layoutOffsetY\n });\n }\n\n protected _initDataView(): void {\n const spec = this._spec as any;\n const relativeSeries = this._relativeSeries;\n const isXProcess = isValid(spec.x) && isValid(spec.x1);\n const isYProcess = isValid(spec.y) && isValid(spec.y1);\n const isCoordinateProcess = isValid(spec.coordinates);\n if (!isXProcess && !isYProcess && !isCoordinateProcess) {\n return null;\n }\n\n let options: IOptionAggr[];\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n\n if (isXProcess) {\n options = [this._processSpecX(spec.x), this._processSpecX(spec.x1)];\n } else if (isYProcess) {\n options = [this._processSpecY(spec.y), this._processSpecY(spec.y1)];\n } else if (isCoordinateProcess) {\n options = this._processSpecCoo(spec);\n }\n\n const data = new DataView(this._option.dataSet);\n data.parse([relativeSeries.getViewData()], {\n type: 'dataview'\n });\n data.transform({\n type: 'markerAggregation',\n options\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-area/mark-area.ts"],"names":[],"mappings":"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","file":"mark-area.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkArea, IMarkAreaSpec, IMarkAreaTheme } from './interface';\nimport { isNil, isArray } from '../../../util';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface';\nimport type { IOptionAggr } from '../../../data/transforms/aggregation';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport { xLayout, yLayout, coordinateLayout } from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { MarkArea as MarkAreaComponent } from '@visactor/vrender-components';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValid } from '@visactor/vutils';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport { LayoutZIndex } from '../../../constant';\nimport type { LayoutItem } from '../../../model/layout-item';\nimport type { INode } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerRegression } from '../../../data/transforms/regression';\n\nexport class MarkArea extends BaseMarker<IMarkAreaSpec & IMarkAreaTheme> implements IMarkArea {\n static type = ComponentTypeEnum.markArea;\n type = ComponentTypeEnum.markArea;\n name: string = ComponentTypeEnum.markArea;\n\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.MarkArea;\n\n static speckey = 'markArea';\n\n protected declare _theme: IMarkAreaTheme;\n\n // markArea组件\n protected declare _markerComponent: MarkAreaComponent;\n\n static createComponent(spec: any, options: IComponentOption) {\n const markAreaSpec = spec.markArea || options.defaultSpec;\n if (isNil(markAreaSpec)) {\n return undefined;\n }\n if (!isArray(markAreaSpec) && markAreaSpec.visible !== false) {\n return new MarkArea(markAreaSpec, { ...options, specKey: MarkArea.speckey });\n }\n const markAreas: MarkArea[] = [];\n markAreaSpec.forEach((m: any, i: number) => {\n if (m.visible !== false) {\n markAreas.push(new MarkArea(m, { ...options, specIndex: i, specKey: MarkArea.speckey }));\n }\n });\n return markAreas;\n }\n\n protected _createMarkerComponent() {\n const markArea = new MarkAreaComponent({\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? false,\n points: [\n {\n x: 0,\n y: 0\n }\n ],\n areaStyle: transformToGraphic(this._spec.area?.style),\n label: {\n ...this._spec.label,\n padding: this._spec.label?.labelBackground?.padding,\n shape: {\n ...transformToGraphic(this._spec.label?.shape),\n visible: this._spec.label?.shape?.visible ?? false\n },\n panel: {\n ...transformToGraphic(this._spec.label?.labelBackground?.style),\n visible: this._spec.label?.labelBackground?.visible ?? true\n },\n textStyle: transformToGraphic(this._spec.label?.style)\n },\n clipInRange: this._spec.clip ?? false\n });\n this._markerComponent = markArea;\n this._markerComponent.name = 'markArea';\n this._markerComponent.id = this._spec.id ?? `markArea-${this.id}`;\n this.getContainer().add(this._markerComponent as unknown as INode);\n }\n\n protected _markerLayout() {\n const spec = this._spec as any;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const isXLayout = isValid(spec.x) && isValid(spec.x1);\n const isYLayout = isValid(spec.y) && isValid(spec.y1);\n const isCoordinateLayout = isValid(spec.coordinates);\n const isPositionLayout = isValid(spec.positions);\n const autoRange = spec.autoRange ?? false;\n\n let points: IPointLike[] = [];\n let lines: [IPointLike, IPointLike][] = [];\n if (isXLayout) {\n lines = xLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n points = [...lines[0], lines[1][1], lines[1][0]];\n } else if (isYLayout) {\n lines = yLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n points = [...lines[0], lines[1][1], lines[1][0]];\n } else if (isCoordinateLayout) {\n points = coordinateLayout(data, relativeSeries, autoRange);\n } else if (isPositionLayout) {\n points = spec.positions;\n }\n\n const dataPoints = data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n let limitRect;\n if (spec.clip || spec.label?.confine) {\n const { minX, maxX, minY, maxY } = this._computeClipRange([\n startRelativeSeries.getRegion(),\n endRelativeSeries.getRegion(),\n relativeSeries.getRegion()\n ]);\n limitRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n\n this._markerComponent?.setAttributes({\n points: points,\n label: {\n ...this._markerComponent?.attribute?.label,\n text: this._spec.label.formatMethod\n ? this._spec.label.formatMethod(dataPoints, this._relativeSeries.getViewData().latestData)\n : this._markerComponent?.attribute?.label?.text\n },\n limitRect,\n dx: this.layoutOffsetX,\n dy: this.layoutOffsetY\n });\n }\n\n protected _initDataView(): void {\n const spec = this._spec as any;\n const relativeSeries = this._relativeSeries;\n const isXProcess = isValid(spec.x) && isValid(spec.x1);\n const isYProcess = isValid(spec.y) && isValid(spec.y1);\n const isCoordinateProcess = isValid(spec.coordinates);\n if (!isXProcess && !isYProcess && !isCoordinateProcess) {\n return null;\n }\n\n let options: IOptionAggr[];\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n\n if (isXProcess) {\n options = [this._processSpecX(spec.x), this._processSpecX(spec.x1)];\n } else if (isYProcess) {\n options = [this._processSpecY(spec.y), this._processSpecY(spec.y1)];\n } else if (isCoordinateProcess) {\n options = this._processSpecCoo(spec);\n }\n\n const data = new DataView(this._option.dataSet);\n data.parse([relativeSeries.getViewData()], {\n type: 'dataview'\n });\n data.transform({\n type: 'markerAggregation',\n options\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\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.4.0";
4
+ export declare const version = "1.4.1-alpha.1";
5
5
  export type { IVChart } from './interface';
6
6
  export * from '../event/interface';
7
7
  export * from '../typings/spec/common';
package/cjs/core/index.js CHANGED
@@ -41,7 +41,7 @@ const region_1 = require("../region/region"), base_layout_1 = require("../layout
41
41
 
42
42
  vchart_1.VChart.useMark([ component_1.ComponentMark, group_1.GroupMark, image_1.ImageMark ]),
43
43
  factory_1.Factory.registerRegion("region", region_1.Region), factory_1.Factory.registerLayout("base", base_layout_1.Layout),
44
- exports.version = "1.4.0", __exportStar(require("../event/interface"), exports),
44
+ exports.version = "1.4.1-alpha.1", __exportStar(require("../event/interface"), exports),
45
45
  __exportStar(require("../typings/spec/common"), exports), __exportStar(require("../theme/interface"), exports),
46
46
  vutils_1.Logger.getInstance(vutils_1.LoggerLevel.Error);
47
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAAuD;AAKvD,qCAAkC;AAiBzB,uFAjBA,eAAM,OAiBA;AAhBf,uCAAoC;AAgBnB,wFAhBR,iBAAO,OAgBQ;AAfxB,6CAA0C;AAC1C,uDAA+C;AAC/C,yCAA0C;AAC1C,iDAAkD;AAClD,yCAA0C;AAG1C,eAAM,CAAC,OAAO,CAAC,CAAC,yBAAa,EAAE,iBAAS,EAAE,iBAAS,CAAC,CAAC,CAAC;AAGtD,iBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAa,CAAC,CAAC;AAGhD,iBAAO,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAa,CAAC,CAAC;AAKjC,QAAA,OAAO,GAAG,OAAO,CAAC;AAK/B,qDAAmC;AACnC,yDAAuC;AAEvC,qDAAmC;AAGnC,eAAM,CAAC,WAAW,CAAC,oBAAW,CAAC,KAAK,CAAC,CAAC","file":"index.js","sourcesContent":["import { Logger, LoggerLevel } from '@visactor/vutils';\n/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { GroupMark } from '../mark/group';\nimport { ComponentMark } from '../mark/component';\nimport { ImageMark } from '../mark/image';\n\n// register groupMark and componentMark\nVChart.useMark([ComponentMark, GroupMark, ImageMark]);\n\n// install region module\nFactory.registerRegion('region', Region as any);\n\n// install layout module\nFactory.registerLayout('base', Layout as any);\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.4.0\";\n\n// export necessary types\nexport type { IVChart } from './interface';\n// the event types\nexport * from '../event/interface';\nexport * from '../typings/spec/common';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport * from '../theme/interface';\n\n// set default logger level to Level.error\nLogger.getInstance(LoggerLevel.Error);\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAAuD;AAKvD,qCAAkC;AAiBzB,uFAjBA,eAAM,OAiBA;AAhBf,uCAAoC;AAgBnB,wFAhBR,iBAAO,OAgBQ;AAfxB,6CAA0C;AAC1C,uDAA+C;AAC/C,yCAA0C;AAC1C,iDAAkD;AAClD,yCAA0C;AAG1C,eAAM,CAAC,OAAO,CAAC,CAAC,yBAAa,EAAE,iBAAS,EAAE,iBAAS,CAAC,CAAC,CAAC;AAGtD,iBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAa,CAAC,CAAC;AAGhD,iBAAO,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAa,CAAC,CAAC;AAKjC,QAAA,OAAO,GAAG,eAAe,CAAC;AAKvC,qDAAmC;AACnC,yDAAuC;AAEvC,qDAAmC;AAGnC,eAAM,CAAC,WAAW,CAAC,oBAAW,CAAC,KAAK,CAAC,CAAC","file":"index.js","sourcesContent":["import { Logger, LoggerLevel } from '@visactor/vutils';\n/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { GroupMark } from '../mark/group';\nimport { ComponentMark } from '../mark/component';\nimport { ImageMark } from '../mark/image';\n\n// register groupMark and componentMark\nVChart.useMark([ComponentMark, GroupMark, ImageMark]);\n\n// install region module\nFactory.registerRegion('region', Region as any);\n\n// install layout module\nFactory.registerLayout('base', Layout as any);\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.4.1-alpha.1\";\n\n// export necessary types\nexport type { IVChart } from './interface';\n// the event types\nexport * from '../event/interface';\nexport * from '../typings/spec/common';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport * from '../theme/interface';\n\n// set default logger level to Level.error\nLogger.getInstance(LoggerLevel.Error);\n"]}
@@ -363,7 +363,8 @@ class VChart {
363
363
  var _a, _b, _c;
364
364
  spec = (0, util_1.specTransform)(spec);
365
365
  const lastSpec = this._spec;
366
- this._spec = spec, this._updateCurrentTheme(), null === (_a = this._chart) || void 0 === _a || _a.setCurrentTheme(this._currentTheme, !0);
366
+ this._spec = spec, (0, vutils_1.isEqual)(lastSpec.theme, spec.theme) || (this._updateCurrentTheme(),
367
+ null === (_a = this._chart) || void 0 === _a || _a.setCurrentTheme(this._currentTheme, !1));
367
368
  const reSize = this._updateChartConfiguration(lastSpec);
368
369
  return null === (_c = null === (_b = this._compiler) || void 0 === _b ? void 0 : _b.getVGrammarView()) || void 0 === _c || _c.updateLayoutTag(),
369
370
  (0, util_2.mergeUpdateResult)(this._chart.updateSpec(spec, morphConfig), {