@visactor/vrender-components 0.19.4-alpha.5 → 0.19.4

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 (180) hide show
  1. package/cjs/axis/index.d.ts +0 -1
  2. package/cjs/axis/index.js +1 -2
  3. package/cjs/axis/index.js.map +1 -1
  4. package/cjs/axis/type.d.ts +1 -41
  5. package/cjs/axis/type.js.map +1 -1
  6. package/cjs/axis/util.d.ts +0 -11
  7. package/cjs/axis/util.js +2 -21
  8. package/cjs/axis/util.js.map +1 -1
  9. package/cjs/constant.d.ts +2 -2
  10. package/cjs/constant.js +2 -2
  11. package/cjs/constant.js.map +1 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +1 -1
  14. package/cjs/index.js.map +1 -1
  15. package/cjs/label/index.js +1 -2
  16. package/cjs/label/line.js +1 -1
  17. package/cjs/label/polygon.js +1 -1
  18. package/cjs/label/rect.js +1 -1
  19. package/cjs/label/register.js +1 -1
  20. package/cjs/label/symbol.js +1 -1
  21. package/cjs/label/type.js +1 -1
  22. package/cjs/legend/base.js +1 -1
  23. package/cjs/legend/constant.js +1 -1
  24. package/cjs/legend/index.js +1 -1
  25. package/cjs/legend/register.js +1 -1
  26. package/cjs/legend/type.js +2 -1
  27. package/cjs/legend/util.js +1 -1
  28. package/cjs/marker/animate/common.js +8 -4
  29. package/cjs/marker/animate/common.js.map +1 -1
  30. package/cjs/marker/arc-area.js +10 -4
  31. package/cjs/marker/arc-area.js.map +1 -1
  32. package/cjs/marker/arc-line.js +7 -2
  33. package/cjs/marker/arc-line.js.map +1 -1
  34. package/cjs/marker/area.js +10 -4
  35. package/cjs/marker/area.js.map +1 -1
  36. package/cjs/marker/base.d.ts +1 -1
  37. package/cjs/marker/base.js.map +1 -1
  38. package/cjs/marker/common-line.d.ts +1 -1
  39. package/cjs/marker/common-line.js +10 -5
  40. package/cjs/marker/common-line.js.map +1 -1
  41. package/cjs/marker/config.d.ts +18 -4
  42. package/cjs/marker/config.js +134 -56
  43. package/cjs/marker/config.js.map +1 -1
  44. package/cjs/marker/line.d.ts +3 -3
  45. package/cjs/marker/line.js +19 -7
  46. package/cjs/marker/line.js.map +1 -1
  47. package/cjs/marker/point.d.ts +39 -7
  48. package/cjs/marker/point.js +163 -71
  49. package/cjs/marker/point.js.map +1 -1
  50. package/cjs/marker/register.js +2 -2
  51. package/cjs/marker/register.js.map +1 -1
  52. package/cjs/marker/type.d.ts +12 -4
  53. package/cjs/marker/type.js.map +1 -1
  54. package/cjs/segment/arc-segment.d.ts +6 -1
  55. package/cjs/segment/arc-segment.js +15 -4
  56. package/cjs/segment/arc-segment.js.map +1 -1
  57. package/cjs/segment/register.d.ts +2 -2
  58. package/cjs/segment/register.js +2 -2
  59. package/cjs/segment/register.js.map +1 -1
  60. package/cjs/segment/segment.d.ts +3 -1
  61. package/cjs/segment/segment.js +7 -4
  62. package/cjs/segment/segment.js.map +1 -1
  63. package/cjs/util/common.d.ts +4 -0
  64. package/cjs/util/common.js +18 -2
  65. package/cjs/util/common.js.map +1 -1
  66. package/cjs/util/index.d.ts +1 -0
  67. package/cjs/util/index.js +2 -1
  68. package/cjs/util/index.js.map +1 -1
  69. package/cjs/util/polar.d.ts +2 -0
  70. package/cjs/util/polar.js +17 -0
  71. package/cjs/util/polar.js.map +1 -0
  72. package/cjs/util/text.d.ts +1 -1
  73. package/cjs/util/text.js +3 -3
  74. package/cjs/util/text.js.map +1 -1
  75. package/dist/index.es.js +28816 -0
  76. package/es/axis/index.d.ts +0 -1
  77. package/es/axis/index.js +0 -2
  78. package/es/axis/index.js.map +1 -1
  79. package/es/axis/type.d.ts +1 -41
  80. package/es/axis/type.js.map +1 -1
  81. package/es/axis/util.d.ts +0 -11
  82. package/es/axis/util.js +1 -19
  83. package/es/axis/util.js.map +1 -1
  84. package/es/constant.d.ts +2 -2
  85. package/es/constant.js +2 -2
  86. package/es/constant.js.map +1 -1
  87. package/es/index.d.ts +1 -1
  88. package/es/index.js +1 -1
  89. package/es/index.js.map +1 -1
  90. package/es/label/index.js +1 -2
  91. package/es/label/line.js +1 -1
  92. package/es/label/polygon.js +1 -1
  93. package/es/label/rect.js +1 -1
  94. package/es/label/register.js +1 -1
  95. package/es/label/symbol.js +1 -1
  96. package/es/label/type.js +1 -1
  97. package/es/legend/base.js +1 -1
  98. package/es/legend/constant.js +1 -1
  99. package/es/legend/index.js +1 -1
  100. package/es/legend/register.js +1 -1
  101. package/es/legend/type.js +2 -1
  102. package/es/legend/util.js +1 -1
  103. package/es/marker/animate/common.js +8 -4
  104. package/es/marker/animate/common.js.map +1 -1
  105. package/es/marker/arc-area.js +10 -4
  106. package/es/marker/arc-area.js.map +1 -1
  107. package/es/marker/arc-line.js +7 -2
  108. package/es/marker/arc-line.js.map +1 -1
  109. package/es/marker/area.js +10 -4
  110. package/es/marker/area.js.map +1 -1
  111. package/es/marker/base.d.ts +1 -1
  112. package/es/marker/base.js.map +1 -1
  113. package/es/marker/common-line.d.ts +1 -1
  114. package/es/marker/common-line.js +10 -5
  115. package/es/marker/common-line.js.map +1 -1
  116. package/es/marker/config.d.ts +18 -4
  117. package/es/marker/config.js +134 -56
  118. package/es/marker/config.js.map +1 -1
  119. package/es/marker/line.d.ts +3 -3
  120. package/es/marker/line.js +20 -6
  121. package/es/marker/line.js.map +1 -1
  122. package/es/marker/point.d.ts +39 -7
  123. package/es/marker/point.js +163 -71
  124. package/es/marker/point.js.map +1 -1
  125. package/es/marker/register.js +2 -1
  126. package/es/marker/register.js.map +1 -1
  127. package/es/marker/type.d.ts +12 -4
  128. package/es/marker/type.js.map +1 -1
  129. package/es/segment/arc-segment.d.ts +6 -1
  130. package/es/segment/arc-segment.js +15 -4
  131. package/es/segment/arc-segment.js.map +1 -1
  132. package/es/segment/register.d.ts +2 -2
  133. package/es/segment/register.js +2 -2
  134. package/es/segment/register.js.map +1 -1
  135. package/es/segment/segment.d.ts +3 -1
  136. package/es/segment/segment.js +7 -4
  137. package/es/segment/segment.js.map +1 -1
  138. package/es/util/common.d.ts +4 -0
  139. package/es/util/common.js +14 -0
  140. package/es/util/common.js.map +1 -1
  141. package/es/util/index.d.ts +1 -0
  142. package/es/util/index.js +2 -0
  143. package/es/util/index.js.map +1 -1
  144. package/es/util/polar.d.ts +2 -0
  145. package/es/util/polar.js +7 -0
  146. package/es/util/polar.js.map +1 -0
  147. package/es/util/text.d.ts +1 -1
  148. package/es/util/text.js +3 -3
  149. package/es/util/text.js.map +1 -1
  150. package/package.json +8 -8
  151. package/cjs/axis/tick-data/continuous.d.ts +0 -4
  152. package/cjs/axis/tick-data/continuous.js +0 -61
  153. package/cjs/axis/tick-data/continuous.js.map +0 -1
  154. package/cjs/axis/tick-data/discrete/linear.d.ts +0 -6
  155. package/cjs/axis/tick-data/discrete/linear.js +0 -101
  156. package/cjs/axis/tick-data/discrete/linear.js.map +0 -1
  157. package/cjs/axis/tick-data/discrete/polar-angle.d.ts +0 -3
  158. package/cjs/axis/tick-data/discrete/polar-angle.js +0 -53
  159. package/cjs/axis/tick-data/discrete/polar-angle.js.map +0 -1
  160. package/cjs/axis/tick-data/index.d.ts +0 -5
  161. package/cjs/axis/tick-data/index.js +0 -26
  162. package/cjs/axis/tick-data/index.js.map +0 -1
  163. package/cjs/axis/tick-data/util.d.ts +0 -13
  164. package/cjs/axis/tick-data/util.js +0 -91
  165. package/cjs/axis/tick-data/util.js.map +0 -1
  166. package/es/axis/tick-data/continuous.d.ts +0 -4
  167. package/es/axis/tick-data/continuous.js +0 -56
  168. package/es/axis/tick-data/continuous.js.map +0 -1
  169. package/es/axis/tick-data/discrete/linear.d.ts +0 -6
  170. package/es/axis/tick-data/discrete/linear.js +0 -90
  171. package/es/axis/tick-data/discrete/linear.js.map +0 -1
  172. package/es/axis/tick-data/discrete/polar-angle.d.ts +0 -3
  173. package/es/axis/tick-data/discrete/polar-angle.js +0 -45
  174. package/es/axis/tick-data/discrete/polar-angle.js.map +0 -1
  175. package/es/axis/tick-data/index.d.ts +0 -5
  176. package/es/axis/tick-data/index.js +0 -21
  177. package/es/axis/tick-data/index.js.map +0 -1
  178. package/es/axis/tick-data/util.d.ts +0 -13
  179. package/es/axis/tick-data/util.js +0 -80
  180. package/es/axis/tick-data/util.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import { isValidNumber, merge } from '@visactor/vutils';\nimport type { IMarkLineLabelPosition } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkLineAttrs, MarkerAnimationState } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkLineComponent } from './register';\nimport type { Point } from '../core/type';\nimport { MarkCommonLine } from './common-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_TEXT_STYLE_MAP, DEFAULT_MARK_LINE_THEME } from './config';\nimport type { ILineGraphicAttribute } from '@visactor/vrender-core';\nimport { markCommonLineAnimate } from './animate/animate';\nimport { limitShapeInBounds } from '../util/limit-shape';\n\nloadMarkLineComponent();\n\nexport function registerMarkLineAnimate() {\n MarkLine._animate = markCommonLineAnimate;\n}\n\nexport class MarkLine extends MarkCommonLine<ILineGraphicAttribute, IMarkLineLabelPosition> {\n name = 'markLine';\n // eslint-disable-next-line max-len\n static defaultAttributes: Partial<MarkLineAttrs> = DEFAULT_MARK_LINE_THEME as unknown as MarkLineAttrs;\n protected _line!: Segment | ArcSegment;\n\n /** animate */\n protected markerAnimate(state: MarkerAnimationState) {\n if (MarkLine._animate && this._animationConfig) {\n MarkLine._animate(this._line, this._label, this._animationConfig, state);\n }\n }\n\n constructor(attributes: MarkLineAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkLine.defaultAttributes, attributes));\n }\n\n protected getPointAttrByPosition(position: IMarkLineLabelPosition) {\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 labelOffsetX = refX * Math.cos(labelAngle) + refX * Math.cos(labelAngle - Math.PI / 2);\n const labelOffsetY = refX * Math.sin(labelAngle) + refY * Math.sin(labelAngle - Math.PI / 2);\n\n if (position.includes('start') || position.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 (position.includes('middle') || position.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 getRotateByAngle(angle: number): number {\n return angle + (this.attribute.label.refAngle ?? 0);\n }\n\n protected getTextStyle(position: IMarkLineLabelPosition) {\n return DEFAULT_CARTESIAN_MARK_LINE_TEXT_STYLE_MAP[position];\n }\n\n protected createSegment() {\n const { points, startSymbol, endSymbol, lineStyle, mainSegmentIndex, multiSegment, state } = this\n .attribute as MarkLineAttrs;\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 MarkLineAttrs;\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 protected isValidPoints() {\n const { points } = this.attribute as MarkLineAttrs;\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"]}
