@visactor/vrender-components 0.18.10-alpha.0 → 0.18.10-alpha.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 (115) hide show
  1. package/cjs/index.d.ts +1 -1
  2. package/cjs/index.js +1 -1
  3. package/cjs/index.js.map +1 -1
  4. package/cjs/label/arc.d.ts +2 -2
  5. package/cjs/label/base.d.ts +2 -2
  6. package/cjs/marker/base-line.d.ts +17 -0
  7. package/cjs/marker/base-line.js +53 -0
  8. package/cjs/marker/base-line.js.map +1 -0
  9. package/cjs/marker/{area.d.ts → cartesian/area.d.ts} +13 -8
  10. package/cjs/marker/{area.js → cartesian/area.js} +18 -19
  11. package/cjs/marker/cartesian/area.js.map +1 -0
  12. package/cjs/marker/cartesian/line.d.ts +27 -0
  13. package/cjs/marker/cartesian/line.js +153 -0
  14. package/cjs/marker/cartesian/line.js.map +1 -0
  15. package/cjs/marker/config.d.ts +80 -10
  16. package/cjs/marker/config.js +77 -40
  17. package/cjs/marker/config.js.map +1 -1
  18. package/cjs/marker/index.d.ts +4 -2
  19. package/cjs/marker/index.js +3 -2
  20. package/cjs/marker/index.js.map +1 -1
  21. package/cjs/marker/point.d.ts +1 -1
  22. package/cjs/marker/polar/arc-line.d.ts +22 -0
  23. package/cjs/marker/polar/arc-line.js +103 -0
  24. package/cjs/marker/polar/arc-line.js.map +1 -0
  25. package/cjs/marker/polar/area.d.ts +50 -0
  26. package/cjs/marker/polar/area.js +123 -0
  27. package/cjs/marker/polar/area.js.map +1 -0
  28. package/cjs/marker/polar/line.d.ts +1 -0
  29. package/cjs/marker/polar/line.js +3 -0
  30. package/cjs/marker/polar/line.js.map +1 -0
  31. package/cjs/marker/register.d.ts +5 -2
  32. package/cjs/marker/register.js +18 -5
  33. package/cjs/marker/register.js.map +1 -1
  34. package/cjs/marker/type.d.ts +73 -21
  35. package/cjs/marker/type.js +22 -15
  36. package/cjs/marker/type.js.map +1 -1
  37. package/cjs/segment/arc-segment.d.ts +13 -0
  38. package/cjs/segment/arc-segment.js +51 -0
  39. package/cjs/segment/arc-segment.js.map +1 -0
  40. package/cjs/segment/index.d.ts +1 -0
  41. package/cjs/segment/index.js +2 -1
  42. package/cjs/segment/index.js.map +1 -1
  43. package/cjs/segment/register.d.ts +1 -0
  44. package/cjs/segment/register.js +7 -2
  45. package/cjs/segment/register.js.map +1 -1
  46. package/cjs/segment/segment.d.ts +7 -6
  47. package/cjs/segment/segment.js +7 -5
  48. package/cjs/segment/segment.js.map +1 -1
  49. package/cjs/segment/type.d.ts +22 -4
  50. package/cjs/segment/type.js.map +1 -1
  51. package/cjs/tag/tag.d.ts +5 -0
  52. package/cjs/tag/tag.js +11 -2
  53. package/cjs/tag/tag.js.map +1 -1
  54. package/es/index.d.ts +1 -1
  55. package/es/index.js +1 -1
  56. package/es/index.js.map +1 -1
  57. package/es/label/arc.d.ts +2 -2
  58. package/es/label/base.d.ts +2 -2
  59. package/es/marker/base-line.d.ts +17 -0
  60. package/es/marker/base-line.js +53 -0
  61. package/es/marker/base-line.js.map +1 -0
  62. package/es/marker/{area.d.ts → cartesian/area.d.ts} +13 -8
  63. package/es/marker/{area.js → cartesian/area.js} +22 -23
  64. package/es/marker/cartesian/area.js.map +1 -0
  65. package/es/marker/cartesian/line.d.ts +27 -0
  66. package/es/marker/cartesian/line.js +159 -0
  67. package/es/marker/cartesian/line.js.map +1 -0
  68. package/es/marker/config.d.ts +80 -10
  69. package/es/marker/config.js +79 -40
  70. package/es/marker/config.js.map +1 -1
  71. package/es/marker/index.d.ts +4 -2
  72. package/es/marker/index.js +6 -2
  73. package/es/marker/index.js.map +1 -1
  74. package/es/marker/point.d.ts +1 -1
  75. package/es/marker/polar/arc-line.d.ts +22 -0
  76. package/es/marker/polar/arc-line.js +109 -0
  77. package/es/marker/polar/arc-line.js.map +1 -0
  78. package/es/marker/polar/area.d.ts +50 -0
  79. package/es/marker/polar/area.js +133 -0
  80. package/es/marker/polar/area.js.map +1 -0
  81. package/es/marker/polar/line.d.ts +1 -0
  82. package/es/marker/polar/line.js +3 -0
  83. package/es/marker/polar/line.js.map +1 -0
  84. package/es/marker/register.d.ts +5 -2
  85. package/es/marker/register.js +16 -4
  86. package/es/marker/register.js.map +1 -1
  87. package/es/marker/type.d.ts +73 -21
  88. package/es/marker/type.js +25 -15
  89. package/es/marker/type.js.map +1 -1
  90. package/es/segment/arc-segment.d.ts +13 -0
  91. package/es/segment/arc-segment.js +49 -0
  92. package/es/segment/arc-segment.js.map +1 -0
  93. package/es/segment/index.d.ts +1 -0
  94. package/es/segment/index.js +2 -0
  95. package/es/segment/index.js.map +1 -1
  96. package/es/segment/register.d.ts +1 -0
  97. package/es/segment/register.js +5 -1
  98. package/es/segment/register.js.map +1 -1
  99. package/es/segment/segment.d.ts +7 -6
  100. package/es/segment/segment.js +7 -5
  101. package/es/segment/segment.js.map +1 -1
  102. package/es/segment/type.d.ts +22 -4
  103. package/es/segment/type.js.map +1 -1
  104. package/es/tag/tag.d.ts +5 -0
  105. package/es/tag/tag.js +11 -2
  106. package/es/tag/tag.js.map +1 -1
  107. package/package.json +5 -5
  108. package/cjs/marker/area.js.map +0 -1
  109. package/cjs/marker/line.d.ts +0 -18
  110. package/cjs/marker/line.js +0 -100
  111. package/cjs/marker/line.js.map +0 -1
  112. package/es/marker/area.js.map +0 -1
  113. package/es/marker/line.d.ts +0 -18
  114. package/es/marker/line.js +0 -108
  115. package/es/marker/line.js.map +0 -1
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.18.10-alpha.0";
1
+ export declare const version = "0.18.10-alpha.2";
2
2
  export * from './core/base';
