@visactor/vchart 1.12.2-alpha.2 → 1.12.2-alpha.3

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 (81) hide show
  1. package/build/es5/index.js +2 -2
  2. package/build/index.js +283 -206
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/config.js +2 -2
  6. package/cjs/animation/config.js.map +1 -1
  7. package/cjs/animation/utils.js +5 -4
  8. package/cjs/animation/utils.js.map +1 -1
  9. package/cjs/chart/base/base-chart.js +1 -1
  10. package/cjs/chart/base/base-chart.js.map +1 -1
  11. package/cjs/chart/sankey/sankey-transformer.js +2 -1
  12. package/cjs/chart/sankey/sankey-transformer.js.map +1 -1
  13. package/cjs/compile/compilable-base.js +2 -1
  14. package/cjs/compile/util.js +1 -2
  15. package/cjs/component/axis/cartesian/linear-axis.js +12 -9
  16. package/cjs/component/axis/cartesian/linear-axis.js.map +1 -1
  17. package/cjs/component/axis/interface/spec.d.ts +1 -1
  18. package/cjs/component/axis/interface/spec.js.map +1 -1
  19. package/cjs/component/axis/mixin/linear-axis-mixin.d.ts +2 -1
  20. package/cjs/component/axis/mixin/linear-axis-mixin.js +15 -25
  21. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  22. package/cjs/component/axis/mixin/util/break-data.js +1 -1
  23. package/cjs/component/axis/mixin/util/break-data.js.map +1 -1
  24. package/cjs/component/brush/brush.js +6 -2
  25. package/cjs/component/brush/brush.js.map +1 -1
  26. package/cjs/component/brush/interface.d.ts +1 -0
  27. package/cjs/component/brush/interface.js.map +1 -1
  28. package/cjs/component/data-zoom/data-filter-base-component.js +3 -1
  29. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  30. package/cjs/component/indicator/indicator.js +29 -16
  31. package/cjs/component/indicator/indicator.js.map +1 -1
  32. package/cjs/core/index.d.ts +1 -1
  33. package/cjs/core/index.js +1 -1
  34. package/cjs/core/index.js.map +1 -1
  35. package/cjs/scale/global-scale.js +2 -0
  36. package/cjs/scale/global-scale.js.map +1 -1
  37. package/cjs/series/bar/bar.js +3 -1
  38. package/cjs/series/bar/bar.js.map +1 -1
  39. package/cjs/series/sankey/interface.d.ts +1 -0
  40. package/cjs/series/sankey/interface.js.map +1 -1
  41. package/cjs/series/sankey/sankey.js +2 -1
  42. package/cjs/series/sankey/sankey.js.map +1 -1
  43. package/esm/animation/config.js +2 -2
  44. package/esm/animation/config.js.map +1 -1
  45. package/esm/animation/utils.js +1 -1
  46. package/esm/animation/utils.js.map +1 -1
  47. package/esm/chart/base/base-chart.js +1 -1
  48. package/esm/chart/base/base-chart.js.map +1 -1
  49. package/esm/chart/sankey/sankey-transformer.js +2 -1
  50. package/esm/chart/sankey/sankey-transformer.js.map +1 -1
  51. package/esm/compile/compilable-base.js +2 -1
  52. package/esm/compile/util.js +1 -2
  53. package/esm/component/axis/cartesian/linear-axis.js +13 -10
  54. package/esm/component/axis/cartesian/linear-axis.js.map +1 -1
  55. package/esm/component/axis/interface/spec.d.ts +1 -1
  56. package/esm/component/axis/interface/spec.js.map +1 -1
  57. package/esm/component/axis/mixin/linear-axis-mixin.d.ts +2 -1
  58. package/esm/component/axis/mixin/linear-axis-mixin.js +15 -25
  59. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  60. package/esm/component/axis/mixin/util/break-data.js +1 -1
  61. package/esm/component/axis/mixin/util/break-data.js.map +1 -1
  62. package/esm/component/brush/brush.js +6 -2
  63. package/esm/component/brush/brush.js.map +1 -1
  64. package/esm/component/brush/interface.d.ts +1 -0
  65. package/esm/component/brush/interface.js.map +1 -1
  66. package/esm/component/data-zoom/data-filter-base-component.js +1 -1
  67. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  68. package/esm/component/indicator/indicator.js +29 -16
  69. package/esm/component/indicator/indicator.js.map +1 -1
  70. package/esm/core/index.d.ts +1 -1
  71. package/esm/core/index.js +1 -1
  72. package/esm/core/index.js.map +1 -1
  73. package/esm/scale/global-scale.js +1 -0
  74. package/esm/scale/global-scale.js.map +1 -1
  75. package/esm/series/bar/bar.js +1 -1
  76. package/esm/series/bar/bar.js.map +1 -1
  77. package/esm/series/sankey/interface.d.ts +1 -0
  78. package/esm/series/sankey/interface.js.map +1 -1
  79. package/esm/series/sankey/sankey.js +2 -1
  80. package/esm/series/sankey/sankey.js.map +1 -1
  81. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart/sankey/sankey-transformer.ts"],"names":[],"mappings":";;;AACA,kCAAmD;AAGnD,MAAa,0BAEX,SAAQ,+BAA2B;IACzB,qBAAqB,CAAC,IAAO;QACrC,MAAM,MAAM,mCACP,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,KACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,EAE7B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,YAAY,EAAE,IAAI,CAAC,YAAY,EAE/B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EAEjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GACxB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAO;QACnB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAjDD,gEAiDC","file":"sankey-transformer.js","sourcesContent":["import type { ISeriesSpec } from '../../typings';\nimport { BaseChartSpecTransformer } from '../base';\nimport type { ISankeyChartSpec } from './interface';\n\nexport class SankeyChartSpecTransformer<\n T extends ISankeyChartSpec = ISankeyChartSpec\n> extends BaseChartSpecTransformer<T> {\n protected _getDefaultSeriesSpec(spec: T): any {\n const series: any = {\n ...super._getDefaultSeriesSpec(spec),\n categoryField: spec.categoryField,\n valueField: spec.valueField,\n sourceField: spec.sourceField,\n targetField: spec.targetField,\n\n direction: spec.direction,\n nodeAlign: spec.nodeAlign,\n nodeGap: spec.nodeGap,\n nodeWidth: spec.nodeWidth,\n linkWidth: spec.linkWidth,\n minStepWidth: spec.minStepWidth,\n minNodeHeight: spec.minNodeHeight,\n minLinkHeight: spec.minLinkHeight,\n dropIsolatedNode: spec.dropIsolatedNode,\n nodeHeight: spec.nodeHeight,\n linkHeight: spec.linkHeight,\n equalNodeHeight: spec.equalNodeHeight,\n linkOverlap: spec.linkOverlap,\n iterations: spec.iterations,\n nodeKey: spec.nodeKey,\n linkSortBy: spec.linkSortBy,\n nodeSortBy: spec.nodeSortBy,\n setNodeLayer: spec.setNodeLayer,\n\n node: spec.node,\n link: spec.link,\n label: spec.label,\n\n emphasis: spec.emphasis\n };\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = spec[seriesType];\n }\n\n return series;\n }\n\n transformSpec(spec: T): void {\n super.transformSpec(spec);\n this.transformSeriesSpec(spec);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/chart/sankey/sankey-transformer.ts"],"names":[],"mappings":";;;AACA,kCAAmD;AAGnD,MAAa,0BAEX,SAAQ,+BAA2B;IACzB,qBAAqB,CAAC,IAAO;QACrC,MAAM,MAAM,mCACP,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,KACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,EAE7B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,YAAY,EAAE,IAAI,CAAC,YAAY,EAE/B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EAEjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,GACtB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAO;QACnB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAlDD,gEAkDC","file":"sankey-transformer.js","sourcesContent":["import type { ISeriesSpec } from '../../typings';\nimport { BaseChartSpecTransformer } from '../base';\nimport type { ISankeyChartSpec } from './interface';\n\nexport class SankeyChartSpecTransformer<\n T extends ISankeyChartSpec = ISankeyChartSpec\n> extends BaseChartSpecTransformer<T> {\n protected _getDefaultSeriesSpec(spec: T): any {\n const series: any = {\n ...super._getDefaultSeriesSpec(spec),\n categoryField: spec.categoryField,\n valueField: spec.valueField,\n sourceField: spec.sourceField,\n targetField: spec.targetField,\n\n direction: spec.direction,\n nodeAlign: spec.nodeAlign,\n nodeGap: spec.nodeGap,\n nodeWidth: spec.nodeWidth,\n linkWidth: spec.linkWidth,\n minStepWidth: spec.minStepWidth,\n minNodeHeight: spec.minNodeHeight,\n minLinkHeight: spec.minLinkHeight,\n dropIsolatedNode: spec.dropIsolatedNode,\n nodeHeight: spec.nodeHeight,\n linkHeight: spec.linkHeight,\n equalNodeHeight: spec.equalNodeHeight,\n linkOverlap: spec.linkOverlap,\n iterations: spec.iterations,\n nodeKey: spec.nodeKey,\n linkSortBy: spec.linkSortBy,\n nodeSortBy: spec.nodeSortBy,\n setNodeLayer: spec.setNodeLayer,\n\n node: spec.node,\n link: spec.link,\n label: spec.label,\n\n emphasis: spec.emphasis,\n inverse: spec.inverse\n };\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = spec[seriesType];\n }\n\n return series;\n }\n\n transformSpec(spec: T): void {\n super.transformSpec(spec);\n this.transformSeriesSpec(spec);\n }\n}\n"]}
@@ -20,4 +20,5 @@ class CompilableBase {
20
20
  }
21
21
  }
22
22
 
23
- exports.CompilableBase = CompilableBase;
23
+ exports.CompilableBase = CompilableBase;
24
+ //# sourceMappingURL=compilable-base.js.map
@@ -35,5 +35,4 @@ function toRenderMode(mode) {
35
35
  return "browser";
36
36
  }
37
37
 
38
- exports.toRenderMode = toRenderMode;
39
- //# sourceMappingURL=util.js.map
38
+ exports.toRenderMode = toRenderMode;
@@ -29,19 +29,22 @@ class CartesianLinearAxis extends axis_1.CartesianAxis {
29
29
  });
30
30
  }
