@visactor/vchart 1.2.0-beta.1 → 1.2.0-beta.2

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 (163) hide show
  1. package/build/index.js +281 -113
  2. package/build/index.min.js +1 -1
  3. package/cjs/chart/area/area.js +3 -1
  4. package/cjs/chart/area/area.js.map +1 -1
  5. package/cjs/chart/base-chart.d.ts +6 -2
  6. package/cjs/chart/base-chart.js +34 -11
  7. package/cjs/chart/base-chart.js.map +1 -1
  8. package/cjs/chart/line/line.js +3 -1
  9. package/cjs/chart/line/line.js.map +1 -1
  10. package/cjs/chart/radar/radar.js +3 -1
  11. package/cjs/chart/radar/radar.js.map +1 -1
  12. package/cjs/chart/stack.js +3 -3
  13. package/cjs/chart/stack.js.map +1 -1
  14. package/cjs/component/axis/mixin/linear-axis-mixin.js +4 -1
  15. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  16. package/cjs/component/geo/geo-coordinate.d.ts +4 -0
  17. package/cjs/component/geo/geo-coordinate.js +18 -2
  18. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  19. package/cjs/component/indicator/indicator.js +1 -1
  20. package/cjs/component/indicator/indicator.js.map +1 -1
  21. package/cjs/component/tooltip/processor/dimension-tooltip.js +3 -2
  22. package/cjs/component/tooltip/processor/dimension-tooltip.js.map +1 -1
  23. package/cjs/core/index.d.ts +1 -1
  24. package/cjs/core/index.js +1 -1
  25. package/cjs/core/index.js.map +1 -1
  26. package/cjs/core/vchart.js +10 -8
  27. package/cjs/core/vchart.js.map +1 -1
  28. package/cjs/data/transforms/legend-data/discrete/discrete.js +3 -2
  29. package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  30. package/cjs/data/transforms/sankey.d.ts +2 -0
  31. package/cjs/data/transforms/sankey.js +9 -1
  32. package/cjs/data/transforms/sankey.js.map +1 -1
  33. package/cjs/event/events/dimension/base.js +1 -1
  34. package/cjs/event/events/dimension/base.js.map +1 -1
  35. package/cjs/event/events/dimension/interface.js.map +1 -1
  36. package/cjs/event/events/dimension/util/cartesian.d.ts +2 -2
  37. package/cjs/event/events/dimension/util/cartesian.js +12 -11
  38. package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
  39. package/cjs/event/events/dimension/util/common.d.ts +1 -1
  40. package/cjs/event/events/dimension/util/common.js +13 -6
  41. package/cjs/event/events/dimension/util/common.js.map +1 -1
  42. package/cjs/model/interface.d.ts +0 -4
  43. package/cjs/model/interface.js.map +1 -1
  44. package/cjs/model/layout-item.d.ts +0 -3
  45. package/cjs/model/layout-item.js +1 -8
  46. package/cjs/model/layout-item.js.map +1 -1
  47. package/cjs/series/area/area.js +5 -4
  48. package/cjs/series/area/area.js.map +1 -1
  49. package/cjs/series/area/interface.d.ts +1 -0
  50. package/cjs/series/area/interface.js.map +1 -1
  51. package/cjs/series/base/base-series.js.map +1 -1
  52. package/cjs/series/line/interface.d.ts +4 -2
  53. package/cjs/series/line/interface.js.map +1 -1
  54. package/cjs/series/line/line.js +5 -3
  55. package/cjs/series/line/line.js.map +1 -1
  56. package/cjs/series/mixin/line-mixin.d.ts +1 -1
  57. package/cjs/series/mixin/line-mixin.js +3 -2
  58. package/cjs/series/mixin/line-mixin.js.map +1 -1
  59. package/cjs/series/pie/pie.js +1 -1
  60. package/cjs/series/pie/pie.js.map +1 -1
  61. package/cjs/series/radar/interface.d.ts +1 -0
  62. package/cjs/series/radar/interface.js.map +1 -1
  63. package/cjs/series/radar/radar.js +4 -4
  64. package/cjs/series/radar/radar.js.map +1 -1
  65. package/cjs/series/sankey/sankey.js +7 -4
  66. package/cjs/series/sankey/sankey.js.map +1 -1
  67. package/cjs/series/word-cloud/base.d.ts +7 -0
  68. package/cjs/series/word-cloud/base.js +8 -3
  69. package/cjs/series/word-cloud/base.js.map +1 -1
  70. package/cjs/theme/buildin-theme/light/series/area.js +5 -0
  71. package/cjs/theme/buildin-theme/light/series/area.js.map +1 -1
  72. package/cjs/theme/buildin-theme/light/series/line.js +5 -0
  73. package/cjs/theme/buildin-theme/light/series/line.js.map +1 -1
  74. package/cjs/theme/buildin-theme/light/series/radar.js +5 -0
  75. package/cjs/theme/buildin-theme/light/series/radar.js.map +1 -1
  76. package/cjs/typings/spec/common.d.ts +7 -2
  77. package/cjs/typings/spec/common.js.map +1 -1
  78. package/cjs/typings/visual.d.ts +1 -1
  79. package/cjs/typings/visual.js.map +1 -1
  80. package/cjs/util/spec.d.ts +4 -0
  81. package/cjs/util/spec.js +24 -2
  82. package/cjs/util/spec.js.map +1 -1
  83. package/esm/chart/area/area.js +3 -1
  84. package/esm/chart/area/area.js.map +1 -1
  85. package/esm/chart/base-chart.d.ts +6 -2
  86. package/esm/chart/base-chart.js +34 -9
  87. package/esm/chart/base-chart.js.map +1 -1
  88. package/esm/chart/line/line.js +3 -1
  89. package/esm/chart/line/line.js.map +1 -1
  90. package/esm/chart/radar/radar.js +3 -1
  91. package/esm/chart/radar/radar.js.map +1 -1
  92. package/esm/chart/stack.js +3 -3
  93. package/esm/chart/stack.js.map +1 -1
  94. package/esm/component/axis/mixin/linear-axis-mixin.js +4 -1
  95. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  96. package/esm/component/geo/geo-coordinate.d.ts +4 -0
  97. package/esm/component/geo/geo-coordinate.js +18 -2
  98. package/esm/component/geo/geo-coordinate.js.map +1 -1
  99. package/esm/component/indicator/indicator.js +1 -1
  100. package/esm/component/indicator/indicator.js.map +1 -1
  101. package/esm/component/tooltip/processor/dimension-tooltip.js +4 -1
  102. package/esm/component/tooltip/processor/dimension-tooltip.js.map +1 -1
  103. package/esm/core/index.d.ts +1 -1
  104. package/esm/core/index.js +1 -1
  105. package/esm/core/index.js.map +1 -1
  106. package/esm/core/vchart.js +11 -9
  107. package/esm/core/vchart.js.map +1 -1
  108. package/esm/data/transforms/legend-data/discrete/discrete.js +4 -1
  109. package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  110. package/esm/data/transforms/sankey.d.ts +2 -0
  111. package/esm/data/transforms/sankey.js +9 -1
  112. package/esm/data/transforms/sankey.js.map +1 -1
  113. package/esm/event/events/dimension/base.js +2 -2
  114. package/esm/event/events/dimension/base.js.map +1 -1
  115. package/esm/event/events/dimension/interface.js.map +1 -1
  116. package/esm/event/events/dimension/util/cartesian.d.ts +2 -2
  117. package/esm/event/events/dimension/util/cartesian.js +7 -8
  118. package/esm/event/events/dimension/util/cartesian.js.map +1 -1
  119. package/esm/event/events/dimension/util/common.d.ts +1 -1
  120. package/esm/event/events/dimension/util/common.js +14 -6
  121. package/esm/event/events/dimension/util/common.js.map +1 -1
  122. package/esm/model/interface.d.ts +0 -4
  123. package/esm/model/interface.js.map +1 -1
  124. package/esm/model/layout-item.d.ts +0 -3
  125. package/esm/model/layout-item.js +1 -8
  126. package/esm/model/layout-item.js.map +1 -1
  127. package/esm/series/area/area.js +5 -4
  128. package/esm/series/area/area.js.map +1 -1
  129. package/esm/series/area/interface.d.ts +1 -0
  130. package/esm/series/area/interface.js.map +1 -1
  131. package/esm/series/base/base-series.js.map +1 -1
  132. package/esm/series/line/interface.d.ts +4 -2
  133. package/esm/series/line/interface.js.map +1 -1
  134. package/esm/series/line/line.js +5 -3
  135. package/esm/series/line/line.js.map +1 -1
  136. package/esm/series/mixin/line-mixin.d.ts +1 -1
  137. package/esm/series/mixin/line-mixin.js +3 -2
  138. package/esm/series/mixin/line-mixin.js.map +1 -1
  139. package/esm/series/pie/pie.js +2 -2
  140. package/esm/series/pie/pie.js.map +1 -1
  141. package/esm/series/radar/interface.d.ts +1 -0
  142. package/esm/series/radar/interface.js.map +1 -1
  143. package/esm/series/radar/radar.js +4 -4
  144. package/esm/series/radar/radar.js.map +1 -1
  145. package/esm/series/sankey/sankey.js +7 -4
  146. package/esm/series/sankey/sankey.js.map +1 -1
  147. package/esm/series/word-cloud/base.d.ts +7 -0
  148. package/esm/series/word-cloud/base.js +7 -0
  149. package/esm/series/word-cloud/base.js.map +1 -1
  150. package/esm/theme/buildin-theme/light/series/area.js +5 -0
  151. package/esm/theme/buildin-theme/light/series/area.js.map +1 -1
  152. package/esm/theme/buildin-theme/light/series/line.js +5 -0
  153. package/esm/theme/buildin-theme/light/series/line.js.map +1 -1
  154. package/esm/theme/buildin-theme/light/series/radar.js +5 -0
  155. package/esm/theme/buildin-theme/light/series/radar.js.map +1 -1
  156. package/esm/typings/spec/common.d.ts +7 -2
  157. package/esm/typings/spec/common.js.map +1 -1
  158. package/esm/typings/visual.d.ts +1 -1
  159. package/esm/typings/visual.js.map +1 -1
  160. package/esm/util/spec.d.ts +4 -0
  161. package/esm/util/spec.js +21 -0
  162. package/esm/util/spec.js.map +1 -1
  163. package/package.json +2 -2