1
+ {"version":3,"sources":["../src/marker/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import { isValidNumber, merge } from '@visactor/vutils';\nimport type { IMarkLineLabelPosition } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkLineAttrs, MarkerAnimationState } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkLineComponent } from './register';\nimport type { Point } from '../core/type';\nimport { MarkCommonLine } from './common-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_TEXT_STYLE_MAP, DEFAULT_MARK_LINE_THEME } from './config';\nimport type { ILineGraphicAttribute } from '@visactor/vrender-core';\nimport { markCommonLineAnimate } from './animate/animate';\nimport { isPostiveXAxisCartes } from '../util';\n\nloadMarkLineComponent();\n\nexport function registerMarkLineAnimate() {\n MarkLine._animate = markCommonLineAnimate;\n}\n\nexport class MarkLine extends MarkCommonLine<ILineGraphicAttribute, IMarkLineLabelPosition> {\n name = 'markLine';\n // eslint-disable-next-line max-len\n static defaultAttributes: Partial<MarkLineAttrs> = DEFAULT_MARK_LINE_THEME as unknown as MarkLineAttrs;\n protected _line!: Segment | ArcSegment;\n\n /** animate */\n protected markerAnimate(state: MarkerAnimationState) {\n if (MarkLine._animate && this._animationConfig) {\n MarkLine._animate(this._line, this._label, this._animationConfig, state);\n }\n }\n\n constructor(attributes: MarkLineAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkLine.defaultAttributes, attributes));\n }\n\n protected getPointAttrByPosition(position: IMarkLineLabelPosition) {\n const { label = {} } = this.attribute;\n const { refX = 0, refY = 0 } = label;\n const points = this._line.getMainSegmentPoints();\n const lineEndAngle = this._line.getEndAngle() ?? 0;\n const labelAngle = isPostiveXAxisCartes(lineEndAngle) ? lineEndAngle : lineEndAngle;\n\n const labelOffsetX = refX * Math.cos(labelAngle) + refY * Math.cos(labelAngle - Math.PI / 2);\n const labelOffsetY = refX * Math.sin(labelAngle) + refY * Math.sin(labelAngle - Math.PI / 2);\n\n if (position.includes('start') || position.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 (position.includes('middle') || position.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 getRotateByAngle(angle: number): number {\n const itemAngle = isPostiveXAxisCartes(angle) ? angle : angle - Math.PI;\n return itemAngle + (this.attribute.label.refAngle ?? 0);\n }\n\n protected getTextStyle(position: IMarkLineLabelPosition, labelAngle: number, autoRotate: boolean) {\n // 垂直方向例外\n if (Math.abs(Math.abs(labelAngle) - Math.PI / 2) < 0.0001) {\n if (autoRotate) {\n return {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n }\n return {\n textAlign: 'center',\n textBaseline:\n (labelAngle > 0 && position.includes('inside')) || (labelAngle < 0 && !position.includes('inside'))\n ? 'bottom'\n : 'top'\n };\n }\n\n if (isPostiveXAxisCartes(labelAngle)) {\n return DEFAULT_CARTESIAN_MARK_LINE_TEXT_STYLE_MAP.postiveXAxis[position];\n }\n return DEFAULT_CARTESIAN_MARK_LINE_TEXT_STYLE_MAP.negativeXAxis[position];\n }\n\n protected createSegment() {\n const { points, startSymbol, endSymbol, lineStyle, mainSegmentIndex, multiSegment, state } = this\n .attribute as MarkLineAttrs;\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, state } = this\n .attribute as MarkLineAttrs;\n if (this._line) {\n this._line.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment,\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\n protected isValidPoints() {\n const { points } = this.attribute as MarkLineAttrs;\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"]}
@@ -1,4 +1,5 @@
1
1
  import type { IGroup, IImage, ISymbol, IImageGraphicAttribute, IRichText, IRichTextGraphicAttribute } from '@visactor/vrender-core';
2
+ import type { IPointLike } from '@visactor/vutils';
2
3
  import { Tag } from '../tag';
3
4
  import { Marker } from './base';
4
5
  import type { IItemContent, IItemLine, MarkPointAnimationType, MarkPointAttrs, MarkerAnimationState } from './type';
@@ -10,6 +11,16 @@ export declare class MarkPoint extends Marker<MarkPointAttrs, MarkPointAnimation
10
11
  name: string;
