@visactor/vrender-components 0.17.8-alpha.0 → 0.17.9

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/axis/animate/group-transition.js +6 -3
  2. package/cjs/axis/animate/group-transition.js.map +1 -1
  3. package/cjs/axis/base.js +8 -8
  4. package/cjs/axis/base.js.map +1 -1
  5. package/cjs/axis/circle.js +12 -12
  6. package/cjs/axis/circle.js.map +1 -1
  7. package/cjs/axis/line.js +11 -11
  8. package/cjs/axis/line.js.map +1 -1
  9. package/cjs/brush/brush.js +6 -7
  10. package/cjs/brush/brush.js.map +1 -1
  11. package/cjs/data-zoom/data-zoom.js +56 -49
  12. package/cjs/data-zoom/data-zoom.js.map +1 -1
  13. package/cjs/index.d.ts +1 -1
  14. package/cjs/index.js +1 -1
  15. package/cjs/index.js.map +1 -1
  16. package/cjs/indicator/indicator.js +3 -3
  17. package/cjs/indicator/indicator.js.map +1 -1
  18. package/cjs/jsx/index.js +1 -1
  19. package/cjs/label/arc.js +3 -1
  20. package/cjs/label/arc.js.map +1 -1
  21. package/cjs/label/base.d.ts +1 -1
  22. package/cjs/label/base.js +14 -15
  23. package/cjs/label/base.js.map +1 -1
  24. package/cjs/label/index.js +2 -1
  25. package/cjs/label/line.js +1 -2
  26. package/cjs/label/type.d.ts +3 -3
  27. package/cjs/label/type.js.map +1 -1
  28. package/cjs/label/util.js +1 -1
  29. package/cjs/legend/discrete/discrete.js +8 -9
  30. package/cjs/legend/discrete/discrete.js.map +1 -1
  31. package/cjs/marker/area.js +4 -5
  32. package/cjs/marker/area.js.map +1 -1
  33. package/cjs/marker/base.js +8 -8
  34. package/cjs/marker/base.js.map +1 -1
  35. package/cjs/marker/line.js +3 -4
  36. package/cjs/marker/line.js.map +1 -1
  37. package/cjs/marker/point.js +39 -38
  38. package/cjs/marker/point.js.map +1 -1
  39. package/cjs/player/base-player.js +7 -10
  40. package/cjs/player/base-player.js.map +1 -1
  41. package/cjs/player/controller/controller.js +4 -4
  42. package/cjs/player/controller/controller.js.map +1 -1
  43. package/cjs/scrollbar/scrollbar.js +11 -7
  44. package/cjs/scrollbar/scrollbar.js.map +1 -1
  45. package/cjs/segment/segment.js +6 -6
  46. package/cjs/segment/segment.js.map +1 -1
  47. package/cjs/slider/slider.js +13 -13
  48. package/cjs/slider/slider.js.map +1 -1
  49. package/cjs/tag/tag.js +6 -3
  50. package/cjs/tag/tag.js.map +1 -1
  51. package/cjs/tag/type.d.ts +1 -0
  52. package/cjs/tag/type.js.map +1 -1
  53. package/cjs/title/title.js +77 -77
  54. package/cjs/title/title.js.map +1 -1
  55. package/cjs/tooltip/tooltip.js +2 -2
  56. package/cjs/tooltip/tooltip.js.map +1 -1
  57. package/dist/index.js +574 -477
  58. package/dist/index.min.js +1 -1
  59. package/es/axis/animate/group-transition.js +5 -3
  60. package/es/axis/animate/group-transition.js.map +1 -1
  61. package/es/axis/base.js +8 -8
  62. package/es/axis/base.js.map +1 -1
  63. package/es/axis/circle.js +11 -11
  64. package/es/axis/circle.js.map +1 -1
  65. package/es/axis/line.js +11 -11
  66. package/es/axis/line.js.map +1 -1
  67. package/es/brush/brush.js +6 -7
  68. package/es/brush/brush.js.map +1 -1
  69. package/es/data-zoom/data-zoom.js +56 -49
  70. package/es/data-zoom/data-zoom.js.map +1 -1
  71. package/es/index.d.ts +1 -1
  72. package/es/index.js +1 -1
  73. package/es/index.js.map +1 -1
  74. package/es/indicator/indicator.js +3 -3
  75. package/es/indicator/indicator.js.map +1 -1
  76. package/es/jsx/index.js +1 -1
  77. package/es/label/arc.js +1 -1
  78. package/es/label/arc.js.map +1 -1
  79. package/es/label/base.d.ts +1 -1
  80. package/es/label/base.js +14 -15
  81. package/es/label/base.js.map +1 -1
  82. package/es/label/index.js +2 -1
  83. package/es/label/line.js +1 -2
  84. package/es/label/type.d.ts +3 -3
  85. package/es/label/type.js.map +1 -1
  86. package/es/label/util.js +1 -1
  87. package/es/legend/discrete/discrete.js +8 -9
  88. package/es/legend/discrete/discrete.js.map +1 -1
  89. package/es/marker/area.js +4 -5
  90. package/es/marker/area.js.map +1 -1
  91. package/es/marker/base.js +8 -8
  92. package/es/marker/base.js.map +1 -1
  93. package/es/marker/line.js +3 -4
  94. package/es/marker/line.js.map +1 -1
  95. package/es/marker/point.js +39 -38
  96. package/es/marker/point.js.map +1 -1
  97. package/es/player/base-player.js +7 -10
  98. package/es/player/base-player.js.map +1 -1
  99. package/es/player/controller/controller.js +4 -4
  100. package/es/player/controller/controller.js.map +1 -1
  101. package/es/scrollbar/scrollbar.js +11 -7
  102. package/es/scrollbar/scrollbar.js.map +1 -1
  103. package/es/segment/segment.js +6 -6
  104. package/es/segment/segment.js.map +1 -1
  105. package/es/slider/slider.js +13 -13
  106. package/es/slider/slider.js.map +1 -1
  107. package/es/tag/tag.js +6 -3
  108. package/es/tag/tag.js.map +1 -1
  109. package/es/tag/type.d.ts +1 -0
  110. package/es/tag/type.js.map +1 -1
  111. package/es/title/title.js +75 -77
  112. package/es/title/title.js.map +1 -1
  113. package/es/tooltip/tooltip.js +2 -2
  114. package/es/tooltip/tooltip.js.map +1 -1
  115. package/package.json +6 -6