@@ -5,4 +5,4 @@ import type { AxisComponent } from '../../../../component/axis/base-axis';
5
5
  import type { CoordinateType } from '../../../../typings';
6
6
  export declare const isInRegionBound: (chart: IChart, axis: AxisComponent, pos: ILayoutPoint) => boolean;
7
7
  export declare const isSameDimensionInfo: (a?: IDimensionInfo, b?: IDimensionInfo) => boolean;
8
- export declare const getDimensionData: (value: any, axis: AxisComponent, coordinate: CoordinateType, getDimensionField: (series: any) => string) => IDimensionData[];
8
+ export declare const getDimensionData: (value: any, axis: AxisComponent, coordinate: CoordinateType, getDimensionField: (series: any) => string | string[]) => IDimensionData[];
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.getDimensionData = exports.isSameDimensionInfo = exports.isInRegionBound = void 0;
6
6
 
7
- const util_1 = require("../../../../util"), isInBound = (pos, min, max) => pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y, isInRegionBound = (chart, axis, pos) => {
7
+ const util_1 = require("../../../../util"), vscale_1 = require("@visactor/vscale"), isInBound = (pos, min, max) => pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y, isInRegionBound = (chart, axis, pos) => {
8
8
  const regionList = chart.getRegionsInIds((0, util_1.array)(axis.layoutBindRegionID));
9
9
  return null == regionList ? void 0 : regionList.some((region => {
10
10
  const rect = region.getLayoutRect(), startPoint = region.getLayoutStartPoint();
@@ -29,18 +29,25 @@ exports.isSameDimensionInfo = isSameDimensionInfo;
29
29
 
30
30
  const getDimensionData = (value, axis, coordinate, getDimensionField) => {
31
31
  var _a;
32
- const data = [], regions = axis.getRegions();
32
+ const scale = axis.getScale(), isDiscreteAxis = (0, vscale_1.isDiscrete)(scale.type), data = [], regions = axis.getRegions();
33
33
  for (const region of regions) {
34
34
  const seriesList = region.getSeries();
35
35
  for (const series of seriesList) if (series.coordinate === coordinate) {
36
- const dimensionField = getDimensionField(series), viewData = null === (_a = series.getViewData()) || void 0 === _a ? void 0 : _a.latestData;
37
- dimensionField && viewData && data.push({
36
+ const dimensionField = (0, util_1.array)(getDimensionField(series)), viewData = null === (_a = series.getViewData()) || void 0 === _a ? void 0 : _a.latestData;
37
+ dimensionField && viewData && (isDiscreteAxis ? data.push({
38
38
  series: series,
39
39
  datum: viewData.filter((datum => {
40
40
  var _a;
41
- return (null === (_a = datum[dimensionField]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString());
41
+ return (null === (_a = datum[dimensionField[0]]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString());
42
42
  }))
43
- });
43
+ }) : data.push({
44
+ series: series,
45
+ datum: viewData.filter((datum => {
46
+ var _a;
47
+ return (null === (_a = datum[dimensionField[0]]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString()) || (0,
48
+ util_1.isValid)(datum[dimensionField[0]]) && (0, util_1.isValid)(datum[dimensionField[1]]) && value >= datum[dimensionField[0]] && value < datum[dimensionField[1]];
49
+ }))
50
+ }));
44
51
  }
45
52
  }
46
53
  return data;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/events/dimension/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["import type { ILayoutPoint } from '../../../../model/interface';\nimport type { IChart } from '../../../../chart/interface';\nimport type { IDimensionData, IDimensionInfo } from '../interface';\nimport { isNil, array } from '../../../../util';\nimport type { AxisComponent } from '../../../../component/axis/base-axis';\nimport type { ISeries } from '../../../../series/interface';\nimport type { CoordinateType } from '../../../../typings';\n\nconst isInBound = (pos: ILayoutPoint, min: ILayoutPoint, max: ILayoutPoint): boolean =>\n pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y;\n\nexport const isInRegionBound = (chart: IChart, axis: AxisComponent, pos: ILayoutPoint) => {\n const regionList = chart.getRegionsInIds(array(axis.layoutBindRegionID));\n return regionList?.some(region => {\n const rect = region.getLayoutRect();\n const startPoint = region.getLayoutStartPoint();\n return isInBound(\n pos,\n { x: startPoint.x, y: startPoint.y },\n { x: rect.width + startPoint.x, y: rect.height + startPoint.y }\n );\n });\n};\n\nexport const isSameDimensionInfo = (a?: IDimensionInfo, b?: IDimensionInfo): boolean => {\n if (a === b) {\n return true;\n }\n if (isNil(a) || isNil(b)) {\n return false;\n }\n if (a.value !== b.value) {\n return false;\n }\n if (a.axis?.id !== b.axis?.id) {\n return false;\n }\n return true;\n};\n\n/** 给定维度项的值,获取对应维度数据 */\nexport const getDimensionData = (\n value: any,\n axis: AxisComponent,\n coordinate: CoordinateType,\n getDimensionField: (series: any) => string\n): IDimensionData[] => {\n const data: IDimensionData[] = [];\n const regions = axis.getRegions(); // TODO: 直接从轴里取系列\n for (const region of regions) {\n const seriesList = region.getSeries();\n for (const series of seriesList) {\n if (series.coordinate === coordinate) {\n const dimensionField = getDimensionField(series);\n const viewData = series.getViewData()?.latestData;\n if (dimensionField && viewData) {\n data.push({\n series,\n datum: viewData.filter(\n (datum: any) => datum[dimensionField]?.toString() === value?.toString() // 获取该维度项所对应的数据\n )\n });\n }\n }\n }\n }\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/event/events/dimension/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["import type { ILayoutPoint } from '../../../../model/interface';\nimport type { IChart } from '../../../../chart/interface';\nimport type { IDimensionData, IDimensionInfo } from '../interface';\nimport { isNil, array, isValid } from '../../../../util';\nimport type { AxisComponent } from '../../../../component/axis/base-axis';\nimport type { CoordinateType } from '../../../../typings';\nimport { isDiscrete } from '@visactor/vscale';\n\nconst isInBound = (pos: ILayoutPoint, min: ILayoutPoint, max: ILayoutPoint): boolean =>\n pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y;\n\nexport const isInRegionBound = (chart: IChart, axis: AxisComponent, pos: ILayoutPoint) => {\n const regionList = chart.getRegionsInIds(array(axis.layoutBindRegionID));\n return regionList?.some(region => {\n const rect = region.getLayoutRect();\n const startPoint = region.getLayoutStartPoint();\n return isInBound(\n pos,\n { x: startPoint.x, y: startPoint.y },\n { x: rect.width + startPoint.x, y: rect.height + startPoint.y }\n );\n });\n};\n\nexport const isSameDimensionInfo = (a?: IDimensionInfo, b?: IDimensionInfo): boolean => {\n if (a === b) {\n return true;\n }\n if (isNil(a) || isNil(b)) {\n return false;\n }\n if (a.value !== b.value) {\n return false;\n }\n if (a.axis?.id !== b.axis?.id) {\n return false;\n }\n return true;\n};\n\n/** 给定维度项的值,获取对应维度数据 */\nexport const getDimensionData = (\n value: any,\n axis: AxisComponent,\n coordinate: CoordinateType,\n getDimensionField: (series: any) => string | string[]\n): IDimensionData[] => {\n const scale = axis.getScale();\n const isDiscreteAxis = isDiscrete(scale.type);\n\n const data: IDimensionData[] = [];\n const regions = axis.getRegions(); // TODO: 直接从轴里取系列\n for (const region of regions) {\n const seriesList = region.getSeries();\n for (const series of seriesList) {\n if (series.coordinate === coordinate) {\n const dimensionField = array(getDimensionField(series));\n const viewData = series.getViewData()?.latestData;\n if (dimensionField && viewData) {\n if (isDiscreteAxis) {\n data.push({\n series,\n datum: viewData.filter(\n (datum: any) => datum[dimensionField[0]]?.toString() === value?.toString() // 获取该维度项所对应的数据\n )\n });\n } else {\n data.push({\n series,\n datum: viewData.filter(\n (datum: any) =>\n datum[dimensionField[0]]?.toString() === value?.toString() ||\n (isValid(datum[dimensionField[0]]) &&\n isValid(datum[dimensionField[1]]) &&\n value >= datum[dimensionField[0]] &&\n value < datum[dimensionField[1]])\n )\n });\n }\n }\n }\n }\n }\n return data;\n};\n"]}
@@ -56,8 +56,6 @@ export interface ILayoutItem {
56
56
  getLayoutStartPoint: () => ILayoutPoint;
57
57
  getLayoutRect: () => ILayoutRect;
58
58
  getLastComputeOutBounds: () => IBoundsLike;
59
- getAttributeTag: () => boolean;
60
- setAttributeTag: (tag: boolean) => boolean;
61
59
  setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) => void;
62
60
  computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;
63
61
  setLayoutStartPosition: (pos: Partial<IPoint>) => void;
@@ -123,8 +121,6 @@ export interface IModel extends ICompilable, ILayoutItem {
123
121
  readonly state: ModelStateManager;
124
122
  getState: () => ModelStateManager['_stateMap'];
125
123
  coordinate?: CoordinateType;
126
- getAttributeTag: () => boolean;
127
- setAttributeTag: (tag: boolean) => boolean;
128
124
  getOption: () => IModelOption;
129
125
  getMarks: () => IMark[];
130
126
  getMarkNameMap: () => Record<string, IMark>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData, IElement, IMark as IVGrammarMark } from '@visactor/vgrammar';\nimport type {\n IOrientType,\n IPoint,\n IGroupMarkSpec,\n ConvertToMarkStyleSpec,\n CoordinateType,\n ICommonSpec,\n IRect,\n StringOrNumber\n} from '../typings';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { ModelStateManager } from './model-state-manager';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart } from '../chart/interface';\n\nexport type ILayoutNumber = number | IPercent | ((layoutRect: ILayoutRect) => number);\n\nexport interface ILayoutPoint {\n x: number;\n y: number;\n}\n\nexport interface ILayoutRectLevel {\n width: number;\n height: number;\n}\nexport interface ILayoutRect {\n width: number;\n height: number;\n}\n\nexport type IPercent = `${number}%`;\n\nexport type ILayoutPercent = IPercent | number;\n\n/**\n * 相对布局和绝对布局\n * 在相对布局结束后进行二次的绝对布局\n * 绝对布局会只根据 chart 进行相对处理\n */\n\ntype ILayoutType = 'region-relative' | 'region' | 'normal' | 'absolute' | 'normal-inline';\n\nexport type ILayoutOrientPadding = {\n left?: ILayoutNumber;\n right?: ILayoutNumber;\n top?: ILayoutNumber;\n bottom?: ILayoutNumber;\n};\n\n/** 布局 padding的配置 */\nexport type ILayoutPaddingSpec = ILayoutOrientPadding | ILayoutNumber | ILayoutNumber[];\n\n/**\n * 因为这些元素都会继承到各个模块,所以这里统一有前缀避免语意冲突\n */\nexport interface ILayoutItem {\n /**\n * 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n */\n directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n layoutClip: boolean;\n layoutType: ILayoutType;\n layoutBindRegionID: number | number[];\n layoutOrient: IOrientType;\n\n layoutPaddingLeft: number;\n layoutPaddingTop: number;\n layoutPaddingRight: number;\n layoutPaddingBottom: number;\n\n layoutOffsetX: number;\n layoutOffsetY: number;\n\n // 越大越先处理\n layoutLevel: number;\n\n layoutZIndex: number;\n chartLayoutRect: ILayoutRect;\n\n /** 是否自动缩进 */\n getAutoIndent: () => boolean;\n getLayoutStartPoint: () => ILayoutPoint;\n getLayoutRect: () => ILayoutRect;\n getLastComputeOutBounds: () => IBoundsLike;\n\n getAttributeTag: () => boolean;\n setAttributeTag: (tag: boolean) => boolean;\n\n /**\n * 更新元素布局的 layoutRect 大小,用来更新指定布局空间\n */\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) => void;\n /**\n * 基于元素内部逻辑计算占位空间,rect表示可用空间\n */\n computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;\n /**\n * 更新元素布局的起始点位置\n */\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n /**\n * 更新绝对布局元素的位置信息\n */\n absoluteLayoutInRect: (rect: IRect) => void;\n /**\n * 元素内部布局信息更新\n */\n updateLayoutAttribute: () => void;\n}\n\nexport interface ILayoutItemSpec {\n /** 当前模块的布局类型,配置为 absolute 的话,当前元素会以图表左上角为原点进行绝对布局 */\n layoutType?: ILayoutType;\n /**\n * 布局顺序等级,等级越大的,越优先布局\n * 比如顶部同时有标题和图例的场景,期望标题先放在顶部,然后放置图例。\n */\n layoutLevel?: number;\n\n // 基础的布局配置\n /** 模块布局位置 */\n orient?: IOrientType;\n /** 模块的布局间距 */\n padding?: ILayoutPaddingSpec;\n /** 模块的布局大小:宽度 */\n width?: ILayoutNumber;\n /** 模块的布局最大宽度 */\n maxWidth?: ILayoutNumber;\n /** 模块的布局最小宽度 */\n minWidth?: ILayoutNumber;\n /** 模块的布局大小:高度 */\n height?: ILayoutNumber;\n /** 模块的布局最大高度 */\n maxHeight?: ILayoutNumber;\n /** 模块的布局最小高度 */\n minHeight?: ILayoutNumber;\n /** 模块的布局位置偏移:X */\n offsetX?: ILayoutNumber;\n /** 模块的布局位置偏移:Y */\n offsetY?: ILayoutNumber;\n\n /** 模块的展示层级,当2个模块重叠时,层级较大的展示在上方 */\n zIndex?: number;\n /** 模块是否裁剪超出布局区域外的绘图内容 */\n clip?: boolean;\n\n // 绝对布局下的对齐设置\n\n /** 模块绝对布局下,与图表左侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n left?: ILayoutNumber;\n /** 模块绝对布局下,与图表右侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n right?: ILayoutNumber;\n /** 模块绝对布局下,与图表顶部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n top?: ILayoutNumber;\n /** 模块绝对布局下,与图表底部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n bottom?: ILayoutNumber;\n /** 模块绝对布局下,元素将放置在图表的正中间。注意仅在 layoutType === 'absolute' 时生效,同时将忽略 padding 属性 */\n center?: boolean;\n}\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable, ILayoutItem {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // state如果绑定到mark的更新?\n // 组件的 mark 要怎么样描述,才能正确的基于组件状态进行样式更新?\n // 方案1: 组件的 state 关联到 mark 的状态。\n // 方案2: 组件设置 mark 属性,mark自身属性变化时,自己去更新。\n // react state\n readonly state: ModelStateManager;\n getState: () => ModelStateManager['_stateMap'];\n\n coordinate?: CoordinateType;\n\n // 是否要 layout 的 tag\n getAttributeTag: () => boolean;\n setAttributeTag: (tag: boolean) => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n // updateSpec 或者切换主题后,根据新 spec 执行的初始化过程\n reInit: (theme?: any) => void;\n\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n\n setCurrentTheme: (theme: any, noRender?: boolean) => void;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n // tooltip\n tooltipHelper: ITooltipHelper;\n\n /** 绑定场景结点 */\n bindSceneNode: (node: IElement) => void;\n /** 获取场景结点 */\n getSceneNodes: () => IElement[];\n /** 获取场景结点对应 mark */\n getSceneNodeMarks: () => IVGrammarMark[];\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n specIndex?: number;\n specKey?: string;\n\n getTheme?: () => ITheme;\n\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n}\n\nexport interface IModelConstructor {\n new (ctx: IModelOption): IModel;\n}\n\nexport type ILayoutModelState = ModelStateManager['_stateMap'];\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData, IElement, IMark as IVGrammarMark } from '@visactor/vgrammar';\nimport type {\n IOrientType,\n IPoint,\n IGroupMarkSpec,\n ConvertToMarkStyleSpec,\n CoordinateType,\n ICommonSpec,\n IRect,\n StringOrNumber\n} from '../typings';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { ModelStateManager } from './model-state-manager';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart } from '../chart/interface';\n\nexport type ILayoutNumber = number | IPercent | ((layoutRect: ILayoutRect) => number);\n\nexport interface ILayoutPoint {\n x: number;\n y: number;\n}\n\nexport interface ILayoutRectLevel {\n width: number;\n height: number;\n}\nexport interface ILayoutRect {\n width: number;\n height: number;\n}\n\nexport type IPercent = `${number}%`;\n\nexport type ILayoutPercent = IPercent | number;\n\n/**\n * 相对布局和绝对布局\n * 在相对布局结束后进行二次的绝对布局\n * 绝对布局会只根据 chart 进行相对处理\n */\n\ntype ILayoutType = 'region-relative' | 'region' | 'normal' | 'absolute' | 'normal-inline';\n\nexport type ILayoutOrientPadding = {\n left?: ILayoutNumber;\n right?: ILayoutNumber;\n top?: ILayoutNumber;\n bottom?: ILayoutNumber;\n};\n\n/** 布局 padding的配置 */\nexport type ILayoutPaddingSpec = ILayoutOrientPadding | ILayoutNumber | ILayoutNumber[];\n\n/**\n * 因为这些元素都会继承到各个模块,所以这里统一有前缀避免语意冲突\n */\nexport interface ILayoutItem {\n /**\n * 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n */\n directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n layoutClip: boolean;\n layoutType: ILayoutType;\n layoutBindRegionID: number | number[];\n layoutOrient: IOrientType;\n\n layoutPaddingLeft: number;\n layoutPaddingTop: number;\n layoutPaddingRight: number;\n layoutPaddingBottom: number;\n\n layoutOffsetX: number;\n layoutOffsetY: number;\n\n // 越大越先处理\n layoutLevel: number;\n\n layoutZIndex: number;\n chartLayoutRect: ILayoutRect;\n\n /** 是否自动缩进 */\n getAutoIndent: () => boolean;\n getLayoutStartPoint: () => ILayoutPoint;\n getLayoutRect: () => ILayoutRect;\n getLastComputeOutBounds: () => IBoundsLike;\n\n /**\n * 更新元素布局的 layoutRect 大小,用来更新指定布局空间\n */\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) => void;\n /**\n * 基于元素内部逻辑计算占位空间,rect表示可用空间\n */\n computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;\n /**\n * 更新元素布局的起始点位置\n */\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n /**\n * 更新绝对布局元素的位置信息\n */\n absoluteLayoutInRect: (rect: IRect) => void;\n /**\n * 元素内部布局信息更新\n */\n updateLayoutAttribute: () => void;\n}\n\nexport interface ILayoutItemSpec {\n /** 当前模块的布局类型,配置为 absolute 的话,当前元素会以图表左上角为原点进行绝对布局 */\n layoutType?: ILayoutType;\n /**\n * 布局顺序等级,等级越大的,越优先布局\n * 比如顶部同时有标题和图例的场景,期望标题先放在顶部,然后放置图例。\n */\n layoutLevel?: number;\n\n // 基础的布局配置\n /** 模块布局位置 */\n orient?: IOrientType;\n /** 模块的布局间距 */\n padding?: ILayoutPaddingSpec;\n /** 模块的布局大小:宽度 */\n width?: ILayoutNumber;\n /** 模块的布局最大宽度 */\n maxWidth?: ILayoutNumber;\n /** 模块的布局最小宽度 */\n minWidth?: ILayoutNumber;\n /** 模块的布局大小:高度 */\n height?: ILayoutNumber;\n /** 模块的布局最大高度 */\n maxHeight?: ILayoutNumber;\n /** 模块的布局最小高度 */\n minHeight?: ILayoutNumber;\n /** 模块的布局位置偏移:X */\n offsetX?: ILayoutNumber;\n /** 模块的布局位置偏移:Y */\n offsetY?: ILayoutNumber;\n\n /** 模块的展示层级,当2个模块重叠时,层级较大的展示在上方 */\n zIndex?: number;\n /** 模块是否裁剪超出布局区域外的绘图内容 */\n clip?: boolean;\n\n // 绝对布局下的对齐设置\n\n /** 模块绝对布局下,与图表左侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n left?: ILayoutNumber;\n /** 模块绝对布局下,与图表右侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n right?: ILayoutNumber;\n /** 模块绝对布局下,与图表顶部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n top?: ILayoutNumber;\n /** 模块绝对布局下,与图表底部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n bottom?: ILayoutNumber;\n /** 模块绝对布局下,元素将放置在图表的正中间。注意仅在 layoutType === 'absolute' 时生效,同时将忽略 padding 属性 */\n center?: boolean;\n}\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable, ILayoutItem {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // state如果绑定到mark的更新?\n // 组件的 mark 要怎么样描述,才能正确的基于组件状态进行样式更新?\n // 方案1: 组件的 state 关联到 mark 的状态。\n // 方案2: 组件设置 mark 属性,mark自身属性变化时,自己去更新。\n // react state\n readonly state: ModelStateManager;\n getState: () => ModelStateManager['_stateMap'];\n\n coordinate?: CoordinateType;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n // updateSpec 或者切换主题后,根据新 spec 执行的初始化过程\n reInit: (theme?: any) => void;\n\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n\n setCurrentTheme: (theme: any, noRender?: boolean) => void;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n // tooltip\n tooltipHelper: ITooltipHelper;\n\n /** 绑定场景结点 */\n bindSceneNode: (node: IElement) => void;\n /** 获取场景结点 */\n getSceneNodes: () => IElement[];\n /** 获取场景结点对应 mark */\n getSceneNodeMarks: () => IVGrammarMark[];\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n specIndex?: number;\n specKey?: string;\n\n getTheme?: () => ITheme;\n\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n}\n\nexport interface IModelConstructor {\n new (ctx: IModelOption): IModel;\n}\n\nexport type ILayoutModelState = ModelStateManager['_stateMap'];\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n"]}
@@ -32,9 +32,6 @@ export declare class LayoutItem extends CompilableBase implements ILayoutItem {
32
32
  layoutPaddingBottom: ILayoutItem['layoutPaddingBottom'];
33
33
  layoutOffsetX: ILayoutItem['layoutOffsetX'];
34
34
  layoutOffsetY: ILayoutItem['layoutOffsetY'];
35
- protected _attributeTag: boolean;
36
- getAttributeTag(): boolean;
37
- setAttributeTag(tag: boolean): boolean;
38
35
  layoutLevel: ILayoutItem['layoutLevel'];
39
36
  layoutZIndex: ILayoutItem['layoutZIndex'];
40
37
  chartLayoutRect: ILayoutRect;
@@ -26,8 +26,7 @@ class LayoutItem extends compilable_base_1.CompilableBase {
26
26
  }, this._forceLayoutTag = !1, this.getLayoutRect = () => this._layoutRect, this.layoutType = "normal",
27
27
  this._layoutOrient = "left", this.layoutPaddingLeft = 0, this.layoutPaddingTop = 0,
28
28
  this.layoutPaddingRight = 0, this.layoutPaddingBottom = 0, this.layoutOffsetX = 0,
29
- this.layoutOffsetY = 0, this._attributeTag = !0, this.layoutLevel = constant_1.LayoutLevel.Region,
30
- this.layoutZIndex = 0;
29
+ this.layoutOffsetY = 0, this.layoutLevel = constant_1.LayoutLevel.Region, this.layoutZIndex = 0;
31
30
  }
32
31
  getSpec() {
33
32
  return this._spec;
@@ -47,12 +46,6 @@ class LayoutItem extends compilable_base_1.CompilableBase {
47
46
  set layoutOrient(v) {
48
47
  this._layoutOrient = v;
49
48
  }
50
- getAttributeTag() {
51
- return this._attributeTag;
52
- }
53
- setAttributeTag(tag) {
54
- return this._attributeTag = tag, this._attributeTag;
55
- }
56
49
  _setLayoutAttributeFromSpec(spec, chartViewRect) {
57
50
  if (!1 !== this._spec.visible) {
58
51
  const padding = (0, util_1.normalizeLayoutPaddingSpec)(spec.padding), paddingValue = (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model/layout-item.ts"],"names":[],"mappings":"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","file":"layout-item.js","sourcesContent":["import type { IPadding, IRect, IPoint } from '../typings';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil } from '@visactor/vutils';\nimport { isValidNumber, calcLayoutNumber, calcPadding, normalizeLayoutPaddingSpec, boundsInRect } from '../util';\nimport { LayoutLevel, DEFAULT_LAYOUT_RECT_LEVEL, USER_LAYOUT_RECT_LEVEL } from '../constant';\n\nimport type { ILayoutItem, ILayoutItemSpec, ILayoutPoint, ILayoutRect, ILayoutRectLevel } from './interface';\nimport { CompilableBase } from '../compile/compilable-base';\n\nexport class LayoutItem extends CompilableBase implements ILayoutItem {\n protected _spec: ILayoutItemSpec;\n getSpec(): any {\n return this._spec;\n }\n\n layoutClip: boolean = false;\n\n protected _autoIndent: boolean = true;\n getAutoIndent(): boolean {\n return this._autoIndent;\n }\n\n private _layoutStartPoint: ILayoutPoint = {\n x: 0,\n y: 0\n };\n\n getLayoutStartPoint(): ILayoutPoint {\n return this._layoutStartPoint;\n }\n\n private _layoutRect: ILayoutRect = { width: 0, height: 0 };\n\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n private _minHeight: number | null = null;\n private _maxHeight: number | null = null;\n\n // 处理用户和逻辑的优先级覆盖,让用户也可以设置 rect\n protected _layoutRectLevelMap: ILayoutRectLevel = {\n width: DEFAULT_LAYOUT_RECT_LEVEL,\n height: DEFAULT_LAYOUT_RECT_LEVEL\n };\n /** for layout diff */\n protected _lastComputeRect: ILayoutRect = null;\n protected _lastComputeOutBounds: IBoundsLike = { x1: 0, x2: 0, y1: 0, y2: 0 };\n getLastComputeOutBounds(): IBoundsLike {\n return this._lastComputeOutBounds;\n }\n protected _forceLayoutTag: boolean = false;\n\n getLayoutRect: () => ILayoutRect = () => {\n return this._layoutRect;\n };\n\n layoutType: ILayoutItem['layoutType'] = 'normal';\n\n layoutBindRegionID!: ILayoutItem['layoutBindRegionID'];\n\n _layoutOrient: ILayoutItem['layoutOrient'] = 'left';\n get layoutOrient() {\n return this._layoutOrient;\n }\n set layoutOrient(v: ILayoutItem['layoutOrient']) {\n this._layoutOrient = v;\n }\n layoutPaddingLeft: ILayoutItem['layoutPaddingLeft'] = 0;\n layoutPaddingTop: ILayoutItem['layoutPaddingTop'] = 0;\n layoutPaddingRight: ILayoutItem['layoutPaddingRight'] = 0;\n layoutPaddingBottom: ILayoutItem['layoutPaddingBottom'] = 0;\n\n layoutOffsetX: ILayoutItem['layoutOffsetX'] = 0;\n layoutOffsetY: ILayoutItem['layoutOffsetY'] = 0;\n\n protected _attributeTag: boolean = true;\n getAttributeTag(): boolean {\n return this._attributeTag;\n }\n setAttributeTag(tag: boolean): boolean {\n this._attributeTag = tag;\n return this._attributeTag;\n }\n\n layoutLevel: ILayoutItem['layoutLevel'] = LayoutLevel.Region;\n\n // layoutAbsoluteLeft: ILayoutItem['layoutAbsoluteLeft'] = Number.NaN;\n // layoutAbsoluteTop: ILayoutItem['layoutAbsoluteTop'] = Number.NaN;\n // layoutAbsoluteRight: ILayoutItem['layoutAbsoluteRight'] = Number.NaN;\n // layoutAbsoluteBottom: ILayoutItem['layoutAbsoluteBottom'] = Number.NaN;\n layoutZIndex: ILayoutItem['layoutZIndex'] = 0;\n chartLayoutRect!: ILayoutRect;\n\n private _setLayoutAttributeFromSpec(spec: ILayoutItemSpec, chartViewRect: ILayoutRect) {\n if ((this._spec as unknown as any).visible !== false) {\n // 处理 user spec value to px;\n const padding = normalizeLayoutPaddingSpec(spec.padding);\n const paddingValue = calcPadding(padding, chartViewRect, chartViewRect);\n this.layoutPaddingLeft = paddingValue.left;\n this.layoutPaddingRight = paddingValue.right;\n this.layoutPaddingTop = paddingValue.top;\n this.layoutPaddingBottom = paddingValue.bottom;\n\n this._minHeight = isNil(spec.minHeight)\n ? null\n : calcLayoutNumber(spec.minHeight, chartViewRect.height, chartViewRect);\n this._maxHeight = isNil(spec.maxHeight)\n ? null\n : calcLayoutNumber(spec.maxHeight, chartViewRect.height, chartViewRect);\n this._minWidth = isNil(spec.minWidth)\n ? null\n : calcLayoutNumber(spec.minWidth, chartViewRect.width, chartViewRect);\n this._maxWidth = isNil(spec.maxWidth)\n ? null\n : calcLayoutNumber(spec.maxWidth, chartViewRect.width, chartViewRect);\n // 处理 user width\n if (spec.width) {\n this.setLayoutRect(\n {\n width: calcLayoutNumber(spec.width, chartViewRect.width, chartViewRect)\n },\n {\n width: USER_LAYOUT_RECT_LEVEL\n }\n );\n }\n if (spec.height) {\n this.setLayoutRect(\n {\n height: calcLayoutNumber(spec.height, chartViewRect.height, chartViewRect)\n },\n {\n height: USER_LAYOUT_RECT_LEVEL\n }\n );\n }\n\n // offset\n if (!isNil(spec.offsetX)) {\n this.layoutOffsetX = calcLayoutNumber(spec.offsetX, chartViewRect.width, chartViewRect);\n }\n if (!isNil(spec.offsetY)) {\n this.layoutOffsetY = calcLayoutNumber(spec.offsetY, chartViewRect.height, chartViewRect);\n }\n }\n }\n\n setAttrFromSpec(spec: ILayoutItemSpec, chartViewRect: ILayoutRect) {\n this.layoutType = spec.layoutType ?? this.layoutType;\n this.layoutLevel = spec.layoutLevel ?? this.layoutLevel;\n this.layoutOrient = spec.orient ?? this.layoutOrient;\n\n this._setLayoutAttributeFromSpec(spec, chartViewRect);\n\n this.layoutClip = spec.clip ?? this.layoutClip;\n this.layoutZIndex = spec.zIndex ?? this.layoutZIndex;\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, _ctx: any) {\n // 在 layoutStart 时重新计算 spec 中的布局属性值,确保 resize 后,这些值保持正确的px值。\n this._setLayoutAttributeFromSpec(this._spec, viewRect);\n }\n\n private _getAbsoluteSpecValue(layoutRect: ILayoutRect) {\n const result: IPadding = { top: null, bottom: null, left: null, right: null };\n ['top', 'bottom', 'left', 'right'].forEach(k => {\n if (!isNil(this._spec[k])) {\n result[k] = calcLayoutNumber(\n this._spec[k],\n k === 'top' || k === 'bottom' ? layoutRect.height : layoutRect.width,\n layoutRect\n );\n }\n });\n return result;\n }\n\n absoluteLayoutInRect(layoutRect: IRect) {\n const { top, bottom, left, right } = this._getAbsoluteSpecValue(layoutRect);\n\n // size first\n const layoutSize = {\n width: layoutRect.width - this.layoutPaddingLeft - this.layoutPaddingRight,\n height: layoutRect.height - this.layoutPaddingTop - this.layoutPaddingBottom\n };\n if (!isNil(left)) {\n layoutSize.width -= left;\n }\n if (!isNil(right)) {\n layoutSize.width -= right;\n }\n if (!isNil(top)) {\n layoutSize.height -= top;\n }\n if (!isNil(bottom)) {\n layoutSize.height -= bottom;\n }\n\n this.setLayoutRect(layoutSize);\n const { width, height } = this.computeBoundsInRect(this.getLayoutRect());\n this.setLayoutRect({ width, height });\n const pos = { x: layoutRect.x, y: layoutRect.y };\n if (this._spec.center === true) {\n pos.x = layoutRect.x + layoutRect.width * 0.5 - width * 0.5;\n pos.y = layoutRect.y + layoutRect.height * 0.5 - height * 0.5;\n } else {\n if (!isNil(left)) {\n pos.x = layoutRect.x + left + this.layoutPaddingLeft;\n } else if (!isNil(right)) {\n pos.x = layoutRect.x + layoutRect.width - this.layoutPaddingRight - right - width;\n }\n if (!isNil(top)) {\n pos.y = layoutRect.y + top + this.layoutPaddingTop;\n } else if (!isNil(bottom)) {\n pos.y = layoutRect.y + layoutRect.height - this.layoutPaddingBottom - bottom - height;\n }\n }\n\n this.setLayoutStartPosition(pos);\n }\n\n setLayoutStartPosition({ x, y }: Partial<IPoint>): void {\n if (isValidNumber(x)) {\n this._layoutStartPoint.x = x;\n }\n if (isValidNumber(y)) {\n this._layoutStartPoint.y = y;\n }\n }\n\n setLayoutRect({ width, height }: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) {\n if (isValidNumber(width) && (levelMap?.width ?? DEFAULT_LAYOUT_RECT_LEVEL) >= this._layoutRectLevelMap.width) {\n this._layoutRect.width = width;\n this._layoutRectLevelMap.width = levelMap?.width ?? DEFAULT_LAYOUT_RECT_LEVEL;\n }\n\n if (isValidNumber(height) && (levelMap?.height ?? DEFAULT_LAYOUT_RECT_LEVEL) >= this._layoutRectLevelMap.height) {\n this._layoutRect.height = height;\n this._layoutRectLevelMap.height = levelMap?.height ?? DEFAULT_LAYOUT_RECT_LEVEL;\n }\n\n this._setRectInSpec(this._layoutRect);\n }\n\n mergeLayoutRect({ width, height }: ILayoutRect): ILayoutRect {\n const rect = { width, height };\n if (this._layoutRectLevelMap.width > DEFAULT_LAYOUT_RECT_LEVEL) {\n rect.width = this._layoutRect.width;\n }\n if (this._layoutRectLevelMap.height > DEFAULT_LAYOUT_RECT_LEVEL) {\n rect.height = this._layoutRect.height;\n }\n return rect;\n }\n\n getOrientPosAttribute() {\n return this._layoutOrient === 'bottom' || this._layoutOrient === 'top' ? 'x' : 'y';\n }\n getOrientSizeAttribute() {\n return this._layoutOrient === 'bottom' || this._layoutOrient === 'top' ? 'width' : 'height';\n }\n\n protected changeBoundsBySetting(bounds: IBoundsLike): IBoundsLike {\n // 用户设置了布局元素宽高的场景下,内部布局结果的 bounds 不能直接作为图表布局bounds\n if (this._layoutRectLevelMap.width > DEFAULT_LAYOUT_RECT_LEVEL) {\n bounds.x2 = bounds.x1 + this._layoutRect.width;\n }\n if (this._layoutRectLevelMap.height > DEFAULT_LAYOUT_RECT_LEVEL) {\n bounds.y2 = bounds.y1 + this._layoutRect.height;\n }\n bounds.x1 -= this._layoutStartPoint.x;\n bounds.x2 -= this._layoutStartPoint.x;\n bounds.y1 -= this._layoutStartPoint.y;\n bounds.y2 -= this._layoutStartPoint.y;\n return bounds;\n }\n\n private _setRectInSpec(rect: ILayoutRect) {\n const result = { ...rect };\n if (this._layoutRectLevelMap.width < USER_LAYOUT_RECT_LEVEL) {\n if (!isNil(this._minWidth)) {\n result.width = Math.max(result.width, this._minWidth);\n }\n if (!isNil(this._maxWidth)) {\n result.width = Math.min(result.width, this._maxWidth);\n }\n } else {\n result.width = this._layoutRect.width;\n }\n\n if (this._layoutRectLevelMap.height < USER_LAYOUT_RECT_LEVEL) {\n if (!isNil(this._minHeight)) {\n result.height = Math.max(result.height, this._minHeight);\n }\n if (!isNil(this._maxHeight)) {\n result.height = Math.min(result.height, this._maxHeight);\n }\n } else {\n result.height = this._layoutRect.height;\n }\n return result;\n }\n\n computeBoundsInRect(rect: ILayoutRect): ILayoutRect {\n // 保留布局使用的rect\n this._lastComputeRect = rect;\n // 将布局空间限制到 spec 设置内\n // 避免操作到元素本身的 aabbbounds\n const bounds = { ...this.boundsInRect(this._setRectInSpec(rect), rect) };\n // 用户设置了布局元素宽高的场景下,内部布局结果的 bounds 不能直接作为图表布局bounds\n this.changeBoundsBySetting(bounds);\n // 保留当前模块的布局超出内容,用来处理自动缩进\n if (this._autoIndent) {\n this._lastComputeOutBounds.x1 = Math.ceil(-bounds.x1);\n this._lastComputeOutBounds.x2 = Math.ceil(bounds.x2 - rect.width);\n this._lastComputeOutBounds.y1 = Math.ceil(-bounds.y1);\n this._lastComputeOutBounds.y2 = Math.ceil(bounds.y2 - rect.height);\n }\n // 返回的布局大小也要限制到 spec 设置内\n return this._setRectInSpec(boundsInRect(bounds, rect));\n }\n\n /**\n * 实际bounds预计算方法\n * 需要在布局方法中更新 _lastComputeBounds\n * @param rect 布局最终使用的rect\n * @param fullSpace 布局可以使用的空间,用与部分模块的 position 计算\n */\n boundsInRect(rect: ILayoutRect, fullSpace: ILayoutRect): IBoundsLike {\n return { x1: 0, y1: 0, x2: rect.width, y2: rect.height };\n }\n\n updateLayoutAttribute(): void {\n // do nothing\n }\n\n compile(): void {\n // do nothing\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/model/layout-item.ts"],"names":[],"mappings":"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","file":"layout-item.js","sourcesContent":["import type { IPadding, IRect, IPoint } from '../typings';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil } from '@visactor/vutils';\nimport { isValidNumber, calcLayoutNumber, calcPadding, normalizeLayoutPaddingSpec, boundsInRect } from '../util';\nimport { LayoutLevel, DEFAULT_LAYOUT_RECT_LEVEL, USER_LAYOUT_RECT_LEVEL } from '../constant';\n\nimport type { ILayoutItem, ILayoutItemSpec, ILayoutPoint, ILayoutRect, ILayoutRectLevel } from './interface';\nimport { CompilableBase } from '../compile/compilable-base';\n\nexport class LayoutItem extends CompilableBase implements ILayoutItem {\n protected _spec: ILayoutItemSpec;\n getSpec(): any {\n return this._spec;\n }\n\n layoutClip: boolean = false;\n\n protected _autoIndent: boolean = true;\n getAutoIndent(): boolean {\n return this._autoIndent;\n }\n\n private _layoutStartPoint: ILayoutPoint = {\n x: 0,\n y: 0\n };\n\n getLayoutStartPoint(): ILayoutPoint {\n return this._layoutStartPoint;\n }\n\n private _layoutRect: ILayoutRect = { width: 0, height: 0 };\n\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n private _minHeight: number | null = null;\n private _maxHeight: number | null = null;\n\n // 处理用户和逻辑的优先级覆盖,让用户也可以设置 rect\n protected _layoutRectLevelMap: ILayoutRectLevel = {\n width: DEFAULT_LAYOUT_RECT_LEVEL,\n height: DEFAULT_LAYOUT_RECT_LEVEL\n };\n /** for layout diff */\n protected _lastComputeRect: ILayoutRect = null;\n protected _lastComputeOutBounds: IBoundsLike = { x1: 0, x2: 0, y1: 0, y2: 0 };\n getLastComputeOutBounds(): IBoundsLike {\n return this._lastComputeOutBounds;\n }\n protected _forceLayoutTag: boolean = false;\n\n getLayoutRect: () => ILayoutRect = () => {\n return this._layoutRect;\n };\n\n layoutType: ILayoutItem['layoutType'] = 'normal';\n\n layoutBindRegionID!: ILayoutItem['layoutBindRegionID'];\n\n _layoutOrient: ILayoutItem['layoutOrient'] = 'left';\n get layoutOrient() {\n return this._layoutOrient;\n }\n set layoutOrient(v: ILayoutItem['layoutOrient']) {\n this._layoutOrient = v;\n }\n layoutPaddingLeft: ILayoutItem['layoutPaddingLeft'] = 0;\n layoutPaddingTop: ILayoutItem['layoutPaddingTop'] = 0;\n layoutPaddingRight: ILayoutItem['layoutPaddingRight'] = 0;\n layoutPaddingBottom: ILayoutItem['layoutPaddingBottom'] = 0;\n\n layoutOffsetX: ILayoutItem['layoutOffsetX'] = 0;\n layoutOffsetY: ILayoutItem['layoutOffsetY'] = 0;\n\n layoutLevel: ILayoutItem['layoutLevel'] = LayoutLevel.Region;\n\n // layoutAbsoluteLeft: ILayoutItem['layoutAbsoluteLeft'] = Number.NaN;\n // layoutAbsoluteTop: ILayoutItem['layoutAbsoluteTop'] = Number.NaN;\n // layoutAbsoluteRight: ILayoutItem['layoutAbsoluteRight'] = Number.NaN;\n // layoutAbsoluteBottom: ILayoutItem['layoutAbsoluteBottom'] = Number.NaN;\n layoutZIndex: ILayoutItem['layoutZIndex'] = 0;\n chartLayoutRect!: ILayoutRect;\n\n private _setLayoutAttributeFromSpec(spec: ILayoutItemSpec, chartViewRect: ILayoutRect) {\n if ((this._spec as unknown as any).visible !== false) {\n // 处理 user spec value to px;\n const padding = normalizeLayoutPaddingSpec(spec.padding);\n const paddingValue = calcPadding(padding, chartViewRect, chartViewRect);\n this.layoutPaddingLeft = paddingValue.left;\n this.layoutPaddingRight = paddingValue.right;\n this.layoutPaddingTop = paddingValue.top;\n this.layoutPaddingBottom = paddingValue.bottom;\n\n this._minHeight = isNil(spec.minHeight)\n ? null\n : calcLayoutNumber(spec.minHeight, chartViewRect.height, chartViewRect);\n this._maxHeight = isNil(spec.maxHeight)\n ? null\n : calcLayoutNumber(spec.maxHeight, chartViewRect.height, chartViewRect);\n this._minWidth = isNil(spec.minWidth)\n ? null\n : calcLayoutNumber(spec.minWidth, chartViewRect.width, chartViewRect);\n this._maxWidth = isNil(spec.maxWidth)\n ? null\n : calcLayoutNumber(spec.maxWidth, chartViewRect.width, chartViewRect);\n // 处理 user width\n if (spec.width) {\n this.setLayoutRect(\n {\n width: calcLayoutNumber(spec.width, chartViewRect.width, chartViewRect)\n },\n {\n width: USER_LAYOUT_RECT_LEVEL\n }\n );\n }\n if (spec.height) {\n this.setLayoutRect(\n {\n height: calcLayoutNumber(spec.height, chartViewRect.height, chartViewRect)\n },\n {\n height: USER_LAYOUT_RECT_LEVEL\n }\n );\n }\n\n // offset\n if (!isNil(spec.offsetX)) {\n this.layoutOffsetX = calcLayoutNumber(spec.offsetX, chartViewRect.width, chartViewRect);\n }\n if (!isNil(spec.offsetY)) {\n this.layoutOffsetY = calcLayoutNumber(spec.offsetY, chartViewRect.height, chartViewRect);\n }\n }\n }\n\n setAttrFromSpec(spec: ILayoutItemSpec, chartViewRect: ILayoutRect) {\n this.layoutType = spec.layoutType ?? this.layoutType;\n this.layoutLevel = spec.layoutLevel ?? this.layoutLevel;\n this.layoutOrient = spec.orient ?? this.layoutOrient;\n\n this._setLayoutAttributeFromSpec(spec, chartViewRect);\n\n this.layoutClip = spec.clip ?? this.layoutClip;\n this.layoutZIndex = spec.zIndex ?? this.layoutZIndex;\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, _ctx: any) {\n // 在 layoutStart 时重新计算 spec 中的布局属性值,确保 resize 后,这些值保持正确的px值。\n this._setLayoutAttributeFromSpec(this._spec, viewRect);\n }\n\n private _getAbsoluteSpecValue(layoutRect: ILayoutRect) {\n const result: IPadding = { top: null, bottom: null, left: null, right: null };\n ['top', 'bottom', 'left', 'right'].forEach(k => {\n if (!isNil(this._spec[k])) {\n result[k] = calcLayoutNumber(\n this._spec[k],\n k === 'top' || k === 'bottom' ? layoutRect.height : layoutRect.width,\n layoutRect\n );\n }\n });\n return result;\n }\n\n absoluteLayoutInRect(layoutRect: IRect) {\n const { top, bottom, left, right } = this._getAbsoluteSpecValue(layoutRect);\n\n // size first\n const layoutSize = {\n width: layoutRect.width - this.layoutPaddingLeft - this.layoutPaddingRight,\n height: layoutRect.height - this.layoutPaddingTop - this.layoutPaddingBottom\n };\n if (!isNil(left)) {\n layoutSize.width -= left;\n }\n if (!isNil(right)) {\n layoutSize.width -= right;\n }\n if (!isNil(top)) {\n layoutSize.height -= top;\n }\n if (!isNil(bottom)) {\n layoutSize.height -= bottom;\n }\n\n this.setLayoutRect(layoutSize);\n const { width, height } = this.computeBoundsInRect(this.getLayoutRect());\n this.setLayoutRect({ width, height });\n const pos = { x: layoutRect.x, y: layoutRect.y };\n if (this._spec.center === true) {\n pos.x = layoutRect.x + layoutRect.width * 0.5 - width * 0.5;\n pos.y = layoutRect.y + layoutRect.height * 0.5 - height * 0.5;\n } else {\n if (!isNil(left)) {\n pos.x = layoutRect.x + left + this.layoutPaddingLeft;\n } else if (!isNil(right)) {\n pos.x = layoutRect.x + layoutRect.width - this.layoutPaddingRight - right - width;\n }\n if (!isNil(top)) {\n pos.y = layoutRect.y + top + this.layoutPaddingTop;\n } else if (!isNil(bottom)) {\n pos.y = layoutRect.y + layoutRect.height - this.layoutPaddingBottom - bottom - height;\n }\n }\n\n this.setLayoutStartPosition(pos);\n }\n\n setLayoutStartPosition({ x, y }: Partial<IPoint>): void {\n if (isValidNumber(x)) {\n this._layoutStartPoint.x = x;\n }\n if (isValidNumber(y)) {\n this._layoutStartPoint.y = y;\n }\n }\n\n setLayoutRect({ width, height }: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) {\n if (isValidNumber(width) && (levelMap?.width ?? DEFAULT_LAYOUT_RECT_LEVEL) >= this._layoutRectLevelMap.width) {\n this._layoutRect.width = width;\n this._layoutRectLevelMap.width = levelMap?.width ?? DEFAULT_LAYOUT_RECT_LEVEL;\n }\n\n if (isValidNumber(height) && (levelMap?.height ?? DEFAULT_LAYOUT_RECT_LEVEL) >= this._layoutRectLevelMap.height) {\n this._layoutRect.height = height;\n this._layoutRectLevelMap.height = levelMap?.height ?? DEFAULT_LAYOUT_RECT_LEVEL;\n }\n\n this._setRectInSpec(this._layoutRect);\n }\n\n mergeLayoutRect({ width, height }: ILayoutRect): ILayoutRect {\n const rect = { width, height };\n if (this._layoutRectLevelMap.width > DEFAULT_LAYOUT_RECT_LEVEL) {\n rect.width = this._layoutRect.width;\n }\n if (this._layoutRectLevelMap.height > DEFAULT_LAYOUT_RECT_LEVEL) {\n rect.height = this._layoutRect.height;\n }\n return rect;\n }\n\n getOrientPosAttribute() {\n return this._layoutOrient === 'bottom' || this._layoutOrient === 'top' ? 'x' : 'y';\n }\n getOrientSizeAttribute() {\n return this._layoutOrient === 'bottom' || this._layoutOrient === 'top' ? 'width' : 'height';\n }\n\n protected changeBoundsBySetting(bounds: IBoundsLike): IBoundsLike {\n // 用户设置了布局元素宽高的场景下,内部布局结果的 bounds 不能直接作为图表布局bounds\n if (this._layoutRectLevelMap.width > DEFAULT_LAYOUT_RECT_LEVEL) {\n bounds.x2 = bounds.x1 + this._layoutRect.width;\n }\n if (this._layoutRectLevelMap.height > DEFAULT_LAYOUT_RECT_LEVEL) {\n bounds.y2 = bounds.y1 + this._layoutRect.height;\n }\n bounds.x1 -= this._layoutStartPoint.x;\n bounds.x2 -= this._layoutStartPoint.x;\n bounds.y1 -= this._layoutStartPoint.y;\n bounds.y2 -= this._layoutStartPoint.y;\n return bounds;\n }\n\n private _setRectInSpec(rect: ILayoutRect) {\n const result = { ...rect };\n if (this._layoutRectLevelMap.width < USER_LAYOUT_RECT_LEVEL) {\n if (!isNil(this._minWidth)) {\n result.width = Math.max(result.width, this._minWidth);\n }\n if (!isNil(this._maxWidth)) {\n result.width = Math.min(result.width, this._maxWidth);\n }\n } else {\n result.width = this._layoutRect.width;\n }\n\n if (this._layoutRectLevelMap.height < USER_LAYOUT_RECT_LEVEL) {\n if (!isNil(this._minHeight)) {\n result.height = Math.max(result.height, this._minHeight);\n }\n if (!isNil(this._maxHeight)) {\n result.height = Math.min(result.height, this._maxHeight);\n }\n } else {\n result.height = this._layoutRect.height;\n }\n return result;\n }\n\n computeBoundsInRect(rect: ILayoutRect): ILayoutRect {\n // 保留布局使用的rect\n this._lastComputeRect = rect;\n // 将布局空间限制到 spec 设置内\n // 避免操作到元素本身的 aabbbounds\n const bounds = { ...this.boundsInRect(this._setRectInSpec(rect), rect) };\n // 用户设置了布局元素宽高的场景下,内部布局结果的 bounds 不能直接作为图表布局bounds\n this.changeBoundsBySetting(bounds);\n // 保留当前模块的布局超出内容,用来处理自动缩进\n if (this._autoIndent) {\n this._lastComputeOutBounds.x1 = Math.ceil(-bounds.x1);\n this._lastComputeOutBounds.x2 = Math.ceil(bounds.x2 - rect.width);\n this._lastComputeOutBounds.y1 = Math.ceil(-bounds.y1);\n this._lastComputeOutBounds.y2 = Math.ceil(bounds.y2 - rect.height);\n }\n // 返回的布局大小也要限制到 spec 设置内\n return this._setRectInSpec(boundsInRect(bounds, rect));\n }\n\n /**\n * 实际bounds预计算方法\n * 需要在布局方法中更新 _lastComputeBounds\n * @param rect 布局最终使用的rect\n * @param fullSpace 布局可以使用的空间,用与部分模块的 position 计算\n */\n boundsInRect(rect: ILayoutRect, fullSpace: ILayoutRect): IBoundsLike {\n return { x1: 0, y1: 0, x2: rect.width, y2: rect.height };\n }\n\n updateLayoutAttribute(): void {\n // do nothing\n }\n\n compile(): void {\n // do nothing\n }\n}\n"]}
@@ -14,19 +14,20 @@ class AreaSeries extends cartesian_1.CartesianSeries {
14
14
  this._invalidType = "break";
15
15
  }
16
16
  initMark() {
17
- var _a, _b, _c;
17
+ var _a, _b, _c, _d;
18
18
  const progressive = {
19
19
  progressiveStep: this._spec.progressiveStep,
20
20
  progressiveThreshold: this._spec.progressiveThreshold,
21
21
  large: this._spec.large,
22
22
  largeThreshold: this._spec.largeThreshold
23
- }, isAreaVisible = !1 !== (null === (_a = this._spec.area) || void 0 === _a ? void 0 : _a.visible) && !1 !== (null === (_c = null === (_b = this._spec.area) || void 0 === _b ? void 0 : _b.style) || void 0 === _c ? void 0 : _c.visible);
23
+ }, isAreaVisible = !1 !== (null === (_a = this._spec.area) || void 0 === _a ? void 0 : _a.visible) && !1 !== (null === (_c = null === (_b = this._spec.area) || void 0 === _b ? void 0 : _b.style) || void 0 === _c ? void 0 : _c.visible), seriesMark = null !== (_d = this._spec.seriesMark) && void 0 !== _d ? _d : "area";
24
24
  this._areaMark = this._createMark(AreaSeries.mark.area, {
25
25
  groupKey: this._seriesField,
26
26
  defaultMorphElementKey: this.getDimensionField()[0],
27
27
  progressive: progressive,
28
- isSeriesMark: isAreaVisible
29
- }), this.initLineMark(progressive, !isAreaVisible), this.initSymbolMark(progressive);
28
+ isSeriesMark: isAreaVisible && "area" === seriesMark
29
+ }), this.initLineMark(progressive, "line" === seriesMark || "area" === seriesMark && !isAreaVisible),
30
+ this.initSymbolMark(progressive, "point" === seriesMark);
30
31
  }
31
32
  initMarkStyle() {
32
33
  var _a, _b, _c, _d, _e;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/area/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { LineLikeSeriesMixin, lineLikeSeriesMarkMap } from '../mixin/line-mixin';\nimport type { IAreaMark } from '../../mark/area';\nimport { Direction } from '../../typings/space';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport { AttributeLevel } from '../../constant';\nimport type { Maybe, Datum, IInvalidType } from '../../typings';\nimport { valueInScaleRange, couldBeValidNumber } from '../../util';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum } from '../interface';\nimport { SeriesTypeEnum } from '../interface';\nimport { mixin } from '@visactor/vutils';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { DEFAULT_MARK_ANIMATION } from '../../animation/config';\nimport { DEFAULT_SMOOTH_INTERPOLATE } from '../../typings/interpolate';\nimport type { IAreaSeriesSpec, IAreaSeriesTheme } from './interface';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { BaseSeries } from '../base/base-series';\n\nimport { VChart } from '../../core/vchart';\nimport { LineMark } from '../../mark/line';\nimport { AreaMark } from '../../mark/area';\nimport { TextMark } from '../../mark/text';\nimport { SymbolMark } from '../../mark/symbol';\nVChart.useMark([LineMark, AreaMark, TextMark, SymbolMark]);\n\nexport interface AreaSeries\n extends Pick<\n LineLikeSeriesMixin,\n | 'initLineMark'\n | 'initSymbolMark'\n | 'initLabelMarkStyle'\n | 'initLineMarkStyle'\n | 'initSymbolMarkStyle'\n | '_lineMark'\n | '_symbolMark'\n >,\n CartesianSeries<IAreaSeriesSpec> {}\n\nexport class AreaSeries extends CartesianSeries<IAreaSeriesSpec> {\n static readonly type: string = SeriesTypeEnum.area;\n type = SeriesTypeEnum.area;\n\n static readonly mark: SeriesMarkMap = {\n ...BaseSeries.mark,\n ...lineLikeSeriesMarkMap,\n [SeriesMarkNameEnum.area]: { name: SeriesMarkNameEnum.area, type: MarkTypeEnum.area }\n };\n\n protected declare _theme: Maybe<IAreaSeriesTheme>;\n\n protected _areaMark!: IAreaMark;\n protected _stack: boolean = true;\n protected _invalidType: IInvalidType = 'break';\n\n initMark(): void {\n const progressive = {\n progressiveStep: this._spec.progressiveStep,\n progressiveThreshold: this._spec.progressiveThreshold,\n large: this._spec.large,\n largeThreshold: this._spec.largeThreshold\n };\n\n const isAreaVisible = this._spec.area?.visible !== false && this._spec.area?.style?.visible !== false;\n // area\n this._areaMark = this._createMark(AreaSeries.mark.area, {\n groupKey: this._seriesField,\n defaultMorphElementKey: this.getDimensionField()[0],\n progressive,\n isSeriesMark: isAreaVisible\n }) as IAreaMark;\n\n this.initLineMark(progressive, !isAreaVisible);\n this.initSymbolMark(progressive);\n }\n\n initMarkStyle(): void {\n // FIXME 是不是应该把curveType提前到上层配置\n // 不允许area和line的curveType不一致\n const userCurveType = this.getSpec().area?.style?.curveType ?? this.getSpec().line?.style?.curveType;\n const curveType =\n userCurveType === DEFAULT_SMOOTH_INTERPOLATE\n ? this._direction === Direction.vertical\n ? 'monotoneX'\n : 'monotoneY'\n : userCurveType;\n\n // area\n const areaMark = this._areaMark;\n if (areaMark) {\n if (this._direction === Direction.vertical) {\n this.setMarkStyle(\n this._areaMark,\n {\n x: this.dataToPositionX.bind(this),\n y1: (datum: Datum) => {\n return valueInScaleRange(this.dataToPositionY1(datum), this._yAxisHelper?.getScale?.(0));\n },\n y: this.dataToPositionY.bind(this),\n z: this.dataToPositionZ.bind(this)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._areaMark,\n {\n x: this.dataToPositionX.bind(this),\n x1: (datum: Datum) => {\n return valueInScaleRange(this.dataToPositionX1(datum), this._xAxisHelper?.getScale?.(0));\n },\n y: this.dataToPositionY.bind(this),\n z: this.dataToPositionZ.bind(this),\n orient: this._direction\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n this.setMarkStyle(\n areaMark,\n {\n fill: this.getColorAttribute(),\n defined: (datum: Datum) => {\n if (this._invalidType === 'break') {\n return couldBeValidNumber(datum[this.getStackValueField()]);\n }\n return true;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n areaMark,\n {\n curveType\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._trigger.registerMark(areaMark);\n this._tooltipHelper.activeTriggerSet.dimension.add(areaMark);\n }\n\n this.initLineMarkStyle(this._direction, userCurveType);\n this.initSymbolMarkStyle();\n this.initLabelMarkStyle();\n }\n\n initAnimation() {\n const animationParams = { direction: this.direction };\n const appearPreset = (this._spec?.animationAppear as IMarkAnimateSpec<string>)?.preset;\n\n if (this._lineMark) {\n this._lineMark.setAnimationConfig(\n animationConfig(\n DEFAULT_MARK_ANIMATION.line(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.line, this._spec)\n )\n );\n }\n\n if (this._areaMark) {\n this._areaMark.setAnimationConfig(\n animationConfig(\n DEFAULT_MARK_ANIMATION.area(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.area, this._spec)\n )\n );\n }\n\n if (this._symbolMark) {\n this._symbolMark.setAnimationConfig(\n animationConfig(DEFAULT_MARK_ANIMATION.symbol(), userAnimationConfig(SeriesMarkNameEnum.point, this._spec))\n );\n }\n }\n}\n\nmixin(AreaSeries, LineLikeSeriesMixin);\n"]}
1
+ {"version":3,"sources":["../src/series/area/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { LineLikeSeriesMixin, lineLikeSeriesMarkMap } from '../mixin/line-mixin';\nimport type { IAreaMark } from '../../mark/area';\nimport { Direction } from '../../typings/space';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport { AttributeLevel } from '../../constant';\nimport type { Maybe, Datum, IInvalidType } from '../../typings';\nimport { valueInScaleRange, couldBeValidNumber } from '../../util';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum } from '../interface';\nimport { SeriesTypeEnum } from '../interface';\nimport { mixin } from '@visactor/vutils';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { DEFAULT_MARK_ANIMATION } from '../../animation/config';\nimport { DEFAULT_SMOOTH_INTERPOLATE } from '../../typings/interpolate';\nimport type { IAreaSeriesSpec, IAreaSeriesTheme } from './interface';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { BaseSeries } from '../base/base-series';\n\nimport { VChart } from '../../core/vchart';\nimport { LineMark } from '../../mark/line';\nimport { AreaMark } from '../../mark/area';\nimport { TextMark } from '../../mark/text';\nimport { SymbolMark } from '../../mark/symbol';\nVChart.useMark([LineMark, AreaMark, TextMark, SymbolMark]);\n\nexport interface AreaSeries\n extends Pick<\n LineLikeSeriesMixin,\n | 'initLineMark'\n | 'initSymbolMark'\n | 'initLabelMarkStyle'\n | 'initLineMarkStyle'\n | 'initSymbolMarkStyle'\n | '_lineMark'\n | '_symbolMark'\n >,\n CartesianSeries<IAreaSeriesSpec> {}\n\nexport class AreaSeries extends CartesianSeries<IAreaSeriesSpec> {\n static readonly type: string = SeriesTypeEnum.area;\n type = SeriesTypeEnum.area;\n\n static readonly mark: SeriesMarkMap = {\n ...BaseSeries.mark,\n ...lineLikeSeriesMarkMap,\n [SeriesMarkNameEnum.area]: { name: SeriesMarkNameEnum.area, type: MarkTypeEnum.area }\n };\n\n protected declare _theme: Maybe<IAreaSeriesTheme>;\n\n protected _areaMark!: IAreaMark;\n protected _stack: boolean = true;\n protected _invalidType: IInvalidType = 'break';\n\n initMark(): void {\n const progressive = {\n progressiveStep: this._spec.progressiveStep,\n progressiveThreshold: this._spec.progressiveThreshold,\n large: this._spec.large,\n largeThreshold: this._spec.largeThreshold\n };\n\n const isAreaVisible = this._spec.area?.visible !== false && this._spec.area?.style?.visible !== false;\n const seriesMark = this._spec.seriesMark ?? 'area';\n // area\n this._areaMark = this._createMark(AreaSeries.mark.area, {\n groupKey: this._seriesField,\n defaultMorphElementKey: this.getDimensionField()[0],\n progressive,\n isSeriesMark: isAreaVisible && seriesMark === 'area'\n }) as IAreaMark;\n\n this.initLineMark(progressive, seriesMark === 'line' || (seriesMark === 'area' && !isAreaVisible));\n this.initSymbolMark(progressive, seriesMark === 'point');\n }\n\n initMarkStyle(): void {\n // FIXME 是不是应该把curveType提前到上层配置\n // 不允许area和line的curveType不一致\n const userCurveType = this.getSpec().area?.style?.curveType ?? this.getSpec().line?.style?.curveType;\n const curveType =\n userCurveType === DEFAULT_SMOOTH_INTERPOLATE\n ? this._direction === Direction.vertical\n ? 'monotoneX'\n : 'monotoneY'\n : userCurveType;\n\n // area\n const areaMark = this._areaMark;\n if (areaMark) {\n if (this._direction === Direction.vertical) {\n this.setMarkStyle(\n this._areaMark,\n {\n x: this.dataToPositionX.bind(this),\n y1: (datum: Datum) => {\n return valueInScaleRange(this.dataToPositionY1(datum), this._yAxisHelper?.getScale?.(0));\n },\n y: this.dataToPositionY.bind(this),\n z: this.dataToPositionZ.bind(this)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._areaMark,\n {\n x: this.dataToPositionX.bind(this),\n x1: (datum: Datum) => {\n return valueInScaleRange(this.dataToPositionX1(datum), this._xAxisHelper?.getScale?.(0));\n },\n y: this.dataToPositionY.bind(this),\n z: this.dataToPositionZ.bind(this),\n orient: this._direction\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n this.setMarkStyle(\n areaMark,\n {\n fill: this.getColorAttribute(),\n defined: (datum: Datum) => {\n if (this._invalidType === 'break') {\n return couldBeValidNumber(datum[this.getStackValueField()]);\n }\n return true;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n areaMark,\n {\n curveType\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._trigger.registerMark(areaMark);\n this._tooltipHelper.activeTriggerSet.dimension.add(areaMark);\n }\n\n this.initLineMarkStyle(this._direction, userCurveType);\n this.initSymbolMarkStyle();\n this.initLabelMarkStyle();\n }\n\n initAnimation() {\n const animationParams = { direction: this.direction };\n const appearPreset = (this._spec?.animationAppear as IMarkAnimateSpec<string>)?.preset;\n\n if (this._lineMark) {\n this._lineMark.setAnimationConfig(\n animationConfig(\n DEFAULT_MARK_ANIMATION.line(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.line, this._spec)\n )\n );\n }\n\n if (this._areaMark) {\n this._areaMark.setAnimationConfig(\n animationConfig(\n DEFAULT_MARK_ANIMATION.area(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.area, this._spec)\n )\n );\n }\n\n if (this._symbolMark) {\n this._symbolMark.setAnimationConfig(\n animationConfig(DEFAULT_MARK_ANIMATION.symbol(), userAnimationConfig(SeriesMarkNameEnum.point, this._spec))\n );\n }\n }\n}\n\nmixin(AreaSeries, LineLikeSeriesMixin);\n"]}
@@ -11,6 +11,7 @@ export interface IAreaSeriesSpec extends ICartesianSeriesSpec, IAnimationSpec<st
11
11
  [SeriesMarkNameEnum.point]?: IMarkSpec<ISymbolMarkSpec>;
12
12
  [SeriesMarkNameEnum.line]?: IMarkSpec<ILineMarkSpec>;
13
13
  [SeriesMarkNameEnum.area]?: IMarkSpec<IAreaMarkSpec>;
14
+ seriesMark?: 'point' | 'line' | 'area';
14
15
  }
15
16
  export interface IAreaSeriesTheme extends ICartesianSeriesTheme, ILineLikeSeriesTheme {
16
17
  [SeriesMarkNameEnum.area]?: Partial<IMarkTheme<IAreaMarkSpec>>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/area/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ICartesianSeriesSpec, ICartesianSeriesTheme } from '../cartesian/interface';\nimport type { IMarkSpec, IMarkTheme } from '../../typings/spec/common';\nimport type { ISymbolMarkSpec, ILineMarkSpec, IAreaMarkSpec } from '../../typings/visual';\nimport type { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface';\nimport type { ILineLikeSeriesTheme } from '../mixin/line-mixin';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { AreaAppearPreset } from './animation';\nimport type { IMarkProgressiveConfig } from '../../mark/interface';\n\nexport interface IAreaSeriesSpec\n extends ICartesianSeriesSpec,\n IAnimationSpec<string, AreaAppearPreset>,\n IMarkProgressiveConfig {\n /**\n * 系列类型\n */\n type: 'area';\n /**\n * 点图元配置\n */\n [SeriesMarkNameEnum.point]?: IMarkSpec<ISymbolMarkSpec>;\n /**\n * 线图元配置\n */\n [SeriesMarkNameEnum.line]?: IMarkSpec<ILineMarkSpec>;\n /**\n * 面积图元配置\n */\n [SeriesMarkNameEnum.area]?: IMarkSpec<IAreaMarkSpec>;\n}\n\nexport interface IAreaSeriesTheme extends ICartesianSeriesTheme, ILineLikeSeriesTheme {\n [SeriesMarkNameEnum.area]?: Partial<IMarkTheme<IAreaMarkSpec>>;\n}\n"]}
1
+ {"version":3,"sources":["../src/series/area/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ICartesianSeriesSpec, ICartesianSeriesTheme } from '../cartesian/interface';\nimport type { IMarkSpec, IMarkTheme } from '../../typings/spec/common';\nimport type { ISymbolMarkSpec, ILineMarkSpec, IAreaMarkSpec } from '../../typings/visual';\nimport type { SeriesMarkNameEnum } from '../interface';\nimport type { ILineLikeSeriesTheme } from '../mixin/line-mixin';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { AreaAppearPreset } from './animation';\nimport type { IMarkProgressiveConfig } from '../../mark/interface';\n\nexport interface IAreaSeriesSpec\n extends ICartesianSeriesSpec,\n IAnimationSpec<string, AreaAppearPreset>,\n IMarkProgressiveConfig {\n /**\n * 系列类型\n */\n type: 'area';\n /**\n * 点图元配置\n */\n [SeriesMarkNameEnum.point]?: IMarkSpec<ISymbolMarkSpec>;\n /**\n * 线图元配置\n */\n [SeriesMarkNameEnum.line]?: IMarkSpec<ILineMarkSpec>;\n /**\n * 面积图元配置\n */\n [SeriesMarkNameEnum.area]?: IMarkSpec<IAreaMarkSpec>;\n /**\n * 系列主 mark 类型配置,该配置会影响图例的展示\n * @default 'area'\n * @since 1.2.0\n */\n seriesMark?: 'point' | 'line' | 'area';\n}\n\nexport interface IAreaSeriesTheme extends ICartesianSeriesTheme, ILineLikeSeriesTheme {\n [SeriesMarkNameEnum.area]?: Partial<IMarkTheme<IAreaMarkSpec>>;\n}\n"]}