11
12
  static defaultAttributes: {
12
13
  interactive: boolean;
14
+ targetSymbol: {
15
+ visible: boolean;
16
+ offset: number;
17
+ style: {
18
+ symbolType: string;
19
+ size: number;
20
+ fill: boolean;
21
+ stroke: string;
22
+ };
23
+ };
13
24
  itemLine: {
14
25
  visible: boolean;
15
26
  decorativeLine: {
@@ -69,24 +80,45 @@ export declare class MarkPoint extends Marker<MarkPointAttrs, MarkPointAnimation
69
80
  defaultExitAnimation: import("./type").MarkerExitAnimation;
70
81
  protected markerAnimate(state: MarkerAnimationState): void;
71
82
  private _item;
83
+ private _targetItem;
72
84
  private _line?;
73
85
  private _decorativeLine;
86
+ private _isArcLine;
74
87
  constructor(attributes: MarkPointAttrs, options?: ComponentOptions);
75
88
  protected setLabelPos(): void;
76
- protected setItemAttributes(item: ISymbol | Tag | IImage | IRichText, itemContent: IItemContent, itemPosition: Point, itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'): void;
89
+ protected getTextAlignAttr(autoRotate: boolean, offsetX: number, offsetY: number, lineEndAngle: number, itemPosition: keyof typeof IMarkPointItemPosition): {
90
+ textAlign: import("@visactor/vrender-core").TextAlignType;
91
+ textBaseline: import("@visactor/vrender-core").TextBaselineType;
92
+ };
93
+ protected setItemAttributes(item: ISymbol | Tag | IImage | IRichText, itemContent: IItemContent, newPosition: Point, newItemPosition: Point, itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'): void;
77
94
  protected getItemDx(item: ISymbol | Tag | IImage | IRichText, position: keyof typeof IMarkPointItemPosition, style?: IImageGraphicAttribute | IRichTextGraphicAttribute): number;
78
95
  protected getItemDy(item: ISymbol | Tag | IImage | IRichText, position: keyof typeof IMarkPointItemPosition, style?: IImageGraphicAttribute | IRichTextGraphicAttribute): number;
79
- protected initItem(itemContent: IItemContent, itemPosition: Point): IGroup | IRichText | Tag | ISymbol | IImage;
80
- protected getItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point): Point[];
81
- protected setItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point, visible: boolean): void;
82
- protected getDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point): {
96
+ protected initItem(itemContent: IItemContent, newPosition: Point, newItemPosition: Point): IGroup | IRichText | Tag | ISymbol | IImage;
97
+ protected getItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point): {
98
+ points: Point[];
99
+ center: {
100
+ x: number;
101
+ y: number;
102
+ };
103
+ radius: number;
104
+ startAngle: number;
105
+ endAngle: number;
106
+ };
107
+ protected reDrawLine(itemLine: IItemLine, pointsAttr: any): void;
108
+ protected setItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point): void;
109
+ protected getDecorativeLineAttr(itemLine: IItemLine): {
83
110
  startPointOffsetX: number;
84
111
  startPointOffsetY: number;
85
112
  endPointOffsetX: number;
86
113
  endPointOffsetY: number;
87
114
  };
88
- protected setDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point, visible: boolean): void;
89
- protected setAllOfItemsAttr(itemPosition: Point): void;
115
+ protected setDecorativeLineAttr(itemLine: IItemLine, newItemPosition: Point, visible: boolean): void;
116
+ protected setTargetItemAttributes(targetItem: any, position: IPointLike): void;
117
+ protected setAllOfItemsAttr(newPosition: Point, newItemPosition: Point): void;
118
+ protected computeNewPositionAfterTargetItem(position: Point): {
119
+ newPosition: Point;
120
+ newItemPosition: Point;
121
+ };
90
122
  protected initMarker(container: IGroup): void;
91
123
  protected updateMarker(): void;
92
124
  protected isValidPoints(): boolean;
@@ -2,7 +2,7 @@ import { graphicCreator } from "@visactor/vrender-core";
2
2
 
3
3
  import { isValidNumber, merge } from "@visactor/vutils";
4
4
 
5
- import { Segment } from "../segment";
5
+ import { ArcSegment, Segment } from "../segment";
6
6
 
7
7
  import { Tag } from "../tag";
8
8
 
@@ -20,6 +20,8 @@ import { DEFAULT_STATES } from "../constant";
20
20
 
21
21
  import { DefaultExitMarkerAnimation, DefaultUpdateMarkPointAnimation, markPointAnimate } from "./animate/animate";
22
22
 
23
+ import { deltaXYToAngle, isPostiveXAxisCartes, isPostiveXAxisPolar, removeRepeatPoint } from "../util";
24
+
23
25
  loadMarkPointComponent();
24
26
 
25
27
  export function registerMarkPointAnimate() {
@@ -33,24 +35,40 @@ export class MarkPoint extends Marker {
33
35
  constructor(attributes, options) {
34
36
  super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, MarkPoint.defaultAttributes, attributes)),
35
37
  this.name = "markPoint", this.defaultUpdateAnimation = DefaultUpdateMarkPointAnimation,
36
- this.defaultExitAnimation = DefaultExitMarkerAnimation;
38
+ this.defaultExitAnimation = DefaultExitMarkerAnimation, this._isArcLine = !1;
37
39
  }
38
40
  setLabelPos() {}
39
- setItemAttributes(item, itemContent, itemPosition, itemType) {
40
- var _a;
41
+ getTextAlignAttr(autoRotate, offsetX, offsetY, lineEndAngle, itemPosition) {
42
+ let isPostiveXAxis = !0;
43
+ return isPostiveXAxis = this._isArcLine ? isPostiveXAxisPolar(lineEndAngle, this._line.isReverseArc) : isPostiveXAxisCartes(lineEndAngle),
44
+ isPostiveXAxis ? DEFAULT_MARK_POINT_TEXT_STYLE_MAP.postiveXAxis[itemPosition] : DEFAULT_MARK_POINT_TEXT_STYLE_MAP.negativeXAxis[itemPosition];
45
+ }
46
+ setItemAttributes(item, itemContent, newPosition, newItemPosition, itemType) {
47
+ var _a, _b;
41
48
  if (!item) return;
42
- const {autoRotate: autoRotate = !0, refX: refX = 0, refY: refY = 0, refAngle: refAngle = 0, textStyle: textStyle = {}, richTextStyle: richTextStyle = {}, imageStyle: imageStyle = {}, position: position = IMarkPointItemPosition.middle} = itemContent, itemAngle = (null === (_a = this._line) || void 0 === _a ? void 0 : _a.getEndAngle()) || 0, itemOffsetX = refX * Math.cos(itemAngle) + refY * Math.cos(itemAngle - Math.PI / 2), itemOffsetY = refX * Math.sin(itemAngle) + refY * Math.sin(itemAngle - Math.PI / 2);
43
- "text" === itemType ? item.setAttributes(Object.assign(Object.assign({}, textStyle), {
44
- textStyle: Object.assign(Object.assign({}, DEFAULT_MARK_POINT_TEXT_STYLE_MAP[(null == itemContent ? void 0 : itemContent.position) || "end"]), textStyle.textStyle)
45
- })) : "richText" === itemType ? item.setAttributes({
46
- dx: this.getItemDx(item, position, richTextStyle) + (richTextStyle.dx || 0),
47
- dy: this.getItemDy(item, position, richTextStyle) + (richTextStyle.dy || 0)
48
- }) : "image" === itemType && item.setAttributes({
49
- dx: this.getItemDx(item, position, imageStyle) + (imageStyle.dx || 0),
50
- dy: this.getItemDy(item, position, imageStyle) + (imageStyle.dy || 0)
51
- }), item.setAttributes({
52
- x: itemPosition.x + (itemOffsetX || 0),
53
- y: itemPosition.y + (itemOffsetY || 0),
49
+ const {autoRotate: autoRotate = !0, refX: refX = 0, refY: refY = 0, refAngle: refAngle = 0, textStyle: textStyle = {}, richTextStyle: richTextStyle = {}, imageStyle: imageStyle = {}, position: positionType = IMarkPointItemPosition.middle} = itemContent, {state: state} = this.attribute, lineEndAngle = (null === (_a = this._line) || void 0 === _a ? void 0 : _a.getEndAngle()) || 0, itemRefOffsetX = refX * Math.cos(lineEndAngle) + refY * Math.cos(lineEndAngle), itemRefOffsetY = refX * Math.sin(lineEndAngle) + refY * Math.sin(lineEndAngle);
50
+ if ("text" === itemType) {
51
+ const offsetX = newItemPosition.x - newPosition.x, offsetY = newItemPosition.y - newPosition.y;
52
+ item.setAttributes(Object.assign(Object.assign({}, textStyle), {
53
+ textStyle: Object.assign(Object.assign({}, this.getTextAlignAttr(autoRotate, offsetX, offsetY, lineEndAngle, null !== (_b = itemContent.position) && void 0 !== _b ? _b : "end")), textStyle.textStyle),
54
+ state: {
55
+ panel: merge({}, DEFAULT_STATES, null == state ? void 0 : state.textBackground),
56
+ text: merge({}, DEFAULT_STATES, null == state ? void 0 : state.text)
57
+ }
58
+ }));
59
+ } else "richText" === itemType ? (item.setAttributes({
60
+ dx: this.getItemDx(item, positionType, richTextStyle) + (richTextStyle.dx || 0),
61
+ dy: this.getItemDy(item, positionType, richTextStyle) + (richTextStyle.dy || 0)
62
+ }), item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.richText)) : "image" === itemType && (item.setAttributes({
63
+ dx: this.getItemDx(item, positionType, imageStyle) + (imageStyle.dx || 0),
64
+ dy: this.getItemDy(item, positionType, imageStyle) + (imageStyle.dy || 0)
65
+ }), item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.image));
66
+ let itemAngle, isPostiveXAxis = !0;
67
+ this._isArcLine ? (isPostiveXAxis = isPostiveXAxisPolar(lineEndAngle, this._line.isReverseArc),
68
+ itemAngle = isPostiveXAxis ? lineEndAngle : lineEndAngle - Math.PI) : (isPostiveXAxis = isPostiveXAxisCartes(lineEndAngle),
69
+ itemAngle = isPostiveXAxis ? lineEndAngle : lineEndAngle - Math.PI), item.setAttributes({
70
+ x: newItemPosition.x + (itemRefOffsetX || 0),
71
+ y: newItemPosition.y + (itemRefOffsetY || 0),
54
72
  angle: autoRotate && itemAngle + refAngle
55
73
  });
56
74
  }
@@ -64,49 +82,86 @@ export class MarkPoint extends Marker {
64
82
  const height = null !== (_b = null === (_a = null == item ? void 0 : item.AABBBounds) || void 0 === _a ? void 0 : _a.height()) && void 0 !== _b ? _b : (null == style ? void 0 : style.height) || 0;
65
83
  return position.includes("top") || position.includes("Top") ? -height : position.includes("middle") || position.includes("Middle") ? -height / 2 : 0;
66
84
  }
67
- initItem(itemContent, itemPosition) {
85
+ initItem(itemContent, newPosition, newItemPosition) {
68
86
  const {state: state} = this.attribute, {type: type = "text", symbolStyle: symbolStyle, richTextStyle: richTextStyle, imageStyle: imageStyle, renderCustomCallback: renderCustomCallback} = itemContent;
69
87
  let item;
70
- return "symbol" === type ? (item = graphicCreator.symbol(Object.assign(Object.assign({}, itemPosition), symbolStyle)),
71
- item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.symbol)) : "text" === type ? item = new Tag(Object.assign(Object.assign({}, itemPosition), {
88
+ return "symbol" === type ? (item = graphicCreator.symbol(Object.assign(Object.assign({}, newItemPosition), symbolStyle)),
89
+ item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.symbol)) : "text" === type ? item = new Tag(Object.assign(Object.assign({}, newItemPosition), {
72
90
  state: {
73
91
  panel: merge({}, DEFAULT_STATES, null == state ? void 0 : state.textBackground),
74
92
  text: merge({}, DEFAULT_STATES, null == state ? void 0 : state.text)
75
93
  }
76
- })) : "richText" === type ? (item = graphicCreator.richtext(Object.assign(Object.assign({}, itemPosition), richTextStyle)),
77
- item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.richText)) : "image" === type ? (item = graphicCreator.image(Object.assign(Object.assign({}, itemPosition), imageStyle)),
94
+ })) : "richText" === type ? (item = graphicCreator.richtext(Object.assign(Object.assign({}, newItemPosition), richTextStyle)),
95
+ item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.richText)) : "image" === type ? (item = graphicCreator.image(Object.assign(Object.assign({}, newItemPosition), imageStyle)),
78
96
  item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.image)) : "custom" === type && renderCustomCallback && (item = renderCustomCallback(),
79
97
  item.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.customMark)),