31
31
  _getUpdateAttribute(ignoreGrid) {
32
- var _a;
32
+ var _a, _b;
33
33
  const attrs = super._getUpdateAttribute(ignoreGrid);
34
- if (!(0, util_1.isZAxis)(this._orient) && (null === (_a = this._spec.breaks) || void 0 === _a ? void 0 : _a.length) && this._break) {
35
- const {width: width, height: height} = this.getLayoutRect(), axisLength = (0, util_1.isXAxis)(this._orient) ? width : height;
36
- attrs.breaks = this._spec.breaks.map((obj => {
37
- const {range: range, breakSymbol: breakSymbol, gap: gap = 6} = obj, index = this._break.domain.findIndex((domainRange => range[0] === domainRange[0] && range[1] === domainRange[1])), ratio = 1 - (this._break.scope[index][0] + this._break.scope[index][1]) / 2;
34
+ if (!(0, util_1.isZAxis)(this._orient) && (null === (_b = null === (_a = this._break) || void 0 === _a ? void 0 : _a.breaks) || void 0 === _b ? void 0 : _b.length)) {
35
+ const {width: width, height: height} = this.getLayoutRect(), isX = (0, util_1.isXAxis)(this._orient), axisLength = isX ? width : height;
36
+ attrs.breaks = this._break.breaks.map((obj => {
37
+ const {range: range, breakSymbol: breakSymbol, gap: gap = 6} = obj, ratio = this.valueToPosition((range[0] + range[1]) / 2) / axisLength;
38
38
  let gapRatio;
39
- return gapRatio = (0, util_2.isPercent)(gap) ? Number(gap.substring(0, gap.length - 1)) / 100 : gap / axisLength,
40
- {
39
+ gapRatio = (0, util_2.isPercent)(gap) ? Number(gap.substring(0, gap.length - 1)) / 100 : gap / axisLength;
40
+ const symbolAngle = (0, vutils_1.isValidNumber)(breakSymbol.angle) ? breakSymbol.angle : isX ? 60 : 15;
41
+ return {
41
42
  range: [ ratio - gapRatio / 2, ratio + gapRatio / 2 ],
42
- breakSymbol: Object.assign({
43
+ breakSymbol: Object.assign(Object.assign({
43
44
  visible: !0
44
- }, breakSymbol),
45
+ }, breakSymbol), {
46
+ angle: symbolAngle * Math.PI / 180
47
+ }),
45
48
  rawRange: range
46
49
  };
47
50
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis/cartesian/linear-axis.ts"],"names":[],"mappings":"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","file":"linear-axis.js","sourcesContent":["import type { LogScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { LinearScale } from '@visactor/vscale';\nimport { CartesianAxis } from './axis';\nimport { isValid, last, mixin } from '@visactor/vutils';\nimport type { IAxisHelper, ICartesianLinearAxisSpec } from './interface';\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { LinearAxisMixin } from '../mixin/linear-axis-mixin';\nimport { Factory } from '../../../core/factory';\nimport { registerAxis } from '../base-axis';\nimport { registerLineAxis, registerLineGrid } from '@visactor/vgrammar-core';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { continuousTicks, ICartesianTickDataOpt } from '@visactor/vrender-components';\nimport { isXAxis, isZAxis } from './util';\nimport { combineArray, isPercent } from '../../../util';\n\nexport interface CartesianLinearAxis<T extends ICartesianLinearAxisSpec = ICartesianLinearAxisSpec>\n extends Pick<\n LinearAxisMixin,\n | 'setExtraAttrFromSpec'\n | 'computeLinearDomain'\n | 'valueToPosition'\n | 'setScaleNice'\n | '_domain'\n | 'transformScaleDomain'\n | 'setExtendDomain'\n | '_break'\n >,\n CartesianAxis<T> {}\n\nexport class CartesianLinearAxis<\n T extends ICartesianLinearAxisSpec = ICartesianLinearAxisSpec\n> extends CartesianAxis<T> {\n static type = ComponentTypeEnum.cartesianLinearAxis;\n type = ComponentTypeEnum.cartesianLinearAxis;\n\n static specKey = 'axes';\n\n protected _zero: boolean = true;\n protected _nice: boolean = true;\n protected _extend: { [key: string]: number } = {};\n\n protected _scale: LinearScale | LogScale = new LinearScale();\n protected declare _scales: LinearScale[] | LogScale[];\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setExtraAttrFromSpec();\n }\n\n /**\n * @override\n */\n protected initScales() {\n super.initScales();\n const range = [0, 1];\n if (isValid(this._domain?.min)) {\n range[0] = this._domain.min;\n }\n if (isValid(this._domain?.max)) {\n range[1] = this._domain.max;\n }\n this._scale.domain(range);\n // this.setScaleNice();\n }\n\n protected _tickTransformOption() {\n return {\n ...super._tickTransformOption(),\n breakData: this._spec.breaks?.length ? () => this._break : null\n } as ICartesianTickDataOpt;\n }\n\n protected _getUpdateAttribute(ignoreGrid: boolean) {\n const attrs = super._getUpdateAttribute(ignoreGrid);\n\n // get axis break configuration\n if (!isZAxis(this._orient) && this._spec.breaks?.length && this._break) {\n const { width, height } = this.getLayoutRect();\n const isX = isXAxis(this._orient);\n const axisLength = isX ? width : height;\n\n attrs.breaks = this._spec.breaks.map(obj => {\n const { range, breakSymbol, gap = 6 } = obj;\n const index = this._break.domain.findIndex(\n domainRange => range[0] === domainRange[0] && range[1] === domainRange[1]\n );\n const ratio = 1 - (this._break.scope[index][0] + this._break.scope[index][1]) / 2;\n let gapRatio;\n if (isPercent(gap)) {\n gapRatio = Number(gap.substring(0, gap.length - 1)) / 100;\n } else {\n gapRatio = (gap as number) / axisLength;\n }\n return {\n range: [ratio - gapRatio / 2, ratio + gapRatio / 2],\n breakSymbol: {\n visible: true,\n ...breakSymbol\n },\n rawRange: range\n };\n });\n }\n\n return attrs;\n }\n\n protected getNewScaleRange() {\n let newRange = super.getNewScaleRange();\n if (this._spec.breaks?.length && this._break?.scope) {\n // get axis breaks\n newRange = combineArray(this._break.scope).map(val => newRange[0] + (last(newRange) - newRange[0]) * val);\n }\n\n return newRange;\n }\n\n protected computeDomain(data: { min: number; max: number; values: any[] }[]): number[] {\n return this.computeLinearDomain(data);\n }\n\n protected axisHelper() {\n const helper: IAxisHelper = super.axisHelper();\n helper.setExtendDomain = this.setExtendDomain.bind(this);\n helper.valueToPosition = this.valueToPosition.bind(this);\n return helper;\n }\n\n protected registerTicksTransform() {\n const name = `${this.type}-ticks`;\n registerDataSetInstanceTransform(this._option.dataSet, name, continuousTicks);\n\n return name;\n }\n}\n\nmixin(CartesianLinearAxis, LinearAxisMixin);\n\nexport const registerCartesianLinearAxis = () => {\n registerLineAxis();\n registerLineGrid();\n registerAxis();\n Factory.registerComponent(CartesianLinearAxis.type, CartesianLinearAxis);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/axis/cartesian/linear-axis.ts"],"names":[],"mappings":"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","file":"linear-axis.js","sourcesContent":["import type { LogScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { LinearScale } from '@visactor/vscale';\nimport { CartesianAxis } from './axis';\nimport { isValid, isValidNumber, last, mixin } from '@visactor/vutils';\nimport type { IAxisHelper, ICartesianLinearAxisSpec } from './interface';\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { LinearAxisMixin } from '../mixin/linear-axis-mixin';\nimport { Factory } from '../../../core/factory';\nimport { registerAxis } from '../base-axis';\nimport { registerLineAxis, registerLineGrid } from '@visactor/vgrammar-core';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { continuousTicks, ICartesianTickDataOpt } from '@visactor/vrender-components';\nimport { isXAxis, isZAxis } from './util';\nimport { combineArray, isPercent } from '../../../util';\n\nexport interface CartesianLinearAxis<T extends ICartesianLinearAxisSpec = ICartesianLinearAxisSpec>\n extends Pick<\n LinearAxisMixin,\n | 'setExtraAttrFromSpec'\n | 'computeLinearDomain'\n | 'valueToPosition'\n | 'setScaleNice'\n | '_domain'\n | 'transformScaleDomain'\n | 'setExtendDomain'\n | '_break'\n >,\n CartesianAxis<T> {}\n\nexport class CartesianLinearAxis<\n T extends ICartesianLinearAxisSpec = ICartesianLinearAxisSpec\n> extends CartesianAxis<T> {\n static type = ComponentTypeEnum.cartesianLinearAxis;\n type = ComponentTypeEnum.cartesianLinearAxis;\n\n static specKey = 'axes';\n\n protected _zero: boolean = true;\n protected _nice: boolean = true;\n protected _extend: { [key: string]: number } = {};\n\n protected _scale: LinearScale | LogScale = new LinearScale();\n protected declare _scales: LinearScale[] | LogScale[];\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setExtraAttrFromSpec();\n }\n\n /**\n * @override\n */\n protected initScales() {\n super.initScales();\n const range = [0, 1];\n if (isValid(this._domain?.min)) {\n range[0] = this._domain.min;\n }\n if (isValid(this._domain?.max)) {\n range[1] = this._domain.max;\n }\n this._scale.domain(range);\n // this.setScaleNice();\n }\n\n protected _tickTransformOption() {\n return {\n ...super._tickTransformOption(),\n breakData: this._spec.breaks?.length ? () => this._break : null\n } as ICartesianTickDataOpt;\n }\n\n protected _getUpdateAttribute(ignoreGrid: boolean) {\n const attrs = super._getUpdateAttribute(ignoreGrid);\n\n // get axis break configuration\n if (!isZAxis(this._orient) && this._break?.breaks?.length) {\n const { width, height } = this.getLayoutRect();\n const isX = isXAxis(this._orient);\n const axisLength = isX ? width : height;\n\n attrs.breaks = this._break.breaks.map(obj => {\n const { range, breakSymbol, gap = 6 } = obj;\n const position = this.valueToPosition((range[0] + range[1]) / 2);\n const ratio = position / axisLength;\n\n let gapRatio;\n if (isPercent(gap)) {\n gapRatio = Number(gap.substring(0, gap.length - 1)) / 100;\n } else {\n gapRatio = (gap as number) / axisLength;\n }\n const symbolAngle = isValidNumber(breakSymbol.angle) ? breakSymbol.angle : isX ? 60 : 15;\n\n return {\n range: [ratio - gapRatio / 2, ratio + gapRatio / 2],\n breakSymbol: {\n visible: true,\n ...breakSymbol,\n angle: (symbolAngle * Math.PI) / 180\n },\n rawRange: range\n };\n });\n }\n\n return attrs;\n }\n\n protected getNewScaleRange() {\n let newRange = super.getNewScaleRange();\n if (this._spec.breaks?.length && this._break?.scope) {\n // get axis breaks\n newRange = combineArray(this._break.scope).map(val => newRange[0] + (last(newRange) - newRange[0]) * val);\n }\n\n return newRange;\n }\n\n protected computeDomain(data: { min: number; max: number; values: any[] }[]): number[] {\n return this.computeLinearDomain(data);\n }\n\n protected axisHelper() {\n const helper: IAxisHelper = super.axisHelper();\n helper.setExtendDomain = this.setExtendDomain.bind(this);\n helper.valueToPosition = this.valueToPosition.bind(this);\n return helper;\n }\n\n protected registerTicksTransform() {\n const name = `${this.type}-ticks`;\n registerDataSetInstanceTransform(this._option.dataSet, name, continuousTicks);\n\n return name;\n }\n}\n\nmixin(CartesianLinearAxis, LinearAxisMixin);\n\nexport const registerCartesianLinearAxis = () => {\n registerLineAxis();\n registerLineGrid();\n registerAxis();\n Factory.registerComponent(CartesianLinearAxis.type, CartesianLinearAxis);\n};\n"]}
@@ -15,7 +15,7 @@ export interface ICommonAxisSpec extends Omit<IComponentSpec, 'orient' | 'center
15
15
  sampling?: boolean;
16
16
  forceInitTick?: boolean;
17
17
  }
18
- export type ILinearAxisBreakSpec = AxisBreakProps & {
18
+ export type ILinearAxisBreakSpec = Omit<AxisBreakProps, 'rawRange'> & {
19
19
  gap?: number | string;
20
20
  };
21
21
  export interface ILinearAxisSpec {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import { ITextFormatMethod } from './../../../typings/spec/common';\nimport type { AxisBreakProps, AxisItem, AxisItemStateStyle } from '@visactor/vrender-components';\nimport type { IAnimationSpec } from '../../../animation/spec';\nimport type {\n Datum,\n IFormatMethod,\n IPadding,\n IRectMarkSpec,\n IRichTextFormatMethod,\n IRuleMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec,\n StringOrNumber\n} from '../../../typings';\nimport type { IComponentSpec } from '../../base/interface';\nimport type { AxisType, IAxisItem, IBandAxisLayer, ITickCalculationCfg, StyleCallback } from './common';\n\nexport interface ICommonAxisSpec extends Omit<IComponentSpec, 'orient' | 'center'>, IAnimationSpec<string, string> {\n /**\n * 轴类型\n */\n type?: AxisType;\n /**\n * 是否显示坐标轴\n * @default true\n */\n visible?: boolean;\n /**\n * 是否开启反向坐标轴。\n * @default false\n */\n inverse?: boolean;\n /**\n * 轴刻度线配置\n */\n tick?: ITick;\n /**\n * 子刻度线配置\n */\n subTick?: ISubTick;\n\n /**\n * 是否开启动画,默认关闭\n * @default false\n */\n animation?: boolean;\n\n // 交互相关的配置\n /**\n * 是否开启 select 选中交互,默认关闭\n * @default false\n */\n select?: boolean;\n /**\n * 是否开启 hover 悬浮交互,默认关闭\n * @default false\n */\n hover?: boolean;\n\n /**\n * 是否开启轴数据采样,默认开启。\n * 轴采样开启之后,会对轴数据进行采样显示,防止轴数据的重叠。\n * 通过配置 `label.minGap` 可以控制轴标签之间的间距。\n * @default true\n * @since 1.1.0\n */\n sampling?: boolean;\n\n /**\n * 是否强制初始化 tick 数据,仅在 visible 为 false 时生效\n * @default false\n */\n forceInitTick?: boolean;\n}\n\nexport type ILinearAxisBreakSpec = AxisBreakProps & {\n /**\n * 截断标识之间的间距:\n * 1. `number` 为像素值\n * 2. `string` 为百分比相对值,如 '1%'\n * @default 6\n */\n gap?: number | string;\n};\n\nexport interface ILinearAxisSpec {\n // 线性轴数值范围配置\n /** 最小值,**优先级高于 zero,nice** */\n min?: number;\n /** 最大值,**优先级高于 zero,nice** */\n max?: number;\n\n /**\n * 最小值,当且仅当该值小于数据最小值时,才能生效\n * 注意:不建议和配置`min`一起使用\n * @since 1.11.0\n */\n softMin?: number | ((domain: number[]) => number);\n /**\n * 最大值,当且仅当该值大于数据最大值时,才能生效\n * 注意:不建议和配置`max`一起使用\n * @since 1.11.0\n */\n softMax?: number | ((domain: number[]) => number);\n\n /** @deparated 线性轴数值范围配置(已弃用,请使用外层 min/max) */\n range?: {\n /** @deparated 最小值 */\n min?: number;\n /** @deparated 最大值 */\n max?: number;\n };\n\n /**\n * 是否根据数据将轴范围调整到相对规整的数值\n * @default true\n * @description 当配置了 min 和 max,该配置项失效\n * @example 当配置了 max = 999, nice并不会将轴范围优化到1000\n */\n nice?: boolean;\n /**\n * nice效果的类型,是精度优先还是tickCount优先(比如tickCount为2那nice出来的精度就很低)\n * @default undefined('tickCountFirst')\n * @description 不配置就默认是tickCountFirst\n * @example 数据范围是0~6000,如果tickCount为2,那么tickCountFirst出来的range就是[0, 10000], accurateFirst出来的range就是[0, 6000]但10000显示不了\n */\n niceType?: 'tickCountFirst' | 'accurateFirst';\n /**\n * 是否包含0值\n * @default true\n * @description 当配置了 min和 max,该配置项失效\n */\n zero?: boolean;\n /**\n * 轴范围按比例扩展\n * @description 当配置了 min和 max,该配置项失效\n */\n expand?: {\n min?: number;\n max?: number;\n };\n\n /**\n * 连续轴上的 dimension tooltip 数据筛选范围\n * 如果配置为单个数字 d,则筛选区间为 [x0 - d, x0 + d];如果配置为二元组 [d1, d2],则筛选区间为 [x0 + d1, x0 + d2]\n * @since 1.4.0\n */\n tooltipFilterRange?: number | [number, number];\n\n breaks?: ILinearAxisBreakSpec[];\n}\n\nexport interface IBandAxisSpec {\n /**\n * 是否去除 band 轴两端的留白,如果为 true,则两端的 padding 为 0,\n * **并且 bandPadding、paddingInner 和 paddingOuter 的设置将被忽略**。\n * @default false\n * @since 1.7.0\n */\n trimPadding?: boolean;\n /**\n * 同时设置轴的 paddingInner 和 paddingOuter\n * **因为有可能存在多层 scale( xField 设置成了数组,即分组场景),所以支持了数组类型,用于多层 scale 的 bandPadding 配置**\n */\n bandPadding?: number | number[];\n /**\n * band 轴的内边距\n * ** 因为有可能存在多层 scale( xField 设置成了数组,即分组场景),所以支持了数组类型,用于多层 scale 的 paddingInner 配置**\n * @default 0.1\n */\n paddingInner?: number | number[];\n /**\n * band 轴的外边距\n * ** 因为有可能存在多层 scale( xField 设置成了数组,即分组场景),所以支持了数组类型,用于多层 scale 的 paddingOuter 配置**\n * @default 0.3\n */\n paddingOuter?: number | number[];\n /**\n * 配置离散轴的数值范围\n * @since 1.1.0\n */\n domain?: StringOrNumber[];\n /**\n * `bandPosition` 是一个可选参数,用于指定数据点在 band 轴上的位置。它的含义是确定数据点在 band 轴上的位置偏移量,相对于 band 轴的起始位置。\n * `bandPosition` 的取值范围是从 0 到 1,其中 0 表示数据点位于 band 轴的起始位置,1 表示数据点位于 band 轴的结束位置。\n * @default 0.5\n */\n bandPosition?: number;\n\n /**\n * 当存在多层分组场景时,是否展示所有的分组轴\n * @default false\n * @since 1.9.0\n */\n showAllGroupLayers?: boolean;\n /**\n * 每一层轴的配置\n * layer[0] 为离坐标轴线最近的轴,当且仅当 `showAllGroupLayers` 配置开启生效。\n * @since 1.9.0\n */\n layers?: IBandAxisLayer[];\n}\n// Grid 配置项\nexport interface IGrid extends IAxisItem<IRuleMarkSpec> {\n /**\n * 两个栅格线间的填充色\n */\n alternateColor?: string | string[];\n /**\n * grid 是否与 label 对齐,默认为 true,即对齐,配置为 false 则显示在前后两个刻度中间\n * @default true\n */\n alignWithLabel?: boolean;\n /**\n * 网格线样式,支持回调\n */\n style?: IRuleMarkSpec | StyleCallback<IRuleMarkSpec | undefined>;\n /**\n * 快捷属性,也可以在 `style` 中配置,用于配置网格线的绘制顺序,默认为 50\n * @default 50\n * @since 1.4.0\n */\n zIndex?: number;\n}\n\n// 刻度线配置\nexport interface ITick extends IAxisItem<IRuleMarkSpec>, ITickCalculationCfg {\n /**\n * Length of tick lines\n * 坐标轴刻度线的长度\n * @default 4\n */\n tickSize?: number;\n /**\n * 刻度线朝向,默认朝外(坐标线包围盒外部)\n * @default false\n */\n inside?: boolean;\n /**\n * tick 是否与 label 对齐,默认为 true,即对齐,配置为 false 则显示在前后两个刻度中间\n * @default true\n */\n alignWithLabel?: boolean;\n /**\n * 刻度线样式设置,支持回调\n */\n style?: IRuleMarkSpec | StyleCallback<IRuleMarkSpec | undefined>;\n /**\n * 刻度线不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<IRuleMarkSpec>;\n /**\n * 用于 tick 的数据过滤\n * @since 1.1.0\n */\n dataFilter?: (data: AxisItem[]) => AxisItem[];\n}\n\n// 子刻度线配置\nexport interface ISubTick extends IAxisItem<IRuleMarkSpec> {\n /**\n * TODO: 考虑下 log 轴,自刻度线之间的间距是不均匀的问题\n * 子刻度个数\n */\n tickCount?: number;\n /**\n * 子刻度线朝向,默认朝外(坐标线包围盒外部)\n * @default false\n */\n inside?: boolean;\n /** 子刻度线的长度 */\n tickSize?: number;\n /**\n * 子刻度线不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<IRuleMarkSpec>;\n}\n\n// 轴标签配置\nexport interface ILabel extends IAxisItem<ITextMarkSpec> {\n /**\n * 文本类型\n * @deprecated 1.10.0 版本后,在 formatMethod 中返回 { type: 'rich', text: xxx}\n * */\n type?: 'text' | 'rich';\n /**\n * 轴标签内容格式化函数\n * @param text 原始标签文本值\n * @param datum 图形数据\n * @returns 格式化后的文本\n */\n formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum]>;\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n /** 标签同 tick 之间的间距 */\n space?: number;\n /**\n * 标签朝向,默认朝外(坐标线包围盒外部)\n * @default false\n */\n inside?: boolean;\n /**\n * 标签之间的最小间距(单位为像素),仅当轴采样开始时生效(`sampling: true`)。\n * 该配置会影响轴采样的结果。\n */\n minGap?: number;\n /**\n * 文本样式设置\n */\n style?: ITextMarkSpec | StyleCallback<ITextMarkSpec | undefined>;\n /**\n * label 不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<ITextMarkSpec>;\n /**\n * 用于 label 的数据过滤\n * @since 1.1.0\n */\n dataFilter?: (data: AxisItem[], layer: number) => AxisItem[];\n}\n\n// 轴线配置\nexport interface IDomainLine extends IAxisItem<IRuleMarkSpec> {\n /**\n * domainLine 在不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<IRuleMarkSpec>;\n}\n\n// 轴标题配置\nexport interface ITitle extends IAxisItem<ITextMarkSpec> {\n /**\n * 文本类型\n * @deprecated 1.10.0 版本后,在 formatMethod 中返回 { type: 'rich', text: xxx}\n * */\n type?: 'text' | 'rich';\n /**\n * 轴标题内容格式化函数\n * @param text 原始标签文本值\n * @param datum 图形数据\n * @returns 格式化后的文本\n */\n text?: ITextMarkSpec['text'] | ReturnType<IRichTextFormatMethod<[]>>;\n /**\n * 标题的显示位置,直角坐标系默认 'middle';\n * 极坐标系的圆弧轴如果配置了内半径,则默认 'middle',否则 'end'\n */\n position?: 'start' | 'middle' | 'end';\n /**\n * 标题距离坐标轴(轴线、刻度、标签共同构成的包围盒)的距离\n */\n space?: number;\n /**\n * 标题内边距配置\n */\n padding?: IPadding | number | number[];\n /**\n * 标题背景色设置\n */\n background?: IAxisItem<IRectMarkSpec> & {\n /**\n * 背景的交互状态样式配置\n */\n state?: AxisItemStateStyle<Partial<IRectMarkSpec>>;\n };\n /**\n * TODO: 接入富文本\n * 标题 shape 配置\n */\n shape?: IAxisItem<ISymbolMarkSpec> & {\n /**\n * shape 同标题文本之间的间距\n */\n space?: number;\n /**\n * shape 标记的交互状态样式配置\n */\n state?: AxisItemStateStyle<Partial<ISymbolMarkSpec>>;\n };\n /**\n * 标题整体的旋转角度(如果标题配置了 background、shape 等属性的话,需要使用该属性进行整体的配置旋转)。\n */\n angle?: number;\n /**\n * text 文本的交互状态样式配置\n */\n state?: AxisItemStateStyle<Partial<ITextMarkSpec>>;\n}\n"]}
1
+ {"version":3,"sources":["../src/component/axis/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import { ITextFormatMethod } from './../../../typings/spec/common';\nimport type { AxisBreakProps, AxisItem, AxisItemStateStyle } from '@visactor/vrender-components';\nimport type { IAnimationSpec } from '../../../animation/spec';\nimport type {\n Datum,\n IFormatMethod,\n IPadding,\n IRectMarkSpec,\n IRichTextFormatMethod,\n IRuleMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec,\n StringOrNumber\n} from '../../../typings';\nimport type { IComponentSpec } from '../../base/interface';\nimport type { AxisType, IAxisItem, IBandAxisLayer, ITickCalculationCfg, StyleCallback } from './common';\n\nexport interface ICommonAxisSpec extends Omit<IComponentSpec, 'orient' | 'center'>, IAnimationSpec<string, string> {\n /**\n * 轴类型\n */\n type?: AxisType;\n /**\n * 是否显示坐标轴\n * @default true\n */\n visible?: boolean;\n /**\n * 是否开启反向坐标轴。\n * @default false\n */\n inverse?: boolean;\n /**\n * 轴刻度线配置\n */\n tick?: ITick;\n /**\n * 子刻度线配置\n */\n subTick?: ISubTick;\n\n /**\n * 是否开启动画,默认关闭\n * @default false\n */\n animation?: boolean;\n\n // 交互相关的配置\n /**\n * 是否开启 select 选中交互,默认关闭\n * @default false\n */\n select?: boolean;\n /**\n * 是否开启 hover 悬浮交互,默认关闭\n * @default false\n */\n hover?: boolean;\n\n /**\n * 是否开启轴数据采样,默认开启。\n * 轴采样开启之后,会对轴数据进行采样显示,防止轴数据的重叠。\n * 通过配置 `label.minGap` 可以控制轴标签之间的间距。\n * @default true\n * @since 1.1.0\n */\n sampling?: boolean;\n\n /**\n * 是否强制初始化 tick 数据,仅在 visible 为 false 时生效\n * @default false\n */\n forceInitTick?: boolean;\n}\n\nexport type ILinearAxisBreakSpec = Omit<AxisBreakProps, 'rawRange'> & {\n /**\n * 截断标识之间的间距:\n * 1. `number` 为像素值\n * 2. `string` 为百分比相对值,如 '1%'\n * @default 6\n */\n gap?: number | string;\n};\n\nexport interface ILinearAxisSpec {\n // 线性轴数值范围配置\n /** 最小值,**优先级高于 zero,nice** */\n min?: number;\n /** 最大值,**优先级高于 zero,nice** */\n max?: number;\n\n /**\n * 最小值,当且仅当该值小于数据最小值时,才能生效\n * 注意:不建议和配置`min`一起使用\n * @since 1.11.0\n */\n softMin?: number | ((domain: number[]) => number);\n /**\n * 最大值,当且仅当该值大于数据最大值时,才能生效\n * 注意:不建议和配置`max`一起使用\n * @since 1.11.0\n */\n softMax?: number | ((domain: number[]) => number);\n\n /** @deparated 线性轴数值范围配置(已弃用,请使用外层 min/max) */\n range?: {\n /** @deparated 最小值 */\n min?: number;\n /** @deparated 最大值 */\n max?: number;\n };\n\n /**\n * 是否根据数据将轴范围调整到相对规整的数值\n * @default true\n * @description 当配置了 min 和 max,该配置项失效\n * @example 当配置了 max = 999, nice并不会将轴范围优化到1000\n */\n nice?: boolean;\n /**\n * nice效果的类型,是精度优先还是tickCount优先(比如tickCount为2那nice出来的精度就很低)\n * @default undefined('tickCountFirst')\n * @description 不配置就默认是tickCountFirst\n * @example 数据范围是0~6000,如果tickCount为2,那么tickCountFirst出来的range就是[0, 10000], accurateFirst出来的range就是[0, 6000]但10000显示不了\n */\n niceType?: 'tickCountFirst' | 'accurateFirst';\n /**\n * 是否包含0值\n * @default true\n * @description 当配置了 min和 max,该配置项失效\n */\n zero?: boolean;\n /**\n * 轴范围按比例扩展\n * @description 当配置了 min和 max,该配置项失效\n */\n expand?: {\n min?: number;\n max?: number;\n };\n\n /**\n * 连续轴上的 dimension tooltip 数据筛选范围\n * 如果配置为单个数字 d,则筛选区间为 [x0 - d, x0 + d];如果配置为二元组 [d1, d2],则筛选区间为 [x0 + d1, x0 + d2]\n * @since 1.4.0\n */\n tooltipFilterRange?: number | [number, number];\n\n breaks?: ILinearAxisBreakSpec[];\n}\n\nexport interface IBandAxisSpec {\n /**\n * 是否去除 band 轴两端的留白,如果为 true,则两端的 padding 为 0,\n * **并且 bandPadding、paddingInner 和 paddingOuter 的设置将被忽略**。\n * @default false\n * @since 1.7.0\n */\n trimPadding?: boolean;\n /**\n * 同时设置轴的 paddingInner 和 paddingOuter\n * **因为有可能存在多层 scale( xField 设置成了数组,即分组场景),所以支持了数组类型,用于多层 scale 的 bandPadding 配置**\n */\n bandPadding?: number | number[];\n /**\n * band 轴的内边距\n * ** 因为有可能存在多层 scale( xField 设置成了数组,即分组场景),所以支持了数组类型,用于多层 scale 的 paddingInner 配置**\n * @default 0.1\n */\n paddingInner?: number | number[];\n /**\n * band 轴的外边距\n * ** 因为有可能存在多层 scale( xField 设置成了数组,即分组场景),所以支持了数组类型,用于多层 scale 的 paddingOuter 配置**\n * @default 0.3\n */\n paddingOuter?: number | number[];\n /**\n * 配置离散轴的数值范围\n * @since 1.1.0\n */\n domain?: StringOrNumber[];\n /**\n * `bandPosition` 是一个可选参数,用于指定数据点在 band 轴上的位置。它的含义是确定数据点在 band 轴上的位置偏移量,相对于 band 轴的起始位置。\n * `bandPosition` 的取值范围是从 0 到 1,其中 0 表示数据点位于 band 轴的起始位置,1 表示数据点位于 band 轴的结束位置。\n * @default 0.5\n */\n bandPosition?: number;\n\n /**\n * 当存在多层分组场景时,是否展示所有的分组轴\n * @default false\n * @since 1.9.0\n */\n showAllGroupLayers?: boolean;\n /**\n * 每一层轴的配置\n * layer[0] 为离坐标轴线最近的轴,当且仅当 `showAllGroupLayers` 配置开启生效。\n * @since 1.9.0\n */\n layers?: IBandAxisLayer[];\n}\n// Grid 配置项\nexport interface IGrid extends IAxisItem<IRuleMarkSpec> {\n /**\n * 两个栅格线间的填充色\n */\n alternateColor?: string | string[];\n /**\n * grid 是否与 label 对齐,默认为 true,即对齐,配置为 false 则显示在前后两个刻度中间\n * @default true\n */\n alignWithLabel?: boolean;\n /**\n * 网格线样式,支持回调\n */\n style?: IRuleMarkSpec | StyleCallback<IRuleMarkSpec | undefined>;\n /**\n * 快捷属性,也可以在 `style` 中配置,用于配置网格线的绘制顺序,默认为 50\n * @default 50\n * @since 1.4.0\n */\n zIndex?: number;\n}\n\n// 刻度线配置\nexport interface ITick extends IAxisItem<IRuleMarkSpec>, ITickCalculationCfg {\n /**\n * Length of tick lines\n * 坐标轴刻度线的长度\n * @default 4\n */\n tickSize?: number;\n /**\n * 刻度线朝向,默认朝外(坐标线包围盒外部)\n * @default false\n */\n inside?: boolean;\n /**\n * tick 是否与 label 对齐,默认为 true,即对齐,配置为 false 则显示在前后两个刻度中间\n * @default true\n */\n alignWithLabel?: boolean;\n /**\n * 刻度线样式设置,支持回调\n */\n style?: IRuleMarkSpec | StyleCallback<IRuleMarkSpec | undefined>;\n /**\n * 刻度线不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<IRuleMarkSpec>;\n /**\n * 用于 tick 的数据过滤\n * @since 1.1.0\n */\n dataFilter?: (data: AxisItem[]) => AxisItem[];\n}\n\n// 子刻度线配置\nexport interface ISubTick extends IAxisItem<IRuleMarkSpec> {\n /**\n * TODO: 考虑下 log 轴,自刻度线之间的间距是不均匀的问题\n * 子刻度个数\n */\n tickCount?: number;\n /**\n * 子刻度线朝向,默认朝外(坐标线包围盒外部)\n * @default false\n */\n inside?: boolean;\n /** 子刻度线的长度 */\n tickSize?: number;\n /**\n * 子刻度线不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<IRuleMarkSpec>;\n}\n\n// 轴标签配置\nexport interface ILabel extends IAxisItem<ITextMarkSpec> {\n /**\n * 文本类型\n * @deprecated 1.10.0 版本后,在 formatMethod 中返回 { type: 'rich', text: xxx}\n * */\n type?: 'text' | 'rich';\n /**\n * 轴标签内容格式化函数\n * @param text 原始标签文本值\n * @param datum 图形数据\n * @returns 格式化后的文本\n */\n formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum]>;\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n /** 标签同 tick 之间的间距 */\n space?: number;\n /**\n * 标签朝向,默认朝外(坐标线包围盒外部)\n * @default false\n */\n inside?: boolean;\n /**\n * 标签之间的最小间距(单位为像素),仅当轴采样开始时生效(`sampling: true`)。\n * 该配置会影响轴采样的结果。\n */\n minGap?: number;\n /**\n * 文本样式设置\n */\n style?: ITextMarkSpec | StyleCallback<ITextMarkSpec | undefined>;\n /**\n * label 不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<ITextMarkSpec>;\n /**\n * 用于 label 的数据过滤\n * @since 1.1.0\n */\n dataFilter?: (data: AxisItem[], layer: number) => AxisItem[];\n}\n\n// 轴线配置\nexport interface IDomainLine extends IAxisItem<IRuleMarkSpec> {\n /**\n * domainLine 在不同交互状态下的样式配置,支持:\n * 1. hover\n * 2. hover_reverse\n * 3. selected\n * 4. selected_reverse\n */\n state?: AxisItemStateStyle<IRuleMarkSpec>;\n}\n\n// 轴标题配置\nexport interface ITitle extends IAxisItem<ITextMarkSpec> {\n /**\n * 文本类型\n * @deprecated 1.10.0 版本后,在 formatMethod 中返回 { type: 'rich', text: xxx}\n * */\n type?: 'text' | 'rich';\n /**\n * 轴标题内容格式化函数\n * @param text 原始标签文本值\n * @param datum 图形数据\n * @returns 格式化后的文本\n */\n text?: ITextMarkSpec['text'] | ReturnType<IRichTextFormatMethod<[]>>;\n /**\n * 标题的显示位置,直角坐标系默认 'middle';\n * 极坐标系的圆弧轴如果配置了内半径,则默认 'middle',否则 'end'\n */\n position?: 'start' | 'middle' | 'end';\n /**\n * 标题距离坐标轴(轴线、刻度、标签共同构成的包围盒)的距离\n */\n space?: number;\n /**\n * 标题内边距配置\n */\n padding?: IPadding | number | number[];\n /**\n * 标题背景色设置\n */\n background?: IAxisItem<IRectMarkSpec> & {\n /**\n * 背景的交互状态样式配置\n */\n state?: AxisItemStateStyle<Partial<IRectMarkSpec>>;\n };\n /**\n * TODO: 接入富文本\n * 标题 shape 配置\n */\n shape?: IAxisItem<ISymbolMarkSpec> & {\n /**\n * shape 同标题文本之间的间距\n */\n space?: number;\n /**\n * shape 标记的交互状态样式配置\n */\n state?: AxisItemStateStyle<Partial<ISymbolMarkSpec>>;\n };\n /**\n * 标题整体的旋转角度(如果标题配置了 background、shape 等属性的话,需要使用该属性进行整体的配置旋转)。\n */\n angle?: number;\n /**\n * text 文本的交互状态样式配置\n */\n state?: AxisItemStateStyle<Partial<ITextMarkSpec>>;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { LinearScale } from '@visactor/vscale';
2
- import type { IAxisLocationCfg, ITick } from '../interface';
2
+ import type { IAxisLocationCfg, ILinearAxisBreakSpec, ITick } from '../interface';
3
3
  import type { IEvent } from '../../../event/interface';
4
4
  import type { IOrientType } from '../../../typings/space';
5
5
  import type { IComponentOption } from '../../interface/common';
@@ -36,6 +36,7 @@ export interface LinearAxisMixin {
36
36
  domain: [number, number][];
37
37
  scope: [number, number][];
38
38
  range: [number, number][];
39
+ breaks: ILinearAxisBreakSpec[];
39
40
  };
40
41
  event: IEvent;
41
42
  _orient: IOrientType;
@@ -75,32 +75,22 @@ class LinearAxisMixin {
75
75
  minDomain = void 0 === minDomain ? min : Math.min(minDomain, min), maxDomain = void 0 === maxDomain ? max : Math.max(maxDomain, max),
76
76
  userSetBreaks && (values = values.concat(d.values));
77
77
  })), userSetBreaks) {
78
- let breakRanges, breakDomains = [], breakScopes = [], source = [ ...values ];
79
- if (1 === this._spec.breaks.length) {
80
- const {domain: domain, scope: scope} = (0, break_data_1.breakData)(source, this._spec.breaks[0].range);
81
- breakDomains = domain, breakScopes = scope, breakRanges = [ this._spec.breaks[0].range ];
82
- } else {
83
- breakRanges = this._spec.breaks.map((breakSpec => breakSpec.range)).sort(((a, b) => a[0] - b[0]));
84
- for (let index = 0; index < breakRanges.length; index++) {
85
- const breakRange = breakRanges[index], {domain: domain, scope: scope} = (0, break_data_1.breakData)(source, breakRange);
86
- let finalScope = scope;
87
- const finalDomain = domain;
88
- if (index > 0) {
89
- const lastRatio = (0, vutils_1.last)(breakScopes)[1], restRarioRange = 1 - lastRatio;
90
- finalScope = scope.map((eachScope => [ lastRatio + eachScope[0] * restRarioRange, lastRatio + eachScope[1] * restRarioRange ])),
91
- finalDomain[0][0] = (0, vutils_1.last)(breakDomains)[1];
92
- }
93
- breakDomains.push(finalDomain[0]), breakScopes.push(finalScope[0]), finalDomain.length > 2 && (breakDomains.push(finalDomain[1]),
94
- breakScopes.push(finalScope[1])), index === breakRanges.length - 1 ? (breakDomains.push((0,
95
- vutils_1.last)(finalDomain)), breakScopes.push((0, vutils_1.last)(finalScope))) : source = source.filter((val => val >= (0,
96
- vutils_1.last)(finalDomain)[0]));
97
- }
78
+ const breakRanges = [], breaks = [];
79
+ for (let index = 0; index < this._spec.breaks.length; index++) {
80
+ const {range: range} = this._spec.breaks[index];
81
+ range[0] <= range[1] && (range[1] <= maxDomain || range[1] <= minDomain) && (breakRanges.push(range),
82
+ breaks.push(this._spec.breaks[index]));
98
83
  }
99
- domain = (0, array_1.combineArray)(breakDomains), this._break = {
100
- domain: breakDomains,
101
- scope: breakScopes,
102
- range: breakRanges
103
- };
84
+ if (breakRanges.sort(((a, b) => a[0] - b[0])), breakRanges.length) {
85
+ const {domain: breakDomains, scope: breakScopes} = (0, break_data_1.breakData)(values, (0,
86
+ array_1.combineArray)(breakRanges));
87
+ domain = (0, array_1.combineArray)(breakDomains), this._break = {
88
+ domain: breakDomains,
89
+ scope: breakScopes,
90
+ range: breakRanges,
91
+ breaks: breaks
92
+ };
93
+ } else domain = [ minDomain, maxDomain ];
104
94
  } else domain = [ minDomain, maxDomain ];
105
95
  } else domain[0] = 0, domain[1] = 0;
106
96
  return this.setSoftDomainMinMax(domain), this.expandDomain(domain), this.includeZero(domain),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis/mixin/linear-axis-mixin.ts"],"names":[],"mappings":"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","file":"linear-axis-mixin.js","sourcesContent":["import { isValidNumber, isNil, isValid, isFunction, last } from '@visactor/vutils';\nimport type { LinearScale } from '@visactor/vscale';\nimport { combineArray, maxInArr, minInArr } from '../../../util/array';\nimport { getLinearAxisSpecDomain } from '../util';\nimport type { IAxisLocationCfg, ILinearAxisBreakSpec, ITick } from '../interface';\nimport { ChartEvent } from '../../../constant/event';\nimport type { IEvent } from '../../../event/interface';\nimport { isXAxis } from '../cartesian/util/common';\nimport type { IOrientType } from '../../../typings/space';\nimport type { IComponentOption } from '../../interface/common';\nimport type { StringOrNumber } from '../../../typings';\nimport { breakData } from './util/break-data';\n\nexport const e10 = Math.sqrt(50);\nexport const e5 = Math.sqrt(10);\nexport const e2 = Math.sqrt(2);\nconst DEFAULT_TICK_COUNT = 5;\n\nexport interface LinearAxisMixin {\n _scale: LinearScale;\n _scales: LinearScale[];\n _spec: any;\n _nice: boolean;\n _zero: boolean;\n /**\n * spec中申明的min,max\n */\n _domain: { min?: number; max?: number };\n /**\n * 记录一下解析spec后,获取到的domain,\n * 用于在插件(如0值对齐等功能)中使用\n */\n _domainAfterSpec: number[];\n _softMinValue?: number;\n _softMaxValue?: number;\n _expand?: { max?: number; min?: number };\n _tick: ITick | undefined;\n isSeriesDataEnable: any;\n computeDomain: any;\n collectData: (depth?: number) => { min: number; max: number; values: any[] }[];\n _break: { domain: [number, number][]; scope: [number, number][]; range: [number, number][] };\n event: IEvent;\n _orient: IOrientType;\n _option: IComponentOption;\n niceLabelFormatter: (value: StringOrNumber) => StringOrNumber;\n}\n\nexport class LinearAxisMixin {\n protected _extend: { [key: string]: number } = {};\n\n niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n\n setExtraAttrFromSpec() {\n isValid(this._spec.nice) && (this._nice = this._spec.nice);\n isValid(this._spec.zero) && (this._zero = this._spec.zero);\n this._expand = this._spec.expand;\n this._domain = getLinearAxisSpecDomain(this._spec);\n }\n transformScaleDomain() {\n this.setScaleNice();\n }\n\n setLinearScaleNice() {\n if (!this._nice) {\n return false;\n }\n let tickCount: number = DEFAULT_TICK_COUNT;\n const tick = this._spec.tick || {};\n\n if (isValidNumber(tick.forceTickCount)) {\n tickCount = tick.forceTickCount;\n } else if (isFunction(tick.tickCount)) {\n const range = this._scale.range();\n let rangeSize = Math.abs(range[range.length - 1] - range[0]);\n\n if (rangeSize === 1 && this._option) {\n // TODO: need to be optimized, when the range is not updated, use the size of view\n const isX = isXAxis(this._orient);\n rangeSize = isX ? this._option.getChartViewRect().width : this._option.getChartViewRect().height;\n }\n\n // tickCount需要一致,不然会导致效果不一致, fix #2050\n tickCount = tick.tickCount({\n axisLength: rangeSize,\n labelStyle: this._spec.label && this._spec.label.style\n });\n } else if (isValidNumber(tick.tickCount)) {\n tickCount = tick.tickCount;\n } else {\n tickCount = DEFAULT_TICK_COUNT;\n }\n // 如果配置了精度优先,那么最低是 5\n // 否则就直接使用tickCount即可\n if (this._spec.niceType === 'accurateFirst') {\n tickCount = Math.max(DEFAULT_TICK_COUNT, tickCount);\n }\n const { min, max } = this._domain ?? {};\n if (isNil(min) && isNil(max) && isNil(this._softMaxValue) && isNil(this._softMinValue)) {\n return this._scale.nice(tickCount);\n } else if ((isValid(min) || isValid(this._softMinValue)) && isNil(max) && isNil(this._softMaxValue)) {\n return this._scale.niceMax(tickCount);\n } else if (isNil(min) && isNil(this._softMinValue) && (isValid(max) || isValid(this._softMaxValue))) {\n return this._scale.niceMin(tickCount);\n }\n\n return false;\n }\n\n setLogScaleNice() {\n if (!this._nice) {\n return false;\n }\n\n const { min, max } = this._domain ?? {};\n if (isNil(min) && isNil(max) && isNil(this._softMaxValue) && isNil(this._softMinValue)) {\n return this._scale.nice();\n } else if ((isValid(min) || isValid(this._softMinValue)) && isNil(max) && isNil(this._softMaxValue)) {\n return this._scale.niceMax();\n } else if (isNil(min) && isNil(this._softMinValue) && (isValid(max) || isValid(this._softMaxValue))) {\n return this._scale.niceMin();\n }\n\n return false;\n }\n\n setScaleNice() {\n if (this._spec.type === 'log') {\n return this.setLogScaleNice();\n }\n return this.setLinearScaleNice();\n }\n\n dataToPosition(values: any[], cfg?: IAxisLocationCfg): number {\n return this.valueToPosition(values[0]);\n }\n\n valueToPosition(value: any): number {\n return this._scale.scale(value);\n }\n\n computeLinearDomain(data: { min: number; max: number; values: any[] }[]): number[] {\n let domain: number[] = [];\n\n if (data.length) {\n const userSetBreaks = this._spec.breaks && this._spec.breaks.length;\n let values: any[] = [];\n let minDomain: number;\n let maxDomain: number;\n data.forEach(d => {\n const { min, max } = d;\n minDomain = minDomain === undefined ? min : Math.min(minDomain, min as number);\n maxDomain = maxDomain === undefined ? max : Math.max(maxDomain, max as number);\n if (userSetBreaks) {\n values = values.concat(d.values);\n }\n });\n\n if (userSetBreaks) {\n let breakDomains: [number, number][] = [];\n let breakScopes: [number, number][] = [];\n let breakRanges: [number, number][];\n let source = [...values];\n\n if (this._spec.breaks.length === 1) {\n const { domain, scope } = breakData(source, this._spec.breaks[0].range);\n breakDomains = domain;\n breakScopes = scope;\n breakRanges = [this._spec.breaks[0].range];\n } else {\n breakRanges = this._spec.breaks\n .map((breakSpec: ILinearAxisBreakSpec) => breakSpec.range)\n .sort((a: [number, number], b: [number, number]) => a[0] - b[0]);\n\n for (let index = 0; index < breakRanges.length; index++) {\n const breakRange = breakRanges[index];\n const { domain, scope } = breakData(source, breakRange);\n let finalScope = scope;\n const finalDomain = domain;\n if (index > 0) {\n const lastRatio = last(breakScopes)[1];\n const restRarioRange = 1 - lastRatio;\n finalScope = scope.map(eachScope => {\n return [lastRatio + eachScope[0] * restRarioRange, lastRatio + eachScope[1] * restRarioRange];\n });\n\n finalDomain[0][0] = last(breakDomains)[1];\n }\n\n breakDomains.push(finalDomain[0]);\n breakScopes.push(finalScope[0]);\n if (finalDomain.length > 2) {\n breakDomains.push(finalDomain[1]);\n breakScopes.push(finalScope[1]);\n }\n\n if (index === breakRanges.length - 1) {\n breakDomains.push(last(finalDomain));\n breakScopes.push(last(finalScope));\n } else {\n source = source.filter(val => val >= last(finalDomain)[0]);\n }\n }\n }\n\n domain = combineArray(breakDomains);\n this._break = {\n domain: breakDomains,\n scope: breakScopes,\n range: breakRanges\n };\n } else {\n domain = [minDomain, maxDomain];\n }\n } else {\n // default value for linear axis\n domain[0] = 0;\n domain[1] = 0;\n }\n this.setSoftDomainMinMax(domain);\n this.expandDomain(domain);\n this.includeZero(domain);\n this.setDomainMinMax(domain);\n return domain;\n }\n\n protected expandDomain(domain: number[]): void {\n if (!this._expand) {\n return;\n }\n\n let domainMin = domain[0];\n let domainMax = domain[domain.length - 1];\n\n if (domainMin === domainMax) {\n if (domainMax === 0) {\n domainMax = 1;\n } else if (domainMax > 0) {\n domainMin = 0;\n } else if (domainMax < 0) {\n domainMax = 0;\n }\n }\n\n if (isValid(this._expand.min)) {\n domain[0] = domainMin - (domainMax - domainMin) * this._expand.min;\n }\n if (isValid(this._expand.max)) {\n domain[domain.length - 1] = domainMax + (domainMax - domainMin) * this._expand.max;\n }\n }\n\n protected niceDomain(domain: number[]) {\n const { min: userMin, max: userMax } = getLinearAxisSpecDomain(this._spec);\n if (isValid(userMin) || isValid(userMax) || this._spec.type !== 'linear') {\n // 如果用户设置了 min 或者 max 则按照用户设置的为准\n // 如果是非 linear 类型也不处理\n return domain;\n }\n if (Math.abs(minInArr(domain) - maxInArr(domain)) <= 1e-12) {\n let num = domain[0];\n const flag = num >= 0 ? 1 : -1;\n num = Math.abs(num);\n if (num < 1) {\n domain[0] = 0;\n domain[domain.length - 1] = 1; // 在[0, 1) 区间变成[0, 1]\n } else {\n let step = num / DEFAULT_TICK_COUNT; // 默认5个ticks\n const power = Math.floor(Math.log(step) / Math.LN10);\n const err = step / Math.pow(10, power);\n step = (err >= e10 ? 10 : err >= e5 ? 5 : err >= e2 ? 2 : 1) * Math.pow(10, power);\n\n domain[0] = 0;\n domain[domain.length - 1] = step * 10;\n }\n if (flag < 0) {\n domain.reverse();\n domain[0] *= -1;\n domain[domain.length - 1] *= -1;\n }\n }\n return domain;\n }\n\n protected includeZero(domain: number[]): void {\n if (this._zero) {\n domain[0] = Math.min(domain[0], 0);\n domain[domain.length - 1] = Math.max(domain[domain.length - 1], 0);\n }\n }\n\n // 用户其他模块扩充轴scale的区间\n setExtendDomain(key: string, value: number | undefined) {\n if (value === undefined) {\n delete this._extend[key];\n return;\n }\n this._extend[key] = value;\n const domain = this._scale.domain();\n this.extendDomain(domain);\n this.includeZero(domain);\n this.setDomainMinMax(domain);\n this.niceDomain(domain);\n this._scale.domain(domain, this._nice);\n\n if (this._nice) {\n const niced = this.setScaleNice();\n\n !niced && this._scale.rescale();\n }\n\n this.event.emit(ChartEvent.scaleUpdate, { model: this as any, value: 'domain' });\n }\n\n protected extendDomain(domain: number[]) {\n let temp;\n const domainLast = domain.length - 1;\n const reverse = domain[0] - domain[domainLast] > 0;\n const min = reverse ? domainLast : 0;\n const max = reverse ? 0 : domainLast;\n for (const key in this._extend) {\n temp = this._extend[key];\n temp > domain[max] && (domain[max] = temp);\n temp < domain[min] && (domain[min] = temp);\n }\n }\n\n getDomainSpec() {\n return this._domain;\n }\n\n protected setDomainMinMax(domain: number[]): void {\n if (!this._domain) {\n return;\n }\n const { min, max } = this._domain;\n isValid(min) && (domain[0] = min);\n isValid(max) && (domain[domain.length - 1] = max);\n }\n\n protected setSoftDomainMinMax(domain: number[]): void {\n const { softMin, softMax } = this._spec;\n\n if (isValid(softMin)) {\n let softMinValue = isFunction(softMin) ? softMin(domain) : (softMin as number);\n\n if (isNil(softMinValue)) {\n softMinValue = domain[0];\n }\n\n if (softMinValue <= domain[0]) {\n domain[0] = softMinValue;\n this._softMinValue = softMinValue;\n }\n }\n\n if (isValid(softMax)) {\n let softMaxValue = isFunction(softMax) ? softMax(domain) : (softMax as number);\n\n if (isNil(softMaxValue)) {\n softMaxValue = domain[domain.length - 1];\n }\n\n if (softMaxValue >= domain[domain.length - 1]) {\n domain[domain.length - 1] = softMaxValue;\n }\n\n this._softMaxValue = softMaxValue;\n }\n }\n\n setZero(zero: boolean) {\n if (this._zero !== zero) {\n this._zero = zero;\n this.updateScaleDomain();\n }\n }\n /**\n * @override\n * TODO event.emit是否可以考虑用decorator\n */\n protected updateScaleDomain() {\n if (!this.isSeriesDataEnable()) {\n return;\n }\n const data = this.collectData();\n const domain: number[] = this.computeLinearDomain(data) as number[];\n this.updateScaleDomainByModel(domain);\n }\n\n /**\n * TODO event.emit是否可以考虑用decorator\n * 数据逻辑外,模块的设置更新对scale-domain的修改操作\n */\n protected updateScaleDomainByModel(domain?: number[]) {\n domain = domain ?? this._scale.domain();\n // 其他模块的设置 domain\n this.extendDomain(domain);\n this.includeZero(domain);\n // 用户 spec 的 min-max\n this.setDomainMinMax(domain);\n // nice 优先级最高\n this.niceDomain(domain);\n this._scale.domain(domain, this._nice);\n // 设置scale的nice-min-max\n if (this._nice) {\n const niced = this.setScaleNice();\n\n !niced && this._scale.rescale();\n }\n this._updateNiceLabelFormatter(domain);\n\n this._domainAfterSpec = this._scale.domain();\n this.event.emit(ChartEvent.scaleDomainUpdate, { model: this as any });\n this.event.emit(ChartEvent.scaleUpdate, { model: this as any, value: 'domain' });\n }\n\n getDomainAfterSpec() {\n return this._domainAfterSpec;\n }\n\n protected _updateNiceLabelFormatter(domain: number[]) {\n // 根据轴 domain 范围做动态判断,取最多 n + 2 位小数\n const domainSpan = Math.abs(domain[domain.length - 1] - domain[0]);\n const n = Math.max(-Math.floor(Math.log10(domainSpan)), 0) + 2;\n const unit = Math.pow(10, n);\n this.niceLabelFormatter = (value: StringOrNumber) => {\n if (isValidNumber(+value)) {\n return Math.round((+value as number) * unit) / unit;\n }\n return value;\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/axis/mixin/linear-axis-mixin.ts"],"names":[],"mappings":"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","file":"linear-axis-mixin.js","sourcesContent":["import { isValidNumber, isNil, isValid, isFunction, last } from '@visactor/vutils';\nimport type { LinearScale } from '@visactor/vscale';\nimport { combineArray, maxInArr, minInArr } from '../../../util/array';\nimport { getLinearAxisSpecDomain } from '../util';\nimport type { IAxisLocationCfg, ILinearAxisBreakSpec, ITick } from '../interface';\nimport { ChartEvent } from '../../../constant/event';\nimport type { IEvent } from '../../../event/interface';\nimport { isXAxis } from '../cartesian/util/common';\nimport type { IOrientType } from '../../../typings/space';\nimport type { IComponentOption } from '../../interface/common';\nimport type { StringOrNumber } from '../../../typings';\nimport { breakData } from './util/break-data';\n\nexport const e10 = Math.sqrt(50);\nexport const e5 = Math.sqrt(10);\nexport const e2 = Math.sqrt(2);\nconst DEFAULT_TICK_COUNT = 5;\n\nexport interface LinearAxisMixin {\n _scale: LinearScale;\n _scales: LinearScale[];\n _spec: any;\n _nice: boolean;\n _zero: boolean;\n /**\n * spec中申明的min,max\n */\n _domain: { min?: number; max?: number };\n /**\n * 记录一下解析spec后,获取到的domain,\n * 用于在插件(如0值对齐等功能)中使用\n */\n _domainAfterSpec: number[];\n _softMinValue?: number;\n _softMaxValue?: number;\n _expand?: { max?: number; min?: number };\n _tick: ITick | undefined;\n isSeriesDataEnable: any;\n computeDomain: any;\n collectData: (depth?: number) => { min: number; max: number; values: any[] }[];\n _break: {\n domain: [number, number][];\n scope: [number, number][];\n range: [number, number][];\n breaks: ILinearAxisBreakSpec[];\n };\n event: IEvent;\n _orient: IOrientType;\n _option: IComponentOption;\n niceLabelFormatter: (value: StringOrNumber) => StringOrNumber;\n}\n\nexport class LinearAxisMixin {\n protected _extend: { [key: string]: number } = {};\n\n niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n\n setExtraAttrFromSpec() {\n isValid(this._spec.nice) && (this._nice = this._spec.nice);\n isValid(this._spec.zero) && (this._zero = this._spec.zero);\n this._expand = this._spec.expand;\n this._domain = getLinearAxisSpecDomain(this._spec);\n }\n transformScaleDomain() {\n this.setScaleNice();\n }\n\n setLinearScaleNice() {\n if (!this._nice) {\n return false;\n }\n let tickCount: number = DEFAULT_TICK_COUNT;\n const tick = this._spec.tick || {};\n\n if (isValidNumber(tick.forceTickCount)) {\n tickCount = tick.forceTickCount;\n } else if (isFunction(tick.tickCount)) {\n const range = this._scale.range();\n let rangeSize = Math.abs(range[range.length - 1] - range[0]);\n\n if (rangeSize === 1 && this._option) {\n // TODO: need to be optimized, when the range is not updated, use the size of view\n const isX = isXAxis(this._orient);\n rangeSize = isX ? this._option.getChartViewRect().width : this._option.getChartViewRect().height;\n }\n\n // tickCount需要一致,不然会导致效果不一致, fix #2050\n tickCount = tick.tickCount({\n axisLength: rangeSize,\n labelStyle: this._spec.label && this._spec.label.style\n });\n } else if (isValidNumber(tick.tickCount)) {\n tickCount = tick.tickCount;\n } else {\n tickCount = DEFAULT_TICK_COUNT;\n }\n // 如果配置了精度优先,那么最低是 5\n // 否则就直接使用tickCount即可\n if (this._spec.niceType === 'accurateFirst') {\n tickCount = Math.max(DEFAULT_TICK_COUNT, tickCount);\n }\n const { min, max } = this._domain ?? {};\n if (isNil(min) && isNil(max) && isNil(this._softMaxValue) && isNil(this._softMinValue)) {\n return this._scale.nice(tickCount);\n } else if ((isValid(min) || isValid(this._softMinValue)) && isNil(max) && isNil(this._softMaxValue)) {\n return this._scale.niceMax(tickCount);\n } else if (isNil(min) && isNil(this._softMinValue) && (isValid(max) || isValid(this._softMaxValue))) {\n return this._scale.niceMin(tickCount);\n }\n\n return false;\n }\n\n setLogScaleNice() {\n if (!this._nice) {\n return false;\n }\n\n const { min, max } = this._domain ?? {};\n if (isNil(min) && isNil(max) && isNil(this._softMaxValue) && isNil(this._softMinValue)) {\n return this._scale.nice();\n } else if ((isValid(min) || isValid(this._softMinValue)) && isNil(max) && isNil(this._softMaxValue)) {\n return this._scale.niceMax();\n } else if (isNil(min) && isNil(this._softMinValue) && (isValid(max) || isValid(this._softMaxValue))) {\n return this._scale.niceMin();\n }\n\n return false;\n }\n\n setScaleNice() {\n if (this._spec.type === 'log') {\n return this.setLogScaleNice();\n }\n return this.setLinearScaleNice();\n }\n\n dataToPosition(values: any[], cfg?: IAxisLocationCfg): number {\n return this.valueToPosition(values[0]);\n }\n\n valueToPosition(value: any): number {\n return this._scale.scale(value);\n }\n\n computeLinearDomain(data: { min: number; max: number; values: any[] }[]): number[] {\n let domain: number[] = [];\n\n if (data.length) {\n const userSetBreaks = this._spec.breaks && this._spec.breaks.length;\n let values: any[] = [];\n let minDomain: number;\n let maxDomain: number;\n data.forEach(d => {\n const { min, max } = d;\n minDomain = minDomain === undefined ? min : Math.min(minDomain, min as number);\n maxDomain = maxDomain === undefined ? max : Math.max(maxDomain, max as number);\n if (userSetBreaks) {\n values = values.concat(d.values);\n }\n });\n\n if (userSetBreaks) {\n const breakRanges = [];\n const breaks = [];\n for (let index = 0; index < this._spec.breaks.length; index++) {\n const { range } = this._spec.breaks[index];\n if (range[0] <= range[1] && (range[1] <= maxDomain || range[1] <= minDomain)) {\n breakRanges.push(range);\n breaks.push(this._spec.breaks[index]);\n }\n }\n breakRanges.sort((a: [number, number], b: [number, number]) => a[0] - b[0]);\n if (breakRanges.length) {\n const { domain: breakDomains, scope: breakScopes } = breakData(values, combineArray(breakRanges));\n\n domain = combineArray(breakDomains);\n this._break = {\n domain: breakDomains,\n scope: breakScopes,\n range: breakRanges,\n breaks\n };\n } else {\n domain = [minDomain, maxDomain];\n }\n } else {\n domain = [minDomain, maxDomain];\n }\n } else {\n // default value for linear axis\n domain[0] = 0;\n domain[1] = 0;\n }\n this.setSoftDomainMinMax(domain);\n this.expandDomain(domain);\n this.includeZero(domain);\n this.setDomainMinMax(domain);\n return domain;\n }\n\n protected expandDomain(domain: number[]): void {\n if (!this._expand) {\n return;\n }\n\n let domainMin = domain[0];\n let domainMax = domain[domain.length - 1];\n\n if (domainMin === domainMax) {\n if (domainMax === 0) {\n domainMax = 1;\n } else if (domainMax > 0) {\n domainMin = 0;\n } else if (domainMax < 0) {\n domainMax = 0;\n }\n }\n\n if (isValid(this._expand.min)) {\n domain[0] = domainMin - (domainMax - domainMin) * this._expand.min;\n }\n if (isValid(this._expand.max)) {\n domain[domain.length - 1] = domainMax + (domainMax - domainMin) * this._expand.max;\n }\n }\n\n protected niceDomain(domain: number[]) {\n const { min: userMin, max: userMax } = getLinearAxisSpecDomain(this._spec);\n if (isValid(userMin) || isValid(userMax) || this._spec.type !== 'linear') {\n // 如果用户设置了 min 或者 max 则按照用户设置的为准\n // 如果是非 linear 类型也不处理\n return domain;\n }\n if (Math.abs(minInArr(domain) - maxInArr(domain)) <= 1e-12) {\n let num = domain[0];\n const flag = num >= 0 ? 1 : -1;\n num = Math.abs(num);\n if (num < 1) {\n domain[0] = 0;\n domain[domain.length - 1] = 1; // 在[0, 1) 区间变成[0, 1]\n } else {\n let step = num / DEFAULT_TICK_COUNT; // 默认5个ticks\n const power = Math.floor(Math.log(step) / Math.LN10);\n const err = step / Math.pow(10, power);\n step = (err >= e10 ? 10 : err >= e5 ? 5 : err >= e2 ? 2 : 1) * Math.pow(10, power);\n\n domain[0] = 0;\n domain[domain.length - 1] = step * 10;\n }\n if (flag < 0) {\n domain.reverse();\n domain[0] *= -1;\n domain[domain.length - 1] *= -1;\n }\n }\n return domain;\n }\n\n protected includeZero(domain: number[]): void {\n if (this._zero) {\n domain[0] = Math.min(domain[0], 0);\n domain[domain.length - 1] = Math.max(domain[domain.length - 1], 0);\n }\n }\n\n // 用户其他模块扩充轴scale的区间\n setExtendDomain(key: string, value: number | undefined) {\n if (value === undefined) {\n delete this._extend[key];\n return;\n }\n this._extend[key] = value;\n const domain = this._scale.domain();\n this.extendDomain(domain);\n this.includeZero(domain);\n this.setDomainMinMax(domain);\n this.niceDomain(domain);\n this._scale.domain(domain, this._nice);\n\n if (this._nice) {\n const niced = this.setScaleNice();\n\n !niced && this._scale.rescale();\n }\n\n this.event.emit(ChartEvent.scaleUpdate, { model: this as any, value: 'domain' });\n }\n\n protected extendDomain(domain: number[]) {\n let temp;\n const domainLast = domain.length - 1;\n const reverse = domain[0] - domain[domainLast] > 0;\n const min = reverse ? domainLast : 0;\n const max = reverse ? 0 : domainLast;\n for (const key in this._extend) {\n temp = this._extend[key];\n temp > domain[max] && (domain[max] = temp);\n temp < domain[min] && (domain[min] = temp);\n }\n }\n\n getDomainSpec() {\n return this._domain;\n }\n\n protected setDomainMinMax(domain: number[]): void {\n if (!this._domain) {\n return;\n }\n const { min, max } = this._domain;\n isValid(min) && (domain[0] = min);\n isValid(max) && (domain[domain.length - 1] = max);\n }\n\n protected setSoftDomainMinMax(domain: number[]): void {\n const { softMin, softMax } = this._spec;\n\n if (isValid(softMin)) {\n let softMinValue = isFunction(softMin) ? softMin(domain) : (softMin as number);\n\n if (isNil(softMinValue)) {\n softMinValue = domain[0];\n }\n\n if (softMinValue <= domain[0]) {\n domain[0] = softMinValue;\n this._softMinValue = softMinValue;\n }\n }\n\n if (isValid(softMax)) {\n let softMaxValue = isFunction(softMax) ? softMax(domain) : (softMax as number);\n\n if (isNil(softMaxValue)) {\n softMaxValue = domain[domain.length - 1];\n }\n\n if (softMaxValue >= domain[domain.length - 1]) {\n domain[domain.length - 1] = softMaxValue;\n }\n\n this._softMaxValue = softMaxValue;\n }\n }\n\n setZero(zero: boolean) {\n if (this._zero !== zero) {\n this._zero = zero;\n this.updateScaleDomain();\n }\n }\n /**\n * @override\n * TODO event.emit是否可以考虑用decorator\n */\n protected updateScaleDomain() {\n if (!this.isSeriesDataEnable()) {\n return;\n }\n const data = this.collectData();\n const domain: number[] = this.computeLinearDomain(data) as number[];\n this.updateScaleDomainByModel(domain);\n }\n\n /**\n * TODO event.emit是否可以考虑用decorator\n * 数据逻辑外,模块的设置更新对scale-domain的修改操作\n */\n protected updateScaleDomainByModel(domain?: number[]) {\n domain = domain ?? this._scale.domain();\n // 其他模块的设置 domain\n this.extendDomain(domain);\n this.includeZero(domain);\n // 用户 spec 的 min-max\n this.setDomainMinMax(domain);\n // nice 优先级最高\n this.niceDomain(domain);\n this._scale.domain(domain, this._nice);\n // 设置scale的nice-min-max\n if (this._nice) {\n const niced = this.setScaleNice();\n\n !niced && this._scale.rescale();\n }\n this._updateNiceLabelFormatter(domain);\n\n this._domainAfterSpec = this._scale.domain();\n this.event.emit(ChartEvent.scaleDomainUpdate, { model: this as any });\n this.event.emit(ChartEvent.scaleUpdate, { model: this as any, value: 'domain' });\n }\n\n getDomainAfterSpec() {\n return this._domainAfterSpec;\n }\n\n protected _updateNiceLabelFormatter(domain: number[]) {\n // 根据轴 domain 范围做动态判断,取最多 n + 2 位小数\n const domainSpan = Math.abs(domain[domain.length - 1] - domain[0]);\n const n = Math.max(-Math.floor(Math.log10(domainSpan)), 0) + 2;\n const unit = Math.pow(10, n);\n this.niceLabelFormatter = (value: StringOrNumber) => {\n if (isValidNumber(+value)) {\n return Math.round((+value as number) * unit) / unit;\n }\n return value;\n };\n }\n}\n"]}
@@ -9,7 +9,7 @@ r)), [ [ min, breaks[0] ] ]);
9
9
 
10
10
  function breakDomain(data, points) {
11
11
  const min = data[0], max = data[data.length - 1], breaks = points.filter((point => point > min && point < max));
12
- return setDomain(min, max, breaks);
12
+ return 0 === breaks.length ? [ [ min, max ] ] : setDomain(min, max, breaks);
13
13
  }
14
14
 
15
15
  const sorter = (a, b) => a - b, fillBins = (data, points) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis/mixin/util/break-data.ts"],"names":[],"mappings":";;;AAAA,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,MAAgB,EAAsB,EAAE,CACnF,MAAM,CAAC,MAAM,CACX,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACV,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,CAAC;AACX,CAAC,EACD,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACnB,CAAC;AAEJ,SAAS,WAAW,CAAC,IAAc,EAAE,MAAgB;IAEnD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IAClE,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,MAAgB,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;QACxB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACb,CAAC,IAAI,CAAC,CAAC;SACR;aAAM;YACL,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACb;KACF;IACD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,SAAS,UAAU,CAAC,IAAc,EAAE,MAAgB;IAElD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO,IAAI;SACR,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC;SACL,MAAM,CAAC,CAAC,CAAC,EAAE;QACV,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,SAAS,CAAC,IAAc,EAAE,MAAgB;IAExD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpB,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;QACjC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC;AATD,8BASC","file":"break-data.js","sourcesContent":["const setDomain = (min: number, max: number, breaks: number[]): [number, number][] =>\n breaks.reduce(\n (r, b, i) => {\n r.push([b, breaks.length === i + 1 ? max : breaks[i + 1]]);\n return r;\n },\n [[min, breaks[0]]]\n );\n\nfunction breakDomain(data: number[], points: number[]): [number, number][] {\n // 默认数据已经排序\n const min = data[0];\n const max = data[data.length - 1];\n const breaks = points.filter(point => point > min && point < max);\n return setDomain(min, max, breaks);\n}\n\nconst sorter = (a: number, b: number) => a - b;\n\nconst fillBins = (data: number[], points: number[]) => {\n const bins = [0];\n let i = 0;\n let j = 0;\n while (i < points.length) {\n if (data[j] <= points[i]) {\n bins[i] += 1;\n j += 1;\n } else {\n i += 1;\n bins[i] = 0;\n }\n }\n bins[i] = data.slice(j).length;\n return bins;\n};\n\nfunction breakScope(data: number[], points: number[]): [number, number][] {\n // 默认 data 和 points 已经排序\n const bins = fillBins(data, points);\n const count = data.length;\n return bins\n .reduce((res, bin, i) => {\n const last = res[i - 1] ? res[i - 1][1] : 0;\n const next = (last * 100 + +(bin / count).toFixed(2) * 100) / 100; // Fuck you, JavaScript\n res.push([last, next > 1 ? 1 : next > 0.95 ? 1 : next]);\n return res;\n }, [])\n .filter(s => {\n return !(s[0] === 0 && s[1] === 0) && !(s[0] === 1 && s[1] === 1);\n });\n}\n\nexport function breakData(data: number[], points: number[]) {\n // 现将数据和断点排序\n data.sort(sorter);\n points.sort(sorter);\n\n return {\n domain: breakDomain(data, points),\n scope: breakScope(data, points)\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/component/axis/mixin/util/break-data.ts"],"names":[],"mappings":"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","file":"break-data.js","sourcesContent":["const setDomain = (min: number, max: number, breaks: number[]): [number, number][] =>\n breaks.reduce(\n (r, b, i) => {\n r.push([b, breaks.length === i + 1 ? max : breaks[i + 1]]);\n return r;\n },\n [[min, breaks[0]]]\n );\n\nfunction breakDomain(data: number[], points: number[]): [number, number][] {\n // 默认数据已经排序\n const min = data[0];\n const max = data[data.length - 1];\n const breaks = points.filter(point => point > min && point < max);\n if (breaks.length === 0) {\n return [[min, max]];\n }\n return setDomain(min, max, breaks);\n}\n\nconst sorter = (a: number, b: number) => a - b;\n\nconst fillBins = (data: number[], points: number[]) => {\n const bins = [0];\n let i = 0;\n let j = 0;\n while (i < points.length) {\n if (data[j] <= points[i]) {\n bins[i] += 1;\n j += 1;\n } else {\n i += 1;\n bins[i] = 0;\n }\n }\n bins[i] = data.slice(j).length;\n return bins;\n};\n\nfunction breakScope(data: number[], points: number[]): [number, number][] {\n // 默认 data 和 points 已经排序\n const bins = fillBins(data, points);\n const count = data.length;\n return bins\n .reduce((res, bin, i) => {\n const last = res[i - 1] ? res[i - 1][1] : 0;\n const next = (last * 100 + +(bin / count).toFixed(2) * 100) / 100; // Fuck you, JavaScript\n res.push([last, next > 1 ? 1 : next > 0.95 ? 1 : next]);\n return res;\n }, [])\n .filter(s => {\n return !(s[0] === 0 && s[1] === 0) && !(s[0] === 1 && s[1] === 1);\n });\n}\n\nexport function breakData(data: number[], points: number[]) {\n // 现将数据和断点排序\n data.sort(sorter);\n points.sort(sorter);\n\n return {\n domain: breakDomain(data, points),\n scope: breakScope(data, points)\n };\n}\n"]}
@@ -95,11 +95,15 @@ class Brush extends base_component_1.BaseComponent {
95
95
  })), brush.addEventListener(vrender_components_1.IOperateType.drawEnd, (e => {
96
96
  this._needInitOutState = !0, this._needDisablePickable = !1;
97
97
  const {operateMask: operateMask} = e.detail;
98
- this._handleBrushChange(event_1.ChartEvent.brushEnd, region, e), this._setAxisAndDataZoom(operateMask, region),
98
+ this._handleBrushChange(event_1.ChartEvent.brushEnd, region, e);
99
+ const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);
100
+ !this._spec.zoomWhenEmpty && inBrushData.length > 0 && this._setAxisAndDataZoom(operateMask, region),
99
101
  this._emitEvent(event_1.ChartEvent.brushEnd, region);
100
102
  })), brush.addEventListener(vrender_components_1.IOperateType.moveEnd, (e => {
101
103
  const {operateMask: operateMask} = e.detail;
102
- this._handleBrushChange(event_1.ChartEvent.brushEnd, region, e), this._setAxisAndDataZoom(operateMask, region),
104
+ this._handleBrushChange(event_1.ChartEvent.brushEnd, region, e);
105
+ const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);
106
+ !this._spec.zoomWhenEmpty && inBrushData.length > 0 && this._setAxisAndDataZoom(operateMask, region),
103
107
  this._emitEvent(event_1.ChartEvent.brushEnd, region);
104
108
  }));
105
109
  }