@@ -60,7 +60,7 @@ export class Segment extends AbstractComponent {
60
60
  if (!points.length) return;
61
61
  const {autoRotate: autoRotate = !0} = attribute;
62
62
  let symbol;
63
- if (null == attribute ? void 0 : attribute.visible) {
63
+ if (attribute && attribute.visible) {
64
64
  const startAngle = this._startAngle, endAngle = this._endAngle, {state: state} = this.attribute, start = points[0], end = points[points.length - 1], {refX: refX = 0, refY: refY = 0, refAngle: refAngle = 0, style: style, symbolType: symbolType, size: size = 12} = attribute;
65
65
  let position, rotate;
66
66
  "start" === dim ? (position = {
@@ -88,17 +88,17 @@ export class Segment extends AbstractComponent {
88
88
  this._mainSegmentPoints = points, points;
89
89
  }
90
90
  _clipPoints(points) {
91
- const {startSymbol: startSymbol, endSymbol: endSymbol} = this.attribute;
91
+ const {startSymbol: startSymbol = {}, endSymbol: endSymbol = {}} = this.attribute;
92
92
  let pointsAfterClip = points;
93
- if (null == startSymbol ? void 0 : startSymbol.visible) {
94
- const startSize = (null == startSymbol ? void 0 : startSymbol.clip) ? (null == startSymbol ? void 0 : startSymbol.size) || 10 : 0;
93
+ if (startSymbol.visible) {
94
+ const startSize = startSymbol.clip ? startSymbol.size || 10 : 0;
95
95
  pointsAfterClip = [ {
96
96
  x: points[0].x - startSize / 2 * (Math.cos(this._startAngle) || 0),
97
97
  y: points[0].y - startSize / 2 * (Math.sin(this._startAngle) || 0)
98
98
  }, ...pointsAfterClip.slice(1) ];
99
99
  }
100
- if (null == endSymbol ? void 0 : endSymbol.visible) {
101
- const endSize = (null == endSymbol ? void 0 : endSymbol.clip) ? (null == endSymbol ? void 0 : endSymbol.size) || 10 : 0, pointsEnd = {
100
+ if (endSymbol.visible) {
101
+ const endSize = endSymbol.clip ? endSymbol.size || 10 : 0, pointsEnd = {
102
102
  x: points[points.length - 1].x - endSize / 2 * (Math.cos(this._endAngle) || 0),
103
103
  y: points[points.length - 1].y - endSize / 2 * (Math.sin(this._endAngle) || 0)
104
104
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/segment/segment.ts"],"names":[],"mappings":"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","file":"segment.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport { array, flattenArray, isArray, isEmpty, isValidNumber, merge } from '@visactor/vutils';\nimport type { ISymbol } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { SegmentAttributes, SymbolAttributes } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadSegmentComponent } from './register';\n\nloadSegmentComponent();\nexport class Segment extends AbstractComponent<Required<SegmentAttributes>> {\n name = 'segment';\n\n startSymbol?: ISymbol;\n endSymbol?: ISymbol;\n\n private _startAngle!: number;\n /**\n * 外部获取segment起点正方向\n */\n getStartAngle() {\n return this._startAngle;\n }\n\n private _endAngle!: number;\n /**\n * 外部获取segment终点正方向\n */\n getEndAngle() {\n return this._endAngle;\n }\n\n private _mainSegmentPoints: Point[]; // 组成主线段的点\n getMainSegmentPoints() {\n return this._mainSegmentPoints;\n }\n\n static defaultAttributes: Partial<SegmentAttributes> = {\n visible: true,\n lineStyle: {\n lineWidth: 1,\n stroke: '#000'\n },\n startSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n },\n endSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n }\n };\n\n constructor(attributes: SegmentAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Segment.defaultAttributes, attributes));\n }\n\n protected render() {\n this.removeAllChild();\n this._reset();\n const {\n // points,\n startSymbol,\n endSymbol,\n lineStyle,\n state,\n visible = true,\n multiSegment,\n mainSegmentIndex\n } = this.attribute as SegmentAttributes;\n\n if (!visible) {\n return;\n }\n\n // 计算线的起点和终点角度\n // 计算角度的原因:\n // 1. segment symbol的自动旋转提供参数\n // 2. 使用segment时,需要根据line的角度对附加元素进行自动旋转(比如:markLine的标签, markPoint的装饰线)\n this._computeLineAngle();\n\n // 绘制start和end symbol\n const startSymbolShape = this._renderSymbol(startSymbol as SymbolAttributes, 'start');\n const endSymbolShape = this._renderSymbol(endSymbol as SymbolAttributes, 'end');\n\n this.startSymbol = startSymbolShape;\n this.endSymbol = endSymbolShape;\n\n if (multiSegment) {\n const points = [...this.attribute.points];\n if (isValidNumber(mainSegmentIndex)) {\n points[mainSegmentIndex] = this._clipPoints(points[mainSegmentIndex] as Point[]);\n } else {\n const clipPoints = this._clipPoints(flattenArray(points) as Point[]);\n points[0][0] = clipPoints[0];\n (points[points.length - 1] as Point[])[(points[points.length - 1] as Point[]).length - 1] =\n clipPoints[clipPoints.length - 1];\n }\n points.forEach((point: Point[], index) => {\n const line = graphicCreator.line({\n points: point,\n ...(isArray(lineStyle) ? lineStyle[index] ?? lineStyle[lineStyle.length - 1] : lineStyle),\n fill: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line' + index);\n if (!isEmpty(state?.line)) {\n line.states = isArray(state.line) ? state.line[index] ?? state.line[state.line.length - 1] : state.line;\n }\n this.add(line);\n });\n } else {\n const line = graphicCreator.polygon({\n points: this._clipPoints(this.attribute.points as Point[]),\n ...array(lineStyle)[0],\n fill: false,\n closePath: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line');\n if (!isEmpty(state?.line)) {\n line.states = [].concat(state.line)[0];\n }\n this.add(line);\n }\n }\n\n private _renderSymbol(attribute: SymbolAttributes, dim: string): ISymbol | undefined {\n const points = this._getMainSegmentPoints();\n if (!points.length) {\n return;\n }\n\n const { autoRotate = true } = attribute;\n let symbol;\n if (attribute?.visible) {\n const startAngle = this._startAngle;\n const endAngle = this._endAngle;\n const { state } = this.attribute as SegmentAttributes;\n const start = points[0];\n const end = points[points.length - 1];\n const { refX = 0, refY = 0, refAngle = 0, style, symbolType, size = 12 } = attribute;\n let position;\n let rotate;\n if (dim === 'start') {\n position = {\n x:\n start.x +\n (isValidNumber(startAngle) ? refX * Math.cos(startAngle) + refY * Math.cos(startAngle - Math.PI / 2) : 0),\n y:\n start.y +\n (isValidNumber(startAngle) ? refX * Math.sin(startAngle) + refY * Math.sin(startAngle - Math.PI / 2) : 0)\n };\n rotate = startAngle + Math.PI / 2; // @chensiji - 加Math.PI / 2是因为:默认symbol的包围盒垂直于line,所以在做自动旋转时需要在line正方向基础上做90度偏移\n } else {\n position = {\n x:\n end.x + (isValidNumber(endAngle) ? refX * Math.cos(endAngle) + refY * Math.cos(endAngle - Math.PI / 2) : 0),\n y: end.y + (isValidNumber(endAngle) ? refX * Math.sin(endAngle) + refY * Math.sin(endAngle - Math.PI / 2) : 0)\n };\n rotate = endAngle + Math.PI / 2;\n }\n\n symbol = graphicCreator.symbol({\n ...position,\n symbolType: symbolType as string,\n size,\n angle: autoRotate ? rotate + refAngle : 0,\n strokeBoundsBuffer: 0,\n ...style\n });\n symbol.name = `${this.name}-${dim}-symbol`;\n symbol.id = this._getNodeId(`${dim}-symbol`);\n\n if (!isEmpty(state?.symbol)) {\n symbol.states = state.symbol;\n }\n\n this.add(symbol);\n }\n return symbol;\n }\n\n private _getMainSegmentPoints(): Point[] {\n if (this._mainSegmentPoints) {\n return this._mainSegmentPoints;\n }\n const { points: originPoints, multiSegment, mainSegmentIndex } = this.attribute as SegmentAttributes;\n\n let points: Point[];\n // 需要做下约束判断\n if (multiSegment) {\n if (isValidNumber(mainSegmentIndex)) {\n points = originPoints[mainSegmentIndex] as Point[];\n } else {\n points = flattenArray(originPoints);\n }\n } else {\n points = originPoints as Point[];\n }\n this._mainSegmentPoints = points;\n\n return points;\n }\n\n private _clipPoints(points: Point[]) {\n const { startSymbol, endSymbol } = this.attribute as SegmentAttributes;\n // 通过改变line起点和终点的方式达到symbol在fill为false的情况下,也可以遮盖line的效果\n let pointsAfterClip = points;\n if (startSymbol?.visible) {\n const startSize = startSymbol?.clip ? startSymbol?.size || 10 : 0;\n const pointsStart = {\n x: points[0].x - (startSize / 2) * (Math.cos(this._startAngle) || 0),\n y: points[0].y - (startSize / 2) * (Math.sin(this._startAngle) || 0)\n };\n pointsAfterClip = [pointsStart, ...pointsAfterClip.slice(1)];\n }\n if (endSymbol?.visible) {\n const endSize = endSymbol?.clip ? endSymbol?.size || 10 : 0;\n const pointsEnd = {\n x: points[points.length - 1].x - (endSize / 2) * (Math.cos(this._endAngle) || 0),\n y: points[points.length - 1].y - (endSize / 2) * (Math.sin(this._endAngle) || 0)\n };\n pointsAfterClip = [...pointsAfterClip.slice(0, pointsAfterClip.length - 1), pointsEnd];\n }\n\n return pointsAfterClip;\n }\n\n private _computeLineAngle() {\n const points = this._getMainSegmentPoints();\n if (points.length <= 1) {\n return;\n }\n const start = points[0];\n const startInside = points[1];\n const endInside = points[points.length - 2];\n const end = points[points.length - 1];\n const startVector = [start.x - startInside.x, start.y - startInside.y]; // 起点正方向向量\n const startAngle = Math.atan2(startVector[1], startVector[0]); // 起点正方向角度\n const endVector = [end.x - endInside.x, end.y - endInside.y]; // 终点正方向向量\n const endAngle = Math.atan2(endVector[1], endVector[0]); // 终点正方向角度\n\n this._startAngle = startAngle;\n this._endAngle = endAngle;\n }\n\n private _reset() {\n this.startSymbol = null;\n this.endSymbol = null;\n this._startAngle = null;\n this._endAngle = null;\n this._mainSegmentPoints = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/segment/segment.ts"],"names":[],"mappings":"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","file":"segment.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport { array, flattenArray, isArray, isEmpty, isValidNumber, merge } from '@visactor/vutils';\nimport type { ISymbol } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { SegmentAttributes, SymbolAttributes } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadSegmentComponent } from './register';\n\nloadSegmentComponent();\nexport class Segment extends AbstractComponent<Required<SegmentAttributes>> {\n name = 'segment';\n\n startSymbol?: ISymbol;\n endSymbol?: ISymbol;\n\n private _startAngle!: number;\n /**\n * 外部获取segment起点正方向\n */\n getStartAngle() {\n return this._startAngle;\n }\n\n private _endAngle!: number;\n /**\n * 外部获取segment终点正方向\n */\n getEndAngle() {\n return this._endAngle;\n }\n\n private _mainSegmentPoints: Point[]; // 组成主线段的点\n getMainSegmentPoints() {\n return this._mainSegmentPoints;\n }\n\n static defaultAttributes: Partial<SegmentAttributes> = {\n visible: true,\n lineStyle: {\n lineWidth: 1,\n stroke: '#000'\n },\n startSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n },\n endSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n }\n };\n\n constructor(attributes: SegmentAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Segment.defaultAttributes, attributes));\n }\n\n protected render() {\n this.removeAllChild();\n this._reset();\n const {\n // points,\n startSymbol,\n endSymbol,\n lineStyle,\n state,\n visible = true,\n multiSegment,\n mainSegmentIndex\n } = this.attribute as SegmentAttributes;\n\n if (!visible) {\n return;\n }\n\n // 计算线的起点和终点角度\n // 计算角度的原因:\n // 1. segment symbol的自动旋转提供参数\n // 2. 使用segment时,需要根据line的角度对附加元素进行自动旋转(比如:markLine的标签, markPoint的装饰线)\n this._computeLineAngle();\n\n // 绘制start和end symbol\n const startSymbolShape = this._renderSymbol(startSymbol as SymbolAttributes, 'start');\n const endSymbolShape = this._renderSymbol(endSymbol as SymbolAttributes, 'end');\n\n this.startSymbol = startSymbolShape;\n this.endSymbol = endSymbolShape;\n\n if (multiSegment) {\n const points = [...this.attribute.points];\n if (isValidNumber(mainSegmentIndex)) {\n points[mainSegmentIndex] = this._clipPoints(points[mainSegmentIndex] as Point[]);\n } else {\n const clipPoints = this._clipPoints(flattenArray(points) as Point[]);\n points[0][0] = clipPoints[0];\n (points[points.length - 1] as Point[])[(points[points.length - 1] as Point[]).length - 1] =\n clipPoints[clipPoints.length - 1];\n }\n points.forEach((point: Point[], index) => {\n const line = graphicCreator.line({\n points: point,\n ...(isArray(lineStyle) ? lineStyle[index] ?? lineStyle[lineStyle.length - 1] : lineStyle),\n fill: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line' + index);\n if (!isEmpty(state?.line)) {\n line.states = isArray(state.line) ? state.line[index] ?? state.line[state.line.length - 1] : state.line;\n }\n this.add(line);\n });\n } else {\n const line = graphicCreator.polygon({\n points: this._clipPoints(this.attribute.points as Point[]),\n ...array(lineStyle)[0],\n fill: false,\n closePath: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line');\n if (!isEmpty(state?.line)) {\n line.states = [].concat(state.line)[0];\n }\n this.add(line);\n }\n }\n\n private _renderSymbol(attribute: SymbolAttributes, dim: string): ISymbol | undefined {\n const points = this._getMainSegmentPoints();\n if (!points.length) {\n return;\n }\n\n const { autoRotate = true } = attribute;\n let symbol;\n if (attribute && attribute.visible) {\n const startAngle = this._startAngle;\n const endAngle = this._endAngle;\n const { state } = this.attribute as SegmentAttributes;\n const start = points[0];\n const end = points[points.length - 1];\n const { refX = 0, refY = 0, refAngle = 0, style, symbolType, size = 12 } = attribute;\n let position;\n let rotate;\n if (dim === 'start') {\n position = {\n x:\n start.x +\n (isValidNumber(startAngle) ? refX * Math.cos(startAngle) + refY * Math.cos(startAngle - Math.PI / 2) : 0),\n y:\n start.y +\n (isValidNumber(startAngle) ? refX * Math.sin(startAngle) + refY * Math.sin(startAngle - Math.PI / 2) : 0)\n };\n rotate = startAngle + Math.PI / 2; // @chensiji - 加Math.PI / 2是因为:默认symbol的包围盒垂直于line,所以在做自动旋转时需要在line正方向基础上做90度偏移\n } else {\n position = {\n x:\n end.x + (isValidNumber(endAngle) ? refX * Math.cos(endAngle) + refY * Math.cos(endAngle - Math.PI / 2) : 0),\n y: end.y + (isValidNumber(endAngle) ? refX * Math.sin(endAngle) + refY * Math.sin(endAngle - Math.PI / 2) : 0)\n };\n rotate = endAngle + Math.PI / 2;\n }\n\n symbol = graphicCreator.symbol({\n ...position,\n symbolType: symbolType as string,\n size,\n angle: autoRotate ? rotate + refAngle : 0,\n strokeBoundsBuffer: 0,\n ...style\n });\n symbol.name = `${this.name}-${dim}-symbol`;\n symbol.id = this._getNodeId(`${dim}-symbol`);\n\n if (!isEmpty(state?.symbol)) {\n symbol.states = state.symbol;\n }\n\n this.add(symbol);\n }\n return symbol;\n }\n\n private _getMainSegmentPoints(): Point[] {\n if (this._mainSegmentPoints) {\n return this._mainSegmentPoints;\n }\n const { points: originPoints, multiSegment, mainSegmentIndex } = this.attribute as SegmentAttributes;\n\n let points: Point[];\n // 需要做下约束判断\n if (multiSegment) {\n if (isValidNumber(mainSegmentIndex)) {\n points = originPoints[mainSegmentIndex] as Point[];\n } else {\n points = flattenArray(originPoints);\n }\n } else {\n points = originPoints as Point[];\n }\n this._mainSegmentPoints = points;\n\n return points;\n }\n\n private _clipPoints(points: Point[]) {\n const { startSymbol = {} as SegmentAttributes['startSymbol'], endSymbol = {} as SegmentAttributes['endSymbol'] } =\n this.attribute as SegmentAttributes;\n // 通过改变line起点和终点的方式达到symbol在fill为false的情况下,也可以遮盖line的效果\n let pointsAfterClip = points;\n if (startSymbol.visible) {\n const startSize = startSymbol.clip ? startSymbol.size || 10 : 0;\n const pointsStart = {\n x: points[0].x - (startSize / 2) * (Math.cos(this._startAngle) || 0),\n y: points[0].y - (startSize / 2) * (Math.sin(this._startAngle) || 0)\n };\n pointsAfterClip = [pointsStart, ...pointsAfterClip.slice(1)];\n }\n if (endSymbol.visible) {\n const endSize = endSymbol.clip ? endSymbol.size || 10 : 0;\n const pointsEnd = {\n x: points[points.length - 1].x - (endSize / 2) * (Math.cos(this._endAngle) || 0),\n y: points[points.length - 1].y - (endSize / 2) * (Math.sin(this._endAngle) || 0)\n };\n pointsAfterClip = [...pointsAfterClip.slice(0, pointsAfterClip.length - 1), pointsEnd];\n }\n\n return pointsAfterClip;\n }\n\n private _computeLineAngle() {\n const points = this._getMainSegmentPoints();\n if (points.length <= 1) {\n return;\n }\n const start = points[0];\n const startInside = points[1];\n const endInside = points[points.length - 2];\n const end = points[points.length - 1];\n const startVector = [start.x - startInside.x, start.y - startInside.y]; // 起点正方向向量\n const startAngle = Math.atan2(startVector[1], startVector[0]); // 起点正方向角度\n const endVector = [end.x - endInside.x, end.y - endInside.y]; // 终点正方向向量\n const endAngle = Math.atan2(endVector[1], endVector[0]); // 终点正方向角度\n\n this._startAngle = startAngle;\n this._endAngle = endAngle;\n }\n\n private _reset() {\n this.startSymbol = null;\n this.endSymbol = null;\n this._startAngle = null;\n this._endAngle = null;\n this._mainSegmentPoints = null;\n }\n}\n"]}
@@ -84,13 +84,13 @@ export class Slider extends AbstractComponent {
84
84
  this._updateHandler(startHandler, newPos, currentValue);
85
85
  }
86
86
  if (endHandler) {
87
- const originPos = this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y, newPos = clamp(originPos + delta, trackLen, railLen), currentValue = newPos / railLen * (max - min) + min;
87
+ const originPos = this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y, newPos = clamp(originPos + delta, trackLen, railLen), currentValue = newPos / railLen * (max - min) + min, startHandlerAttribute = null == startHandler ? void 0 : startHandler.attribute;
88
88
  this._updateHandler(endHandler, newPos, currentValue), this._track.setAttributes(this._isHorizontal ? {
89
- x: Math.min(null == startHandler ? void 0 : startHandler.attribute.x, null == endHandler ? void 0 : endHandler.attribute.x),
90
- width: Math.abs((null == startHandler ? void 0 : startHandler.attribute.x) - (null == endHandler ? void 0 : endHandler.attribute.x))
89
+ x: Math.min(startHandlerAttribute.x, endHandler.attribute.x),
90
+ width: Math.abs(startHandlerAttribute.x - endHandler.attribute.x)
91
91
  } : {
92
- y: Math.min(null == startHandler ? void 0 : startHandler.attribute.y, null == endHandler ? void 0 : endHandler.attribute.y),
93
- height: Math.abs((null == startHandler ? void 0 : startHandler.attribute.y) - (null == endHandler ? void 0 : endHandler.attribute.y))
92
+ y: Math.min(startHandlerAttribute.y, endHandler.attribute.y),
93
+ height: Math.abs(startHandlerAttribute.y - endHandler.attribute.y)
94
94
  });
95
95
  }
96
96
  this._prePos = currentPos, this._dispatchChangeEvent();
@@ -268,7 +268,7 @@ export class Slider extends AbstractComponent {
268
268
  _renderHandlerText(value, position) {
269
269
  var _a, _b, _c;
270
270
  const {align: align, min: min, max: max, handlerSize: handlerSize = 14, handlerText: handlerText = {}, railHeight: railHeight, railWidth: railWidth, slidable: slidable} = this.attribute, isHorizontal = this._isHorizontal, railLen = isHorizontal ? railWidth : railHeight, handlerStart = max === min ? "start" === position ? 0 : railLen : (value - min) / (max - min) * railLen, textSpace = null !== (_a = handlerText.space) && void 0 !== _a ? _a : 4, textStyle = {
271
- text: (null == handlerText ? void 0 : handlerText.formatter) ? handlerText.formatter(value) : value.toFixed(null !== (_b = null == handlerText ? void 0 : handlerText.precision) && void 0 !== _b ? _b : 0),
271
+ text: handlerText.formatter ? handlerText.formatter(value) : value.toFixed(null !== (_b = handlerText.precision) && void 0 !== _b ? _b : 0),
272
272
  lineHeight: null === (_c = handlerText.style) || void 0 === _c ? void 0 : _c.lineHeight,
273
273
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
274
274
  };
@@ -322,9 +322,9 @@ export class Slider extends AbstractComponent {
322
322
  handler.setAttribute(isHorizontal ? "x" : "y", position);
323
323
  const updateHandlerText = handler.name === SLIDER_ELEMENT_NAME.startHandler ? this._startHandlerText : this._endHandlerText;
324
324
  if (updateHandlerText) {
325
- const {handlerText: handlerText} = this.attribute;
326
- null == updateHandlerText || updateHandlerText.setAttributes({
327
- text: (null == handlerText ? void 0 : handlerText.formatter) ? handlerText.formatter(value) : value.toFixed(null !== (_a = null == handlerText ? void 0 : handlerText.precision) && void 0 !== _a ? _a : 0),
325
+ const {handlerText: handlerText = {}} = this.attribute;
326
+ updateHandlerText.setAttributes({
327
+ text: handlerText.formatter ? handlerText.formatter(value) : value.toFixed(null !== (_a = handlerText.precision) && void 0 !== _a ? _a : 0),
328
328
  [isHorizontal ? "x" : "y"]: position
329
329
  });
330
330
  }
@@ -334,15 +334,15 @@ export class Slider extends AbstractComponent {
334
334
  }
335
335
  _updateHandlerText(handlerText, position, value) {
336
336
  var _a;
337
- const isHorizontal = this._isHorizontal, {handlerText: handlerTextAttr} = this.attribute;
337
+ const isHorizontal = this._isHorizontal, {handlerText: handlerTextAttr = {}} = this.attribute;
338
338
  handlerText.setAttributes({
339
339
  [isHorizontal ? "x" : "y"]: position,
340
- text: (null == handlerTextAttr ? void 0 : handlerTextAttr.formatter) ? handlerTextAttr.formatter(value) : value.toFixed(null !== (_a = null == handlerTextAttr ? void 0 : handlerTextAttr.precision) && void 0 !== _a ? _a : 0)
340
+ text: handlerTextAttr.formatter ? handlerTextAttr.formatter(value) : value.toFixed(null !== (_a = handlerTextAttr.precision) && void 0 !== _a ? _a : 0)
341
341
  });
342
342
  const updateHandler = handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? this._startHandler : this._endHandler;
343
- updateHandler && (null == updateHandler || updateHandler.setAttributes({
343
+ updateHandler && updateHandler.setAttributes({
344
344
  [isHorizontal ? "x" : "y"]: position
345
- })), handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? (this._currentValue.startValue = value,
345
+ }), handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? (this._currentValue.startValue = value,
346
346
  this._currentValue.startPos = position) : (this._currentValue.endValue = value,
347
347
  this._currentValue.endPos = position);
348
348
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/slider/slider.ts"],"names":[],"mappings":"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","file":"slider.js","sourcesContent":["/**\n * @description slider 滑块组件\n * TODO:\n * 3. step 功能开发\n * 4. tooltip 功能开发\n */\nimport type {\n IGroup,\n ISymbol,\n IGraphic,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n FederatedPointerEvent,\n Cursor\n} from '@visactor/vrender-core';\nimport { isNil, merge, clamp, isValid, array, isObject, isArray, clampRange } from '@visactor/vutils';\nimport { graphicCreator, vglobal, CustomEvent } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport { SLIDER_ELEMENT_NAME } from './constant';\n\nimport type { SliderAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadSliderComponent } from './register';\n\nfunction convertValueToRange(value: number | [number, number]) {\n if (isArray(value)) {\n return value;\n }\n return [value, value];\n}\n\nfunction getDefaultCursor(isHorizontal: boolean) {\n return isHorizontal ? 'ew-resize' : 'ns-resize';\n}\n\nloadSliderComponent();\n\nexport class Slider extends AbstractComponent<Required<SliderAttributes>> {\n name = 'slider';\n\n static defaultAttributes = {\n slidable: true,\n layout: 'horizontal',\n align: 'bottom',\n height: 8,\n showHandler: true,\n handlerSize: 14,\n handlerStyle: {\n symbolType: 'circle',\n fill: '#fff',\n stroke: '#91caff',\n lineWidth: 2\n },\n railStyle: {\n fill: 'rgba(0,0,0,.04)'\n },\n trackStyle: {\n fill: '#91caff'\n },\n showValue: true,\n valueStyle: {\n fill: '#2C3542',\n fontSize: 12\n },\n startText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n endText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n handlerText: {\n visible: true,\n space: 4,\n precision: 0,\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n }\n };\n\n protected _isHorizontal = true;\n protected _innerView!: IGroup;\n protected _startHandler: ISymbol | null = null;\n protected _endHandler: ISymbol | null = null;\n protected _startHandlerText: IText | null = null;\n protected _endHandlerText: IText | null = null;\n protected _railContainer!: IGroup;\n protected _rail!: IGraphic;\n protected _track!: IGraphic;\n // 保留滑块上一次的位置\n private _prePos!: number;\n // 存储当前正在操作的滑块\n private _currentHandler: IGraphic | null = null;\n private _currentValue: { startValue?: number; endValue?: number; startPos?: number; endPos?: number } = {};\n\n get track() {\n return this._track;\n }\n\n get currentValue() {\n return this._currentValue;\n }\n\n get startHandler() {\n return this._startHandler;\n }\n\n get endHandler() {\n return this._endHandler;\n }\n\n constructor(attributes: SliderAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Slider.defaultAttributes, attributes));\n }\n\n /**\n * 更新值域\n */\n setValue(value: number | number[]) {\n const { layout, railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n if (max === min) {\n return;\n }\n\n const [startValue, endValue] = array(value);\n\n const { startHandler, endHandler } = this._getHandlers();\n const railLen = layout === 'vertical' ? railHeight : railWidth;\n const startPos = ((startValue - min) / (max - min)) * railLen;\n if (startHandler) {\n this._updateHandler(startHandler, startPos, startValue);\n }\n\n if (endHandler) {\n const endPos = ((endValue - min) / (max - min)) * railLen;\n this._updateHandler(endHandler, endPos, endValue);\n }\n\n this._updateTrack();\n }\n\n render() {\n this.removeAllChild();\n const {\n layout = 'horizontal',\n railWidth,\n railHeight,\n startText,\n endText,\n min,\n max,\n showHandler = true\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n this._currentValue = {\n startValue: convertValueToRange(value)[0],\n endValue: convertValueToRange(value)[1]\n };\n const isHorizontal = layout === 'horizontal';\n this._isHorizontal = isHorizontal;\n\n const innerView = graphicCreator.group({\n x: 0,\n y: 0\n });\n innerView.name = SLIDER_ELEMENT_NAME.innerView;\n this.add(innerView);\n this._innerView = innerView;\n\n let startLen = 0;\n let startTextShape;\n if (startText && startText.visible) {\n // 渲染首部文本\n startTextShape = graphicCreator.text({\n x: isHorizontal ? 0 : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : 0,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: startText.text,\n lineHeight: startText.style?.fontSize,\n ...startText.style\n });\n startTextShape.name = SLIDER_ELEMENT_NAME.startText;\n innerView.add(startTextShape);\n const space = isValid(startText.space) ? startText.space : 0;\n startLen += (isHorizontal ? startTextShape.AABBBounds.width() : startTextShape.AABBBounds.height()) + space;\n }\n const mainContainer = graphicCreator.group({\n x: isHorizontal ? startLen : 0,\n y: isHorizontal ? 0 : startLen\n });\n innerView.add(mainContainer);\n\n const railContainer = graphicCreator.group({\n x: 0,\n y: 0\n });\n railContainer.name = SLIDER_ELEMENT_NAME.railContainer;\n this._railContainer = railContainer;\n mainContainer.add(railContainer);\n\n this._renderRail(railContainer);\n\n startLen += isHorizontal ? (railWidth as number) : (railHeight as number);\n\n let endTextShape;\n if (endText && endText.visible) {\n const space = isValid(endText.space) ? endText.space : 0;\n\n // 渲染首部文本\n endTextShape = graphicCreator.text({\n x: isHorizontal ? startLen + space : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : startLen + space,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: endText.text,\n lineHeight: endText.style?.fontSize,\n ...endText.style\n });\n endTextShape.name = SLIDER_ELEMENT_NAME.endText;\n innerView.add(endTextShape);\n }\n\n this._renderTrack(railContainer);\n\n if (showHandler) {\n this._renderHandlers(mainContainer);\n this._bindEvents();\n }\n }\n\n // 渲染滑块轨道\n protected _renderRail(container: IGroup) {\n const { railWidth, railHeight, railStyle, slidable } = this.attribute;\n\n let cursor: Cursor = 'default';\n if (slidable !== false) {\n cursor = 'pointer';\n }\n\n const railShape = graphicCreator.rect({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cursor,\n ...railStyle\n });\n railShape.name = SLIDER_ELEMENT_NAME.rail;\n container.add(railShape);\n this._rail = railShape;\n\n return railShape;\n }\n\n // 渲染 handler\n protected _renderHandlers(container: IGroup) {\n const {\n range,\n min,\n max,\n handlerSize = 14,\n handlerStyle,\n handlerText,\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n const handlerTextVisible = handlerText && handlerText.visible;\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n\n const [startValue, endValue] = convertValueToRange(value);\n // 单滑块\n const handlerStart = max === min ? (range ? 0 : railLen) : (((startValue as number) - min) / (max - min)) * railLen;\n const startHandler = this._renderHandler({\n x: isHorizontal ? handlerStart : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerStart,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n startHandler.name = SLIDER_ELEMENT_NAME.startHandler;\n this._startHandler = startHandler;\n container.add(startHandler);\n this._currentValue.startPos = handlerStart;\n\n if (handlerTextVisible) {\n const startHandlerText = this._renderHandlerText(startValue, range ? 'start' : 'end');\n startHandlerText.name = SLIDER_ELEMENT_NAME.startHandlerText;\n container.add(startHandlerText);\n\n this._startHandlerText = startHandlerText;\n }\n\n if (range) {\n // 绘制第二个滑块\n // 单滑块\n const handlerEnd = max === min ? railLen : (((endValue as number) - min) / (max - min)) * railLen;\n const endHandler = this._renderHandler({\n x: isHorizontal ? handlerEnd : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerEnd,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n endHandler.name = SLIDER_ELEMENT_NAME.endHandler;\n this._endHandler = endHandler;\n container.add(endHandler);\n this._currentValue.endPos = handlerEnd;\n\n if (handlerTextVisible) {\n const endHandlerText = this._renderHandlerText(endValue, 'end');\n endHandlerText.name = SLIDER_ELEMENT_NAME.endHandlerText;\n container.add(endHandlerText);\n\n this._endHandlerText = endHandlerText;\n }\n }\n }\n\n // 渲染选中区域\n protected _renderTrack(container: IGroup) {\n const { range, min, max, railHeight, railWidth, trackStyle, railStyle, slidable, value } = this\n .attribute as SliderAttributes;\n\n let startValue;\n let endValue;\n\n if (isNil(value)) {\n if (range) {\n startValue = min;\n endValue = max;\n } else {\n startValue = endValue = min;\n }\n } else {\n if (range) {\n const clampValue = clampRange(value as [number, number], min, max);\n startValue = clampValue[0];\n endValue = clampValue[1];\n } else {\n startValue = min;\n endValue = clamp(value as number, min, max);\n }\n }\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n // eslint-disable-next-line prefer-const\n // let [startValue, endValue] = convertValueToRange(value);\n\n if (!range) {\n startValue = min;\n }\n\n const trackContainer = graphicCreator.group({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cornerRadius: railStyle?.cornerRadius,\n clip: true,\n pickable: false\n });\n trackContainer.name = SLIDER_ELEMENT_NAME.trackContainer;\n\n const draggableTrack = isObject(range) && range.draggableTrack === true;\n let cursor: Cursor;\n if (slidable === false) {\n cursor = 'default';\n } else if (range === false) {\n cursor = 'pointer';\n } else if (draggableTrack === false) {\n cursor = 'pointer';\n } else {\n cursor = getDefaultCursor(isHorizontal);\n }\n\n const trackWidth = max === min ? railLen : ((endValue - startValue) / (max - min)) * railLen;\n const startPos = max === min ? 0 : ((startValue - min) / (max - min)) * railLen;\n const track = graphicCreator.rect({\n x: isHorizontal ? startPos : 0,\n y: isHorizontal ? 0 : startPos,\n width: isHorizontal ? trackWidth : railWidth,\n height: isHorizontal ? railHeight : trackWidth,\n cursor,\n ...trackStyle\n });\n track.name = SLIDER_ELEMENT_NAME.track;\n this._track = track;\n trackContainer.add(track);\n container.add(trackContainer);\n }\n\n protected _renderHandler(style: Partial<ISymbolGraphicAttribute>) {\n // 渲染单个滑块\n const handler = graphicCreator.symbol(style);\n\n return handler;\n }\n\n private _renderHandlerText(value: number, position: string) {\n const {\n align,\n min,\n max,\n handlerSize = 14,\n handlerText = {},\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n const handlerStart =\n max === min ? (position === 'start' ? 0 : railLen) : (((value as number) - min) / (max - min)) * railLen;\n const textSpace = handlerText.space ?? 4;\n const textStyle: ITextGraphicAttribute = {\n text: handlerText?.formatter ? handlerText.formatter(value) : value.toFixed(handlerText?.precision ?? 0),\n lineHeight: handlerText.style?.lineHeight,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal)\n };\n if (isHorizontal) {\n if (align === 'top') {\n // 展示 slider 上部\n textStyle.textBaseline = 'bottom';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight - handlerSize) / 2 - textSpace;\n } else {\n // 展示 slider 下部\n textStyle.textBaseline = 'top';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight + handlerSize) / 2 + textSpace;\n }\n } else {\n if (align === 'left') {\n // 展示 slider 左侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'end';\n textStyle.x = (railWidth - handlerSize) / 2 - textSpace;\n textStyle.y = handlerStart;\n } else {\n // 展示 slider 右侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'start';\n textStyle.x = (railWidth + handlerSize) / 2 + textSpace;\n textStyle.y = handlerStart;\n }\n }\n\n // 展示 handler 当前所在的数值\n const textShape = graphicCreator.text({\n ...textStyle,\n ...handlerText.style\n });\n return textShape;\n }\n\n private _bindEvents() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { slidable, range } = this.attribute as SliderAttributes;\n if (slidable) {\n if (this._startHandler) {\n this._startHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._startHandlerText) {\n this._startHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandler) {\n this._endHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandlerText) {\n this._endHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n\n if (isObject(range) && range.draggableTrack) {\n this._track.addEventListener('pointerdown', this._onTrackPointerdown as EventListenerOrEventListenerObject);\n }\n\n this._railContainer.addEventListener(\n 'pointerdown',\n this._onRailPointerDown as EventListenerOrEventListenerObject\n );\n }\n }\n\n private _onHandlerPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._currentHandler = e.target as unknown as IGraphic;\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.addEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.addEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.addEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n this.stage.addEventListener('pointerupoutside', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onHandlerPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n if (max === min) {\n return;\n }\n\n let currentPos;\n let delta = 0;\n let originPos;\n let railLen;\n if (!this._isHorizontal) {\n currentPos = e.clientY;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.y as number;\n railLen = railHeight;\n } else {\n currentPos = e.clientX;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.x as number;\n railLen = railWidth;\n }\n\n const newPos = clamp(originPos + delta, 0, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n\n if (this._currentHandler.type === 'text') {\n this._updateHandlerText(this._currentHandler as IText, newPos, currentValue);\n } else {\n this._updateHandler(this._currentHandler as ISymbol, newPos, currentValue);\n }\n\n this._updateTrack();\n this._prePos = currentPos;\n\n this._dispatchChangeEvent();\n };\n\n private _onHandlerPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n this._currentHandler = null;\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.removeEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n this.stage.removeEventListener(\n 'pointerupoutside',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n }\n };\n\n private _onTrackPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this.stage.addEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onTrackPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n if (max === min) {\n return;\n }\n const { startHandler, endHandler } = this._getHandlers();\n\n let currentPos;\n let trackLen;\n let railLen;\n if (this._isHorizontal) {\n currentPos = e.clientX;\n // @ts-ignore\n trackLen = this._track.attribute.width;\n railLen = railWidth;\n } else {\n currentPos = e.clientY;\n // @ts-ignore\n trackLen = this._track.attribute.height;\n railLen = railHeight;\n }\n const delta = currentPos - this._prePos; // 实际位移的变化\n if (startHandler) {\n const originPos = (this._isHorizontal ? startHandler.attribute.x : startHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, 0, railLen - trackLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(startHandler, newPos, currentValue);\n }\n\n if (endHandler) {\n const originPos = (this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, trackLen, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(endHandler, newPos, currentValue);\n this._track.setAttributes(\n this._isHorizontal\n ? {\n x: Math.min(startHandler?.attribute.x as number, endHandler?.attribute.x as number),\n // @ts-ignore\n width: Math.abs((startHandler?.attribute.x as number) - (endHandler?.attribute.x as number))\n }\n : {\n y: Math.min(startHandler?.attribute.y as number, endHandler?.attribute.y as number),\n // @ts-ignore\n height: Math.abs((startHandler?.attribute.y as number) - (endHandler?.attribute.y as number))\n }\n );\n }\n\n this._prePos = currentPos;\n this._dispatchChangeEvent();\n };\n\n private _onTrackPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this.stage.removeEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onRailPointerDown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n if (max === min) {\n return;\n }\n\n const startHandler = this._startHandler as ISymbol;\n const endHandler = this._endHandler;\n\n let currentPos;\n let startHandlerPos;\n let endHandlerPos;\n let railLen;\n // 更新 handler, text 以及 track\n if (this._isHorizontal) {\n currentPos = e.viewX - this._rail.globalAABBBounds.x1;\n startHandlerPos = startHandler?.attribute.x as number;\n endHandlerPos = endHandler?.attribute.x;\n railLen = railWidth;\n } else {\n currentPos = e.viewY - this._rail.globalAABBBounds.y1;\n startHandlerPos = startHandler?.attribute.y as number;\n endHandlerPos = endHandler?.attribute.y;\n railLen = railHeight;\n }\n\n const currentValue = (currentPos / railLen) * (max - min) + min;\n\n if (isValid(endHandlerPos)) {\n const updateHandler = (\n Math.abs(currentPos - startHandlerPos) > Math.abs(currentPos - endHandlerPos) ? endHandler : startHandler\n ) as ISymbol;\n this._updateHandler(updateHandler, currentPos, currentValue);\n } else {\n this._updateHandler(startHandler, currentPos, currentValue);\n }\n this._updateTrack();\n\n this._dispatchChangeEvent();\n };\n\n // 更新 track 样式\n private _updateTrack() {\n // 更新 track\n const startHandler = this._startHandler;\n const endHandler = this._endHandler;\n\n if (this._isHorizontal) {\n const startHandlerPos = startHandler?.attribute.x as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.x as number;\n // 区间\n this._track.setAttributes({\n x: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n width: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n width: startHandlerPos\n });\n }\n } else {\n const startHandlerPos = startHandler?.attribute.y as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.y as number;\n // 区间\n this._track.setAttributes({\n y: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n height: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n height: startHandlerPos\n });\n }\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandler(handler: ISymbol, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n handler.setAttribute(isHorizontal ? 'x' : 'y', position);\n const updateHandlerText =\n handler.name === SLIDER_ELEMENT_NAME.startHandler ? this._startHandlerText : this._endHandlerText;\n if (updateHandlerText) {\n const { handlerText } = this.attribute as SliderAttributes;\n updateHandlerText?.setAttributes({\n text: handlerText?.formatter ? handlerText.formatter(value) : value.toFixed(handlerText?.precision ?? 0),\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handler.name === SLIDER_ELEMENT_NAME.startHandler) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandlerText(handlerText: IText, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n const { handlerText: handlerTextAttr } = this.attribute as SliderAttributes;\n handlerText.setAttributes({\n [isHorizontal ? 'x' : 'y']: position,\n text: handlerTextAttr?.formatter\n ? handlerTextAttr.formatter(value)\n : value.toFixed(handlerTextAttr?.precision ?? 0)\n });\n const updateHandler =\n handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? this._startHandler : this._endHandler;\n if (updateHandler) {\n updateHandler?.setAttributes({\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n private _dispatchChangeEvent() {\n const isRange = !!this.attribute.range;\n const currentValue = this._currentValue;\n\n this._dispatchEvent('change', {\n value: isRange\n ? [\n Math.min(currentValue.endValue as number, currentValue.startValue as number),\n Math.max(currentValue.endValue as number, currentValue.startValue as number)\n ]\n : currentValue.startValue,\n position: isRange\n ? [\n Math.min(currentValue.endPos as number, currentValue.startPos as number),\n Math.max(currentValue.endPos as number, currentValue.startPos as number)\n ]\n : currentValue.startPos\n });\n }\n\n private _getHandlers() {\n let startHandler = this._startHandler;\n let endHandler = this._endHandler;\n let temp;\n\n if (this._isHorizontal) {\n if (endHandler && (endHandler.attribute.x as number) < (startHandler?.attribute.x as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n } else {\n if (endHandler && (endHandler.attribute.y as number) < (startHandler?.attribute.y as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n }\n\n return {\n startHandler,\n endHandler\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/slider/slider.ts"],"names":[],"mappings":"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","file":"slider.js","sourcesContent":["/**\n * @description slider 滑块组件\n * TODO:\n * 3. step 功能开发\n * 4. tooltip 功能开发\n */\nimport type {\n IGroup,\n ISymbol,\n IGraphic,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n FederatedPointerEvent,\n Cursor\n} from '@visactor/vrender-core';\nimport { isNil, merge, clamp, isValid, array, isObject, isArray, clampRange } from '@visactor/vutils';\nimport { graphicCreator, vglobal, CustomEvent } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport { SLIDER_ELEMENT_NAME } from './constant';\n\nimport type { SliderAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadSliderComponent } from './register';\n\nfunction convertValueToRange(value: number | [number, number]) {\n if (isArray(value)) {\n return value;\n }\n return [value, value];\n}\n\nfunction getDefaultCursor(isHorizontal: boolean) {\n return isHorizontal ? 'ew-resize' : 'ns-resize';\n}\n\nloadSliderComponent();\n\nexport class Slider extends AbstractComponent<Required<SliderAttributes>> {\n name = 'slider';\n\n static defaultAttributes = {\n slidable: true,\n layout: 'horizontal',\n align: 'bottom',\n height: 8,\n showHandler: true,\n handlerSize: 14,\n handlerStyle: {\n symbolType: 'circle',\n fill: '#fff',\n stroke: '#91caff',\n lineWidth: 2\n },\n railStyle: {\n fill: 'rgba(0,0,0,.04)'\n },\n trackStyle: {\n fill: '#91caff'\n },\n showValue: true,\n valueStyle: {\n fill: '#2C3542',\n fontSize: 12\n },\n startText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n endText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n handlerText: {\n visible: true,\n space: 4,\n precision: 0,\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n }\n };\n\n protected _isHorizontal = true;\n protected _innerView!: IGroup;\n protected _startHandler: ISymbol | null = null;\n protected _endHandler: ISymbol | null = null;\n protected _startHandlerText: IText | null = null;\n protected _endHandlerText: IText | null = null;\n protected _railContainer!: IGroup;\n protected _rail!: IGraphic;\n protected _track!: IGraphic;\n // 保留滑块上一次的位置\n private _prePos!: number;\n // 存储当前正在操作的滑块\n private _currentHandler: IGraphic | null = null;\n private _currentValue: { startValue?: number; endValue?: number; startPos?: number; endPos?: number } = {};\n\n get track() {\n return this._track;\n }\n\n get currentValue() {\n return this._currentValue;\n }\n\n get startHandler() {\n return this._startHandler;\n }\n\n get endHandler() {\n return this._endHandler;\n }\n\n constructor(attributes: SliderAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Slider.defaultAttributes, attributes));\n }\n\n /**\n * 更新值域\n */\n setValue(value: number | number[]) {\n const { layout, railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n if (max === min) {\n return;\n }\n\n const [startValue, endValue] = array(value);\n\n const { startHandler, endHandler } = this._getHandlers();\n const railLen = layout === 'vertical' ? railHeight : railWidth;\n const startPos = ((startValue - min) / (max - min)) * railLen;\n if (startHandler) {\n this._updateHandler(startHandler, startPos, startValue);\n }\n\n if (endHandler) {\n const endPos = ((endValue - min) / (max - min)) * railLen;\n this._updateHandler(endHandler, endPos, endValue);\n }\n\n this._updateTrack();\n }\n\n render() {\n this.removeAllChild();\n const {\n layout = 'horizontal',\n railWidth,\n railHeight,\n startText,\n endText,\n min,\n max,\n showHandler = true\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n this._currentValue = {\n startValue: convertValueToRange(value)[0],\n endValue: convertValueToRange(value)[1]\n };\n const isHorizontal = layout === 'horizontal';\n this._isHorizontal = isHorizontal;\n\n const innerView = graphicCreator.group({\n x: 0,\n y: 0\n });\n innerView.name = SLIDER_ELEMENT_NAME.innerView;\n this.add(innerView);\n this._innerView = innerView;\n\n let startLen = 0;\n let startTextShape;\n if (startText && startText.visible) {\n // 渲染首部文本\n startTextShape = graphicCreator.text({\n x: isHorizontal ? 0 : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : 0,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: startText.text,\n lineHeight: startText.style?.fontSize,\n ...startText.style\n });\n startTextShape.name = SLIDER_ELEMENT_NAME.startText;\n innerView.add(startTextShape);\n const space = isValid(startText.space) ? startText.space : 0;\n startLen += (isHorizontal ? startTextShape.AABBBounds.width() : startTextShape.AABBBounds.height()) + space;\n }\n const mainContainer = graphicCreator.group({\n x: isHorizontal ? startLen : 0,\n y: isHorizontal ? 0 : startLen\n });\n innerView.add(mainContainer);\n\n const railContainer = graphicCreator.group({\n x: 0,\n y: 0\n });\n railContainer.name = SLIDER_ELEMENT_NAME.railContainer;\n this._railContainer = railContainer;\n mainContainer.add(railContainer);\n\n this._renderRail(railContainer);\n\n startLen += isHorizontal ? (railWidth as number) : (railHeight as number);\n\n let endTextShape;\n if (endText && endText.visible) {\n const space = isValid(endText.space) ? endText.space : 0;\n\n // 渲染首部文本\n endTextShape = graphicCreator.text({\n x: isHorizontal ? startLen + space : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : startLen + space,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: endText.text,\n lineHeight: endText.style?.fontSize,\n ...endText.style\n });\n endTextShape.name = SLIDER_ELEMENT_NAME.endText;\n innerView.add(endTextShape);\n }\n\n this._renderTrack(railContainer);\n\n if (showHandler) {\n this._renderHandlers(mainContainer);\n this._bindEvents();\n }\n }\n\n // 渲染滑块轨道\n protected _renderRail(container: IGroup) {\n const { railWidth, railHeight, railStyle, slidable } = this.attribute;\n\n let cursor: Cursor = 'default';\n if (slidable !== false) {\n cursor = 'pointer';\n }\n\n const railShape = graphicCreator.rect({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cursor,\n ...railStyle\n });\n railShape.name = SLIDER_ELEMENT_NAME.rail;\n container.add(railShape);\n this._rail = railShape;\n\n return railShape;\n }\n\n // 渲染 handler\n protected _renderHandlers(container: IGroup) {\n const {\n range,\n min,\n max,\n handlerSize = 14,\n handlerStyle,\n handlerText,\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n const handlerTextVisible = handlerText && handlerText.visible;\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n\n const [startValue, endValue] = convertValueToRange(value);\n // 单滑块\n const handlerStart = max === min ? (range ? 0 : railLen) : (((startValue as number) - min) / (max - min)) * railLen;\n const startHandler = this._renderHandler({\n x: isHorizontal ? handlerStart : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerStart,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n startHandler.name = SLIDER_ELEMENT_NAME.startHandler;\n this._startHandler = startHandler;\n container.add(startHandler);\n this._currentValue.startPos = handlerStart;\n\n if (handlerTextVisible) {\n const startHandlerText = this._renderHandlerText(startValue, range ? 'start' : 'end');\n startHandlerText.name = SLIDER_ELEMENT_NAME.startHandlerText;\n container.add(startHandlerText);\n\n this._startHandlerText = startHandlerText;\n }\n\n if (range) {\n // 绘制第二个滑块\n // 单滑块\n const handlerEnd = max === min ? railLen : (((endValue as number) - min) / (max - min)) * railLen;\n const endHandler = this._renderHandler({\n x: isHorizontal ? handlerEnd : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerEnd,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n endHandler.name = SLIDER_ELEMENT_NAME.endHandler;\n this._endHandler = endHandler;\n container.add(endHandler);\n this._currentValue.endPos = handlerEnd;\n\n if (handlerTextVisible) {\n const endHandlerText = this._renderHandlerText(endValue, 'end');\n endHandlerText.name = SLIDER_ELEMENT_NAME.endHandlerText;\n container.add(endHandlerText);\n\n this._endHandlerText = endHandlerText;\n }\n }\n }\n\n // 渲染选中区域\n protected _renderTrack(container: IGroup) {\n const { range, min, max, railHeight, railWidth, trackStyle, railStyle, slidable, value } = this\n .attribute as SliderAttributes;\n\n let startValue;\n let endValue;\n\n if (isNil(value)) {\n if (range) {\n startValue = min;\n endValue = max;\n } else {\n startValue = endValue = min;\n }\n } else {\n if (range) {\n const clampValue = clampRange(value as [number, number], min, max);\n startValue = clampValue[0];\n endValue = clampValue[1];\n } else {\n startValue = min;\n endValue = clamp(value as number, min, max);\n }\n }\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n // eslint-disable-next-line prefer-const\n // let [startValue, endValue] = convertValueToRange(value);\n\n if (!range) {\n startValue = min;\n }\n\n const trackContainer = graphicCreator.group({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cornerRadius: railStyle?.cornerRadius,\n clip: true,\n pickable: false\n });\n trackContainer.name = SLIDER_ELEMENT_NAME.trackContainer;\n\n const draggableTrack = isObject(range) && range.draggableTrack === true;\n let cursor: Cursor;\n if (slidable === false) {\n cursor = 'default';\n } else if (range === false) {\n cursor = 'pointer';\n } else if (draggableTrack === false) {\n cursor = 'pointer';\n } else {\n cursor = getDefaultCursor(isHorizontal);\n }\n\n const trackWidth = max === min ? railLen : ((endValue - startValue) / (max - min)) * railLen;\n const startPos = max === min ? 0 : ((startValue - min) / (max - min)) * railLen;\n const track = graphicCreator.rect({\n x: isHorizontal ? startPos : 0,\n y: isHorizontal ? 0 : startPos,\n width: isHorizontal ? trackWidth : railWidth,\n height: isHorizontal ? railHeight : trackWidth,\n cursor,\n ...trackStyle\n });\n track.name = SLIDER_ELEMENT_NAME.track;\n this._track = track;\n trackContainer.add(track);\n container.add(trackContainer);\n }\n\n protected _renderHandler(style: Partial<ISymbolGraphicAttribute>) {\n // 渲染单个滑块\n const handler = graphicCreator.symbol(style);\n\n return handler;\n }\n\n private _renderHandlerText(value: number, position: string) {\n const {\n align,\n min,\n max,\n handlerSize = 14,\n handlerText = {},\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n const handlerStart =\n max === min ? (position === 'start' ? 0 : railLen) : (((value as number) - min) / (max - min)) * railLen;\n const textSpace = handlerText.space ?? 4;\n const textStyle: ITextGraphicAttribute = {\n text: handlerText.formatter ? handlerText.formatter(value) : value.toFixed(handlerText.precision ?? 0),\n lineHeight: handlerText.style?.lineHeight,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal)\n };\n if (isHorizontal) {\n if (align === 'top') {\n // 展示 slider 上部\n textStyle.textBaseline = 'bottom';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight - handlerSize) / 2 - textSpace;\n } else {\n // 展示 slider 下部\n textStyle.textBaseline = 'top';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight + handlerSize) / 2 + textSpace;\n }\n } else {\n if (align === 'left') {\n // 展示 slider 左侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'end';\n textStyle.x = (railWidth - handlerSize) / 2 - textSpace;\n textStyle.y = handlerStart;\n } else {\n // 展示 slider 右侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'start';\n textStyle.x = (railWidth + handlerSize) / 2 + textSpace;\n textStyle.y = handlerStart;\n }\n }\n\n // 展示 handler 当前所在的数值\n const textShape = graphicCreator.text({\n ...textStyle,\n ...handlerText.style\n });\n return textShape;\n }\n\n private _bindEvents() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { slidable, range } = this.attribute as SliderAttributes;\n if (slidable) {\n if (this._startHandler) {\n this._startHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._startHandlerText) {\n this._startHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandler) {\n this._endHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandlerText) {\n this._endHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n\n if (isObject(range) && range.draggableTrack) {\n this._track.addEventListener('pointerdown', this._onTrackPointerdown as EventListenerOrEventListenerObject);\n }\n\n this._railContainer.addEventListener(\n 'pointerdown',\n this._onRailPointerDown as EventListenerOrEventListenerObject\n );\n }\n }\n\n private _onHandlerPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._currentHandler = e.target as unknown as IGraphic;\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.addEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.addEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.addEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n this.stage.addEventListener('pointerupoutside', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onHandlerPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n if (max === min) {\n return;\n }\n\n let currentPos;\n let delta = 0;\n let originPos;\n let railLen;\n if (!this._isHorizontal) {\n currentPos = e.clientY;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.y as number;\n railLen = railHeight;\n } else {\n currentPos = e.clientX;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.x as number;\n railLen = railWidth;\n }\n\n const newPos = clamp(originPos + delta, 0, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n\n if (this._currentHandler.type === 'text') {\n this._updateHandlerText(this._currentHandler as IText, newPos, currentValue);\n } else {\n this._updateHandler(this._currentHandler as ISymbol, newPos, currentValue);\n }\n\n this._updateTrack();\n this._prePos = currentPos;\n\n this._dispatchChangeEvent();\n };\n\n private _onHandlerPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n this._currentHandler = null;\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.removeEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n this.stage.removeEventListener(\n 'pointerupoutside',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n }\n };\n\n private _onTrackPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this.stage.addEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onTrackPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n if (max === min) {\n return;\n }\n const { startHandler, endHandler } = this._getHandlers();\n\n let currentPos;\n let trackLen;\n let railLen;\n if (this._isHorizontal) {\n currentPos = e.clientX;\n // @ts-ignore\n trackLen = this._track.attribute.width;\n railLen = railWidth;\n } else {\n currentPos = e.clientY;\n // @ts-ignore\n trackLen = this._track.attribute.height;\n railLen = railHeight;\n }\n const delta = currentPos - this._prePos; // 实际位移的变化\n if (startHandler) {\n const originPos = (this._isHorizontal ? startHandler.attribute.x : startHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, 0, railLen - trackLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(startHandler, newPos, currentValue);\n }\n\n if (endHandler) {\n const originPos = (this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, trackLen, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n const startHandlerAttribute = startHandler?.attribute;\n this._updateHandler(endHandler, newPos, currentValue);\n this._track.setAttributes(\n this._isHorizontal\n ? {\n x: Math.min(startHandlerAttribute.x as number, endHandler.attribute.x as number),\n // @ts-ignore\n width: Math.abs((startHandlerAttribute.x as number) - (endHandler.attribute.x as number))\n }\n : {\n y: Math.min(startHandlerAttribute.y as number, endHandler.attribute.y as number),\n // @ts-ignore\n height: Math.abs((startHandlerAttribute.y as number) - (endHandler.attribute.y as number))\n }\n );\n }\n\n this._prePos = currentPos;\n this._dispatchChangeEvent();\n };\n\n private _onTrackPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n vglobal.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this.stage.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject, {\n capture: true\n });\n this.stage.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this.stage.removeEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onRailPointerDown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n if (max === min) {\n return;\n }\n\n const startHandler = this._startHandler as ISymbol;\n const endHandler = this._endHandler;\n\n let currentPos;\n let startHandlerPos;\n let endHandlerPos;\n let railLen;\n // 更新 handler, text 以及 track\n if (this._isHorizontal) {\n currentPos = e.viewX - this._rail.globalAABBBounds.x1;\n startHandlerPos = startHandler?.attribute.x as number;\n endHandlerPos = endHandler?.attribute.x;\n railLen = railWidth;\n } else {\n currentPos = e.viewY - this._rail.globalAABBBounds.y1;\n startHandlerPos = startHandler?.attribute.y as number;\n endHandlerPos = endHandler?.attribute.y;\n railLen = railHeight;\n }\n\n const currentValue = (currentPos / railLen) * (max - min) + min;\n\n if (isValid(endHandlerPos)) {\n const updateHandler = (\n Math.abs(currentPos - startHandlerPos) > Math.abs(currentPos - endHandlerPos) ? endHandler : startHandler\n ) as ISymbol;\n this._updateHandler(updateHandler, currentPos, currentValue);\n } else {\n this._updateHandler(startHandler, currentPos, currentValue);\n }\n this._updateTrack();\n\n this._dispatchChangeEvent();\n };\n\n // 更新 track 样式\n private _updateTrack() {\n // 更新 track\n const startHandler = this._startHandler;\n const endHandler = this._endHandler;\n\n if (this._isHorizontal) {\n const startHandlerPos = startHandler?.attribute.x as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.x as number;\n // 区间\n this._track.setAttributes({\n x: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n width: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n width: startHandlerPos\n });\n }\n } else {\n const startHandlerPos = startHandler?.attribute.y as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.y as number;\n // 区间\n this._track.setAttributes({\n y: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n height: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n height: startHandlerPos\n });\n }\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandler(handler: ISymbol, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n handler.setAttribute(isHorizontal ? 'x' : 'y', position);\n const updateHandlerText =\n handler.name === SLIDER_ELEMENT_NAME.startHandler ? this._startHandlerText : this._endHandlerText;\n if (updateHandlerText) {\n const { handlerText = {} } = this.attribute as SliderAttributes;\n updateHandlerText.setAttributes({\n text: handlerText.formatter ? handlerText.formatter(value) : value.toFixed(handlerText.precision ?? 0),\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handler.name === SLIDER_ELEMENT_NAME.startHandler) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandlerText(handlerText: IText, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n const { handlerText: handlerTextAttr = {} } = this.attribute as SliderAttributes;\n handlerText.setAttributes({\n [isHorizontal ? 'x' : 'y']: position,\n text: handlerTextAttr.formatter ? handlerTextAttr.formatter(value) : value.toFixed(handlerTextAttr.precision ?? 0)\n });\n const updateHandler =\n handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? this._startHandler : this._endHandler;\n if (updateHandler) {\n updateHandler.setAttributes({\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n private _dispatchChangeEvent() {\n const isRange = !!this.attribute.range;\n const currentValue = this._currentValue;\n\n this._dispatchEvent('change', {\n value: isRange\n ? [\n Math.min(currentValue.endValue as number, currentValue.startValue as number),\n Math.max(currentValue.endValue as number, currentValue.startValue as number)\n ]\n : currentValue.startValue,\n position: isRange\n ? [\n Math.min(currentValue.endPos as number, currentValue.startPos as number),\n Math.max(currentValue.endPos as number, currentValue.startPos as number)\n ]\n : currentValue.startPos\n });\n }\n\n private _getHandlers() {\n let startHandler = this._startHandler;\n let endHandler = this._endHandler;\n let temp;\n\n if (this._isHorizontal) {\n if (endHandler && (endHandler.attribute.x as number) < (startHandler?.attribute.x as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n } else {\n if (endHandler && (endHandler.attribute.y as number) < (startHandler?.attribute.y as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n }\n\n return {\n startHandler,\n endHandler\n };\n }\n}\n"]}
package/es/tag/tag.js CHANGED
@@ -27,7 +27,7 @@ export class Tag extends AbstractComponent {
27
27
  }
28
28
  render() {
29
29
  var _a, _b, _c;
30
- const {text: text = "", textStyle: textStyle = {}, shape: shape = {}, panel: panel = {}, space: space = 4, minWidth: minWidth, maxWidth: maxWidth, padding: padding = 4, visible: visible, state: state, type: type} = this.attribute, parsedPadding = normalizePadding(padding), group = this.createOrUpdateChild("tag-content", {
30
+ const {text: text = "", textStyle: textStyle = {}, shape: shape = {}, panel: panel = {}, space: space = 4, minWidth: minWidth, maxWidth: maxWidth, padding: padding = 4, visible: visible, state: state, type: type, textAlwaysCenter: textAlwaysCenter} = this.attribute, parsedPadding = normalizePadding(padding), group = this.createOrUpdateChild("tag-content", {
31
31
  x: 0,
32
32
  y: 0,
33
33
  zIndex: 1
@@ -107,7 +107,7 @@ export class Tag extends AbstractComponent {
107
107
  const textBounds = measureTextSize(textAttrs.text, textStyle), textWidth = textBounds.width, textHeight = textBounds.height;
108
108
  tagWidth += textWidth;
109
109
  const size = null !== (_c = shape.size) && void 0 !== _c ? _c : 10, maxSize = isNumber(size) ? size : Math.max(size[0], size[1]);
110
- tagHeight += Math.max(textHeight, (null == shape ? void 0 : shape.visible) ? maxSize : 0);
110
+ tagHeight += Math.max(textHeight, shape.visible ? maxSize : 0);
111
111
  const {textAlign: textAlign, textBaseline: textBaseline} = textStyle;
112
112
  (isValid(minWidth) || isValid(maxWidth)) && (isValid(minWidth) && tagWidth < minWidth && (tagWidth = minWidth),
113
113
  isValid(maxWidth) && tagWidth > maxWidth && (tagWidth = maxWidth, textShape.setAttribute("maxLineWidth", maxWidth - parsedPadding[1] - parsedPadding[2])));
@@ -115,7 +115,10 @@ export class Tag extends AbstractComponent {
115
115
  "center" === textAlign ? (x -= tagWidth / 2, symbol && symbol.setAttribute("x", (symbol.attribute.x || 0) - textWidth / 2),
116
116
  group.setAttribute("x", -symbolPlaceWidth / 2)) : "right" === textAlign || "end" === textAlign ? (x -= tagWidth,
117
117
  symbol && symbol.setAttribute("x", (symbol.attribute.x || 0) - textWidth), group.setAttribute("x", -parsedPadding[1] - symbolPlaceWidth)) : "left" !== textAlign && "start" !== textAlign || group.setAttribute("x", parsedPadding[3]),
118
- "middle" === textBaseline ? (y -= tagHeight / 2, symbol && symbol.setAttribute("y", 0)) : "bottom" === textBaseline ? (y -= tagHeight,
118
+ !textAlwaysCenter || "left" !== textAlign && "start" !== textAlign || textShape.setAttributes({
119
+ x: textX + tagWidth / 2,
120
+ textAlign: "center"
121
+ }), "middle" === textBaseline ? (y -= tagHeight / 2, symbol && symbol.setAttribute("y", 0)) : "bottom" === textBaseline ? (y -= tagHeight,
119
122
  symbol && symbol.setAttribute("y", -textHeight / 2), group.setAttribute("y", -parsedPadding[2])) : "top" === textBaseline && (group.setAttribute("y", parsedPadding[0]),
120
123
  symbol && symbol.setAttribute("y", textHeight / 2));
121
124
  const {visible: bgVisible} = panel, backgroundStyle = __rest(panel, [ "visible" ]);
package/es/tag/tag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tag/tag.ts"],"names":[],"mappings":"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","file":"tag.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n IText,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n IRichText,\n IRichTextCharacter\n} from '@visactor/vrender-core';\nimport { isBoolean, isEmpty, isNil, isNumber, isValid, merge, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { measureTextSize } from '../util';\nimport type { BackgroundAttributes, ComponentOptions } from '../interface';\nimport type { TagAttributes, TagShapeAttributes } from './type';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\nimport { loadTagComponent } from './register';\n\nloadTagComponent();\nexport class Tag extends AbstractComponent<Required<TagAttributes>> {\n name = 'tag';\n\n static defaultAttributes: Partial<TagAttributes> = {\n visible: true,\n textStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 4,\n padding: 4,\n // @ts-ignore\n shape: {\n fill: '#000'\n }\n };\n\n constructor(attributes: TagAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Tag.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n text = '',\n textStyle = {} as ITextGraphicAttribute | IRichTextGraphicAttribute,\n shape = {} as TagShapeAttributes,\n panel = {} as BackgroundAttributes,\n space = 4,\n minWidth,\n maxWidth,\n padding = 4,\n visible,\n state,\n type\n } = this.attribute as TagAttributes;\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('tag-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n let symbol;\n let tagWidth = parsedPadding[1] + parsedPadding[3];\n let tagHeight = parsedPadding[0] + parsedPadding[2];\n let textX = 0;\n let symbolPlaceWidth = 0;\n const { visible: shapeVisible, ...shapeStyle } = shape;\n if (isBoolean(shapeVisible)) {\n const size = shapeStyle?.size || 10;\n const maxSize = isNumber(size) ? size : Math.max(size[0], size[1]);\n\n symbol = group.createOrUpdateChild(\n 'tag-shape',\n {\n symbolType: 'circle',\n size,\n strokeBoundsBuffer: 0,\n ...shapeStyle,\n visible: shapeVisible,\n x: maxSize / 2,\n y: maxSize / 2\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.shape)) {\n symbol.states = state.shape;\n }\n\n if (shapeVisible) {\n symbolPlaceWidth = maxSize + space;\n }\n }\n\n tagWidth += symbolPlaceWidth;\n textX += symbolPlaceWidth;\n\n let textShape;\n if (type === 'rich') {\n const richTextAttrs = {\n textConfig: text as IRichTextCharacter[],\n visible: isValid(text) && visible !== false,\n ...(textStyle as IRichTextGraphicAttribute),\n x: textX,\n y: 0,\n width: (textStyle as IRichTextGraphicAttribute).width ?? 0,\n height: (textStyle as IRichTextGraphicAttribute).height ?? 0\n };\n textShape = group.createOrUpdateChild('tag-text', richTextAttrs, 'richtext') as IRichText;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x: textShape.AABBBounds.x1,\n y: textShape.AABBBounds.y1,\n width: textShape.AABBBounds.width(),\n height: textShape.AABBBounds.height()\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n } else if (type === 'html') {\n const richTextAttrs = {\n textConfig: [] as IRichTextCharacter[],\n visible: isValid(text) && visible !== false,\n html: {\n dom: text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...textStyle\n },\n ...(textStyle as IRichTextGraphicAttribute),\n x: textX,\n y: 0\n };\n textShape = group.createOrUpdateChild('tag-text', richTextAttrs, 'richtext') as IRichText;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x: textShape.AABBBounds.x1,\n y: textShape.AABBBounds.y1,\n width: textShape.AABBBounds.width(),\n height: textShape.AABBBounds.height()\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n } else {\n const textAttrs = {\n text: text as string | number | string[] | number[],\n visible: isValid(text) && visible !== false,\n lineHeight: (textStyle as ITextGraphicAttribute)?.fontSize,\n ...(textStyle as ITextGraphicAttribute),\n x: textX,\n y: 0\n };\n if (isNil(textAttrs.lineHeight)) {\n textAttrs.lineHeight = (textStyle as ITextGraphicAttribute).fontSize;\n }\n textShape = group.createOrUpdateChild('tag-text', textAttrs, 'text') as IText;\n if (!isEmpty(state?.text)) {\n textShape.states = state.text;\n }\n\n // 因为文本可能发生旋转,所以需要使用 measureTextSize 方法\n const textBounds = measureTextSize(textAttrs.text as string, textStyle);\n const textWidth = textBounds.width;\n const textHeight = textBounds.height;\n tagWidth += textWidth;\n const size = shape.size ?? 10;\n const maxSize = isNumber(size) ? size : Math.max(size[0], size[1]);\n tagHeight += Math.max(textHeight, shape?.visible ? maxSize : 0);\n\n const { textAlign, textBaseline } = textStyle as ITextAttribute;\n\n if (isValid(minWidth) || isValid(maxWidth)) {\n if (isValid(minWidth) && tagWidth < minWidth) {\n tagWidth = minWidth;\n }\n if (isValid(maxWidth) && tagWidth > maxWidth) {\n tagWidth = maxWidth;\n textShape.setAttribute('maxLineWidth', maxWidth - parsedPadding[1] - parsedPadding[2]);\n }\n }\n\n let x = 0;\n let y = 0;\n if (textAlign === 'center') {\n x -= tagWidth / 2;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth / 2);\n }\n\n group.setAttribute('x', -symbolPlaceWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n x -= tagWidth;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth);\n }\n\n group.setAttribute('x', -parsedPadding[1] - symbolPlaceWidth);\n } else if (textAlign === 'left' || textAlign === 'start') {\n group.setAttribute('x', parsedPadding[3]);\n }\n if (textBaseline === 'middle') {\n y -= tagHeight / 2;\n if (symbol) {\n symbol.setAttribute('y', 0);\n }\n } else if (textBaseline === 'bottom') {\n y -= tagHeight;\n if (symbol) {\n symbol.setAttribute('y', -textHeight / 2);\n }\n\n group.setAttribute('y', -parsedPadding[2]);\n } else if (textBaseline === 'top') {\n group.setAttribute('y', parsedPadding[0]);\n if (symbol) {\n symbol.setAttribute('y', textHeight / 2);\n }\n }\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x,\n y,\n width: tagWidth,\n height: tagHeight\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/tag/tag.ts"],"names":[],"mappings":"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","file":"tag.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n IText,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n IRichText,\n IRichTextCharacter\n} from '@visactor/vrender-core';\nimport { isBoolean, isEmpty, isNil, isNumber, isValid, merge, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { measureTextSize } from '../util';\nimport type { BackgroundAttributes, ComponentOptions } from '../interface';\nimport type { TagAttributes, TagShapeAttributes } from './type';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\nimport { loadTagComponent } from './register';\n\nloadTagComponent();\nexport class Tag extends AbstractComponent<Required<TagAttributes>> {\n name = 'tag';\n\n static defaultAttributes: Partial<TagAttributes> = {\n visible: true,\n textStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 4,\n padding: 4,\n // @ts-ignore\n shape: {\n fill: '#000'\n }\n };\n\n constructor(attributes: TagAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Tag.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n text = '',\n textStyle = {} as ITextGraphicAttribute | IRichTextGraphicAttribute,\n shape = {} as TagShapeAttributes,\n panel = {} as BackgroundAttributes,\n space = 4,\n minWidth,\n maxWidth,\n padding = 4,\n visible,\n state,\n type,\n textAlwaysCenter\n } = this.attribute as TagAttributes;\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('tag-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n let symbol;\n let tagWidth = parsedPadding[1] + parsedPadding[3];\n let tagHeight = parsedPadding[0] + parsedPadding[2];\n let textX = 0;\n let symbolPlaceWidth = 0;\n const { visible: shapeVisible, ...shapeStyle } = shape;\n if (isBoolean(shapeVisible)) {\n const size = shapeStyle?.size || 10;\n const maxSize = isNumber(size) ? size : Math.max(size[0], size[1]);\n\n symbol = group.createOrUpdateChild(\n 'tag-shape',\n {\n symbolType: 'circle',\n size,\n strokeBoundsBuffer: 0,\n ...shapeStyle,\n visible: shapeVisible,\n x: maxSize / 2,\n y: maxSize / 2\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.shape)) {\n symbol.states = state.shape;\n }\n\n if (shapeVisible) {\n symbolPlaceWidth = maxSize + space;\n }\n }\n\n tagWidth += symbolPlaceWidth;\n textX += symbolPlaceWidth;\n\n let textShape;\n if (type === 'rich') {\n const richTextAttrs = {\n textConfig: text as IRichTextCharacter[],\n visible: isValid(text) && visible !== false,\n ...(textStyle as IRichTextGraphicAttribute),\n x: textX,\n y: 0,\n width: (textStyle as IRichTextGraphicAttribute).width ?? 0,\n height: (textStyle as IRichTextGraphicAttribute).height ?? 0\n };\n textShape = group.createOrUpdateChild('tag-text', richTextAttrs, 'richtext') as IRichText;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x: textShape.AABBBounds.x1,\n y: textShape.AABBBounds.y1,\n width: textShape.AABBBounds.width(),\n height: textShape.AABBBounds.height()\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n } else if (type === 'html') {\n const richTextAttrs = {\n textConfig: [] as IRichTextCharacter[],\n visible: isValid(text) && visible !== false,\n html: {\n dom: text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...textStyle\n },\n ...(textStyle as IRichTextGraphicAttribute),\n x: textX,\n y: 0\n };\n textShape = group.createOrUpdateChild('tag-text', richTextAttrs, 'richtext') as IRichText;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x: textShape.AABBBounds.x1,\n y: textShape.AABBBounds.y1,\n width: textShape.AABBBounds.width(),\n height: textShape.AABBBounds.height()\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n } else {\n const textAttrs = {\n text: text as string | number | string[] | number[],\n visible: isValid(text) && visible !== false,\n lineHeight: (textStyle as ITextGraphicAttribute)?.fontSize,\n ...(textStyle as ITextGraphicAttribute),\n x: textX,\n y: 0\n };\n if (isNil(textAttrs.lineHeight)) {\n textAttrs.lineHeight = (textStyle as ITextGraphicAttribute).fontSize;\n }\n textShape = group.createOrUpdateChild('tag-text', textAttrs, 'text') as IText;\n if (!isEmpty(state?.text)) {\n textShape.states = state.text;\n }\n\n // 因为文本可能发生旋转,所以需要使用 measureTextSize 方法\n const textBounds = measureTextSize(textAttrs.text as string, textStyle);\n const textWidth = textBounds.width;\n const textHeight = textBounds.height;\n tagWidth += textWidth;\n const size = shape.size ?? 10;\n const maxSize = isNumber(size) ? size : Math.max(size[0], size[1]);\n tagHeight += Math.max(textHeight, shape.visible ? maxSize : 0);\n\n const { textAlign, textBaseline } = textStyle as ITextAttribute;\n\n if (isValid(minWidth) || isValid(maxWidth)) {\n if (isValid(minWidth) && tagWidth < minWidth) {\n tagWidth = minWidth;\n }\n if (isValid(maxWidth) && tagWidth > maxWidth) {\n tagWidth = maxWidth;\n textShape.setAttribute('maxLineWidth', maxWidth - parsedPadding[1] - parsedPadding[2]);\n }\n }\n\n let x = 0;\n let y = 0;\n if (textAlign === 'center') {\n x -= tagWidth / 2;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth / 2);\n }\n\n group.setAttribute('x', -symbolPlaceWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n x -= tagWidth;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth);\n }\n\n group.setAttribute('x', -parsedPadding[1] - symbolPlaceWidth);\n } else if (textAlign === 'left' || textAlign === 'start') {\n group.setAttribute('x', parsedPadding[3]);\n }\n\n if (textAlwaysCenter && (textAlign === 'left' || textAlign === 'start')) {\n // for flex layout\n textShape.setAttributes({\n x: textX + tagWidth / 2,\n textAlign: 'center'\n });\n }\n\n if (textBaseline === 'middle') {\n y -= tagHeight / 2;\n if (symbol) {\n symbol.setAttribute('y', 0);\n }\n } else if (textBaseline === 'bottom') {\n y -= tagHeight;\n if (symbol) {\n symbol.setAttribute('y', -textHeight / 2);\n }\n\n group.setAttribute('y', -parsedPadding[2]);\n } else if (textBaseline === 'top') {\n group.setAttribute('y', parsedPadding[0]);\n if (symbol) {\n symbol.setAttribute('y', textHeight / 2);\n }\n }\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x,\n y,\n width: tagWidth,\n height: tagHeight\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n }\n }\n}\n"]}
package/es/tag/type.d.ts CHANGED
@@ -13,6 +13,7 @@ export type TagAttributes = {
13
13
  padding?: Padding;
14
14
  panel?: BackgroundAttributes;
15
15
  minWidth?: number;
16
+ textAlwaysCenter?: boolean;
16
17
  maxWidth?: number;
17
18
  visible?: boolean;
18
19
  state?: StateStyle;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tag/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n ITextGraphicAttribute,\n ISymbolGraphicAttribute,\n IGroupGraphicAttribute,\n IRectGraphicAttribute,\n IRichTextCharacter,\n IRichTextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { Padding, State, TextContent } from '../core/type';\nimport type { BackgroundAttributes } from '../interface';\n\ntype StateStyle = {\n /**\n * text 文本的状态配置\n */\n text?: State<Partial<ITextGraphicAttribute>>;\n /**\n * shape 标记的状态配置\n */\n shape?: State<Partial<ISymbolGraphicAttribute>>;\n /**\n * panel 背景的状态配置ß\n */\n panel?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type TagAttributes = {\n /** 文本样式 */\n textStyle?: Partial<ITextGraphicAttribute> | Partial<IRichTextGraphicAttribute>;\n /** 文本前 mark 图元 */\n shape?: TagShapeAttributes;\n /**\n * shape 同文本之间的间距\n */\n space?: number;\n /**\n * 内部边距\n */\n padding?: Padding;\n /**\n * 标签的背景面板配置, TODO: 支持symbol形状\n */\n panel?: BackgroundAttributes;\n /**\n * 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n visible?: boolean;\n state?: StateStyle;\n} & Omit<IGroupGraphicAttribute, 'background'> &\n TextContent;\n\nexport type TagShapeAttributes = {\n /**\n * 是否展示 shape\n */\n visible: boolean;\n} & Partial<ISymbolGraphicAttribute>;\n"]}
1
+ {"version":3,"sources":["../src/tag/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n ITextGraphicAttribute,\n ISymbolGraphicAttribute,\n IGroupGraphicAttribute,\n IRectGraphicAttribute,\n IRichTextCharacter,\n IRichTextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { Padding, State, TextContent } from '../core/type';\nimport type { BackgroundAttributes } from '../interface';\n\ntype StateStyle = {\n /**\n * text 文本的状态配置\n */\n text?: State<Partial<ITextGraphicAttribute>>;\n /**\n * shape 标记的状态配置\n */\n shape?: State<Partial<ISymbolGraphicAttribute>>;\n /**\n * panel 背景的状态配置ß\n */\n panel?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type TagAttributes = {\n /** 文本样式 */\n textStyle?: Partial<ITextGraphicAttribute> | Partial<IRichTextGraphicAttribute>;\n /** 文本前 mark 图元 */\n shape?: TagShapeAttributes;\n /**\n * shape 同文本之间的间距\n */\n space?: number;\n /**\n * 内部边距\n */\n padding?: Padding;\n /**\n * 标签的背景面板配置, TODO: 支持symbol形状\n */\n panel?: BackgroundAttributes;\n /**\n * 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n textAlwaysCenter?: boolean;\n /**\n * 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n visible?: boolean;\n state?: StateStyle;\n} & Omit<IGroupGraphicAttribute, 'background'> &\n TextContent;\n\nexport type TagShapeAttributes = {\n /**\n * 是否展示 shape\n */\n visible: boolean;\n} & Partial<ISymbolGraphicAttribute>;\n"]}