80
- item.name = `mark-point-${type}`, this.setItemAttributes(item, itemContent, itemPosition, type),
98
+ item.name = `mark-point-${type}`, this.setItemAttributes(item, itemContent, newPosition, newItemPosition, type),
81
99
  item;
82
100
  }
83
- getItemLineAttr(itemLine, position, itemPosition) {
84
- let points = [];
85
- const {type: type = "type-s"} = itemLine;
86
- return points = "type-do" === type ? [ position, {
87
- x: (position.x + itemPosition.x) / 2,
88
- y: itemPosition.y
89
- }, itemPosition ] : "type-po" === type ? [ position, {
90
- x: itemPosition.x,
91
- y: position.y
92
- }, itemPosition ] : "type-op" === type ? [ position, {
93
- x: position.x,
94
- y: itemPosition.y
95
- }, itemPosition ] : [ position, itemPosition ], points;
101
+ getItemLineAttr(itemLine, newPosition, newItemPosition) {
102
+ let points = [], center = {
103
+ x: 0,
104
+ y: 0
105
+ }, radius = 0, startAngle = 0, endAngle = 0;
106
+ const {type: type = "type-s", arcRatio: arcRatio = .8} = itemLine;
107
+ if (this._isArcLine) {
108
+ const {x: x1, y: y1} = newPosition, {x: x2, y: y2} = newItemPosition, x0 = (x1 + x2) / 2, y0 = (y1 + y2) / 2, k = y1 === y2 ? 0 : -(x1 - x2) / (y1 - y2), centerX = x0 + arcRatio * (y2 > y1 ? -1 : 1) * x0, centerY = (x => k * (x - x0) + y0)(centerX);
109
+ center = {
110
+ x: centerX,
111
+ y: centerY
112
+ }, startAngle = deltaXYToAngle(y1 - centerY, x1 - centerX), endAngle = deltaXYToAngle(y2 - centerY, x2 - centerX),
113
+ radius = Math.sqrt((centerX - x1) * (centerX - x1) + (centerY - y1) * (centerY - y1));
114
+ } else points = "type-do" === type ? [ newPosition, {
115
+ x: (newPosition.x + newItemPosition.x) / 2,
116
+ y: newItemPosition.y
117
+ }, newItemPosition ] : "type-po" === type ? [ newPosition, {
118
+ x: newItemPosition.x,
119
+ y: newPosition.y
120
+ }, newItemPosition ] : "type-op" === type ? [ newPosition, {
121
+ x: newPosition.x,
122
+ y: newItemPosition.y
123
+ }, newItemPosition ] : [ newPosition, newItemPosition ];
124
+ return points = removeRepeatPoint(points), {
125
+ points: points,
126
+ center: center,
127
+ radius: radius,
128
+ startAngle: startAngle,
129
+ endAngle: endAngle
130
+ };
96
131
  }
97
- setItemLineAttr(itemLine, position, itemPosition, visible) {
132
+ reDrawLine(itemLine, pointsAttr) {
133
+ this._line.release();
134
+ const {startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, type: type = "type-s"} = itemLine, {state: state} = this.attribute, lineConstructor = this._isArcLine ? ArcSegment : Segment;
135
+ this._container.removeChild(this._line), this._line = new lineConstructor(Object.assign(Object.assign({}, pointsAttr), {
136
+ pickable: !1,
137
+ startSymbol: startSymbol,
138
+ endSymbol: endSymbol,
139
+ lineStyle: lineStyle,
140
+ visible: itemLine.visible,
141
+ state: {
142
+ line: merge({}, DEFAULT_STATES, null == state ? void 0 : state.line),
143
+ startSymbol: merge({}, DEFAULT_STATES, null == state ? void 0 : state.lineStartSymbol),
144
+ endSymbol: merge({}, DEFAULT_STATES, null == state ? void 0 : state.lineEndSymbol)
145
+ }
146
+ })), this._container.add(this._line);
147
+ }
148
+ setItemLineAttr(itemLine, newPosition, newItemPosition) {
98
149
  if (this._line) {
99
- const {startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle} = itemLine, points = this.getItemLineAttr(itemLine, position, itemPosition);
100
- this._line.setAttributes({
101
- points: points,
150
+ const {startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, type: type = "type-s"} = itemLine, {state: state} = this.attribute, pointsAttr = this.getItemLineAttr(itemLine, newPosition, newItemPosition);
151
+ "type-arc" === type && "arc-segment" === this._line.key || "type-arc" !== type && "segment" === this._line.key ? this._line.setAttributes(Object.assign(Object.assign({}, pointsAttr), {
102
152
  startSymbol: startSymbol,
103
153
  endSymbol: endSymbol,
104
154
  lineStyle: lineStyle,
105
- visible: visible
106
- });
155
+ visible: itemLine.visible,
156
+ state: {
157
+ line: merge({}, DEFAULT_STATES, null == state ? void 0 : state.line),
158
+ startSymbol: merge({}, DEFAULT_STATES, null == state ? void 0 : state.lineStartSymbol),
159
+ endSymbol: merge({}, DEFAULT_STATES, null == state ? void 0 : state.lineEndSymbol)
160
+ }
161
+ })) : this.reDrawLine(itemLine, pointsAttr);
107
162
  }
108
163
  }
109
- getDecorativeLineAttr(itemLine, itemPosition) {
164
+ getDecorativeLineAttr(itemLine) {
110
165
  var _a;
111
166
  const decorativeLength = (null === (_a = null == itemLine ? void 0 : itemLine.decorativeLine) || void 0 === _a ? void 0 : _a.length) || 10, itemAngle = this._line.getEndAngle() || 0;
112
167
  return {
@@ -116,25 +171,34 @@ export class MarkPoint extends Marker {
116
171
  endPointOffsetY: -decorativeLength / 2 * Math.sin(itemAngle - Math.PI / 2)
117
172
  };
118
173
  }
119
- setDecorativeLineAttr(itemLine, itemPosition, visible) {
174
+ setDecorativeLineAttr(itemLine, newItemPosition, visible) {
175
+ var _a;
120
176
  if (this._decorativeLine) {
121
- const {lineStyle: lineStyle} = itemLine, {startPointOffsetX: startPointOffsetX, startPointOffsetY: startPointOffsetY, endPointOffsetX: endPointOffsetX, endPointOffsetY: endPointOffsetY} = this.getDecorativeLineAttr(itemLine, itemPosition);
177
+ const {lineStyle: lineStyle} = itemLine, {startPointOffsetX: startPointOffsetX, startPointOffsetY: startPointOffsetY, endPointOffsetX: endPointOffsetX, endPointOffsetY: endPointOffsetY} = this.getDecorativeLineAttr(itemLine);
122
178
  this._decorativeLine.setAttributes(Object.assign(Object.assign({
123
179
  points: [ {
124
- x: itemPosition.x + startPointOffsetX,
125
- y: itemPosition.y + startPointOffsetY
180
+ x: newItemPosition.x + startPointOffsetX,
181
+ y: newItemPosition.y + startPointOffsetY
126
182
  }, {
127
- x: itemPosition.x + endPointOffsetX,
128
- y: itemPosition.y + endPointOffsetY
183
+ x: newItemPosition.x + endPointOffsetX,
184
+ y: newItemPosition.y + endPointOffsetY
129
185
  } ]
130
186
  }, lineStyle), {
131
187
  visible: visible
132
- }));
188
+ })), this._decorativeLine.states = merge({}, DEFAULT_STATES, null === (_a = this.attribute.state) || void 0 === _a ? void 0 : _a.line);
133
189
  }
134
190
  }
135
- setAllOfItemsAttr(itemPosition) {
191
+ setTargetItemAttributes(targetItem, position) {
192
+ var _a, _b;
193
+ this._targetItem && (this._targetItem.setAttributes(Object.assign({
194
+ x: position.x,
195
+ y: position.y,
196
+ visible: null !== (_a = targetItem.visible) && void 0 !== _a && _a
197
+ }, targetItem.style)), this._targetItem.states = merge({}, DEFAULT_STATES, null === (_b = this.attribute.state) || void 0 === _b ? void 0 : _b.targetItem));
198
+ }
199
+ setAllOfItemsAttr(newPosition, newItemPosition) {
136
200
  var _a;
137
- const {position: position, itemLine: itemLine = {}, itemContent: itemContent = {}, limitRect: limitRect} = this.attribute, {type: type = "text", confine: confine} = itemContent;
201
+ const {position: position, itemLine: itemLine = {}, itemContent: itemContent = {}, limitRect: limitRect, targetSymbol: targetSymbol} = this.attribute, {type: type = "text", confine: confine} = itemContent;
138
202
  if (limitRect && confine) {
139
203
  const {x: x, y: y, width: width, height: height} = limitRect, {dx: dx, dy: dy} = computeOffsetForlimit(this._item, {
140
204
  x1: x,
@@ -142,40 +206,68 @@ export class MarkPoint extends Marker {
142
206
  x2: x + width,
143
207
  y2: y + height
144
208
  });
145
- itemPosition.x = itemPosition.x + dx, itemPosition.y = itemPosition.y + dy;
209
+ newItemPosition.x = newItemPosition.x + dx, newItemPosition.y = newItemPosition.y + dy;
146
210
  }
147
- this.setItemAttributes(this._item, itemContent, itemPosition, type), this.setItemLineAttr(itemLine, position, itemPosition, itemLine.visible),
148
- this.setDecorativeLineAttr(itemLine, itemPosition, null === (_a = itemLine.decorativeLine) || void 0 === _a ? void 0 : _a.visible);
211
+ this.setTargetItemAttributes(targetSymbol, position), this.setItemLineAttr(itemLine, newPosition, newItemPosition),
212
+ this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type),
213
+ this.setDecorativeLineAttr(itemLine, newItemPosition, null === (_a = itemLine.decorativeLine) || void 0 === _a ? void 0 : _a.visible);
214
+ }
215
+ computeNewPositionAfterTargetItem(position) {
216
+ var _a;
217
+ const {itemContent: itemContent = {}, targetSymbol: targetSymbol} = this.attribute, {offsetX: itemContentOffsetX = 0, offsetY: itemContentOffsetY = 0} = itemContent, {offset: targetSymbolOffset = 0, style: targetSymbolStyle, visible: targetItemvisible = !1, size: targetSymbolSize} = targetSymbol, targetSize = targetItemvisible ? targetSymbolSize || (null !== (_a = targetSymbolStyle.size) && void 0 !== _a ? _a : 10) : 0, targetOffsetAngle = deltaXYToAngle(itemContentOffsetY, itemContentOffsetX);
218
+ return {
219
+ newPosition: {
220
+ x: position.x + (targetSize + targetSymbolOffset) * Math.cos(targetOffsetAngle),
221
+ y: position.y + (targetSize + targetSymbolOffset) * Math.sin(targetOffsetAngle)
222
+ },
223
+ newItemPosition: {
224
+ x: position.x + (targetSize + targetSymbolOffset) * Math.cos(targetOffsetAngle) + itemContentOffsetX,
225
+ y: position.y + (targetSize + targetSymbolOffset) * Math.sin(targetOffsetAngle) + itemContentOffsetY
226
+ }
227
+ };
149
228
  }
150
229
  initMarker(container) {
151
- const {position: position, itemContent: itemContent = {}, state: state} = this.attribute, itemPosition = {
152
- x: position.x + (itemContent.offsetX || 0),
153
- y: position.y + (itemContent.offsetY || 0)
154
- }, line = new Segment({
230
+ const {position: position, itemContent: itemContent = {}, itemLine: itemLine} = this.attribute, {type: itemLineType = "type-s", arcRatio: arcRatio = .8} = itemLine, {newPosition: newPosition, newItemPosition: newItemPosition} = this.computeNewPositionAfterTargetItem(position);
231
+ this._isArcLine = "type-arc" === itemLineType && 0 !== arcRatio && newPosition.x !== newItemPosition.x && newPosition.y !== newItemPosition.y;
232
+ const line = new (this._isArcLine ? ArcSegment : Segment)({
155
233
  points: [],
156
234
  pickable: !1,
157
- state: {
158
- line: merge({}, DEFAULT_STATES, null == state ? void 0 : state.line),
159
- startSymbol: merge({}, DEFAULT_STATES, null == state ? void 0 : state.lineStartSymbol),
160
- endSymbol: merge({}, DEFAULT_STATES, null == state ? void 0 : state.lineEndSymbol)
161
- }
235
+ center: {
236
+ x: 0,
237
+ y: 0
238
+ },
239
+ radius: 0,
240
+ startAngle: 0,
241
+ endAngle: 0
162
242
  });
163
243
  line.name = "mark-point-line", this._line = line, container.add(line);
164
244
  const decorativeLine = graphicCreator.line({
165
245
  points: []
166
246
  });
167
- decorativeLine.states = merge({}, DEFAULT_STATES, null == state ? void 0 : state.line),
168
247
  decorativeLine.name = "mark-point-decorativeLine", this._decorativeLine = decorativeLine,
169
248
  container.add(decorativeLine);
170
- const item = this.initItem(itemContent, itemPosition);
171
- this._item = item, this.setAllOfItemsAttr(itemPosition), container.add(item);
249
+ const targetItem = graphicCreator.symbol({});
250
+ targetItem.name = "mark-point-targetItem", this._targetItem = targetItem, container.add(this._targetItem);
251
+ const item = this.initItem(itemContent, newPosition, newItemPosition);
252
+ this._item = item, container.add(item), this.setAllOfItemsAttr(newPosition, newItemPosition);
172
253
  }
173
254
  updateMarker() {
174
- const {position: position, itemContent: itemContent = {}} = this.attribute, {type: type = "text"} = itemContent, itemPosition = {
175
- x: position.x + (itemContent.offsetX || 0),
176
- y: position.y + (itemContent.offsetY || 0)
177
- };
178
- this.setItemAttributes(this._item, itemContent, itemPosition, type), this.setAllOfItemsAttr(itemPosition);
255
+ const {position: position, itemContent: itemContent = {}, itemLine: itemLine} = this.attribute, {type: type = "text"} = itemContent, {type: itemLineType = "type-s", arcRatio: arcRatio = .8} = itemLine, {newPosition: newPosition, newItemPosition: newItemPosition} = this.computeNewPositionAfterTargetItem(position), isArcLine = "type-arc" === itemLineType && 0 !== arcRatio && newPosition.x !== newItemPosition.x && newPosition.y !== newItemPosition.y;
256
+ isArcLine !== this._isArcLine ? (this._isArcLine = isArcLine, this.reDrawLine(itemLine, {
257
+ points: [ {
258
+ x: 0,
259
+ y: 0
260
+ } ],
261
+ pickable: !1,
262
+ center: {
263
+ x: 0,
264
+ y: 0
265
+ },
266
+ radius: 0,
267
+ startAngle: 0,
268
+ endAngle: 0
269
+ })) : this._isArcLine = isArcLine, this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type),
270
+ this.setAllOfItemsAttr(newPosition, newItemPosition);
179
271
  }
180
272
  isValidPoints() {
181
273
  const {position: position} = this.attribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/point.ts"],"names":[],"mappings":"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","file":"point.js","sourcesContent":["import type {\n IGroup,\n IImage,\n INode,\n ISymbol,\n IImageGraphicAttribute,\n IRichText,\n IRichTextGraphicAttribute,\n ILine,\n ILineGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport { Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME } from './config';\nimport type { IItemContent, IItemLine, MarkPointAnimationType, MarkPointAttrs, MarkerAnimationState } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport { IMarkPointItemPosition } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkPointComponent } from './register';\nimport { computeOffsetForlimit } from '../util/limit-shape';\nimport { DEFAULT_STATES } from '../constant';\nimport { DefaultExitMarkerAnimation, DefaultUpdateMarkPointAnimation, markPointAnimate } from './animate/animate';\n\nloadMarkPointComponent();\n\nexport function registerMarkPointAnimate() {\n MarkPoint._animate = markPointAnimate;\n}\n\nexport class MarkPoint extends Marker<MarkPointAttrs, MarkPointAnimationType> {\n name = 'markPoint';\n static defaultAttributes = DEFAULT_MARK_POINT_THEME;\n\n /** animate */\n defaultUpdateAnimation = DefaultUpdateMarkPointAnimation;\n defaultExitAnimation = DefaultExitMarkerAnimation;\n protected markerAnimate(state: MarkerAnimationState): void {\n if (MarkPoint._animate && this._animationConfig) {\n MarkPoint._animate([this._line, this._decorativeLine], this._item, this._animationConfig, state);\n }\n }\n\n private _item!: ISymbol | Tag | IImage | IRichText;\n\n private _line?: Segment;\n\n private _decorativeLine!: ILine;\n\n constructor(attributes: MarkPointAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkPoint.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n //do nothing\n }\n\n protected setItemAttributes(\n item: ISymbol | Tag | IImage | IRichText,\n itemContent: IItemContent,\n itemPosition: Point,\n itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'\n ) {\n if (!item) {\n return;\n }\n const {\n autoRotate = true,\n refX = 0,\n refY = 0,\n refAngle = 0,\n textStyle = {},\n richTextStyle = {},\n imageStyle = {},\n position = IMarkPointItemPosition.middle\n } = itemContent;\n const itemAngle = this._line?.getEndAngle() || 0;\n const itemOffsetX = refX * Math.cos(itemAngle) + refY * Math.cos(itemAngle - Math.PI / 2);\n const itemOffsetY = refX * Math.sin(itemAngle) + refY * Math.sin(itemAngle - Math.PI / 2);\n if (itemType === 'text') {\n item.setAttributes({\n ...(textStyle as TagAttributes),\n textStyle: {\n ...DEFAULT_MARK_POINT_TEXT_STYLE_MAP[itemContent?.position || 'end'],\n ...textStyle.textStyle\n }\n } as any);\n } else if (itemType === 'richText') {\n item.setAttributes({\n dx: this.getItemDx(item, position, richTextStyle) + (richTextStyle.dx || 0),\n dy: this.getItemDy(item, position, richTextStyle) + (richTextStyle.dy || 0)\n });\n } else if (itemType === 'image') {\n item.setAttributes({\n dx: this.getItemDx(item, position, imageStyle) + (imageStyle.dx || 0),\n dy: this.getItemDy(item, position, imageStyle) + (imageStyle.dy || 0)\n });\n }\n item.setAttributes({\n x: itemPosition.x + (itemOffsetX || 0),\n y: itemPosition.y + (itemOffsetY || 0),\n angle: autoRotate && itemAngle + refAngle\n });\n }\n\n protected getItemDx(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const width = (item as IGroup)?.AABBBounds?.width() ?? (style?.width || 0);\n if (position.includes('inside')) {\n return -width;\n }\n if (position === 'insideTop') {\n return 0;\n }\n return 0;\n }\n\n protected getItemDy(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const height = (item as IGroup)?.AABBBounds?.height() ?? (style?.height || 0);\n if (position.includes('top') || position.includes('Top')) {\n return -height;\n }\n if (position.includes('middle') || position.includes('Middle')) {\n return -height / 2;\n }\n return 0;\n }\n\n protected initItem(itemContent: IItemContent, itemPosition: Point) {\n const { state } = this.attribute as MarkPointAttrs;\n const { type = 'text', symbolStyle, richTextStyle, imageStyle, renderCustomCallback } = itemContent;\n let item: ISymbol | Tag | IImage | IRichText | IGroup;\n if (type === 'symbol') {\n item = graphicCreator.symbol({\n ...itemPosition,\n ...symbolStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.symbol);\n } else if (type === 'text') {\n item = new Tag({\n ...itemPosition,\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n });\n } else if (type === 'richText') {\n item = graphicCreator.richtext({\n ...itemPosition,\n ...richTextStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (type === 'image') {\n item = graphicCreator.image({\n ...itemPosition,\n ...imageStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n } else if (type === 'custom' && renderCustomCallback) {\n item = renderCustomCallback();\n item.states = merge({}, DEFAULT_STATES, state?.customMark);\n }\n item.name = `mark-point-${type}`;\n this.setItemAttributes(item, itemContent, itemPosition, type);\n return item;\n }\n\n protected getItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point) {\n let points: Point[] = [];\n const { type = 'type-s' } = itemLine;\n if (type === 'type-do') {\n points = [\n position,\n {\n x: (position.x + itemPosition.x) / 2,\n y: itemPosition.y\n },\n itemPosition\n ];\n } else if (type === 'type-po') {\n points = [\n position,\n {\n x: itemPosition.x,\n y: position.y\n },\n itemPosition\n ];\n } else if (type === 'type-op') {\n points = [\n position,\n {\n x: position.x,\n y: itemPosition.y\n },\n itemPosition\n ];\n } else {\n points = [position, itemPosition];\n }\n return points;\n }\n\n protected setItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point, visible: boolean) {\n if (this._line) {\n const { startSymbol, endSymbol, lineStyle } = itemLine;\n const points = this.getItemLineAttr(itemLine, position, itemPosition);\n this._line.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n visible\n });\n }\n }\n\n protected getDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point) {\n const decorativeLength = itemLine?.decorativeLine?.length || 10;\n const itemAngle = this._line.getEndAngle() || 0;\n const startPointOffsetX = (decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const startPointOffsetY = (decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n const endPointOffsetX = (-decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const endPointOffsetY = (-decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n return {\n startPointOffsetX,\n startPointOffsetY,\n endPointOffsetX,\n endPointOffsetY\n };\n }\n\n protected setDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point, visible: boolean) {\n if (this._decorativeLine) {\n const { lineStyle } = itemLine;\n const { startPointOffsetX, startPointOffsetY, endPointOffsetX, endPointOffsetY } = this.getDecorativeLineAttr(\n itemLine,\n itemPosition\n );\n this._decorativeLine.setAttributes({\n points: [\n {\n x: itemPosition.x + startPointOffsetX,\n y: itemPosition.y + startPointOffsetY\n },\n {\n x: itemPosition.x + endPointOffsetX,\n y: itemPosition.y + endPointOffsetY\n }\n ] as IPointLike[],\n ...(lineStyle as Partial<ILineGraphicAttribute>),\n visible\n });\n }\n }\n\n protected setAllOfItemsAttr(itemPosition: Point) {\n const { position, itemLine = {}, itemContent = {}, limitRect } = this.attribute as MarkPointAttrs;\n const { type = 'text', confine } = itemContent;\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n const { dx, dy } = computeOffsetForlimit(this._item, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n itemPosition.x = itemPosition.x + dx;\n itemPosition.y = itemPosition.y + dy;\n }\n this.setItemAttributes(this._item, itemContent, itemPosition, type);\n this.setItemLineAttr(itemLine, position, itemPosition, itemLine.visible);\n this.setDecorativeLineAttr(itemLine, itemPosition, itemLine.decorativeLine?.visible);\n }\n\n protected initMarker(container: IGroup) {\n const { position, itemContent = {}, state } = this.attribute as MarkPointAttrs;\n const itemPosition = {\n x: position.x + (itemContent.offsetX || 0),\n y: position.y + (itemContent.offsetY || 0)\n };\n\n const line = new Segment({\n points: [],\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 line.name = 'mark-point-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const decorativeLine = graphicCreator.line({\n points: []\n });\n decorativeLine.states = merge({}, DEFAULT_STATES, state?.line);\n decorativeLine.name = 'mark-point-decorativeLine';\n this._decorativeLine = decorativeLine;\n container.add(decorativeLine as unknown as INode);\n\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n const item = this.initItem(itemContent as any, itemPosition);\n this._item = item;\n\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(itemPosition);\n container.add(item as unknown as INode);\n }\n\n protected updateMarker() {\n const { position, itemContent = {} } = this.attribute as MarkPointAttrs;\n const { type = 'text' } = itemContent;\n\n const itemPosition = {\n x: position.x + (itemContent.offsetX || 0),\n y: position.y + (itemContent.offsetY || 0)\n };\n\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n this.setItemAttributes(this._item, itemContent, itemPosition, type);\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(itemPosition);\n }\n\n protected isValidPoints() {\n const { position } = this.attribute as MarkPointAttrs;\n if (isValidNumber(position.x) && isValidNumber(position.y)) {\n return true;\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/marker/point.ts"],"names":[],"mappings":"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","file":"point.js","sourcesContent":["import type {\n IGroup,\n IImage,\n INode,\n ISymbol,\n IImageGraphicAttribute,\n IRichText,\n IRichTextGraphicAttribute,\n ILine,\n ILineGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport { ArcSegment, Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME } from './config';\nimport type { IItemContent, IItemLine, MarkPointAnimationType, MarkPointAttrs, MarkerAnimationState } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport { IMarkPointItemPosition } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkPointComponent } from './register';\nimport { computeOffsetForlimit } from '../util/limit-shape';\nimport { DEFAULT_STATES } from '../constant';\nimport { DefaultExitMarkerAnimation, DefaultUpdateMarkPointAnimation, markPointAnimate } from './animate/animate';\nimport { deltaXYToAngle, isPostiveXAxisCartes, isPostiveXAxisPolar, removeRepeatPoint } from '../util';\n\nloadMarkPointComponent();\n\nexport function registerMarkPointAnimate() {\n MarkPoint._animate = markPointAnimate;\n}\n\nexport class MarkPoint extends Marker<MarkPointAttrs, MarkPointAnimationType> {\n name = 'markPoint';\n static defaultAttributes = DEFAULT_MARK_POINT_THEME;\n\n /** animate */\n defaultUpdateAnimation = DefaultUpdateMarkPointAnimation;\n defaultExitAnimation = DefaultExitMarkerAnimation;\n protected markerAnimate(state: MarkerAnimationState): void {\n if (MarkPoint._animate && this._animationConfig) {\n MarkPoint._animate([this._line, this._decorativeLine], this._item, this._animationConfig, state);\n }\n }\n\n private _item!: ISymbol | Tag | IImage | IRichText;\n private _targetItem!: ISymbol;\n\n private _line?: Segment;\n\n private _decorativeLine!: ILine;\n private _isArcLine: boolean = false;\n\n constructor(attributes: MarkPointAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkPoint.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n //do nothing\n }\n\n protected getTextAlignAttr(\n autoRotate: boolean,\n offsetX: number,\n offsetY: number,\n lineEndAngle: number,\n itemPosition: keyof typeof IMarkPointItemPosition\n ) {\n let isPostiveXAxis = true;\n if (this._isArcLine) {\n isPostiveXAxis = isPostiveXAxisPolar(lineEndAngle, (this._line as ArcSegment).isReverseArc);\n } else {\n isPostiveXAxis = isPostiveXAxisCartes(lineEndAngle);\n }\n\n if (isPostiveXAxis) {\n return DEFAULT_MARK_POINT_TEXT_STYLE_MAP.postiveXAxis[itemPosition];\n }\n return DEFAULT_MARK_POINT_TEXT_STYLE_MAP.negativeXAxis[itemPosition];\n }\n\n protected setItemAttributes(\n item: ISymbol | Tag | IImage | IRichText,\n itemContent: IItemContent,\n newPosition: Point,\n newItemPosition: Point,\n itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'\n ) {\n if (!item) {\n return;\n }\n const {\n autoRotate = true,\n refX = 0,\n refY = 0,\n refAngle = 0,\n textStyle = {},\n richTextStyle = {},\n imageStyle = {},\n position: positionType = IMarkPointItemPosition.middle\n } = itemContent;\n const { state } = this.attribute as MarkPointAttrs;\n const lineEndAngle = this._line?.getEndAngle() || 0;\n const itemRefOffsetX = refX * Math.cos(lineEndAngle) + refY * Math.cos(lineEndAngle);\n const itemRefOffsetY = refX * Math.sin(lineEndAngle) + refY * Math.sin(lineEndAngle);\n if (itemType === 'text') {\n const offsetX = newItemPosition.x - newPosition.x;\n const offsetY = newItemPosition.y - newPosition.y;\n item.setAttributes({\n ...(textStyle as TagAttributes),\n textStyle: {\n ...this.getTextAlignAttr(\n autoRotate,\n offsetX,\n offsetY,\n lineEndAngle,\n itemContent.position ?? ('end' as keyof typeof IMarkPointItemPosition)\n ),\n ...textStyle.textStyle\n },\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n } as any);\n } else if (itemType === 'richText') {\n item.setAttributes({\n dx: this.getItemDx(item, positionType, richTextStyle) + (richTextStyle.dx || 0),\n dy: this.getItemDy(item, positionType, richTextStyle) + (richTextStyle.dy || 0)\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (itemType === 'image') {\n item.setAttributes({\n dx: this.getItemDx(item, positionType, imageStyle) + (imageStyle.dx || 0),\n dy: this.getItemDy(item, positionType, imageStyle) + (imageStyle.dy || 0)\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n }\n\n let isPostiveXAxis = true;\n let itemAngle;\n if (this._isArcLine) {\n isPostiveXAxis = isPostiveXAxisPolar(lineEndAngle, (this._line as ArcSegment).isReverseArc);\n // 文字翻转\n itemAngle = isPostiveXAxis ? lineEndAngle : lineEndAngle - Math.PI;\n } else {\n isPostiveXAxis = isPostiveXAxisCartes(lineEndAngle);\n itemAngle = isPostiveXAxis ? lineEndAngle : lineEndAngle - Math.PI;\n }\n\n item.setAttributes({\n x: newItemPosition.x + (itemRefOffsetX || 0),\n y: newItemPosition.y + (itemRefOffsetY || 0),\n angle: autoRotate && itemAngle + refAngle\n });\n }\n\n protected getItemDx(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const width = (item as IGroup)?.AABBBounds?.width() ?? (style?.width || 0);\n if (position.includes('inside')) {\n return -width;\n }\n if (position === 'insideTop') {\n return 0;\n }\n return 0;\n }\n\n protected getItemDy(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const height = (item as IGroup)?.AABBBounds?.height() ?? (style?.height || 0);\n if (position.includes('top') || position.includes('Top')) {\n return -height;\n }\n if (position.includes('middle') || position.includes('Middle')) {\n return -height / 2;\n }\n return 0;\n }\n\n protected initItem(itemContent: IItemContent, newPosition: Point, newItemPosition: Point) {\n const { state } = this.attribute as MarkPointAttrs;\n const { type = 'text', symbolStyle, richTextStyle, imageStyle, renderCustomCallback } = itemContent;\n let item: ISymbol | Tag | IImage | IRichText | IGroup;\n if (type === 'symbol') {\n item = graphicCreator.symbol({\n ...newItemPosition,\n ...symbolStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.symbol);\n } else if (type === 'text') {\n item = new Tag({\n ...newItemPosition,\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n });\n } else if (type === 'richText') {\n item = graphicCreator.richtext({\n ...newItemPosition,\n ...richTextStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (type === 'image') {\n item = graphicCreator.image({\n ...newItemPosition,\n ...imageStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n } else if (type === 'custom' && renderCustomCallback) {\n item = renderCustomCallback();\n item.states = merge({}, DEFAULT_STATES, state?.customMark);\n }\n item.name = `mark-point-${type}`;\n this.setItemAttributes(item, itemContent, newPosition, newItemPosition, type);\n return item;\n }\n\n protected getItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point) {\n let points: Point[] = [];\n let center = { x: 0, y: 0 };\n let radius = 0;\n let startAngle = 0;\n let endAngle = 0;\n const { type = 'type-s', arcRatio = 0.8 } = itemLine;\n if (this._isArcLine) {\n const { x: x1, y: y1 } = newPosition;\n const { x: x2, y: y2 } = newItemPosition;\n\n // 得到中点和斜率\n const x0 = (x1 + x2) / 2;\n const y0 = (y1 + y2) / 2;\n // 得到垂直平分线表达式\n const k = y1 === y2 ? 0 : -(x1 - x2) / (y1 - y2); // 垂直平分线斜率 * 两点连线斜率 = -1\n const line = (x: number) => k * (x - x0) + y0;\n // 在垂直平分线上找圆心\n const direction = y2 > y1 ? -1 : 1;\n\n const deltaX = arcRatio * direction * x0; // 数值决定曲率, 符号决定法向, 可通过配置自定义\n const centerX = x0 + deltaX;\n const centerY = line(centerX);\n center = { x: centerX, y: centerY };\n startAngle = deltaXYToAngle(y1 - centerY, x1 - centerX);\n endAngle = deltaXYToAngle(y2 - centerY, x2 - centerX);\n\n radius = Math.sqrt((centerX - x1) * (centerX - x1) + (centerY - y1) * (centerY - y1));\n } else if (type === 'type-do') {\n points = [\n newPosition,\n {\n x: (newPosition.x + newItemPosition.x) / 2,\n y: newItemPosition.y\n },\n newItemPosition\n ];\n } else if (type === 'type-po') {\n points = [\n newPosition,\n {\n x: newItemPosition.x,\n y: newPosition.y\n },\n newItemPosition\n ];\n } else if (type === 'type-op') {\n points = [\n newPosition,\n {\n x: newPosition.x,\n y: newItemPosition.y\n },\n newItemPosition\n ];\n } else {\n points = [newPosition, newItemPosition];\n }\n // 插值的过程中可能会产生重复的点, 在此去除\n points = removeRepeatPoint(points);\n return {\n points,\n center,\n radius,\n startAngle,\n endAngle\n };\n }\n\n protected reDrawLine(itemLine: IItemLine, pointsAttr: any) {\n this._line.release();\n const { startSymbol, endSymbol, lineStyle, type = 'type-s' } = itemLine;\n const { state } = this.attribute as MarkPointAttrs;\n const lineConstructor = this._isArcLine ? ArcSegment : Segment;\n this._container.removeChild(this._line);\n this._line = new lineConstructor({\n ...pointsAttr,\n pickable: false,\n startSymbol,\n endSymbol,\n lineStyle,\n visible: itemLine.visible,\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 } as any);\n this._container.add(this._line as unknown as INode);\n }\n\n protected setItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point) {\n if (this._line) {\n const { startSymbol, endSymbol, lineStyle, type = 'type-s' } = itemLine;\n const { state } = this.attribute as MarkPointAttrs;\n const pointsAttr = this.getItemLineAttr(itemLine, newPosition, newItemPosition);\n if (\n (type === 'type-arc' && this._line.key === 'arc-segment') ||\n (type !== 'type-arc' && this._line.key === 'segment')\n ) {\n this._line.setAttributes({\n ...pointsAttr,\n startSymbol,\n endSymbol,\n lineStyle,\n visible: itemLine.visible,\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 } else {\n this.reDrawLine(itemLine, pointsAttr);\n }\n }\n }\n\n protected getDecorativeLineAttr(itemLine: IItemLine) {\n const decorativeLength = itemLine?.decorativeLine?.length || 10;\n const itemAngle = this._line.getEndAngle() || 0;\n\n const startPointOffsetX = (decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const startPointOffsetY = (decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n const endPointOffsetX = (-decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const endPointOffsetY = (-decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n return {\n startPointOffsetX,\n startPointOffsetY,\n endPointOffsetX,\n endPointOffsetY\n };\n }\n\n protected setDecorativeLineAttr(itemLine: IItemLine, newItemPosition: Point, visible: boolean) {\n if (this._decorativeLine) {\n const { lineStyle } = itemLine;\n const { startPointOffsetX, startPointOffsetY, endPointOffsetX, endPointOffsetY } =\n this.getDecorativeLineAttr(itemLine);\n this._decorativeLine.setAttributes({\n points: [\n {\n x: newItemPosition.x + startPointOffsetX,\n y: newItemPosition.y + startPointOffsetY\n },\n {\n x: newItemPosition.x + endPointOffsetX,\n y: newItemPosition.y + endPointOffsetY\n }\n ] as IPointLike[],\n ...(lineStyle as Partial<ILineGraphicAttribute>),\n visible\n });\n this._decorativeLine.states = merge({}, DEFAULT_STATES, this.attribute.state?.line);\n }\n }\n\n protected setTargetItemAttributes(targetItem: any, position: IPointLike) {\n if (this._targetItem) {\n this._targetItem.setAttributes({\n x: position.x,\n y: position.y,\n visible: targetItem.visible ?? false,\n ...targetItem.style\n });\n this._targetItem.states = merge({}, DEFAULT_STATES, this.attribute.state?.targetItem);\n }\n }\n\n protected setAllOfItemsAttr(newPosition: Point, newItemPosition: Point) {\n const { position, itemLine = {}, itemContent = {}, limitRect, targetSymbol } = this.attribute as MarkPointAttrs;\n const { type = 'text', confine } = itemContent;\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n const { dx, dy } = computeOffsetForlimit(this._item, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n newItemPosition.x = newItemPosition.x + dx;\n newItemPosition.y = newItemPosition.y + dy;\n }\n this.setTargetItemAttributes(targetSymbol, position);\n this.setItemLineAttr(itemLine, newPosition, newItemPosition);\n this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type);\n this.setDecorativeLineAttr(itemLine, newItemPosition, itemLine.decorativeLine?.visible);\n }\n\n protected computeNewPositionAfterTargetItem(position: Point) {\n const { itemContent = {}, targetSymbol } = this.attribute as MarkPointAttrs;\n const { offsetX: itemContentOffsetX = 0, offsetY: itemContentOffsetY = 0 } = itemContent;\n const {\n offset: targetSymbolOffset = 0,\n style: targetSymbolStyle,\n visible: targetItemvisible = false,\n size: targetSymbolSize\n } = targetSymbol;\n const targetSize = targetItemvisible ? targetSymbolSize || (targetSymbolStyle.size ?? 10) : 0;\n const targetOffsetAngle = deltaXYToAngle(itemContentOffsetY, itemContentOffsetX);\n const newPosition: Point = {\n x: position.x + (targetSize + targetSymbolOffset) * Math.cos(targetOffsetAngle),\n y: position.y + (targetSize + targetSymbolOffset) * Math.sin(targetOffsetAngle)\n };\n const newItemPosition: Point = {\n x: position.x + (targetSize + targetSymbolOffset) * Math.cos(targetOffsetAngle) + itemContentOffsetX, // 偏移量 = targetItem size + targetItem space + 用户配置offset\n y: position.y + (targetSize + targetSymbolOffset) * Math.sin(targetOffsetAngle) + itemContentOffsetY // 偏移量 = targetItem size + targetItem space + 用户配置offset\n };\n\n return { newPosition, newItemPosition };\n }\n\n protected initMarker(container: IGroup) {\n const { position, itemContent = {}, itemLine } = this.attribute as MarkPointAttrs;\n const { type: itemLineType = 'type-s', arcRatio = 0.8 } = itemLine;\n\n /** 根据targetItem计算新的弧线起点 */\n const { newPosition, newItemPosition } = this.computeNewPositionAfterTargetItem(position);\n\n /** itemline - 连接线 */\n this._isArcLine =\n itemLineType === 'type-arc' &&\n arcRatio !== 0 &&\n newPosition.x !== newItemPosition.x &&\n newPosition.y !== newItemPosition.y;\n\n const lineConstructor = this._isArcLine ? ArcSegment : Segment;\n const line = new lineConstructor({\n points: [],\n pickable: false, // 组件容器本身不参与拾取\n center: { x: 0, y: 0 },\n radius: 0,\n startAngle: 0,\n endAngle: 0\n });\n\n line.name = 'mark-point-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n /** decorativeLine - 装饰线 */\n const decorativeLine = graphicCreator.line({\n points: []\n });\n decorativeLine.name = 'mark-point-decorativeLine';\n this._decorativeLine = decorativeLine;\n container.add(decorativeLine as unknown as INode);\n\n /** targetItem - 被标注的点上需要放置的内容 */\n const targetItem = graphicCreator.symbol({});\n targetItem.name = 'mark-point-targetItem';\n this._targetItem = targetItem;\n container.add(this._targetItem);\n\n /** item - 标注的内容 */\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n const item = this.initItem(itemContent as any, newPosition, newItemPosition);\n this._item = item;\n container.add(item as unknown as INode);\n\n /** 全部属性确定后, 给每个元素 set attr */\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(newPosition, newItemPosition);\n }\n\n protected updateMarker() {\n const { position, itemContent = {}, itemLine } = this.attribute as MarkPointAttrs;\n const { type = 'text' } = itemContent;\n const { type: itemLineType = 'type-s', arcRatio = 0.8 } = itemLine;\n /** 根据targetItem计算新的弧线起点 */\n const { newPosition, newItemPosition } = this.computeNewPositionAfterTargetItem(position);\n const isArcLine =\n itemLineType === 'type-arc' &&\n arcRatio !== 0 &&\n newPosition.x !== newItemPosition.x &&\n newPosition.y !== newItemPosition.y;\n if (isArcLine !== this._isArcLine) {\n // 如果曲线和直线相互切换了, 则需要重新绘制line\n this._isArcLine = isArcLine;\n this.reDrawLine(itemLine, {\n points: [{ x: 0, y: 0 }],\n pickable: false,\n center: { x: 0, y: 0 },\n radius: 0,\n startAngle: 0,\n endAngle: 0\n });\n } else {\n this._isArcLine = isArcLine;\n }\n\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type);\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(newPosition, newItemPosition);\n }\n\n protected isValidPoints() {\n const { position } = this.attribute as MarkPointAttrs;\n if (isValidNumber(position.x) && isValidNumber(position.y)) {\n return true;\n }\n return false;\n }\n}\n"]}
@@ -25,6 +25,7 @@ export function loadMarkArcAreaComponent() {
25
25
  }
26
26
 
27
27
  export function loadMarkPointComponent() {
28
- loadBaseMarker(), loadSegmentComponent(), registerSymbol(), registerImage(), registerLine();
28
+ loadBaseMarker(), loadSegmentComponent(), loadArcSegmentComponent(), registerSymbol(),
29
+ registerImage(), registerLine();
29
30
  }
30
31
  //# sourceMappingURL=register.js.map