@visactor/vchart 1.13.9-alpha.6 → 1.13.10-alpha.0

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 (182) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +1062 -748
  3. package/build/index.js +1062 -747
  4. package/build/index.min.js +1 -1
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/index.d.ts +1 -1
  7. package/cjs/chart/index.js.map +1 -1
  8. package/cjs/chart/pictogram/interface.d.ts +1 -1
  9. package/cjs/chart/pictogram/interface.js.map +1 -1
  10. package/cjs/chart/progress/linear/linear-progress-transformer.js +1 -1
  11. package/cjs/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  12. package/cjs/compile/mark/compilable-mark.d.ts +1 -0
  13. package/cjs/compile/mark/compilable-mark.js +3 -0
  14. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  15. package/cjs/component/axis/base-axis.js +7 -2
  16. package/cjs/component/axis/base-axis.js.map +1 -1
  17. package/cjs/component/axis/interface/spec.d.ts +7 -2
  18. package/cjs/component/axis/interface/spec.js.map +1 -1
  19. package/cjs/component/brush/brush.d.ts +23 -24
  20. package/cjs/component/brush/brush.js +183 -182
  21. package/cjs/component/brush/brush.js.map +1 -1
  22. package/cjs/component/brush/interface.d.ts +2 -0
  23. package/cjs/component/brush/interface.js.map +1 -1
  24. package/cjs/component/crosshair/base.js +1 -1
  25. package/cjs/component/crosshair/base.js.map +1 -1
  26. package/cjs/component/crosshair/utils/cartesian.js +9 -8
  27. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  28. package/cjs/component/data-zoom/data-zoom/interface.d.ts +2 -3
  29. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  30. package/cjs/component/marker/mark-area/base-mark-area.js +27 -17
  31. package/cjs/component/marker/mark-area/base-mark-area.js.map +1 -1
  32. package/cjs/component/marker/mark-area/interface/theme.d.ts +4 -3
  33. package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
  34. package/cjs/component/marker/mark-line/base-mark-line.js +31 -20
  35. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  36. package/cjs/component/marker/mark-line/cartesian-mark-line.js +32 -26
  37. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  38. package/cjs/component/marker/mark-line/interface/theme.d.ts +4 -3
  39. package/cjs/component/marker/mark-line/interface/theme.js.map +1 -1
  40. package/cjs/component/marker/mark-point/cartesian-mark-point.js +3 -1
  41. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  42. package/cjs/component/marker/utils.d.ts +12 -0
  43. package/cjs/component/marker/utils.js +22 -7
  44. package/cjs/component/marker/utils.js.map +1 -1
  45. package/cjs/constant/event.d.ts +1 -0
  46. package/cjs/constant/event.js +6 -6
  47. package/cjs/constant/event.js.map +1 -1
  48. package/cjs/constant/funnel.js +1 -2
  49. package/cjs/constant/layout.js +2 -1
  50. package/cjs/core/index.d.ts +1 -1
  51. package/cjs/core/index.js +2 -3
  52. package/cjs/core/index.js.map +1 -1
  53. package/cjs/core/interface.js +2 -1
  54. package/cjs/data/transforms/pictogram.d.ts +1 -9
  55. package/cjs/data/transforms/pictogram.js +3 -3
  56. package/cjs/data/transforms/pictogram.js.map +1 -1
  57. package/cjs/data/transforms/pie.js +1 -1
  58. package/cjs/data/transforms/pie.js.map +1 -1
  59. package/cjs/index-harmony-simple.js.map +1 -1
  60. package/cjs/index.d.ts +1 -0
  61. package/cjs/index.js +8 -7
  62. package/cjs/index.js.map +1 -1
  63. package/cjs/model/base-model.d.ts +1 -0
  64. package/cjs/model/base-model.js +6 -0
  65. package/cjs/model/base-model.js.map +1 -1
  66. package/cjs/plugin/components/tooltip-handler/base.js +8 -0
  67. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  68. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +11 -7
  69. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  70. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +1 -1
  71. package/cjs/plugin/components/tooltip-handler/utils/position.js +9 -1
  72. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  73. package/cjs/series/bar/bar.js.map +1 -1
  74. package/cjs/series/gauge/gauge.js +7 -5
  75. package/cjs/series/gauge/gauge.js.map +1 -1
  76. package/cjs/series/pictogram/tooltip-helper.d.ts +2 -2
  77. package/cjs/series/pictogram/tooltip-helper.js.map +1 -1
  78. package/cjs/series/pie/pie.js +3 -3
  79. package/cjs/series/pie/pie.js.map +1 -1
  80. package/cjs/series/polar/progress-like/interface.d.ts +1 -0
  81. package/cjs/series/polar/progress-like/interface.js.map +1 -1
  82. package/cjs/series/polar/progress-like/progress-like.js +4 -3
  83. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  84. package/cjs/series/progress/linear/interface.d.ts +1 -0
  85. package/cjs/series/progress/linear/interface.js.map +1 -1
  86. package/cjs/series/progress/linear/linear.js +6 -4
  87. package/cjs/series/progress/linear/linear.js.map +1 -1
  88. package/cjs/series/sankey/interface.d.ts +0 -1
  89. package/cjs/series/sankey/interface.js.map +1 -1
  90. package/cjs/typings/tooltip/position.d.ts +1 -1
  91. package/cjs/typings/tooltip/position.js.map +1 -1
  92. package/cjs/typings/visual.d.ts +1 -1
  93. package/cjs/typings/visual.js.map +1 -1
  94. package/esm/chart/index.d.ts +1 -1
  95. package/esm/chart/index.js.map +1 -1
  96. package/esm/chart/pictogram/interface.d.ts +1 -1
  97. package/esm/chart/pictogram/interface.js.map +1 -1
  98. package/esm/chart/progress/linear/linear-progress-transformer.js +1 -1
  99. package/esm/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  100. package/esm/compile/mark/compilable-mark.d.ts +1 -0
  101. package/esm/compile/mark/compilable-mark.js +3 -0
  102. package/esm/compile/mark/compilable-mark.js.map +1 -1
  103. package/esm/component/axis/base-axis.js +7 -2
  104. package/esm/component/axis/base-axis.js.map +1 -1
  105. package/esm/component/axis/interface/spec.d.ts +7 -2
  106. package/esm/component/axis/interface/spec.js.map +1 -1
  107. package/esm/component/brush/brush.d.ts +23 -24
  108. package/esm/component/brush/brush.js +179 -177
  109. package/esm/component/brush/brush.js.map +1 -1
  110. package/esm/component/brush/interface.d.ts +2 -0
  111. package/esm/component/brush/interface.js.map +1 -1
  112. package/esm/component/crosshair/base.js +1 -1
  113. package/esm/component/crosshair/base.js.map +1 -1
  114. package/esm/component/crosshair/utils/cartesian.js +9 -8
  115. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  116. package/esm/component/data-zoom/data-zoom/interface.d.ts +2 -3
  117. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  118. package/esm/component/marker/mark-area/base-mark-area.js +27 -16
  119. package/esm/component/marker/mark-area/base-mark-area.js.map +1 -1
  120. package/esm/component/marker/mark-area/interface/theme.d.ts +4 -3
  121. package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
  122. package/esm/component/marker/mark-line/base-mark-line.js +30 -19
  123. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  124. package/esm/component/marker/mark-line/cartesian-mark-line.js +31 -26
  125. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  126. package/esm/component/marker/mark-line/interface/theme.d.ts +4 -3
  127. package/esm/component/marker/mark-line/interface/theme.js.map +1 -1
  128. package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
  129. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  130. package/esm/component/marker/utils.d.ts +12 -0
  131. package/esm/component/marker/utils.js +19 -4
  132. package/esm/component/marker/utils.js.map +1 -1
  133. package/esm/constant/event.d.ts +1 -0
  134. package/esm/constant/event.js +6 -6
  135. package/esm/constant/event.js.map +1 -1
  136. package/esm/constant/funnel.js +1 -2
  137. package/esm/constant/layout.js +2 -1
  138. package/esm/core/index.d.ts +1 -1
  139. package/esm/core/index.js +2 -3
  140. package/esm/core/index.js.map +1 -1
  141. package/esm/core/interface.js +2 -1
  142. package/esm/data/transforms/pictogram.d.ts +1 -9
  143. package/esm/data/transforms/pictogram.js +3 -3
  144. package/esm/data/transforms/pictogram.js.map +1 -1
  145. package/esm/data/transforms/pie.js +1 -1
  146. package/esm/data/transforms/pie.js.map +1 -1
  147. package/esm/index-harmony-simple.js.map +1 -1
  148. package/esm/index.d.ts +1 -0
  149. package/esm/index.js +2 -0
  150. package/esm/index.js.map +1 -1
  151. package/esm/model/base-model.d.ts +1 -0
  152. package/esm/model/base-model.js +6 -0
  153. package/esm/model/base-model.js.map +1 -1
  154. package/esm/plugin/components/tooltip-handler/base.js +8 -0
  155. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  156. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +11 -7
  157. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  158. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +1 -1
  159. package/esm/plugin/components/tooltip-handler/utils/position.js +9 -1
  160. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  161. package/esm/series/bar/bar.js.map +1 -1
  162. package/esm/series/gauge/gauge.js +6 -4
  163. package/esm/series/gauge/gauge.js.map +1 -1
  164. package/esm/series/pictogram/tooltip-helper.d.ts +2 -2
  165. package/esm/series/pictogram/tooltip-helper.js.map +1 -1
  166. package/esm/series/pie/pie.js +4 -4
  167. package/esm/series/pie/pie.js.map +1 -1
  168. package/esm/series/polar/progress-like/interface.d.ts +1 -0
  169. package/esm/series/polar/progress-like/interface.js.map +1 -1
  170. package/esm/series/polar/progress-like/progress-like.js +4 -3
  171. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  172. package/esm/series/progress/linear/interface.d.ts +1 -0
  173. package/esm/series/progress/linear/interface.js.map +1 -1
  174. package/esm/series/progress/linear/linear.js +6 -4
  175. package/esm/series/progress/linear/linear.js.map +1 -1
  176. package/esm/series/sankey/interface.d.ts +0 -1
  177. package/esm/series/sankey/interface.js.map +1 -1
  178. package/esm/typings/tooltip/position.d.ts +1 -1
  179. package/esm/typings/tooltip/position.js.map +1 -1
  180. package/esm/typings/visual.d.ts +1 -1
  181. package/esm/typings/visual.js.map +1 -1
  182. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport type { ILayoutPoint, StringOrNumber } from '../../../typings';\nimport type {\n AxisCurrentValueMap,\n CrossHairStateByField,\n CrossHairStateItem,\n IBound,\n ICrosshairInfo,\n ICrosshairLabelInfo,\n IHair\n} from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n enableRemain: boolean = false\n) => {\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n Object.keys(stateByField).forEach(field => {\n const { currentValue, cacheInfo, labelsComp, attributes, coordKey } = stateByField[field];\n let axis = null;\n let coord = 0;\n\n if (currentValue.size) {\n const item = Array.from(currentValue.values())[0];\n coord =\n item.axis.getScale().scale(item.datum) +\n item.axis.getLayoutStartPoint()[coordKey as 'x' | 'y'] -\n layoutStartPoint[coordKey as 'x' | 'y'];\n axis = item.axis;\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(coord);\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newCacheInfo: ICrosshairInfo = useCache\n ? cacheInfo\n : {\n coordRange: [0, 0],\n sizeRange: [0, 0],\n coord,\n labelsTextStyle: {},\n labels: labelsComp\n ? Object.keys(labelsComp).reduce((res: Record<string, ICrosshairLabelInfo>, labelKey: string) => {\n res[labelKey] = { visible: false, text: '', dx: 0, dy: 0 };\n\n return res;\n }, {})\n : null,\n visible: isVisible,\n axis\n };\n if (newCacheInfo) {\n newCacheInfo._isCache = useCache;\n }\n let bandSize;\n let offsetSize: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (attributes) {\n currentValue.forEach(({ axis, datum: value = '' }) => {\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const scale = axis.getScale();\n if (isDiscrete(scale.type)) {\n bandSize = (scale as BandScale).bandwidth();\n\n if (bandSize === 0 && (scale as BandScale).step) {\n offsetSize = (scale as BandScale).step();\n }\n } else if (isContinuous(scale.type)) {\n const field1 = field === 'xField' ? series.fieldX[0] : series.fieldY[0]; // todo\n const field2 = field === 'xField' ? series.fieldX2 : series.fieldY2; // todo\n const datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);\n if (datum) {\n const startX = field === 'xField' ? series.dataToPositionX(datum) : series.dataToPositionY(datum);\n if (field2) {\n bandSize = Math.abs(\n startX - (field === 'xField' ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))\n );\n value = `${datum[field1]} ~ ${datum[field2]}`;\n } else {\n bandSize = 1;\n }\n coord = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (newCacheInfo && attributes.label?.visible && !useCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n const axisOrient = axis.getOrient();\n\n if (newCacheInfo.labels[axisOrient]) {\n newCacheInfo.labels[axisOrient].visible = true;\n newCacheInfo.labels[axisOrient].text = value;\n if (axisOrient === 'left') {\n newCacheInfo.labels[axisOrient].dx = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'top') {\n newCacheInfo.labels[axisOrient].y = 0;\n newCacheInfo.labels[axisOrient].dy = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'top'\n };\n }\n newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter;\n }\n }\n });\n }\n\n if (newCacheInfo && !useCache) {\n const region = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(region, currentValue);\n if (field === 'xField') {\n newCacheInfo.coordRange = [region.x1, region.x2];\n newCacheInfo.sizeRange = [region.y1, region.y2];\n newCacheInfo.coord = coord + layoutStartPoint.x;\n if (newCacheInfo.labels) {\n newCacheInfo.labels.top.y = region.y1;\n newCacheInfo.labels.bottom.y = region.y2;\n }\n } else {\n newCacheInfo.coordRange = [region.y1, region.y2]; // todo\n newCacheInfo.sizeRange = [region.x1, region.x2];\n newCacheInfo.coord = coord + layoutStartPoint.y;\n\n if (newCacheInfo.labels) {\n newCacheInfo.labels.left.x = region.x1;\n newCacheInfo.labels.right.x = region.x2;\n }\n }\n\n if (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) {\n newCacheInfo.visible = false;\n }\n\n if (attributes && attributes.label) {\n Object.keys(newCacheInfo.labels).forEach(labelKey => {\n if (newCacheInfo.labels[labelKey].visible) {\n setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);\n }\n });\n }\n }\n\n stateByField[field].bandSize = bandSize ?? 0;\n stateByField[field].offsetSize = offsetSize;\n stateByField[field].cacheInfo = newCacheInfo;\n });\n\n return stateByField;\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x, y } = r.getLayoutStartPoint();\n const { width, height } = r.getLayoutRect();\n\n outRegion.x1 = Math.min(outRegion.x1, x);\n outRegion.y1 = Math.min(outRegion.y1, y);\n outRegion.x2 = Math.max(outRegion.x2, x + width);\n outRegion.y2 = Math.max(outRegion.y2, y + height);\n });\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem) => {\n const { cacheInfo, attributes, bandSize, offsetSize, coordKey, anotherAxisKey } = stateItem;\n const { coord, sizeRange } = cacheInfo;\n\n // 外部设置的size\n const type = attributes.type;\n let positionAttribute;\n if (type === 'line') {\n const pos = coord + bandSize / 2;\n\n positionAttribute = {\n visible: true,\n start: { [coordKey]: pos, [anotherAxisKey]: sizeRange[0] },\n end: { [coordKey]: pos, [anotherAxisKey]: sizeRange[1] }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(attributes, bandSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord - extend / 2 - offsetSize / 2, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + bandSize + extend / 2 + offsetSize / 2, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, axis: IAxis) => {\n // 外部设置的size\n let extend = 0;\n if (hair.style?.sizePercent) {\n extend = (hair.style.sizePercent - 1) * bandSize;\n } else if (typeof hair.style?.size === 'number') {\n extend = hair.style.size - bandSize;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n extend = hair.style.size(axisRect, axis) - bandSize;\n }\n\n return extend;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport type { ILayoutPoint, StringOrNumber } from '../../../typings';\nimport type {\n AxisCurrentValueMap,\n CrossHairStateByField,\n CrossHairStateItem,\n IBound,\n ICrosshairInfo,\n ICrosshairLabelInfo,\n IHair\n} from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n enableRemain: boolean = false\n) => {\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n Object.keys(stateByField).forEach(field => {\n const { currentValue, cacheInfo, labelsComp, attributes, coordKey } = stateByField[field];\n let axis = null;\n let coord = 0;\n\n if (currentValue.size) {\n const item = Array.from(currentValue.values())[0];\n coord =\n item.axis.getScale().scale(item.datum) +\n item.axis.getLayoutStartPoint()[coordKey as 'x' | 'y'] -\n layoutStartPoint[coordKey as 'x' | 'y'];\n axis = item.axis;\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(coord);\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newCacheInfo: ICrosshairInfo = useCache\n ? cacheInfo\n : {\n coordRange: [0, 0],\n sizeRange: [0, 0],\n coord,\n labelsTextStyle: {},\n labels: labelsComp\n ? Object.keys(labelsComp).reduce((res: Record<string, ICrosshairLabelInfo>, labelKey: string) => {\n res[labelKey] = { visible: false, text: '', dx: 0, dy: 0 };\n\n return res;\n }, {})\n : null,\n visible: isVisible,\n axis\n };\n if (newCacheInfo) {\n newCacheInfo._isCache = useCache;\n }\n let bandSize;\n let offsetSize: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (attributes) {\n currentValue.forEach(({ axis, datum: value = '' }) => {\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const scale = axis.getScale();\n if (isDiscrete(scale.type)) {\n bandSize = (scale as BandScale).bandwidth();\n\n if (bandSize === 0 && (scale as BandScale).step) {\n offsetSize = (scale as BandScale).step();\n }\n } else if (isContinuous(scale.type)) {\n const field1 = field === 'xField' ? series.fieldX[0] : series.fieldY[0]; // todo\n const field2 = field === 'xField' ? series.fieldX2 : series.fieldY2; // todo\n const datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);\n if (datum) {\n const startX = field === 'xField' ? series.dataToPositionX(datum) : series.dataToPositionY(datum);\n if (field2) {\n bandSize = Math.abs(\n startX - (field === 'xField' ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))\n );\n value = `${datum[field1]} ~ ${datum[field2]}`;\n } else {\n bandSize = 1;\n }\n coord = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (newCacheInfo && attributes.label?.visible && !useCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n const axisOrient = axis.getOrient();\n\n if (newCacheInfo.labels[axisOrient]) {\n newCacheInfo.labels[axisOrient].visible = true;\n newCacheInfo.labels[axisOrient].text = value;\n if (axisOrient === 'left') {\n newCacheInfo.labels[axisOrient].dx = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'top') {\n newCacheInfo.labels[axisOrient].y = 0;\n newCacheInfo.labels[axisOrient].dy = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'top'\n };\n }\n newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter;\n }\n }\n });\n }\n\n if (newCacheInfo && !useCache) {\n const region = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(region, currentValue);\n if (field === 'xField') {\n newCacheInfo.coordRange = [region.x1, region.x2];\n newCacheInfo.sizeRange = [region.y1, region.y2];\n newCacheInfo.coord = coord + layoutStartPoint.x;\n if (newCacheInfo.labels) {\n newCacheInfo.labels.top.y = region.y1;\n newCacheInfo.labels.bottom.y = region.y2;\n }\n } else {\n newCacheInfo.coordRange = [region.y1, region.y2]; // todo\n newCacheInfo.sizeRange = [region.x1, region.x2];\n newCacheInfo.coord = coord + layoutStartPoint.y;\n\n if (newCacheInfo.labels) {\n newCacheInfo.labels.left.x = region.x1;\n newCacheInfo.labels.right.x = region.x2;\n }\n }\n\n if (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) {\n newCacheInfo.visible = false;\n }\n\n if (attributes && attributes.label) {\n Object.keys(newCacheInfo.labels).forEach(labelKey => {\n if (newCacheInfo.labels[labelKey].visible) {\n setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);\n }\n });\n }\n }\n\n stateByField[field].bandSize = bandSize ?? 0;\n stateByField[field].offsetSize = offsetSize;\n stateByField[field].cacheInfo = newCacheInfo;\n });\n\n return stateByField;\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x, y } = r.getLayoutStartPoint();\n const { width, height } = r.getLayoutRect();\n\n outRegion.x1 = Math.min(outRegion.x1, x);\n outRegion.y1 = Math.min(outRegion.y1, y);\n outRegion.x2 = Math.max(outRegion.x2, x + width);\n outRegion.y2 = Math.max(outRegion.y2, y + height);\n });\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem) => {\n const { cacheInfo, attributes, bandSize, offsetSize, coordKey, anotherAxisKey } = stateItem;\n const { coord, sizeRange } = cacheInfo;\n\n // 外部设置的size\n const type = attributes.type;\n let positionAttribute;\n if (type === 'line') {\n const pos = coord + bandSize / 2;\n\n positionAttribute = {\n visible: true,\n start: { [coordKey]: pos, [anotherAxisKey]: sizeRange[0] },\n end: { [coordKey]: pos, [anotherAxisKey]: sizeRange[1] }\n };\n } else if (type === 'rect') {\n const [offset0, offset1] = getRectSize(attributes, bandSize, offsetSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord + offset0, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + offset1, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, offsetSize: number, axis: IAxis) => {\n // 外部设置的size\n const visualSize = bandSize === 0 ? offsetSize : bandSize;\n let size = visualSize;\n\n if (hair.style?.sizePercent) {\n // 按照百分比设置大小\n size = visualSize * hair.style.sizePercent;\n } else if (typeof hair.style?.size === 'number') {\n size = hair.style.size;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n size = hair.style.size(axisRect, axis);\n }\n\n return bandSize === 0 ? [-size / 2, size / 2] : [bandSize / 2 - size / 2, size / 2 + bandSize / 2];\n};\n"]}
@@ -1,4 +1,3 @@
1
- import type { IMarkSpec } from '../../../typings/spec';
2
1
  import type { IAreaMarkSpec, ILineMarkSpec, IRectMarkSpec, ISymbolMarkSpec, ITextMarkSpec } from '../../../typings/visual';
3
2
  import type { IComponentSpec } from '../../base/interface';
4
3
  import type { ComponentThemeWithDirection, IComponent } from '../../interface';
@@ -41,13 +40,13 @@ export interface IDataZoomSpec extends IDataZoomStyle, IDataFilterComponentSpec
41
40
  valueField?: string;
42
41
  startText?: {
43
42
  padding?: number;
44
- style?: IMarkSpec<ITextMarkSpec>;
43
+ style?: ITextMarkSpec;
45
44
  formatMethod?: (text: string | number) => string | string[];
46
45
  formatter?: string | string[];
47
46
  };
48
47
  endText?: {
49
48
  padding?: number;
50
- style?: IMarkSpec<ITextMarkSpec>;
49
+ style?: ITextMarkSpec;
51
50
  formatMethod?: (text: string | number) => string | string[];
52
51
  formatter?: string | string[];
53
52
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/data-zoom/data-zoom/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IMarkSpec } from '../../../typings/spec';\nimport type {\n IAreaMarkSpec,\n ILineMarkSpec,\n IRectMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec\n} from '../../../typings/visual';\nimport type { IComponentSpec } from '../../base/interface';\nimport type { ComponentThemeWithDirection, IComponent } from '../../interface';\nimport type { IFilterMode, IDataFilterComponent, IDataFilterComponentSpec } from '../interface';\n\nexport type IDataZoom = IComponent & IDataFilterComponent;\n\n// TODO: 开放的状态样式配置较少,暂时不使用markSpec方式配置\nexport interface IDataZoomStyle {\n /**\n * 是否显示startText和endText\n * @default 'auto' 鼠标hover在选中区域时才显示startText和endText\n */\n showDetail?: 'auto' | boolean;\n /**\n * 中间手柄样式\n */\n middleHandler?: {\n /**\n * 中间手柄是否可见\n */\n visible?: boolean;\n /**\n * 中间手柄的中点图标\n */\n icon?: ISymbolMarkSpec;\n /**\n * 中间手柄的背景矩形\n */\n background?: {\n /**\n * 中间手柄背景矩形的尺寸(当缩略轴为横向时,该尺寸代表高度;同理,当缩略轴为纵向时,该尺寸代表宽度)。\n */\n size?: number;\n } & IRectMarkSpec;\n };\n /**\n * 缩略轴的背景矩形\n */\n background?: {\n /**\n * 缩略轴背景矩形的尺寸(当缩略轴为横向时,该尺寸代表高度;同理,当缩略轴为纵向时,该尺寸代表宽度)\n */\n size?: number;\n } & IRectMarkSpec;\n /**\n * 缩略轴的起点手柄\n */\n startHandler?: ISymbolMarkSpec;\n /**\n * 缩略轴的终点手柄\n */\n endHandler?: ISymbolMarkSpec;\n /**\n * 起点文字样式配置\n */\n startText?: {\n /**\n * 起点文字外边距配置\n */\n padding?: number;\n } & ITextMarkSpec;\n /**\n * 终点文字样式配置\n */\n endText?: {\n /**\n * 终点文字外边距配置\n */\n padding?: number;\n } & ITextMarkSpec;\n /**\n * 缩略轴的拖拽轨迹图元\n */\n dragMask?: IRectMarkSpec;\n /**\n * 缩略轴的选中部分对应的矩形样式配置\n */\n selectedBackground?: IRectMarkSpec;\n /**\n * 缩略轴的预览图表\n */\n backgroundChart?: {\n /**\n * 缩略轴的预览图表,line 样式配置\n */\n line?: ILineMarkSpec;\n /**\n * 缩略轴的预览图表,area 样式配置\n */\n area?: IAreaMarkSpec;\n };\n /**\n * 缩略轴的选中部分预览图表样式配置\n */\n selectedBackgroundChart?: {\n /**\n * 缩略轴的选中部分,line 样式配置\n */\n line?: ILineMarkSpec;\n /**\n * 缩略轴的选中部分,area 样式配置\n */\n area?: IAreaMarkSpec;\n };\n}\n\n/** spec */\nexport interface IDataZoomSpec extends IDataZoomStyle, IDataFilterComponentSpec {\n /**\n * 是否展示背景图\n * @since 1.11.3\n */\n showBackgroundChart?: boolean;\n /**\n * 数据过滤模式\n * 'filter' 为过滤数据从而达到缩放轴的效果, 'axis'为直接缩放轴, 不过滤数据\n * 具体效果可参考: https://www.visactor.io/vchart/demo/sequence-chart/social-media-event?keyword=dataZoom\n * @default 'filter' (dataZoom默认数据过滤模式)\n */\n filterMode?: IFilterMode;\n /**\n * 背景趋势线对应的字段\n */\n valueField?: string;\n /**\n * 起始点文字标签format格式配置\n */\n startText?: {\n /**\n * 起点文字外边距配置\n */\n padding?: number;\n /**\n * 起点文字文本样式配置\n */\n style?: IMarkSpec<ITextMarkSpec>;\n /**\n * 起点文字格式化配置,使用回调函数的形式配置。\n */\n formatMethod?: (text: string | number) => string | string[];\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n };\n endText?: {\n /**\n * 终点文字外边距配置\n */\n padding?: number;\n /**\n * 终点文字文本样式配置\n */\n style?: IMarkSpec<ITextMarkSpec>;\n /**\n *\n * 终点文字格式化配置, 使用回调函数的形式配置\n */\n formatMethod?: (text: string | number) => string | string[];\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n };\n /**\n * 是否开启框选, 如果不开启则支持selectedBackground拖拽(框选和拖拽两者互斥)\n * @default false\n */\n brushSelect?: boolean;\n /**\n * 是否忽略轴上配置的固定 bandSize\n * 如果置为 true,则 datazoom 可以任意改变轴的 bandSize。\n * 但如果轴上配置了 bandSize 范围,则第一次渲染会保持 bandSize 在配置范围内。\n * 该配置仅在 auto 设为 true 时生效。\n * @since 1.7.0\n */\n ignoreBandSize?: boolean;\n\n /**\n * 背景图表节点压缩率, 如果不配置则默认将节点限制在10000个\n * @since 1.10.0\n */\n tolerance?: number;\n}\n\nexport type IDataZoomCommonTheme = IComponentSpec &\n IDataZoomStyle & {\n /** 显示的位置 */\n orient?: IDataZoomSpec['orient'];\n /** 组件宽度 */\n width?: IDataZoomSpec['width'];\n /** 组件高度 */\n height?: IDataZoomSpec['height'];\n /**\n * 是否开启框选, 如果不开启则支持selectedBackground拖拽(框选和拖拽两者互斥)\n * @default false\n */\n brushSelect?: boolean;\n };\n\nexport type IDataZoomTheme = ComponentThemeWithDirection<IDataZoomCommonTheme>;\n"]}
1
+ {"version":3,"sources":["../src/component/data-zoom/data-zoom/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IMarkSpec } from '../../../typings/spec';\nimport type {\n IAreaMarkSpec,\n ILineMarkSpec,\n IRectMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec\n} from '../../../typings/visual';\nimport type { IComponentSpec } from '../../base/interface';\nimport type { ComponentThemeWithDirection, IComponent } from '../../interface';\nimport type { IFilterMode, IDataFilterComponent, IDataFilterComponentSpec } from '../interface';\n\nexport type IDataZoom = IComponent & IDataFilterComponent;\n\n// TODO: 开放的状态样式配置较少,暂时不使用markSpec方式配置\nexport interface IDataZoomStyle {\n /**\n * 是否显示startText和endText\n * @default 'auto' 鼠标hover在选中区域时才显示startText和endText\n */\n showDetail?: 'auto' | boolean;\n /**\n * 中间手柄样式\n */\n middleHandler?: {\n /**\n * 中间手柄是否可见\n */\n visible?: boolean;\n /**\n * 中间手柄的中点图标\n */\n icon?: ISymbolMarkSpec;\n /**\n * 中间手柄的背景矩形\n */\n background?: {\n /**\n * 中间手柄背景矩形的尺寸(当缩略轴为横向时,该尺寸代表高度;同理,当缩略轴为纵向时,该尺寸代表宽度)。\n */\n size?: number;\n } & IRectMarkSpec;\n };\n /**\n * 缩略轴的背景矩形\n */\n background?: {\n /**\n * 缩略轴背景矩形的尺寸(当缩略轴为横向时,该尺寸代表高度;同理,当缩略轴为纵向时,该尺寸代表宽度)\n */\n size?: number;\n } & IRectMarkSpec;\n /**\n * 缩略轴的起点手柄\n */\n startHandler?: ISymbolMarkSpec;\n /**\n * 缩略轴的终点手柄\n */\n endHandler?: ISymbolMarkSpec;\n /**\n * 起点文字样式配置\n */\n startText?: {\n /**\n * 起点文字外边距配置\n */\n padding?: number;\n } & ITextMarkSpec;\n /**\n * 终点文字样式配置\n */\n endText?: {\n /**\n * 终点文字外边距配置\n */\n padding?: number;\n } & ITextMarkSpec;\n /**\n * 缩略轴的拖拽轨迹图元\n */\n dragMask?: IRectMarkSpec;\n /**\n * 缩略轴的选中部分对应的矩形样式配置\n */\n selectedBackground?: IRectMarkSpec;\n /**\n * 缩略轴的预览图表\n */\n backgroundChart?: {\n /**\n * 缩略轴的预览图表,line 样式配置\n */\n line?: ILineMarkSpec;\n /**\n * 缩略轴的预览图表,area 样式配置\n */\n area?: IAreaMarkSpec;\n };\n /**\n * 缩略轴的选中部分预览图表样式配置\n */\n selectedBackgroundChart?: {\n /**\n * 缩略轴的选中部分,line 样式配置\n */\n line?: ILineMarkSpec;\n /**\n * 缩略轴的选中部分,area 样式配置\n */\n area?: IAreaMarkSpec;\n };\n}\n\n/** spec */\nexport interface IDataZoomSpec extends IDataZoomStyle, IDataFilterComponentSpec {\n /**\n * 是否展示背景图\n * @since 1.11.3\n */\n showBackgroundChart?: boolean;\n /**\n * 数据过滤模式\n * 'filter' 为过滤数据从而达到缩放轴的效果, 'axis'为直接缩放轴, 不过滤数据\n * 具体效果可参考: https://www.visactor.io/vchart/demo/sequence-chart/social-media-event?keyword=dataZoom\n * @default 'filter' (dataZoom默认数据过滤模式)\n */\n filterMode?: IFilterMode;\n /**\n * 背景趋势线对应的字段\n */\n valueField?: string;\n /**\n * 起始点文字标签format格式配置\n */\n startText?: {\n /**\n * 起点文字外边距配置\n */\n padding?: number;\n /**\n * 起点文字文本样式配置\n */\n style?: ITextMarkSpec;\n /**\n * 起点文字格式化配置,使用回调函数的形式配置。\n */\n formatMethod?: (text: string | number) => string | string[];\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n };\n endText?: {\n /**\n * 终点文字外边距配置\n */\n padding?: number;\n /**\n * 终点文字文本样式配置\n */\n style?: ITextMarkSpec;\n /**\n *\n * 终点文字格式化配置, 使用回调函数的形式配置\n */\n formatMethod?: (text: string | number) => string | string[];\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n };\n /**\n * 是否开启框选, 如果不开启则支持selectedBackground拖拽(框选和拖拽两者互斥)\n * @default false\n */\n brushSelect?: boolean;\n /**\n * 是否忽略轴上配置的固定 bandSize\n * 如果置为 true,则 datazoom 可以任意改变轴的 bandSize。\n * 但如果轴上配置了 bandSize 范围,则第一次渲染会保持 bandSize 在配置范围内。\n * 该配置仅在 auto 设为 true 时生效。\n * @since 1.7.0\n */\n ignoreBandSize?: boolean;\n\n /**\n * 背景图表节点压缩率, 如果不配置则默认将节点限制在10000个\n * @since 1.10.0\n */\n tolerance?: number;\n}\n\nexport type IDataZoomCommonTheme = IComponentSpec &\n IDataZoomStyle & {\n /** 显示的位置 */\n orient?: IDataZoomSpec['orient'];\n /** 组件宽度 */\n width?: IDataZoomSpec['width'];\n /** 组件高度 */\n height?: IDataZoomSpec['height'];\n /**\n * 是否开启框选, 如果不开启则支持selectedBackground拖拽(框选和拖拽两者互斥)\n * @default false\n */\n brushSelect?: boolean;\n };\n\nexport type IDataZoomTheme = ComponentThemeWithDirection<IDataZoomCommonTheme>;\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.BaseMarkArea = void 0;
6
6
 
7
- const utils_1 = require("../utils"), style_1 = require("../../../util/style"), base_marker_1 = require("../base-marker"), layout_1 = require("../../../constant/layout");
7
+ const utils_1 = require("../utils"), style_1 = require("../../../util/style"), base_marker_1 = require("../base-marker"), layout_1 = require("../../../constant/layout"), vutils_1 = require("@visactor/vutils");
8
8
 
9
9
  class BaseMarkArea extends base_marker_1.BaseMarker {
10
10
  constructor() {
@@ -16,8 +16,8 @@ class BaseMarkArea extends base_marker_1.BaseMarker {
16
16
  return "polar" === markerSpec.coordinateType || doAngleProcess || doRadiusProcess || doRadAngProcess ? "polar" : "cartesian";
17
17
  }
18
18
  _createMarkerComponent() {
19
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
20
- const label = null !== (_a = this._spec.label) && void 0 !== _a ? _a : {}, markAreaAttrs = {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h;
20
+ const label = (0, vutils_1.array)(null !== (_a = this._spec.label) && void 0 !== _a ? _a : {}), markAreaAttrs = {
21
21
  zIndex: this.layoutZIndex,
22
22
  interactive: null === (_b = this._spec.interactive) || void 0 === _b || _b,
23
23
  hover: null === (_c = this._spec.interactive) || void 0 === _c || _c,
@@ -36,13 +36,16 @@ class BaseMarkArea extends base_marker_1.BaseMarker {
36
36
  endAngle: 0,
37
37
  areaStyle: (0, utils_1.transformStyle)((0, style_1.transformToGraphic)(null === (_e = this._spec.area) || void 0 === _e ? void 0 : _e.style), this._markerData, this._markAttributeContext),
38
38
  clipInRange: null !== (_f = this._spec.clip) && void 0 !== _f && _f,
39
- label: (0, utils_1.transformLabelAttributes)(label, this._markerData, this._markAttributeContext),
39
+ label: label.map((labelItem => (0, utils_1.transformLabelAttributes)(labelItem, this._markerData, this._markAttributeContext))),
40
40
  state: {
41
41
  area: (0, utils_1.transformState)(null === (_g = this._spec.area) || void 0 === _g ? void 0 : _g.state, this._markerData, this._markAttributeContext),
42
- label: (0, utils_1.transformState)(null === (_h = this._spec.label) || void 0 === _h ? void 0 : _h.state, this._markerData, this._markAttributeContext),
43
- labelBackground: (0, utils_1.transformState)(null === (_l = null === (_k = null === (_j = this._spec) || void 0 === _j ? void 0 : _j.label) || void 0 === _k ? void 0 : _k.labelBackground) || void 0 === _l ? void 0 : _l.state, this._markerData, this._markAttributeContext)
42
+ label: label.map((labelItem => (0, utils_1.transformState)(labelItem.state, this._markerData, this._markAttributeContext))),
43
+ labelBackground: label.map((labelItem => {
44
+ var _a;
45
+ return (0, utils_1.transformState)(null === (_a = labelItem.labelBackground) || void 0 === _a ? void 0 : _a.state, this._markerData, this._markAttributeContext);
46
+ }))
44
47
  },
45
- animation: null !== (_m = this._spec.animation) && void 0 !== _m && _m,
48
+ animation: null !== (_h = this._spec.animation) && void 0 !== _h && _h,
46
49
  animationEnter: this._spec.animationEnter,
47
50
  animationExit: this._spec.animationExit,
48
51
  animationUpdate: this._spec.animationUpdate
@@ -50,10 +53,10 @@ class BaseMarkArea extends base_marker_1.BaseMarker {
50
53
  return this._newMarkAreaComponent(markAreaAttrs);
51
54
  }
52
55
  _markerLayout() {
53
- var _a, _b, _c, _d;
56
+ var _a;
54
57
  const spec = this._spec, data = this._markerData, startRelativeSeries = this._startRelativeSeries, endRelativeSeries = this._endRelativeSeries, relativeSeries = this._relativeSeries, pointsAttr = this._computePointsAttr(), seriesData = this._getRelativeDataView().latestData, dataPoints = data ? data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData : seriesData;
55
58
  let limitRect;
56
- if (spec.clip || (null === (_a = spec.label) || void 0 === _a ? void 0 : _a.confine)) {
59
+ if (spec.clip || (0, vutils_1.array)(spec.label).some((labelCfg => null == labelCfg ? void 0 : labelCfg.confine))) {
57
60
  const {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = (0, utils_1.computeClipRange)([ startRelativeSeries.getRegion(), endRelativeSeries.getRegion(), relativeSeries.getRegion() ]);
58
61
  limitRect = {
59
62
  x: minX,
@@ -62,14 +65,21 @@ class BaseMarkArea extends base_marker_1.BaseMarker {
62
65
  height: maxY - minY
63
66
  };
64
67
  }
65
- this._markerComponent && this._markerComponent.setAttributes(Object.assign(Object.assign({}, pointsAttr), {
66
- label: Object.assign(Object.assign({}, null === (_b = this._markerComponent.attribute) || void 0 === _b ? void 0 : _b.label), {
67
- text: this._spec.label.formatMethod ? this._spec.label.formatMethod(dataPoints, seriesData) : null === (_d = null === (_c = this._markerComponent.attribute) || void 0 === _c ? void 0 : _c.label) || void 0 === _d ? void 0 : _d.text
68
- }),
69
- limitRect: limitRect,
70
- dx: this._layoutOffsetX,
71
- dy: this._layoutOffsetY
72
- }));
68
+ if (this._markerComponent) {
69
+ const prevLabelAttrs = (0, vutils_1.array)(null === (_a = this._markerComponent.attribute) || void 0 === _a ? void 0 : _a.label), specLabels = (0,
70
+ vutils_1.array)(this._spec.label);
71
+ this._markerComponent.setAttributes(Object.assign(Object.assign({}, pointsAttr), {
72
+ label: prevLabelAttrs.map(((prevLabel, index) => {
73
+ const specLabel = specLabels[index] || {};
74
+ return Object.assign(Object.assign({}, prevLabel), {
75
+ text: specLabel.formatMethod ? specLabel.formatMethod(dataPoints, seriesData) : null == prevLabel ? void 0 : prevLabel.text
76
+ });
77
+ })),
78
+ limitRect: limitRect,
79
+ dx: this._layoutOffsetX,
80
+ dy: this._layoutOffsetY
81
+ }));
82
+ }
73
83
  }
74
84
  _initDataView() {
75
85
  const spec = this._spec, {doXProcess: doXProcess, doYProcess: doYProcess, doXYProcess: doXYProcess, doAngleProcess: doAngleProcess, doRadiusProcess: doRadiusProcess, doRadAngProcess: doRadAngProcess, doCoordinatesProcess: doCoordinatesProcess} = (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-area/base-mark-area.ts"],"names":[],"mappings":"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","file":"base-mark-area.js","sourcesContent":["import type { IMarkArea, IMarkAreaSpec } from './interface';\nimport {\n computeClipRange,\n transformLabelAttributes,\n transformState,\n transformStyle,\n getMarkAreaProcessInfo\n} from '../utils';\nimport type { MarkArcAreaAttrs, MarkAreaAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkArea as MarkAreaComponent, MarkArcArea as MarkArcAreaComponent } from '@visactor/vrender-components';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport type { IGroup } from '@visactor/vrender-core';\nexport abstract class BaseMarkArea extends BaseMarker<IMarkAreaSpec> implements IMarkArea {\n static specKey = 'markArea';\n specKey = 'markArea';\n\n layoutZIndex: number = LayoutZIndex.MarkArea;\n\n // eslint-disable-next-line max-len\n protected abstract _newMarkAreaComponent(\n attr: MarkAreaAttrs | MarkArcAreaAttrs\n ): MarkAreaComponent | MarkArcAreaComponent;\n protected abstract _computePointsAttr(): any;\n\n static _getMarkerCoordinateType(markerSpec: any): string {\n const { doAngleProcess, doRadiusProcess, doRadAngProcess } = getMarkAreaProcessInfo(markerSpec);\n\n if (markerSpec.coordinateType === 'polar' || doAngleProcess || doRadiusProcess || doRadAngProcess) {\n return 'polar';\n }\n return 'cartesian';\n }\n\n protected _createMarkerComponent() {\n const label = this._spec.label ?? {};\n const markAreaAttrs: MarkAreaAttrs | MarkArcAreaAttrs = {\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? true,\n hover: this._spec.interactive ?? true,\n select: this._spec.interactive ?? true,\n points: [\n {\n x: 0,\n y: 0\n }\n ],\n center: {\n x: 0,\n y: 0\n },\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n areaStyle: transformStyle(\n transformToGraphic(this._spec.area?.style),\n this._markerData,\n this._markAttributeContext\n ),\n clipInRange: this._spec.clip ?? false,\n label: transformLabelAttributes(label, this._markerData, this._markAttributeContext),\n state: {\n area: transformState(this._spec.area?.state, this._markerData, this._markAttributeContext),\n label: transformState(this._spec.label?.state, this._markerData, this._markAttributeContext),\n labelBackground: transformState(\n this._spec?.label?.labelBackground?.state,\n this._markerData,\n this._markAttributeContext\n )\n },\n animation: this._spec.animation ?? false,\n animationEnter: this._spec.animationEnter,\n animationExit: this._spec.animationExit,\n animationUpdate: this._spec.animationUpdate\n };\n\n const markArea = this._newMarkAreaComponent(markAreaAttrs);\n return markArea as unknown as IGroup;\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 pointsAttr = this._computePointsAttr();\n\n const seriesData = this._getRelativeDataView().latestData;\n const dataPoints = data\n ? data.latestData[0] && data.latestData[0].latestData\n ? data.latestData[0].latestData\n : data.latestData\n : seriesData;\n\n let limitRect;\n if (spec.clip || spec.label?.confine) {\n const { minX, maxX, minY, maxY } = 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 if (this._markerComponent) {\n this._markerComponent.setAttributes({\n ...pointsAttr,\n label: {\n ...this._markerComponent.attribute?.label,\n text: this._spec.label.formatMethod\n ? // type error here will be fixed in components\n (this._spec.label.formatMethod(dataPoints, seriesData) as any)\n : this._markerComponent.attribute?.label?.text\n },\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n } as any);\n }\n }\n\n protected _initDataView(): void {\n const spec = this._spec as any;\n const {\n doXProcess,\n doYProcess,\n doXYProcess,\n doAngleProcess,\n doRadiusProcess,\n doRadAngProcess,\n doCoordinatesProcess\n } = getMarkAreaProcessInfo(spec);\n if (\n !doXProcess &&\n !doYProcess &&\n !doXYProcess &&\n !doAngleProcess &&\n !doRadiusProcess &&\n !doRadAngProcess &&\n !doCoordinatesProcess\n ) {\n return null;\n }\n\n this._initCommonDataView();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-area/base-mark-area.ts"],"names":[],"mappings":"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","file":"base-mark-area.js","sourcesContent":["import type { IMarkArea, IMarkAreaSpec } from './interface';\nimport {\n computeClipRange,\n transformLabelAttributes,\n transformState,\n transformStyle,\n getMarkAreaProcessInfo\n} from '../utils';\nimport type { MarkArcAreaAttrs, MarkAreaAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkArea as MarkAreaComponent, MarkArcArea as MarkArcAreaComponent } from '@visactor/vrender-components';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport type { IGroup } from '@visactor/vrender-core';\nimport { array } from '@visactor/vutils';\nexport abstract class BaseMarkArea extends BaseMarker<IMarkAreaSpec> implements IMarkArea {\n static specKey = 'markArea';\n specKey = 'markArea';\n\n layoutZIndex: number = LayoutZIndex.MarkArea;\n\n // eslint-disable-next-line max-len\n protected abstract _newMarkAreaComponent(\n attr: MarkAreaAttrs | MarkArcAreaAttrs\n ): MarkAreaComponent | MarkArcAreaComponent;\n protected abstract _computePointsAttr(): any;\n\n static _getMarkerCoordinateType(markerSpec: any): string {\n const { doAngleProcess, doRadiusProcess, doRadAngProcess } = getMarkAreaProcessInfo(markerSpec);\n\n if (markerSpec.coordinateType === 'polar' || doAngleProcess || doRadiusProcess || doRadAngProcess) {\n return 'polar';\n }\n return 'cartesian';\n }\n\n protected _createMarkerComponent() {\n const label = array(this._spec.label ?? {});\n const markAreaAttrs: MarkAreaAttrs | MarkArcAreaAttrs = {\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? true,\n hover: this._spec.interactive ?? true,\n select: this._spec.interactive ?? true,\n points: [\n {\n x: 0,\n y: 0\n }\n ],\n center: {\n x: 0,\n y: 0\n },\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n areaStyle: transformStyle(\n transformToGraphic(this._spec.area?.style),\n this._markerData,\n this._markAttributeContext\n ),\n clipInRange: this._spec.clip ?? false,\n label: label.map((labelItem: any) => {\n return transformLabelAttributes(labelItem, this._markerData, this._markAttributeContext);\n }),\n state: {\n area: transformState(this._spec.area?.state, this._markerData, this._markAttributeContext),\n label: label.map((labelItem: any) => {\n return transformState(labelItem.state, this._markerData, this._markAttributeContext);\n }),\n labelBackground: label.map((labelItem: any) => {\n return transformState(labelItem.labelBackground?.state, this._markerData, this._markAttributeContext);\n })\n },\n animation: this._spec.animation ?? false,\n animationEnter: this._spec.animationEnter,\n animationExit: this._spec.animationExit,\n animationUpdate: this._spec.animationUpdate\n };\n\n const markArea = this._newMarkAreaComponent(markAreaAttrs);\n return markArea as unknown as IGroup;\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 pointsAttr = this._computePointsAttr();\n\n const seriesData = this._getRelativeDataView().latestData;\n const dataPoints = data\n ? data.latestData[0] && data.latestData[0].latestData\n ? data.latestData[0].latestData\n : data.latestData\n : seriesData;\n\n let limitRect;\n if (spec.clip || array(spec.label).some(labelCfg => labelCfg?.confine)) {\n const { minX, maxX, minY, maxY } = 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 if (this._markerComponent) {\n const prevLabelAttrs = array(this._markerComponent.attribute?.label);\n const specLabels = array(this._spec.label);\n\n this._markerComponent.setAttributes({\n ...pointsAttr,\n label: prevLabelAttrs.map((prevLabel, index) => {\n const specLabel = specLabels[index] || {};\n return {\n ...prevLabel,\n text: specLabel.formatMethod\n ? // type error here will be fixed in components\n (specLabel.formatMethod(dataPoints, seriesData) as any)\n : prevLabel?.text\n };\n }),\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n } as any);\n }\n }\n\n protected _initDataView(): void {\n const spec = this._spec as any;\n const {\n doXProcess,\n doYProcess,\n doXYProcess,\n doAngleProcess,\n doRadiusProcess,\n doRadAngProcess,\n doCoordinatesProcess\n } = getMarkAreaProcessInfo(spec);\n if (\n !doXProcess &&\n !doYProcess &&\n !doXYProcess &&\n !doAngleProcess &&\n !doRadiusProcess &&\n !doRadAngProcess &&\n !doCoordinatesProcess\n ) {\n return null;\n }\n\n this._initCommonDataView();\n }\n}\n"]}
@@ -1,9 +1,10 @@
1
1
  import type { IMarkAreaLabelPosition, IMarkCommonArcLabelPosition } from '@visactor/vrender-components';
2
2
  import type { IArcMarkSpec, IPolygonMarkSpec } from '../../../../typings';
3
3
  import type { IMarkerLabelWithoutRefSpec, IMarkerState } from '../../interface';
4
+ export type IMarkAreaLabel = {
5
+ position?: keyof typeof IMarkAreaLabelPosition | IMarkCommonArcLabelPosition;
6
+ } & IMarkerLabelWithoutRefSpec;
4
7
  export interface IMarkAreaTheme {
5
8
  area?: Partial<IMarkerState<IPolygonMarkSpec | IArcMarkSpec>>;
6
- label?: {
7
- position?: keyof typeof IMarkAreaLabelPosition | IMarkCommonArcLabelPosition;
8
- } & IMarkerLabelWithoutRefSpec;
9
+ label?: IMarkAreaLabel | IMarkAreaLabel[];
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-area/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IMarkAreaLabelPosition, IMarkCommonArcLabelPosition } from '@visactor/vrender-components';\nimport type { IArcMarkSpec, IPolygonMarkSpec } from '../../../../typings';\nimport type { IMarkerLabelWithoutRefSpec, IMarkerState } from '../../interface';\n\nexport interface IMarkAreaTheme {\n /**\n * 标记区域的样式\n */\n area?: Partial<IMarkerState<IPolygonMarkSpec | IArcMarkSpec>>;\n /**\n * 标记区域的标签样式配置\n */\n label?: {\n /**\n * label整体 - 相对line的位置\n */\n position?: keyof typeof IMarkAreaLabelPosition | IMarkCommonArcLabelPosition;\n } & IMarkerLabelWithoutRefSpec;\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-area/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IMarkAreaLabelPosition, IMarkCommonArcLabelPosition } from '@visactor/vrender-components';\nimport type { IArcMarkSpec, IPolygonMarkSpec } from '../../../../typings';\nimport type { IMarkerLabelWithoutRefSpec, IMarkerState } from '../../interface';\n\nexport type IMarkAreaLabel = {\n /**\n * label整体 - 相对line的位置\n */\n position?: keyof typeof IMarkAreaLabelPosition | IMarkCommonArcLabelPosition;\n} & IMarkerLabelWithoutRefSpec;\n\nexport interface IMarkAreaTheme {\n /**\n * 标记区域的样式\n */\n area?: Partial<IMarkerState<IPolygonMarkSpec | IArcMarkSpec>>;\n /**\n * 标记区域的标签样式配置。\n * 1.13.9 版本开始,支持创建多个标签\n */\n label?: IMarkAreaLabel | IMarkAreaLabel[];\n}\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.BaseMarkLine = void 0;
6
6
 
7
- const vdataset_1 = require("@visactor/vdataset"), aggregation_1 = require("../../../data/transforms/aggregation"), utils_1 = require("../utils"), register_1 = require("../../../data/register"), style_1 = require("../../../util/style"), base_marker_1 = require("../base-marker"), regression_1 = require("../../../data/transforms/regression"), layout_1 = require("../../../constant/layout"), marker_filter_1 = require("../../../data/transforms/marker-filter");
7
+ const vdataset_1 = require("@visactor/vdataset"), aggregation_1 = require("../../../data/transforms/aggregation"), utils_1 = require("../utils"), register_1 = require("../../../data/register"), style_1 = require("../../../util/style"), base_marker_1 = require("../base-marker"), regression_1 = require("../../../data/transforms/regression"), layout_1 = require("../../../constant/layout"), marker_filter_1 = require("../../../data/transforms/marker-filter"), vutils_1 = require("@visactor/vutils");
8
8
 
9
9
  class BaseMarkLine extends base_marker_1.BaseMarker {
10
10
  constructor() {
@@ -16,12 +16,13 @@ class BaseMarkLine extends base_marker_1.BaseMarker {
16
16
  return "polar" === markerSpec.coordinateType || doAngleProcess || doRadiusProcess || doAngRadRad1Process || doRadAngAng1Process || doRadAngProcess ? "polar" : "cartesian";
17
17
  }
18
18
  _createMarkerComponent() {
19
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
20
- const {label: label = {}, startSymbol: startSymbol = {}, endSymbol: endSymbol = {}} = this._spec, markLineAttrs = {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
20
+ const {startSymbol: startSymbol = {}, endSymbol: endSymbol = {}} = this._spec, label = (0,
21
+ vutils_1.array)(null !== (_a = this._spec.label) && void 0 !== _a ? _a : {}), markLineAttrs = {
21
22
  zIndex: this.layoutZIndex,
22
- interactive: null === (_a = this._spec.interactive) || void 0 === _a || _a,
23
- hover: null === (_b = this._spec.interactive) || void 0 === _b || _b,
24
- select: null === (_c = this._spec.interactive) || void 0 === _c || _c,
23
+ interactive: null === (_b = this._spec.interactive) || void 0 === _b || _b,
24
+ hover: null === (_c = this._spec.interactive) || void 0 === _c || _c,
25
+ select: null === (_d = this._spec.interactive) || void 0 === _d || _d,
25
26
  points: [ {
26
27
  x: 0,
27
28
  y: 0
@@ -36,17 +37,23 @@ class BaseMarkLine extends base_marker_1.BaseMarker {
36
37
  radius: 0,
37
38
  startAngle: 0,
38
39
  endAngle: 0,
39
- lineStyle: (0, utils_1.transformStyle)((0, style_1.transformToGraphic)(null === (_d = this._spec.line) || void 0 === _d ? void 0 : _d.style), this._markerData, this._markAttributeContext),
40
- clipInRange: null !== (_e = this._spec.clip) && void 0 !== _e && _e,
41
- label: (0, utils_1.transformLabelAttributes)(label, this._markerData, this._markAttributeContext),
40
+ lineStyle: (0, utils_1.transformStyle)((0, style_1.transformToGraphic)(null === (_e = this._spec.line) || void 0 === _e ? void 0 : _e.style), this._markerData, this._markAttributeContext),
41
+ clipInRange: null !== (_f = this._spec.clip) && void 0 !== _f && _f,
42
+ label: label.map((labelItem => (0, utils_1.transformLabelAttributes)(labelItem, this._markerData, this._markAttributeContext))),
42
43
  state: {
43
- line: (0, utils_1.transformState)(null !== (_g = null === (_f = this._spec.line) || void 0 === _f ? void 0 : _f.state) && void 0 !== _g ? _g : {}, this._markerData, this._markAttributeContext),
44
- lineStartSymbol: (0, utils_1.transformState)(null !== (_j = null === (_h = this._spec.startSymbol) || void 0 === _h ? void 0 : _h.state) && void 0 !== _j ? _j : {}, this._markerData, this._markAttributeContext),
45
- lineEndSymbol: (0, utils_1.transformState)(null !== (_l = null === (_k = this._spec.endSymbol) || void 0 === _k ? void 0 : _k.state) && void 0 !== _l ? _l : {}, this._markerData, this._markAttributeContext),
46
- label: (0, utils_1.transformState)(null !== (_p = null === (_o = null === (_m = this._spec) || void 0 === _m ? void 0 : _m.label) || void 0 === _o ? void 0 : _o.state) && void 0 !== _p ? _p : {}, this._markerData, this._markAttributeContext),
47
- labelBackground: (0, utils_1.transformState)(null !== (_t = null === (_s = null === (_r = null === (_q = this._spec) || void 0 === _q ? void 0 : _q.label) || void 0 === _r ? void 0 : _r.labelBackground) || void 0 === _s ? void 0 : _s.state) && void 0 !== _t ? _t : {}, this._markerData, this._markAttributeContext)
44
+ line: (0, utils_1.transformState)(null !== (_h = null === (_g = this._spec.line) || void 0 === _g ? void 0 : _g.state) && void 0 !== _h ? _h : {}, this._markerData, this._markAttributeContext),
45
+ lineStartSymbol: (0, utils_1.transformState)(null !== (_k = null === (_j = this._spec.startSymbol) || void 0 === _j ? void 0 : _j.state) && void 0 !== _k ? _k : {}, this._markerData, this._markAttributeContext),
46
+ lineEndSymbol: (0, utils_1.transformState)(null !== (_m = null === (_l = this._spec.endSymbol) || void 0 === _l ? void 0 : _l.state) && void 0 !== _m ? _m : {}, this._markerData, this._markAttributeContext),
47
+ label: label.map((labelItem => {
48
+ var _a;
49
+ return (0, utils_1.transformState)(null !== (_a = labelItem.state) && void 0 !== _a ? _a : {}, this._markerData, this._markAttributeContext);
50
+ })),
51
+ labelBackground: label.map((labelItem => {
52
+ var _a, _b;
53
+ return (0, utils_1.transformState)(null !== (_b = null === (_a = labelItem.labelBackground) || void 0 === _a ? void 0 : _a.state) && void 0 !== _b ? _b : {}, this._markerData, this._markAttributeContext);
54
+ }))
48
55
  },
49
- animation: null !== (_u = this._spec.animation) && void 0 !== _u && _u,
56
+ animation: null !== (_o = this._spec.animation) && void 0 !== _o && _o,
50
57
  animationEnter: this._spec.animationEnter,
51
58
  animationExit: this._spec.animationExit,
52
59
  animationUpdate: this._spec.animationUpdate
@@ -65,10 +72,10 @@ class BaseMarkLine extends base_marker_1.BaseMarker {
65
72
  return this._newMarkLineComponent(markLineAttrs);
66
73
  }
67
74
  _getUpdateMarkerAttrs() {
68
- var _a, _b, _c, _d;
75
+ var _a, _b;
69
76
  const spec = this._spec, data = this._markerData, startRelativeSeries = this._startRelativeSeries, endRelativeSeries = this._endRelativeSeries, relativeSeries = this._relativeSeries, pointsAttr = this._computePointsAttr(), seriesData = relativeSeries.getViewData().latestData, dataPoints = data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;
70
77
  let limitRect;
71
- if (spec.clip || (null === (_a = spec.label) || void 0 === _a ? void 0 : _a.confine)) {
78
+ if (spec.clip || (0, vutils_1.array)(spec.label).some((labelCfg => null == labelCfg ? void 0 : labelCfg.confine))) {
72
79
  const {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = (0, utils_1.computeClipRange)([ startRelativeSeries.getRegion(), endRelativeSeries.getRegion(), relativeSeries.getRegion() ]);
73
80
  limitRect = {
74
81
  x: minX,
@@ -77,9 +84,13 @@ class BaseMarkLine extends base_marker_1.BaseMarker {
77
84
  height: maxY - minY
78
85
  };
79
86
  }
80
- const markerComponentAttr = null !== (_c = null === (_b = this._markerComponent) || void 0 === _b ? void 0 : _b.attribute) && void 0 !== _c ? _c : {}, labelAttrs = Object.assign(Object.assign({}, markerComponentAttr.label), {
81
- text: this._spec.label.formatMethod ? this._spec.label.formatMethod(dataPoints, seriesData) : null === (_d = markerComponentAttr.label) || void 0 === _d ? void 0 : _d.text
82
- });
87
+ const markerComponentAttr = null !== (_b = null === (_a = this._markerComponent) || void 0 === _a ? void 0 : _a.attribute) && void 0 !== _b ? _b : {}, prevLabelAttrs = (0,
88
+ vutils_1.array)(markerComponentAttr.label), specLabels = (0, vutils_1.array)(this._spec.label), labelAttrs = prevLabelAttrs.map(((prevLabel, index) => {
89
+ const specLabel = specLabels[index] || {};
90
+ return Object.assign(Object.assign({}, prevLabel), {
91
+ text: specLabel.formatMethod ? specLabel.formatMethod(dataPoints, seriesData) : null == prevLabel ? void 0 : prevLabel.text
92
+ });
93
+ }));
83
94
  return Object.assign(Object.assign({}, pointsAttr), {
84
95
  label: labelAttrs,
85
96
  limitRect: limitRect,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-line/base-mark-line.ts"],"names":[],"mappings":"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","file":"base-mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkLine, IMarkLineSpec } from './interface';\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport {\n computeClipRange,\n transformLabelAttributes,\n transformState,\n transformStyle,\n getMarkLineProcessInfo\n} from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport type { MarkArcLineAttrs, MarkLineAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkLine as MarkLineComponent, MarkArcLine as MarkArcLineComponent } from '@visactor/vrender-components';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { IMarkerSymbol } from '../interface';\nimport { markerRegression } from '../../../data/transforms/regression';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport { markerFilter } from '../../../data/transforms/marker-filter';\n\nexport abstract class BaseMarkLine extends BaseMarker<IMarkLineSpec> implements IMarkLine {\n static specKey = 'markLine';\n specKey = 'markLine';\n layoutZIndex: number = LayoutZIndex.MarkLine;\n\n // eslint-disable-next-line max-len\n protected abstract _newMarkLineComponent(\n attr: MarkLineAttrs | MarkArcLineAttrs\n ): MarkLineComponent | MarkArcLineComponent;\n protected abstract _computePointsAttr(): any;\n\n static _getMarkerCoordinateType(markerSpec: any): string {\n const { doAngleProcess, doRadiusProcess, doAngRadRad1Process, doRadAngAng1Process, doRadAngProcess } =\n getMarkLineProcessInfo(markerSpec);\n\n if (\n markerSpec.coordinateType === 'polar' ||\n doAngleProcess ||\n doRadiusProcess ||\n doAngRadRad1Process ||\n doRadAngAng1Process ||\n doRadAngProcess\n ) {\n return 'polar';\n }\n return 'cartesian';\n }\n\n protected _createMarkerComponent() {\n const {\n label = {},\n startSymbol = {} as IMarkerSymbol,\n endSymbol = {} as IMarkerSymbol\n } = this._spec as IMarkLineSpec;\n\n const markLineAttrs: MarkLineAttrs | MarkArcLineAttrs = {\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? true,\n hover: this._spec.interactive ?? true,\n select: this._spec.interactive ?? true,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ],\n center: {\n x: 0,\n y: 0\n },\n radius: 0,\n startAngle: 0,\n endAngle: 0,\n lineStyle: transformStyle(\n transformToGraphic(this._spec.line?.style),\n this._markerData,\n this._markAttributeContext\n ),\n clipInRange: this._spec.clip ?? false,\n label: transformLabelAttributes(label, this._markerData, this._markAttributeContext),\n state: {\n line: transformState(this._spec.line?.state ?? {}, this._markerData, this._markAttributeContext),\n lineStartSymbol: transformState(\n this._spec.startSymbol?.state ?? {},\n this._markerData,\n this._markAttributeContext\n ),\n lineEndSymbol: transformState(this._spec.endSymbol?.state ?? {}, this._markerData, this._markAttributeContext),\n label: transformState(this._spec?.label?.state ?? {}, this._markerData, this._markAttributeContext),\n labelBackground: transformState(\n this._spec?.label?.labelBackground?.state ?? {},\n this._markerData,\n this._markAttributeContext\n )\n },\n animation: this._spec.animation ?? false,\n animationEnter: this._spec.animationEnter,\n animationExit: this._spec.animationExit,\n animationUpdate: this._spec.animationUpdate\n };\n\n if (startSymbol.visible) {\n markLineAttrs.startSymbol = {\n ...startSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(startSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.startSymbol = {\n visible: false\n };\n }\n\n if (endSymbol.visible) {\n markLineAttrs.endSymbol = {\n ...endSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(endSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.endSymbol = {\n visible: false\n };\n }\n const markLine = this._newMarkLineComponent(markLineAttrs);\n return markLine as unknown as IGroup;\n }\n\n protected _getUpdateMarkerAttrs() {\n const spec = this._spec;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const pointsAttr = this._computePointsAttr();\n\n const seriesData = relativeSeries.getViewData().latestData;\n const dataPoints =\n data.latestData[0] && 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 } = 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 const markerComponentAttr = this._markerComponent?.attribute ?? {};\n const labelAttrs = {\n ...markerComponentAttr.label,\n text: this._spec.label.formatMethod\n ? this._spec.label.formatMethod(dataPoints, seriesData)\n : markerComponentAttr.label?.text\n };\n\n return {\n ...pointsAttr,\n label: labelAttrs as MarkLineComponent['attribute']['label'],\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n };\n }\n\n protected _markerLayout() {\n const updateAttrs = this._getUpdateMarkerAttrs();\n this._markerComponent?.setAttributes(updateAttrs);\n }\n\n protected _initDataView(): void {\n const spec = this._spec;\n const isCoordinateProcess = 'coordinates' in spec;\n\n const {\n doXProcess,\n doYProcess,\n doXYY1Process,\n doYXX1Process,\n doXYProcess,\n doAngleProcess,\n doRadiusProcess,\n doAngRadRad1Process,\n doRadAngAng1Process,\n doRadAngProcess\n } = getMarkLineProcessInfo(spec);\n this._markerData = this._getRelativeDataView();\n\n if (\n !doXProcess &&\n !doYProcess &&\n !doXYY1Process &&\n !doYXX1Process &&\n !doXYProcess &&\n !doAngleProcess &&\n !doRadiusProcess &&\n !doAngRadRad1Process &&\n !doRadAngAng1Process &&\n !doRadAngProcess &&\n !isCoordinateProcess\n ) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerFilter', markerFilter);\n\n const { options, needAggr, needRegr, processData } = this._computeOptions();\n\n const data = new DataView(this._option.dataSet);\n data.parse([processData], {\n type: 'dataview'\n });\n if (needAggr) {\n data.transform({\n type: 'markerAggregation',\n options\n });\n }\n if (needRegr) {\n data.transform({\n type: 'markerRegression',\n options\n });\n }\n\n data.transform({\n type: 'markerFilter',\n options: this._getAllRelativeSeries()\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-line/base-mark-line.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,sEAAyE;AACzE,oCAMkB;AAClB,qDAA0E;AAI1E,+CAAyD;AACzD,gDAA4C;AAG5C,oEAAuE;AACvE,qDAAwD;AACxD,0EAAsE;AACtE,6CAAyC;AAEzC,MAAsB,YAAa,SAAQ,wBAAyB;IAApE;;QAEE,YAAO,GAAG,UAAU,CAAC;QACrB,iBAAY,GAAW,qBAAY,CAAC,QAAQ,CAAC;IA6N/C,CAAC;IArNC,MAAM,CAAC,wBAAwB,CAAC,UAAe;QAC7C,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,GAClG,IAAA,8BAAsB,EAAC,UAAU,CAAC,CAAC;QAErC,IACE,UAAU,CAAC,cAAc,KAAK,OAAO;YACrC,cAAc;YACd,eAAe;YACf,mBAAmB;YACnB,mBAAmB;YACnB,eAAe,EACf;YACA,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,sBAAsB;;QAC9B,MAAM,EAAE,WAAW,GAAG,EAAmB,EAAE,SAAS,GAAG,EAAmB,EAAE,GAAG,IAAI,CAAC,KAAsB,CAAC;QAC3G,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC;QAE5C,MAAM,aAAa,GAAqC;YACtD,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,WAAW,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,mCAAI,IAAI;YAC3C,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,mCAAI,IAAI;YACrC,MAAM,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,mCAAI,IAAI;YACtC,MAAM,EAAE;gBACN,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACf;YACD,MAAM,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACL;YACD,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAA,sBAAc,EACvB,IAAA,0BAAkB,EAAC,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,0CAAE,KAAK,CAAC,EAC1C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,qBAAqB,CAC3B;YACD,WAAW,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,KAAK;YACrC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAC3B,OAAO,IAAA,gCAAwB,EAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC3F,CAAC,CAAC;YACF,KAAK,EAAE;gBACL,IAAI,EAAE,IAAA,sBAAc,EAAC,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,0CAAE,KAAK,mCAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC;gBAChG,eAAe,EAAE,IAAA,sBAAc,EAC7B,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,KAAK,mCAAI,EAAE,EACnC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,qBAAqB,CAC3B;gBACD,aAAa,EAAE,IAAA,sBAAc,EAAC,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,KAAK,mCAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC;gBAC9G,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;;oBAC3B,OAAO,IAAA,sBAAc,EAAC,MAAA,SAAS,CAAC,KAAK,mCAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC7F,CAAC,CAAC;gBACF,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;;oBACrC,OAAO,IAAA,sBAAc,EAAC,MAAA,MAAA,SAAS,CAAC,eAAe,0CAAE,KAAK,mCAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC9G,CAAC,CAAC;aACH;YACD,SAAS,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,mCAAI,KAAK;YACxC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACzC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YACvC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;SAC5C,CAAC;QAEF,IAAI,WAAW,CAAC,OAAO,EAAE;YACvB,aAAa,CAAC,WAAW,mCACpB,WAAW,KACd,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,IAAA,sBAAc,EAAC,IAAA,0BAAkB,EAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAC3G,CAAC;SACH;aAAM;YACL,aAAa,CAAC,WAAW,GAAG;gBAC1B,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,IAAI,SAAS,CAAC,OAAO,EAAE;YACrB,aAAa,CAAC,SAAS,mCAClB,SAAS,KACZ,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,IAAA,sBAAc,EAAC,IAAA,0BAAkB,EAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,GACzG,CAAC;SACH;aAAM;YACL,aAAa,CAAC,SAAS,GAAG;gBACxB,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,QAA6B,CAAC;IACvC,CAAC;IAES,qBAAqB;;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;QAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE7C,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;QAC3D,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAExG,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,EAAE;YACtE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC;gBAClD,mBAAmB,CAAC,SAAS,EAAE;gBAC/B,iBAAiB,CAAC,SAAS,EAAE;gBAC7B,cAAc,CAAC,SAAS,EAAE;aAC3B,CAAC,CAAC;YACH,SAAS,GAAG;gBACV,CAAC,EAAE,IAAI;gBACP,CAAC,EAAE,IAAI;gBACP,KAAK,EAAE,IAAI,GAAG,IAAI;gBAClB,MAAM,EAAE,IAAI,GAAG,IAAI;aACpB,CAAC;SACH;QACD,MAAM,mBAAmB,GAAG,MAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,SAAS,mCAAI,EAAE,CAAC;QACnE,MAAM,cAAc,GAAG,IAAA,cAAK,EAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YACzD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,uCACK,SAAS,KACZ,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAE,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAS,CAAC,CAAC,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,IACxG;QACJ,CAAC,CAAC,CAAC;QACH,uCACK,UAAU,KACb,KAAK,EAAE,UAAqD,EAC5D,SAAS,EACT,EAAE,EAAE,IAAI,CAAC,cAAc,EACvB,EAAE,EAAE,IAAI,CAAC,cAAc,IACvB;IACJ,CAAC;IAES,aAAa;;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACjD,MAAA,IAAI,CAAC,gBAAgB,0CAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAES,aAAa;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,mBAAmB,GAAG,aAAa,IAAI,IAAI,CAAC;QAElD,MAAM,EACJ,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EAChB,GAAG,IAAA,8BAAsB,EAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE/C,IACE,CAAC,UAAU;YACX,CAAC,UAAU;YACX,CAAC,aAAa;YACd,CAAC,aAAa;YACd,CAAC,WAAW;YACZ,CAAC,cAAc;YACf,CAAC,eAAe;YAChB,CAAC,mBAAmB;YACpB,CAAC,mBAAmB;YACpB,CAAC,eAAe;YAChB,CAAC,mBAAmB,EACpB;YACA,OAAO;SACR;QAED,IAAA,2CAAgC,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,+BAAiB,CAAC,CAAC;QAC/F,IAAA,2CAAgC,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,6BAAgB,CAAC,CAAC;QAC7F,IAAA,2CAAgC,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,4BAAY,CAAC,CAAC;QAErF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5E,MAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;YACxB,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,mBAAmB;gBACzB,OAAO;aACR,CAAC,CAAC;SACJ;QACD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,kBAAkB;gBACxB,OAAO;aACR,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;;AA/NH,oCAgOC;AA/NQ,oBAAO,GAAG,UAAU,CAAC","file":"base-mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkLine, IMarkLineSpec } from './interface';\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport {\n computeClipRange,\n transformLabelAttributes,\n transformState,\n transformStyle,\n getMarkLineProcessInfo\n} from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport type { MarkArcLineAttrs, MarkLineAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkLine as MarkLineComponent, MarkArcLine as MarkArcLineComponent } from '@visactor/vrender-components';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { IMarkerSymbol } from '../interface';\nimport { markerRegression } from '../../../data/transforms/regression';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport { markerFilter } from '../../../data/transforms/marker-filter';\nimport { array } from '@visactor/vutils';\n\nexport abstract class BaseMarkLine extends BaseMarker<IMarkLineSpec> implements IMarkLine {\n static specKey = 'markLine';\n specKey = 'markLine';\n layoutZIndex: number = LayoutZIndex.MarkLine;\n\n // eslint-disable-next-line max-len\n protected abstract _newMarkLineComponent(\n attr: MarkLineAttrs | MarkArcLineAttrs\n ): MarkLineComponent | MarkArcLineComponent;\n protected abstract _computePointsAttr(): any;\n\n static _getMarkerCoordinateType(markerSpec: any): string {\n const { doAngleProcess, doRadiusProcess, doAngRadRad1Process, doRadAngAng1Process, doRadAngProcess } =\n getMarkLineProcessInfo(markerSpec);\n\n if (\n markerSpec.coordinateType === 'polar' ||\n doAngleProcess ||\n doRadiusProcess ||\n doAngRadRad1Process ||\n doRadAngAng1Process ||\n doRadAngProcess\n ) {\n return 'polar';\n }\n return 'cartesian';\n }\n\n protected _createMarkerComponent() {\n const { startSymbol = {} as IMarkerSymbol, endSymbol = {} as IMarkerSymbol } = this._spec as IMarkLineSpec;\n const label = array(this._spec.label ?? {});\n\n const markLineAttrs: MarkLineAttrs | MarkArcLineAttrs = {\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? true,\n hover: this._spec.interactive ?? true,\n select: this._spec.interactive ?? true,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ],\n center: {\n x: 0,\n y: 0\n },\n radius: 0,\n startAngle: 0,\n endAngle: 0,\n lineStyle: transformStyle(\n transformToGraphic(this._spec.line?.style),\n this._markerData,\n this._markAttributeContext\n ),\n clipInRange: this._spec.clip ?? false,\n label: label.map(labelItem => {\n return transformLabelAttributes(labelItem, this._markerData, this._markAttributeContext);\n }),\n state: {\n line: transformState(this._spec.line?.state ?? {}, this._markerData, this._markAttributeContext),\n lineStartSymbol: transformState(\n this._spec.startSymbol?.state ?? {},\n this._markerData,\n this._markAttributeContext\n ),\n lineEndSymbol: transformState(this._spec.endSymbol?.state ?? {}, this._markerData, this._markAttributeContext),\n label: label.map(labelItem => {\n return transformState(labelItem.state ?? {}, this._markerData, this._markAttributeContext);\n }),\n labelBackground: label.map(labelItem => {\n return transformState(labelItem.labelBackground?.state ?? {}, this._markerData, this._markAttributeContext);\n })\n },\n animation: this._spec.animation ?? false,\n animationEnter: this._spec.animationEnter,\n animationExit: this._spec.animationExit,\n animationUpdate: this._spec.animationUpdate\n };\n\n if (startSymbol.visible) {\n markLineAttrs.startSymbol = {\n ...startSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(startSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.startSymbol = {\n visible: false\n };\n }\n\n if (endSymbol.visible) {\n markLineAttrs.endSymbol = {\n ...endSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(endSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.endSymbol = {\n visible: false\n };\n }\n const markLine = this._newMarkLineComponent(markLineAttrs);\n return markLine as unknown as IGroup;\n }\n\n protected _getUpdateMarkerAttrs() {\n const spec = this._spec;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const pointsAttr = this._computePointsAttr();\n\n const seriesData = relativeSeries.getViewData().latestData;\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n let limitRect;\n if (spec.clip || array(spec.label).some(labelCfg => labelCfg?.confine)) {\n const { minX, maxX, minY, maxY } = 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 const markerComponentAttr = this._markerComponent?.attribute ?? {};\n const prevLabelAttrs = array(markerComponentAttr.label);\n const specLabels = array(this._spec.label);\n\n const labelAttrs = prevLabelAttrs.map((prevLabel, index) => {\n const specLabel = specLabels[index] || {};\n return {\n ...prevLabel,\n text: specLabel.formatMethod ? (specLabel.formatMethod(dataPoints, seriesData) as any) : prevLabel?.text\n };\n });\n return {\n ...pointsAttr,\n label: labelAttrs as MarkLineComponent['attribute']['label'],\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n };\n }\n\n protected _markerLayout() {\n const updateAttrs = this._getUpdateMarkerAttrs();\n this._markerComponent?.setAttributes(updateAttrs);\n }\n\n protected _initDataView(): void {\n const spec = this._spec;\n const isCoordinateProcess = 'coordinates' in spec;\n\n const {\n doXProcess,\n doYProcess,\n doXYY1Process,\n doYXX1Process,\n doXYProcess,\n doAngleProcess,\n doRadiusProcess,\n doAngRadRad1Process,\n doRadAngAng1Process,\n doRadAngProcess\n } = getMarkLineProcessInfo(spec);\n this._markerData = this._getRelativeDataView();\n\n if (\n !doXProcess &&\n !doYProcess &&\n !doXYY1Process &&\n !doYXX1Process &&\n !doXYProcess &&\n !doAngleProcess &&\n !doRadiusProcess &&\n !doAngRadRad1Process &&\n !doRadAngAng1Process &&\n !doRadAngProcess &&\n !isCoordinateProcess\n ) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerFilter', markerFilter);\n\n const { options, needAggr, needRegr, processData } = this._computeOptions();\n\n const data = new DataView(this._option.dataSet);\n data.parse([processData], {\n type: 'dataview'\n });\n if (needAggr) {\n data.transform({\n type: 'markerAggregation',\n options\n });\n }\n if (needRegr) {\n data.transform({\n type: 'markerRegression',\n options\n });\n }\n\n data.transform({\n type: 'markerFilter',\n options: this._getAllRelativeSeries()\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n"]}
@@ -32,7 +32,7 @@ class CartesianMarkLine extends base_mark_line_1.BaseMarkLine {
32
32
  };
33
33
  }
34
34
  _markerLayout() {
35
- var _a, _b, _c, _d, _e, _f, _g, _h;
35
+ var _a, _b, _c, _d;
36
36
  const updateAttrs = this._getUpdateMarkerAttrs();
37
37
  if ("type-step" === this._spec.type) {
38
38
  const startRelativeSeries = this._startRelativeSeries, endRelativeSeries = this._endRelativeSeries, {multiSegment: multiSegment, mainSegmentIndex: mainSegmentIndex} = this._spec.line || {}, {connectDirection: connectDirection, expandDistance: expandDistance = 0} = this._spec;
@@ -47,40 +47,46 @@ class CartesianMarkLine extends base_mark_line_1.BaseMarkLine {
47
47
  expandDistanceValue = Number(expandDistance.substring(0, expandDistance.length - 1)) * regionWidth / 100;
48
48
  }
49
49
  } else expandDistanceValue = expandDistance;
50
- const {points: points, label: label, limitRect: limitRect} = updateAttrs, joinPoints = (0,
51
- util_1.getInsertPoints)(points[0], points[1], connectDirection, expandDistanceValue);
50
+ const {points: points, limitRect: limitRect} = updateAttrs, joinPoints = (0, util_1.getInsertPoints)(points[0], points[1], connectDirection, expandDistanceValue);
52
51
  let labelPositionAttrs;
53
52
  labelPositionAttrs = multiSegment && (0, vutils_1.isValid)(mainSegmentIndex) ? {
54
53
  position: "middle",
55
- autoRotate: !1,
56
- refX: 0,
57
- refY: 0
58
- } : Object.assign(Object.assign({
54
+ autoRotate: !1
55
+ } : Object.assign({
59
56
  position: "start",
60
57
  autoRotate: !1
61
- }, (0, util_1.getTextOffset)(points[0], points[1], connectDirection, expandDistanceValue)), {
62
- refX: 0,
63
- refY: 0
64
- }), (0, vutils_1.isValidNumber)(null === (_a = this._spec.label) || void 0 === _a ? void 0 : _a.refX) && (labelPositionAttrs.refX += this._spec.label.refX),
65
- (0, vutils_1.isValidNumber)(null === (_b = this._spec.label) || void 0 === _b ? void 0 : _b.refY) && (labelPositionAttrs.refY += this._spec.label.refY),
66
- (0, vutils_1.isValidNumber)(null === (_c = this._spec.label) || void 0 === _c ? void 0 : _c.dx) && (labelPositionAttrs.dx = (labelPositionAttrs.dx || 0) + this._spec.label.dx),
67
- (0, vutils_1.isValidNumber)(null === (_d = this._spec.label) || void 0 === _d ? void 0 : _d.dy) && (labelPositionAttrs.dy = (labelPositionAttrs.dy || 0) + this._spec.label.dy);
68
- const markerComponentAttr = null !== (_f = null === (_e = this._markerComponent) || void 0 === _e ? void 0 : _e.attribute) && void 0 !== _f ? _f : {};
69
- null === (_g = this._markerComponent) || void 0 === _g || _g.setAttributes({
58
+ }, (0, util_1.getTextOffset)(points[0], points[1], connectDirection, expandDistanceValue));
59
+ const markerComponentAttr = null !== (_b = null === (_a = this._markerComponent) || void 0 === _a ? void 0 : _a.attribute) && void 0 !== _b ? _b : {}, prevLabelAttrs = (0,
60
+ vutils_1.array)(markerComponentAttr.label), updateLabels = (0, vutils_1.array)(updateAttrs.label), labelsInSpec = (0,
61
+ vutils_1.array)(this._spec.label);
62
+ null === (_c = this._markerComponent) || void 0 === _c || _c.setAttributes({
70
63
  points: multiSegment ? [ [ joinPoints[0], joinPoints[1] ], [ joinPoints[1], joinPoints[2] ], [ joinPoints[2], joinPoints[3] ] ] : joinPoints,
71
- label: Object.assign(Object.assign(Object.assign({}, label), labelPositionAttrs), {
72
- textStyle: Object.assign(Object.assign({}, markerComponentAttr.label.textStyle), {
73
- textAlign: "center",
74
- textBaseline: "middle"
75
- })
76
- }),
64
+ label: updateLabels.map(((labelItem, index) => {
65
+ var _a, _b, _c, _d;
66
+ let refX = 0, refY = 0, dx = null !== (_a = labelPositionAttrs.dx) && void 0 !== _a ? _a : 0, dy = null !== (_b = labelPositionAttrs.dy) && void 0 !== _b ? _b : 0;
67
+ const labelSpec = null !== (_c = labelsInSpec[index]) && void 0 !== _c ? _c : labelsInSpec[0];
68
+ return (0, vutils_1.isValidNumber)(null == labelSpec ? void 0 : labelSpec.refX) && (refX += labelSpec.refX),
69
+ (0, vutils_1.isValidNumber)(null == labelSpec ? void 0 : labelSpec.refY) && (refY += labelSpec.refY),
70
+ (0, vutils_1.isValidNumber)(null == labelSpec ? void 0 : labelSpec.dx) && (dx += labelSpec.dx),
71
+ (0, vutils_1.isValidNumber)(null == labelSpec ? void 0 : labelSpec.dy) && (dy += labelSpec.dy),
72
+ Object.assign(Object.assign(Object.assign({}, labelItem), labelPositionAttrs), {
73
+ refX: refX,
74
+ refY: refY,
75
+ dx: dx,
76
+ dy: dy,
77
+ textStyle: Object.assign(Object.assign({}, null === (_d = prevLabelAttrs[index]) || void 0 === _d ? void 0 : _d.textStyle), {
78
+ textAlign: "center",
79
+ textBaseline: "middle"
80
+ })
81
+ });
82
+ })),
77
83
  limitRect: limitRect,
78
84
  multiSegment: multiSegment,
79
85
  mainSegmentIndex: mainSegmentIndex,
80
86
  dx: this._layoutOffsetX,
81
87
  dy: this._layoutOffsetY
82
88
  });
83
- } else null === (_h = this._markerComponent) || void 0 === _h || _h.setAttributes(updateAttrs);
89
+ } else null === (_d = this._markerComponent) || void 0 === _d || _d.setAttributes(updateAttrs);
84
90
  }
85
91
  _computeOptions() {
86
92
  let options, processData = this._getRelativeDataView(), needAggr = !0, needRegr = !1;
@@ -136,13 +142,13 @@ class CartesianMarkLine extends base_mark_line_1.BaseMarkLine {
136
142
  }).transform({
137
143
  type: "markerAggregation",
138
144
  options: options
139
- }), spec.process && "x" in spec.process && (options = [ this._processSpecByDims([ {
145
+ }), spec.process && (0, vutils_1.isValid)(spec.process.x) && (options = [ this._processSpecByDims([ {
140
146
  dim: "x",
141
147
  specValue: spec.process.x
142
- } ]) ], needAggr = !0), spec.process && "y" in spec.process && (options = options = [ this._processSpecByDims([ {
148
+ } ]) ], needAggr = !0), spec.process && (0, vutils_1.isValid)(spec.process.y) && (options = options = [ this._processSpecByDims([ {
143
149
  dim: "y",
144
150
  specValue: spec.process.y
145
- } ]) ], needAggr = !0), spec.process && "xy" in spec.process) {
151
+ } ]) ], needAggr = !0), spec.process && (0, vutils_1.isValid)(spec.process.xy)) {
146
152
  const {xField: xField, yField: yField} = relativeSeries.getSpec();
147
153
  options = {
148
154
  fieldX: xField,