3
3
  export * from './core/type';
4
4
  export * from './scrollbar';
package/cjs/index.js CHANGED
@@ -17,7 +17,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), exports.version = void 0, exports.version = "0.18.10-alpha.0", __exportStar(require("./core/base"), exports),
20
+ }), exports.version = void 0, exports.version = "0.18.10-alpha.2", __exportStar(require("./core/base"), exports),
21
21
  __exportStar(require("./core/type"), exports), __exportStar(require("./scrollbar"), exports),
22
22
  __exportStar(require("./tag"), exports), __exportStar(require("./poptip"), exports),
23
23
  __exportStar(require("./crosshair"), exports), __exportStar(require("./label"), exports),
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,iBAAiB,CAAC;AAEzC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,yCAAuB","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.18.10-alpha.0\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './util';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,iBAAiB,CAAC;AAEzC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,yCAAuB","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.18.10-alpha.2\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './util';\n"]}
@@ -40,12 +40,12 @@ export declare class ArcLabel extends LabelBase<ArcLabelAttrs> {
40
40
  private _arcLeft;
41
41
  private _arcRight;
42
42
  constructor(attributes: ArcLabelAttrs, options?: ComponentOptions);
43
- protected _overlapping(labels: (IText | IRichText)[]): (IRichText | IText)[];
43
+ protected _overlapping(labels: (IText | IRichText)[]): (IText | IRichText)[];
44
44
  protected labeling(textBounds: IBoundsLike, graphicBounds: IBoundsLike, position?: string, offset?: number): {
45
45
  x: number;
46
46
  y: number;
47
47
  } | undefined;
48
- protected _layout(texts: (IText | IRichText)[]): (IRichText | IText)[];
48
+ protected _layout(texts: (IText | IRichText)[]): (IText | IRichText)[];
49
49
  protected layoutArcLabels(position: BaseLabelAttrs['position'], attribute: any, currentMarks?: IGraphic[], data?: LabelItem[], textBoundsArray?: any, ellipsisWidth?: number): ArcInfo[];
50
50
  private _layoutInsideLabels;
51
51
  private _layoutOutsideLabels;
@@ -40,12 +40,12 @@ export declare class LabelBase<T extends BaseLabelAttrs> extends AbstractCompone
40
40
  private _onHover;
41
41
  private _onUnHover;
42
42
  private _onClick;
43
- protected _createLabelText(attributes: LabelItem): IRichText | IText;
43
+ protected _createLabelText(attributes: LabelItem): IText | IRichText;
44
44
  private _prepare;
45
45
  protected getRelatedGraphic(item: LabelItem): IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>;
46
46
  protected _initText(data?: LabelItem[]): (IText | IRichText)[];
47
47
  protected _layout(texts: (IText | IRichText)[]): (IText | IRichText)[];
48
- protected _overlapping(labels: (IText | IRichText)[]): (IRichText | IText)[];
48
+ protected _overlapping(labels: (IText | IRichText)[]): (IText | IRichText)[];
49
49
  protected getBaseMarkGroup(): IGroup;
50
50
  protected getGraphicBounds(graphic?: IGraphic, point?: Partial<PointLocationCfg>, position?: string): IBoundsLike;
51
51
  protected _renderLabels(labels: (IText | IRichText)[]): void;
@@ -0,0 +1,17 @@
1
+ import type { IGroup } from '@visactor/vrender-core';
2
+ import type { ArcSegment, Segment } from '../segment';
3
+ import { Tag } from '../tag';
4
+ import type { CommonMarkLineAttrs } from './type';
5
+ import { Marker } from './base';
6
+ export declare abstract class BaseMarkLine<T> extends Marker<CommonMarkLineAttrs<T>> {
7
+ name: string;
8
+ protected _line: Segment | ArcSegment;
9
+ protected abstract createSegment(): any;
10
+ protected abstract setLineAttributes(): any;
11
+ protected abstract getPositionByDirection(direction: any): any;
12
+ getLine(): Segment | ArcSegment;
13
+ getLabel(): Tag;
14
+ protected setLabelPos(): void;
15
+ protected initMarker(container: IGroup): void;
16
+ protected updateMarker(): void;
17
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.BaseMarkLine = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), tag_1 = require("../tag"), limit_shape_1 = require("../util/limit-shape"), constant_1 = require("../constant"), base_1 = require("./base");
8
+
9
+ class BaseMarkLine extends base_1.Marker {
10
+ constructor() {
11
+ super(...arguments), this.name = "baseMarkLine";
12
+ }
13
+ getLine() {
14
+ return this._line;
15
+ }
16
+ getLabel() {
17
+ return this._label;
18
+ }
19
+ setLabelPos() {
20
+ const {label: label = {}, limitRect: limitRect} = this.attribute, {position: position = "end", refX: refX = 0, refY: refY = 0, confine: confine} = label, labelPoint = this.getPositionByDirection(position);
21
+ if (this._label.setAttributes(Object.assign({}, labelPoint)), limitRect && confine) {
22
+ const {x: x, y: y, width: width, height: height} = limitRect;
23
+ (0, limit_shape_1.limitShapeInBounds)(this._label, {
24
+ x1: x,
25
+ y1: y,
26
+ x2: x + width,
27
+ y2: y + height
28
+ });
29
+ }
30
+ }
31
+ initMarker(container) {
32
+ const {label: label, state: state} = this.attribute, line = this.createSegment();
33
+ line.name = "cartesian-mark-line-line", this._line = line, container.add(line);
34
+ const markLabel = new tag_1.Tag(Object.assign(Object.assign({}, label), {
35
+ state: {
36
+ panel: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.labelBackground),
37
+ text: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.label)
38
+ }
39
+ }));
40
+ markLabel.name = "cartesian-mark-line-label", this._label = markLabel, container.add(markLabel),
41
+ this.setLabelPos();
42
+ }
43
+ updateMarker() {
44
+ const {label: label} = this.attribute;
45
+ this.setLineAttributes(), this._label && this._label.setAttributes(Object.assign({
46
+ dx: 0,
47
+ dy: 0
48
+ }, label)), this.setLabelPos();
49
+ }
50
+ }
51
+
52
+ exports.BaseMarkLine = BaseMarkLine;
53
+ //# sourceMappingURL=base-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker/base-line.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAIzC,gCAA6B;AAE7B,qDAAyD;AACzD,0CAA6C;AAC7C,iCAAgC;AAEhC,MAAsB,YAAgB,SAAQ,aAA8B;IAA5E;;QACE,SAAI,GAAG,cAAc,CAAC;IAoExB,CAAC;IA5DC,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,WAAW;QACnB,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACjD,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,aAAa,mBACpB,UAAU,EACb,CAAC;QACH,IAAI,SAAS,IAAI,OAAO,EAAE;YACxB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAC1C,IAAA,gCAAkB,EAAC,IAAI,CAAC,MAAM,EAAE;gBAC9B,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC,GAAG,KAAK;gBACb,EAAE,EAAE,CAAC,GAAG,MAAM;aACf,CAAC,CAAC;SACJ;IACH,CAAC;IAES,UAAU,CAAC,SAAiB;QACpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAmC,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC;QAExC,MAAM,SAAS,GAAG,IAAI,SAAG,iCACnB,KAAuB,KAC3B,KAAK,EAAE;gBACL,KAAK,EAAE,IAAA,cAAK,EAAC,EAAE,EAAE,yBAAc,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,CAAC;gBACxD,IAAI,EAAE,IAAA,cAAK,EAAC,EAAE,EAAE,yBAAc,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;aAC9C,IACD,CAAC;QACH,SAAS,CAAC,IAAI,GAAG,2BAA2B,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,SAAS,CAAC,GAAG,CAAC,SAA6B,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,YAAY;QACpB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAmC,CAAC;QAE3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,aAAa,iBACvB,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,CAAC,IACD,KAAuB,EAC3B,CAAC;SACJ;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF;AArED,oCAqEC","file":"base-line.js","sourcesContent":["import type { IGroup, INode } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { ArcSegment, Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport type { CommonMarkLineAttrs } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport { DEFAULT_STATES } from '../constant';\nimport { Marker } from './base';\n\nexport abstract class BaseMarkLine<T> extends Marker<CommonMarkLineAttrs<T>> {\n name = 'baseMarkLine';\n\n protected _line!: Segment | ArcSegment;\n\n protected abstract createSegment(): any;\n protected abstract setLineAttributes(): any;\n protected abstract getPositionByDirection(direction: any): any;\n\n getLine() {\n return this._line;\n }\n getLabel() {\n return this._label;\n }\n\n protected setLabelPos() {\n const { label = {}, limitRect } = this.attribute;\n const { position = 'end', refX = 0, refY = 0, confine } = label;\n const labelPoint = this.getPositionByDirection(position);\n this._label.setAttributes({\n ...labelPoint\n });\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n\n protected initMarker(container: IGroup) {\n const { label, state } = this.attribute as CommonMarkLineAttrs<T>;\n const line = this.createSegment();\n line.name = 'cartesian-mark-line-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const markLabel = new Tag({\n ...(label as TagAttributes),\n state: {\n panel: merge({}, DEFAULT_STATES, state?.labelBackground),\n text: merge({}, DEFAULT_STATES, state?.label)\n }\n });\n markLabel.name = 'cartesian-mark-line-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { label } = this.attribute as CommonMarkLineAttrs<T>;\n\n this.setLineAttributes();\n\n if (this._label) {\n this._label.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n }\n\n this.setLabelPos();\n }\n}\n"]}
@@ -1,14 +1,14 @@
1
1
  import type { IGroup, IPolygon } from '@visactor/vrender-core';
2
- import { Tag } from '../tag';
3
- import { Marker } from './base';
4
- import type { MarkAreaAttrs } from './type';
5
- import type { ComponentOptions } from '../interface';
6
- export declare class MarkArea extends Marker<MarkAreaAttrs> {
2
+ import { Tag } from '../../tag';
3
+ import { Marker } from '../base';
4
+ import type { CartesianMarkAreaAttrs } from '../type';
5
+ import type { ComponentOptions } from '../../interface';
6
+ export declare class CartesianMarkArea extends Marker<CartesianMarkAreaAttrs> {
7
7
  name: string;
8
8
  static defaultAttributes: {
9
9
  interactive: boolean;
10
10
  label: {
11
- position: import("./type").IMarkAreaLabelPosition;
11
+ position: import("../type").ICartesianMarkAreaLabelPosition;
12
12
  textStyle: {
13
13
  fill: string;
14
14
  stroke: string;
@@ -16,6 +16,8 @@ export declare class MarkArea extends Marker<MarkAreaAttrs> {
16
16
  fontSize: number;
17
17
  fontWeight: string;
18
18
  fontStyle: string;
19
+ textAlign: string;
20
+ textBaseline: string;
19
21
  };
20
22
  padding: number[];
21
23
  panel: {
@@ -33,8 +35,11 @@ export declare class MarkArea extends Marker<MarkAreaAttrs> {
33
35
  private _area;
34
36
  getArea(): IPolygon;
35
37
  getLabel(): Tag;
36
- constructor(attributes: MarkAreaAttrs, options?: ComponentOptions);
37
- private _getPositionByDirection;
38
+ constructor(attributes: CartesianMarkAreaAttrs, options?: ComponentOptions);
39
+ protected getPositionByDirection(direction: string): {
40
+ x: number;
41
+ y: number;
42
+ };
38
43
  protected setLabelPos(): void;
39
44
  protected initMarker(container: IGroup): void;
40
45
  protected updateMarker(): void;
@@ -2,13 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.MarkArea = void 0;
5
+ }), exports.CartesianMarkArea = void 0;
6
6
 
7
- const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), tag_1 = require("../tag"), base_1 = require("./base"), config_1 = require("./config"), limit_shape_1 = require("../util/limit-shape"), register_1 = require("./register"), constant_1 = require("../constant");
7
+ const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), tag_1 = require("../../tag"), base_1 = require("../base"), config_1 = require("../config"), limit_shape_1 = require("../../util/limit-shape"), register_1 = require("../register"), constant_1 = require("../../constant");
8
8
 
9
- (0, register_1.loadMarkAreaComponent)();
9
+ (0, register_1.loadCartesianMarkAreaComponent)();
10
10
 
11
- class MarkArea extends base_1.Marker {
11
+ class CartesianMarkArea extends base_1.Marker {
12
12
  getArea() {
13
13
  return this._area;
14
14
  }
@@ -16,23 +16,24 @@ class MarkArea extends base_1.Marker {
16
16
  return this._label;
17
17
  }
18
18
  constructor(attributes, options) {
19
- super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, MarkArea.defaultAttributes, attributes)),
20
- this.name = "markArea";
19
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, CartesianMarkArea.defaultAttributes, attributes)),
20
+ this.name = "cartesianMarkArea";
21
21
  }
22
- _getPositionByDirection(area, direction) {
23
- const {x1: x1, x2: x2, y1: y1, y2: y2} = this._area.AABBBounds;
22
+ getPositionByDirection(direction) {
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
24
+ const {x1: x1, x2: x2, y1: y1, y2: y2} = this._area.AABBBounds, labelRectHeight = Math.abs((null !== (_b = null === (_a = this._label.getTextShape().AABBBounds) || void 0 === _a ? void 0 : _a.y2) && void 0 !== _b ? _b : 0) - (null !== (_d = null === (_c = this._label.getTextShape()) || void 0 === _c ? void 0 : _c.AABBBounds.y1) && void 0 !== _d ? _d : 0)), labelTextHeight = Math.abs((null !== (_f = null === (_e = this._label.getBgRect().AABBBounds) || void 0 === _e ? void 0 : _e.y2) && void 0 !== _f ? _f : 0) - (null !== (_h = null === (_g = this._label.getBgRect()) || void 0 === _g ? void 0 : _g.AABBBounds.y1) && void 0 !== _h ? _h : 0)), labelHeight = Math.max(labelRectHeight, labelTextHeight), labelRectWidth = Math.abs((null !== (_k = null === (_j = this._label.getTextShape().AABBBounds) || void 0 === _j ? void 0 : _j.x2) && void 0 !== _k ? _k : 0) - (null !== (_m = null === (_l = this._label.getTextShape()) || void 0 === _l ? void 0 : _l.AABBBounds.x1) && void 0 !== _m ? _m : 0)), labelTextWidth = Math.abs((null !== (_p = null === (_o = this._label.getBgRect().AABBBounds) || void 0 === _o ? void 0 : _o.x2) && void 0 !== _p ? _p : 0) - (null !== (_r = null === (_q = this._label.getBgRect()) || void 0 === _q ? void 0 : _q.AABBBounds.x1) && void 0 !== _r ? _r : 0)), labelWidth = Math.max(labelRectWidth, labelTextWidth);
24
25
  return direction.includes("left") || direction.includes("Left") ? {
25
- x: x1,
26
+ x: x1 + (direction.includes("inside") ? .5 : -.5) * labelWidth,
26
27
  y: (y1 + y2) / 2
27
28
  } : direction.includes("right") || direction.includes("Right") ? {
28
- x: x2,
29
+ x: x2 + (direction.includes("inside") ? -.5 : .5) * labelWidth,
29
30
  y: (y1 + y2) / 2
30
31
  } : direction.includes("top") || direction.includes("Top") ? {
31
32
  x: (x1 + x2) / 2,
32
- y: y1
33
+ y: y1 + (direction.includes("inside") ? .5 : -.5) * labelHeight
33
34
  } : direction.includes("bottom") || direction.includes("Bottom") ? {
34
35
  x: (x1 + x2) / 2,
35
- y: y2
36
+ y: y2 + (direction.includes("inside") ? -.5 : .5) * labelHeight
36
37
  } : {
37
38
  x: (x1 + x2) / 2,
38
39
  y: (y1 + y2) / 2
@@ -41,10 +42,8 @@ class MarkArea extends base_1.Marker {
41
42
  setLabelPos() {
42
43
  var _a;
43
44
  if (this._label && this._area) {
44
- const {label: label = {}} = this.attribute, labelPosition = null !== (_a = label.position) && void 0 !== _a ? _a : "middle", labelPoint = this._getPositionByDirection(this._area, labelPosition);
45
- if (this._label.setAttributes(Object.assign(Object.assign({}, labelPoint), {
46
- textStyle: Object.assign(Object.assign({}, config_1.DEFAULT_MARK_AREA_TEXT_STYLE_MAP[labelPosition]), label.textStyle)
47
- })), this.attribute.limitRect && label.confine) {
45
+ const {label: label = {}} = this.attribute, labelPosition = null !== (_a = label.position) && void 0 !== _a ? _a : "middle", labelPoint = this.getPositionByDirection(labelPosition);
46
+ if (this._label.setAttributes(Object.assign({}, labelPoint)), this.attribute.limitRect && label.confine) {
48
47
  const {x: x, y: y, width: width, height: height} = this.attribute.limitRect;
49
48
  (0, limit_shape_1.limitShapeInBounds)(this._label, {
50
49
  x1: x,
@@ -60,14 +59,14 @@ class MarkArea extends base_1.Marker {
60
59
  points: points
61
60
  }, areaStyle));
62
61
  area.states = (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.area),
63
- area.name = "mark-area-area", this._area = area, container.add(area);
62
+ area.name = "mark-polygon-polygon", this._area = area, container.add(area);
64
63
  const markLabel = new tag_1.Tag(Object.assign(Object.assign({}, label), {
65
64
  state: {
66
65
  panel: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.labelBackground),
67
66
  text: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.label)
68
67
  }
69
68
  }));
70
- markLabel.name = "mark-area-label", this._label = markLabel, container.add(markLabel),
69
+ markLabel.name = "mark-polygon-label", this._label = markLabel, container.add(markLabel),
71
70
  this.setLabelPos();
72
71
  }
73
72
  updateMarker() {
@@ -89,5 +88,5 @@ class MarkArea extends base_1.Marker {
89
88
  }
90
89
  }
91
90
 
92
- exports.MarkArea = MarkArea, MarkArea.defaultAttributes = config_1.DEFAULT_MARK_AREA_THEME;
91
+ exports.CartesianMarkArea = CartesianMarkArea, CartesianMarkArea.defaultAttributes = config_1.DEFAULT_CARTESIAN_MARK_AREA_THEME;
93
92
  //# sourceMappingURL=area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker/cartesian/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IGroup, INode, IPolygon } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport type { TagAttributes } from '../../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../../tag';\nimport { Marker } from '../base';\nimport { DEFAULT_CARTESIAN_MARK_AREA_TEXT_STYLE_MAP, DEFAULT_CARTESIAN_MARK_AREA_THEME } from '../config';\nimport type { CartesianMarkAreaAttrs } from '../type';\nimport { limitShapeInBounds } from '../../util/limit-shape';\nimport type { ComponentOptions } from '../../interface';\nimport { loadCartesianMarkAreaComponent } from '../register';\nimport type { Point } from '../../core/type';\nimport { DEFAULT_STATES } from '../../constant';\n\nloadCartesianMarkAreaComponent();\nexport class CartesianMarkArea extends Marker<CartesianMarkAreaAttrs> {\n name = 'cartesianMarkArea';\n static defaultAttributes = DEFAULT_CARTESIAN_MARK_AREA_THEME;\n private _area!: IPolygon;\n getArea() {\n return this._area;\n }\n\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: CartesianMarkAreaAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, CartesianMarkArea.defaultAttributes, attributes));\n }\n\n protected getPositionByDirection(direction: string) {\n const { x1, x2, y1, y2 } = this._area.AABBBounds;\n // labelHeight\n // eslint-disable-next-line max-len\n const labelRectHeight = Math.abs(\n (this._label.getTextShape().AABBBounds?.y2 ?? 0) - (this._label.getTextShape()?.AABBBounds.y1 ?? 0)\n );\n // eslint-disable-next-line max-len\n const labelTextHeight = Math.abs(\n (this._label.getBgRect().AABBBounds?.y2 ?? 0) - (this._label.getBgRect()?.AABBBounds.y1 ?? 0)\n );\n const labelHeight = Math.max(labelRectHeight, labelTextHeight);\n\n // labelWidth\n // eslint-disable-next-line max-len\n const labelRectWidth = Math.abs(\n (this._label.getTextShape().AABBBounds?.x2 ?? 0) - (this._label.getTextShape()?.AABBBounds.x1 ?? 0)\n );\n // eslint-disable-next-line max-len\n const labelTextWidth = Math.abs(\n (this._label.getBgRect().AABBBounds?.x2 ?? 0) - (this._label.getBgRect()?.AABBBounds.x1 ?? 0)\n );\n const labelWidth = Math.max(labelRectWidth, labelTextWidth);\n\n if (direction.includes('left') || direction.includes('Left')) {\n return {\n x: x1 + (direction.includes('inside') ? 0.5 : -0.5) * labelWidth,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('right') || direction.includes('Right')) {\n return {\n x: x2 + (direction.includes('inside') ? -0.5 : 0.5) * labelWidth,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('top') || direction.includes('Top')) {\n return {\n x: (x1 + x2) / 2,\n y: y1 + (direction.includes('inside') ? 0.5 : -0.5) * labelHeight\n };\n }\n if (direction.includes('bottom') || direction.includes('Bottom')) {\n return {\n x: (x1 + x2) / 2,\n y: y2 + (direction.includes('inside') ? -0.5 : 0.5) * labelHeight\n };\n }\n\n return {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n };\n }\n\n protected setLabelPos() {\n if (this._label && this._area) {\n const { label = {} } = this.attribute as CartesianMarkAreaAttrs;\n const labelPosition = label.position ?? 'middle';\n const labelPoint = this.getPositionByDirection(labelPosition);\n this._label.setAttributes({\n ...labelPoint\n });\n\n if (this.attribute.limitRect && label.confine) {\n const { x, y, width, height } = this.attribute.limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, label, areaStyle, state } = this.attribute as CartesianMarkAreaAttrs;\n const area = graphicCreator.polygon({\n points: points,\n ...areaStyle\n });\n area.states = merge({}, DEFAULT_STATES, state?.area);\n area.name = 'mark-polygon-polygon';\n this._area = area;\n container.add(area);\n\n const markLabel = new Tag({\n ...(label as TagAttributes),\n state: {\n panel: merge({}, DEFAULT_STATES, state?.labelBackground),\n text: merge({}, DEFAULT_STATES, state?.label)\n }\n });\n markLabel.name = 'mark-polygon-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, label, areaStyle } = this.attribute as CartesianMarkAreaAttrs;\n if (this._area) {\n this._area.setAttributes({\n points: points,\n ...areaStyle\n });\n }\n if (this._area) {\n this._label.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n }\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as CartesianMarkAreaAttrs;\n if (!points || points.length < 3) {\n return false;\n }\n let validFlag = true;\n points.forEach((point: Point) => {\n if (!isValidNumber((point as Point).x) || !isValidNumber((point as Point).y)) {\n validFlag = false;\n return;\n }\n });\n return validFlag;\n }\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import { ICartesianMarkLineLabelPosition } from '../type';
2
+ import type { CartesianMarkLineAttrs } from '../type';
3
+ import type { ComponentOptions } from '../../interface';
4
+ import { BaseMarkLine } from '../base-line';
5
+ import type { ArcSegment } from '../../segment';
6
+ import { Segment } from '../../segment';
7
+ export declare class CartesianMarkLine extends BaseMarkLine<ICartesianMarkLineLabelPosition> {
8
+ name: string;
9
+ static defaultAttributes: Partial<CartesianMarkLineAttrs>;
10
+ protected _line: Segment | ArcSegment;
11
+ constructor(attributes: CartesianMarkLineAttrs, options?: ComponentOptions);
12
+ protected isValidPoints(): boolean;
13
+ protected getLabelOffsetByDirection(direction: ICartesianMarkLineLabelPosition): {
14
+ offsetX: number;
15
+ offsetY: number;
16
+ };
17
+ protected getPositionByDirection(direction: ICartesianMarkLineLabelPosition): {
18
+ position: {
19
+ x: number;
20
+ y: number;
21
+ };
22
+ angle: number;
23
+ };
24
+ protected setLabelPos(): void;
25
+ protected createSegment(): Segment;
26
+ protected setLineAttributes(): void;
27
+ }
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.CartesianMarkLine = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), type_1 = require("../type"), register_1 = require("../register"), base_line_1 = require("../base-line"), segment_1 = require("../../segment"), constant_1 = require("../../constant"), config_1 = require("../config");
8
+
9
+ (0, register_1.loadCartesianMarkLineComponent)();
10
+
11
+ class CartesianMarkLine extends base_line_1.BaseMarkLine {
12
+ constructor(attributes, options) {
13
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, CartesianMarkLine.defaultAttributes, attributes)),
14
+ this.name = "cartesianMarkLine";
15
+ }
16
+ isValidPoints() {
17
+ const {points: points} = this.attribute;
18
+ if (!points || points.length < 2) return !1;
19
+ let validFlag = !0;
20
+ return points.forEach((point => {
21
+ if (point.length) point.forEach((p => {
22
+ (0, vutils_1.isValidNumber)(p.x) && (0, vutils_1.isValidNumber)(p.y) || (validFlag = !1);
23
+ })); else if (!(0, vutils_1.isValidNumber)(point.x) || !(0, vutils_1.isValidNumber)(point.y)) return void (validFlag = !1);
24
+ })), validFlag;
25
+ }
26
+ getLabelOffsetByDirection(direction) {
27
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
28
+ const labelRectHeight = Math.abs((null !== (_b = null === (_a = this._label.getTextShape().AABBBounds) || void 0 === _a ? void 0 : _a.y2) && void 0 !== _b ? _b : 0) - (null !== (_d = null === (_c = this._label.getTextShape()) || void 0 === _c ? void 0 : _c.AABBBounds.y1) && void 0 !== _d ? _d : 0)), labelTextHeight = Math.abs((null !== (_f = null === (_e = this._label.getBgRect().AABBBounds) || void 0 === _e ? void 0 : _e.y2) && void 0 !== _f ? _f : 0) - (null !== (_h = null === (_g = this._label.getBgRect()) || void 0 === _g ? void 0 : _g.AABBBounds.y1) && void 0 !== _h ? _h : 0)), labelHeight = Math.max(labelRectHeight, labelTextHeight), labelRectWidth = Math.abs((null !== (_k = null === (_j = this._label.getTextShape().AABBBounds) || void 0 === _j ? void 0 : _j.x2) && void 0 !== _k ? _k : 0) - (null !== (_m = null === (_l = this._label.getTextShape()) || void 0 === _l ? void 0 : _l.AABBBounds.x1) && void 0 !== _m ? _m : 0)), labelTextWidth = Math.abs((null !== (_p = null === (_o = this._label.getBgRect().AABBBounds) || void 0 === _o ? void 0 : _o.x2) && void 0 !== _p ? _p : 0) - (null !== (_r = null === (_q = this._label.getBgRect()) || void 0 === _q ? void 0 : _q.AABBBounds.x1) && void 0 !== _r ? _r : 0)), labelWidth = Math.max(labelRectWidth, labelTextWidth);
29
+ switch (direction) {
30
+ case type_1.ICartesianMarkLineLabelPosition.start:
31
+ return {
32
+ offsetX: -labelWidth / 2,
33
+ offsetY: 0
34
+ };
35
+
36
+ case type_1.ICartesianMarkLineLabelPosition.insideStartTop:
37
+ return {
38
+ offsetX: labelWidth / 2,
39
+ offsetY: labelHeight / 2
40
+ };
41
+
42
+ case type_1.ICartesianMarkLineLabelPosition.insideStartBottom:
43
+ return {
44
+ offsetX: labelWidth / 2,
45
+ offsetY: -labelHeight / 2
46
+ };
47
+
48
+ case type_1.ICartesianMarkLineLabelPosition.middle:
49
+ return {
50
+ offsetX: 0,
51
+ offsetY: 0
52
+ };
53
+
54
+ case type_1.ICartesianMarkLineLabelPosition.insideMiddleTop:
55
+ return {
56
+ offsetX: 0,
57
+ offsetY: labelHeight / 2
58
+ };
59
+
60
+ case type_1.ICartesianMarkLineLabelPosition.insideMiddleBottom:
61
+ return {
62
+ offsetX: 0,
63
+ offsetY: -labelHeight / 2
64
+ };
65
+
66
+ case type_1.ICartesianMarkLineLabelPosition.end:
67
+ return {
68
+ offsetX: labelWidth / 2,
69
+ offsetY: 0
70
+ };
71
+
72
+ case type_1.ICartesianMarkLineLabelPosition.insideEndTop:
73
+ return {
74
+ offsetX: -labelWidth / 2,
75
+ offsetY: labelHeight / 2
76
+ };
77
+
78
+ case type_1.ICartesianMarkLineLabelPosition.insideEndBottom:
79
+ return {
80
+ offsetX: -labelWidth / 2,
81
+ offsetY: -labelHeight / 2
82
+ };
83
+
84
+ default:
85
+ return {
86
+ offsetX: labelWidth / 2,
87
+ offsetY: 0
88
+ };
89
+ }
90
+ }
91
+ getPositionByDirection(direction) {
92
+ var _a;
93
+ const {label: label = {}} = this.attribute, {refX: refX = 0, refY: refY = 0} = label, points = this._line.getMainSegmentPoints(), labelAngle = null !== (_a = this._line.getEndAngle()) && void 0 !== _a ? _a : 0, totalRefX = refX + this.getLabelOffsetByDirection(direction).offsetX, totalRefY = refY + this.getLabelOffsetByDirection(direction).offsetY, labelOffsetX = totalRefX * Math.cos(labelAngle) + totalRefY * Math.cos(labelAngle - Math.PI / 2), labelOffsetY = totalRefX * Math.sin(labelAngle) + totalRefY * Math.sin(labelAngle - Math.PI / 2);
94
+ return direction.includes("start") || direction.includes("Start") ? {
95
+ position: {
96
+ x: points[0].x + labelOffsetX,
97
+ y: points[0].y + labelOffsetY
98
+ },
99
+ angle: labelAngle
100
+ } : direction.includes("middle") || direction.includes("Middle") ? {
101
+ position: {
102
+ x: (points[0].x + points[points.length - 1].x) / 2 + labelOffsetX,
103
+ y: (points[0].y + points[points.length - 1].y) / 2 + labelOffsetY
104
+ },
105
+ angle: labelAngle
106
+ } : {
107
+ position: {
108
+ x: points[points.length - 1].x + labelOffsetX,
109
+ y: points[points.length - 1].y + labelOffsetY
110
+ },
111
+ angle: labelAngle
112
+ };
113
+ }
114
+ setLabelPos() {
115
+ var _a;
116
+ super.setLabelPos();
117
+ const {label: label = {}} = this.attribute, {position: position = "end", autoRotate: autoRotate = !0} = label, labelAttr = this.getPositionByDirection(position);
118
+ this._label.setAttributes(Object.assign(Object.assign({}, labelAttr.position), {
119
+ angle: autoRotate ? labelAttr.angle + (null !== (_a = label.refAngle) && void 0 !== _a ? _a : 0) : 0
120
+ }));
121
+ }
122
+ createSegment() {
123
+ const {points: points, startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, mainSegmentIndex: mainSegmentIndex, multiSegment: multiSegment, state: state} = this.attribute;
124
+ return new segment_1.Segment({
125
+ points: points,
126
+ startSymbol: startSymbol,
127
+ endSymbol: endSymbol,
128
+ lineStyle: lineStyle,
129
+ mainSegmentIndex: mainSegmentIndex,
130
+ multiSegment: multiSegment,
131
+ pickable: !1,
132
+ state: {
133
+ line: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.line),
134
+ startSymbol: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.lineStartSymbol),
135
+ endSymbol: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.lineEndSymbol)
136
+ }
137
+ });
138
+ }
139
+ setLineAttributes() {
140
+ const {points: points, startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, mainSegmentIndex: mainSegmentIndex, multiSegment: multiSegment} = this.attribute;
141
+ this._line && this._line.setAttributes({
142
+ points: points,
143
+ startSymbol: startSymbol,
144
+ endSymbol: endSymbol,
145
+ lineStyle: lineStyle,
146
+ mainSegmentIndex: mainSegmentIndex,
147
+ multiSegment: multiSegment
148
+ });
149
+ }
150
+ }
151
+
152
+ exports.CartesianMarkLine = CartesianMarkLine, CartesianMarkLine.defaultAttributes = config_1.DEFAULT_CARTESIAN_MARK_LINE_THEME;
153
+ //# sourceMappingURL=line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker/cartesian/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import { isValidNumber, merge } from '@visactor/vutils';\nimport { ICartesianMarkLineLabelPosition } from '../type';\nimport type { CartesianMarkLineAttrs, ICartesianMarkAreaLabelPosition } from '../type';\nimport type { ComponentOptions } from '../../interface';\nimport { loadCartesianMarkLineComponent } from '../register';\nimport type { Point } from '../../core/type';\nimport { BaseMarkLine } from '../base-line';\nimport type { ArcSegment } from '../../segment';\n// eslint-disable-next-line no-duplicate-imports\nimport { Segment } from '../../segment';\nimport { DEFAULT_STATES } from '../../constant';\nimport { DEFAULT_CARTESIAN_MARK_LINE_THEME } from '../config';\n\nloadCartesianMarkLineComponent();\nexport class CartesianMarkLine extends BaseMarkLine<ICartesianMarkLineLabelPosition> {\n name = 'cartesianMarkLine';\n // eslint-disable-next-line max-len\n static defaultAttributes: Partial<CartesianMarkLineAttrs> =\n DEFAULT_CARTESIAN_MARK_LINE_THEME as unknown as CartesianMarkLineAttrs;\n protected _line!: Segment | ArcSegment;\n\n constructor(attributes: CartesianMarkLineAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, CartesianMarkLine.defaultAttributes, attributes));\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as CartesianMarkLineAttrs;\n if (!points || points.length < 2) {\n return false;\n }\n let validFlag = true;\n points.forEach((point: Point | Point[]) => {\n if ((point as any).length) {\n (point as Point[]).forEach((p: Point) => {\n if (!isValidNumber((p as Point).x) || !isValidNumber((p as Point).y)) {\n validFlag = false;\n return;\n }\n });\n } else if (!isValidNumber((point as Point).x) || !isValidNumber((point as Point).y)) {\n validFlag = false;\n return;\n }\n });\n return validFlag;\n }\n\n protected getLabelOffsetByDirection(direction: ICartesianMarkLineLabelPosition) {\n // labelHeight\n // eslint-disable-next-line max-len\n const labelRectHeight = Math.abs(\n (this._label.getTextShape().AABBBounds?.y2 ?? 0) - (this._label.getTextShape()?.AABBBounds.y1 ?? 0)\n );\n // eslint-disable-next-line max-len\n const labelTextHeight = Math.abs(\n (this._label.getBgRect().AABBBounds?.y2 ?? 0) - (this._label.getBgRect()?.AABBBounds.y1 ?? 0)\n );\n const labelHeight = Math.max(labelRectHeight, labelTextHeight);\n\n // labelWidth\n // eslint-disable-next-line max-len\n const labelRectWidth = Math.abs(\n (this._label.getTextShape().AABBBounds?.x2 ?? 0) - (this._label.getTextShape()?.AABBBounds.x1 ?? 0)\n );\n // eslint-disable-next-line max-len\n const labelTextWidth = Math.abs(\n (this._label.getBgRect().AABBBounds?.x2 ?? 0) - (this._label.getBgRect()?.AABBBounds.x1 ?? 0)\n );\n const labelWidth = Math.max(labelRectWidth, labelTextWidth);\n\n switch (direction) {\n case ICartesianMarkLineLabelPosition.start:\n return {\n offsetX: -labelWidth / 2,\n offsetY: 0\n };\n case ICartesianMarkLineLabelPosition.insideStartTop:\n return {\n offsetX: labelWidth / 2,\n offsetY: labelHeight / 2\n };\n case ICartesianMarkLineLabelPosition.insideStartBottom:\n return {\n offsetX: labelWidth / 2,\n offsetY: -labelHeight / 2\n };\n case ICartesianMarkLineLabelPosition.middle:\n return {\n offsetX: 0,\n offsetY: 0\n };\n case ICartesianMarkLineLabelPosition.insideMiddleTop:\n return {\n offsetX: 0,\n offsetY: labelHeight / 2\n };\n case ICartesianMarkLineLabelPosition.insideMiddleBottom:\n return {\n offsetX: 0,\n offsetY: -labelHeight / 2\n };\n case ICartesianMarkLineLabelPosition.end:\n return {\n offsetX: labelWidth / 2,\n offsetY: 0\n };\n case ICartesianMarkLineLabelPosition.insideEndTop:\n return {\n offsetX: -labelWidth / 2,\n offsetY: labelHeight / 2\n };\n case ICartesianMarkLineLabelPosition.insideEndBottom:\n return {\n offsetX: -labelWidth / 2,\n offsetY: -labelHeight / 2\n };\n default: // default end\n return {\n offsetX: labelWidth / 2,\n offsetY: 0\n };\n }\n }\n\n protected getPositionByDirection(direction: ICartesianMarkLineLabelPosition) {\n const { label = {} } = this.attribute;\n const { refX = 0, refY = 0 } = label;\n const points = this._line.getMainSegmentPoints();\n const labelAngle = this._line.getEndAngle() ?? 0;\n\n const totalRefX = refX + this.getLabelOffsetByDirection(direction).offsetX;\n const totalRefY = refY + this.getLabelOffsetByDirection(direction).offsetY;\n\n const labelOffsetX = totalRefX * Math.cos(labelAngle) + totalRefY * Math.cos(labelAngle - Math.PI / 2);\n const labelOffsetY = totalRefX * Math.sin(labelAngle) + totalRefY * Math.sin(labelAngle - Math.PI / 2);\n\n if (direction.includes('start') || direction.includes('Start')) {\n return {\n position: {\n x: points[0].x + labelOffsetX,\n y: points[0].y + labelOffsetY\n },\n angle: labelAngle\n };\n } else if (direction.includes('middle') || direction.includes('Middle')) {\n return {\n position: {\n x: (points[0].x + points[points.length - 1].x) / 2 + labelOffsetX,\n y: (points[0].y + points[points.length - 1].y) / 2 + labelOffsetY\n },\n angle: labelAngle\n };\n }\n return {\n position: {\n x: points[points.length - 1].x + labelOffsetX,\n y: points[points.length - 1].y + labelOffsetY\n },\n angle: labelAngle\n };\n }\n\n protected setLabelPos(): void {\n super.setLabelPos();\n const { label = {} } = this.attribute as CartesianMarkLineAttrs;\n const { position = 'end', autoRotate = true } = label;\n const labelAttr = this.getPositionByDirection(position as any);\n this._label.setAttributes({\n ...labelAttr.position,\n angle: autoRotate ? labelAttr.angle + (label.refAngle ?? 0) : 0\n });\n }\n\n protected createSegment() {\n const { points, startSymbol, endSymbol, lineStyle, mainSegmentIndex, multiSegment, state } = this\n .attribute as CartesianMarkLineAttrs;\n return new Segment({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment,\n pickable: false, // 组件容器本身不参与拾取\n state: {\n line: merge({}, DEFAULT_STATES, state?.line),\n startSymbol: merge({}, DEFAULT_STATES, state?.lineStartSymbol),\n endSymbol: merge({}, DEFAULT_STATES, state?.lineEndSymbol)\n }\n });\n }\n\n protected setLineAttributes() {\n const { points, startSymbol, endSymbol, lineStyle, mainSegmentIndex, multiSegment } = this\n .attribute as CartesianMarkLineAttrs;\n if (this._line) {\n this._line.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment\n });\n }\n }\n}\n"]}