@visactor/vrender-components 0.16.14-alpha.1 → 0.16.14-alpha.11

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 (171) hide show
  1. package/cjs/axis/base.js +19 -12
  2. package/cjs/axis/base.js.map +1 -1
  3. package/cjs/axis/circle.d.ts +1 -2
  4. package/cjs/axis/circle.js.map +1 -1
  5. package/cjs/axis/line.js +1 -1
  6. package/cjs/axis/line.js.map +1 -1
  7. package/cjs/axis/type.d.ts +5 -6
  8. package/cjs/axis/type.js.map +1 -1
  9. package/cjs/constant.d.ts +6 -0
  10. package/cjs/constant.js +6 -1
  11. package/cjs/constant.js.map +1 -1
  12. package/cjs/core/type.d.ts +15 -0
  13. package/cjs/core/type.js.map +1 -1
  14. package/cjs/data-zoom/config.d.ts +0 -6
  15. package/cjs/data-zoom/config.js +1 -7
  16. package/cjs/data-zoom/config.js.map +1 -1
  17. package/cjs/data-zoom/data-zoom.d.ts +3 -2
  18. package/cjs/data-zoom/data-zoom.js +19 -15
  19. package/cjs/data-zoom/data-zoom.js.map +1 -1
  20. package/cjs/data-zoom/type.d.ts +6 -0
  21. package/cjs/data-zoom/type.js +6 -1
  22. package/cjs/data-zoom/type.js.map +1 -1
  23. package/cjs/index.d.ts +1 -1
  24. package/cjs/index.js +1 -1
  25. package/cjs/index.js.map +1 -1
  26. package/cjs/indicator/indicator.js +43 -7
  27. package/cjs/indicator/indicator.js.map +1 -1
  28. package/cjs/indicator/type.d.ts +2 -1
  29. package/cjs/indicator/type.js.map +1 -1
  30. package/cjs/label/animate/animate.d.ts +8 -2
  31. package/cjs/label/animate/animate.js +37 -3
  32. package/cjs/label/animate/animate.js.map +1 -1
  33. package/cjs/label/arc.d.ts +4 -3
  34. package/cjs/label/arc.js.map +1 -1
  35. package/cjs/label/area.d.ts +15 -0
  36. package/cjs/label/area.js +41 -0
  37. package/cjs/label/area.js.map +1 -0
  38. package/cjs/label/base.d.ts +18 -15
  39. package/cjs/label/base.js +64 -49
  40. package/cjs/label/base.js.map +1 -1
  41. package/cjs/label/dataLabel.js +8 -5
  42. package/cjs/label/dataLabel.js.map +1 -1
  43. package/cjs/label/index.d.ts +1 -0
  44. package/cjs/label/index.js +2 -1
  45. package/cjs/label/index.js.map +1 -1
  46. package/cjs/label/line.d.ts +2 -2
  47. package/cjs/label/line.js +4 -11
  48. package/cjs/label/line.js.map +1 -1
  49. package/cjs/label/type.d.ts +31 -6
  50. package/cjs/label/type.js +1 -2
  51. package/cjs/label/type.js.map +1 -1
  52. package/cjs/label/util.d.ts +4 -0
  53. package/cjs/label/util.js +14 -2
  54. package/cjs/label/util.js.map +1 -1
  55. package/cjs/legend/discrete/discrete.d.ts +3 -0
  56. package/cjs/legend/discrete/discrete.js +45 -38
  57. package/cjs/legend/discrete/discrete.js.map +1 -1
  58. package/cjs/legend/discrete/type.d.ts +1 -0
  59. package/cjs/legend/discrete/type.js.map +1 -1
  60. package/cjs/link-path/type.js +1 -1
  61. package/cjs/marker/area.js.map +1 -1
  62. package/cjs/marker/line.js.map +1 -1
  63. package/cjs/marker/point.d.ts +1 -1
  64. package/cjs/marker/point.js.map +1 -1
  65. package/cjs/marker/type.d.ts +14 -14
  66. package/cjs/marker/type.js.map +1 -1
  67. package/cjs/scrollbar/scrollbar.js.map +1 -1
  68. package/cjs/tag/tag.js +87 -41
  69. package/cjs/tag/tag.js.map +1 -1
  70. package/cjs/tag/type.d.ts +4 -5
  71. package/cjs/tag/type.js.map +1 -1
  72. package/cjs/title/title.js +85 -53
  73. package/cjs/title/title.js.map +1 -1
  74. package/cjs/title/type.d.ts +10 -5
  75. package/cjs/title/type.js.map +1 -1
  76. package/cjs/tooltip/tooltip.js +50 -13
  77. package/cjs/tooltip/tooltip.js.map +1 -1
  78. package/cjs/tooltip/type.d.ts +7 -2
  79. package/cjs/tooltip/type.js.map +1 -1
  80. package/cjs/tooltip/util.js +9 -1
  81. package/cjs/tooltip/util.js.map +1 -1
  82. package/cjs/util/label-smartInvert.d.ts +2 -2
  83. package/cjs/util/label-smartInvert.js +9 -5
  84. package/cjs/util/label-smartInvert.js.map +1 -1
  85. package/dist/index.js +595 -348
  86. package/dist/index.min.js +1 -1
  87. package/es/axis/base.js +21 -11
  88. package/es/axis/base.js.map +1 -1
  89. package/es/axis/circle.d.ts +1 -2
  90. package/es/axis/circle.js.map +1 -1
  91. package/es/axis/line.js +1 -1
  92. package/es/axis/line.js.map +1 -1
  93. package/es/axis/type.d.ts +5 -6
  94. package/es/axis/type.js.map +1 -1
  95. package/es/constant.d.ts +6 -0
  96. package/es/constant.js +7 -0
  97. package/es/constant.js.map +1 -1
  98. package/es/core/type.d.ts +15 -0
  99. package/es/core/type.js.map +1 -1
  100. package/es/data-zoom/config.d.ts +0 -6
  101. package/es/data-zoom/config.js +0 -7
  102. package/es/data-zoom/config.js.map +1 -1
  103. package/es/data-zoom/data-zoom.d.ts +3 -2
  104. package/es/data-zoom/data-zoom.js +10 -4
  105. package/es/data-zoom/data-zoom.js.map +1 -1
  106. package/es/data-zoom/type.d.ts +6 -0
  107. package/es/data-zoom/type.js +6 -1
  108. package/es/data-zoom/type.js.map +1 -1
  109. package/es/index.d.ts +1 -1
  110. package/es/index.js +1 -1
  111. package/es/index.js.map +1 -1
  112. package/es/indicator/indicator.js +44 -6
  113. package/es/indicator/indicator.js.map +1 -1
  114. package/es/indicator/type.d.ts +2 -1
  115. package/es/indicator/type.js.map +1 -1
  116. package/es/label/animate/animate.d.ts +8 -2
  117. package/es/label/animate/animate.js +35 -0
  118. package/es/label/animate/animate.js.map +1 -1
  119. package/es/label/arc.d.ts +4 -3
  120. package/es/label/arc.js.map +1 -1
  121. package/es/label/area.d.ts +15 -0
  122. package/es/label/area.js +39 -0
  123. package/es/label/area.js.map +1 -0
  124. package/es/label/base.d.ts +18 -15
  125. package/es/label/base.js +66 -50
  126. package/es/label/base.js.map +1 -1
  127. package/es/label/dataLabel.js +11 -4
  128. package/es/label/dataLabel.js.map +1 -1
  129. package/es/label/index.d.ts +1 -0
  130. package/es/label/index.js +2 -0
  131. package/es/label/index.js.map +1 -1
  132. package/es/label/line.d.ts +2 -2
  133. package/es/label/line.js +5 -10
  134. package/es/label/line.js.map +1 -1
  135. package/es/label/type.d.ts +31 -6
  136. package/es/label/type.js +1 -2
  137. package/es/label/type.js.map +1 -1
  138. package/es/label/util.d.ts +4 -0
  139. package/es/label/util.js +13 -1
  140. package/es/label/util.js.map +1 -1
  141. package/es/legend/discrete/discrete.d.ts +3 -0
  142. package/es/legend/discrete/discrete.js +44 -36
  143. package/es/legend/discrete/discrete.js.map +1 -1
  144. package/es/legend/discrete/type.d.ts +1 -0
  145. package/es/legend/discrete/type.js.map +1 -1
  146. package/es/link-path/type.js +1 -1
  147. package/es/marker/area.js.map +1 -1
  148. package/es/marker/line.js.map +1 -1
  149. package/es/marker/point.d.ts +1 -1
  150. package/es/marker/point.js.map +1 -1
  151. package/es/marker/type.d.ts +14 -14
  152. package/es/marker/type.js.map +1 -1
  153. package/es/scrollbar/scrollbar.js.map +1 -1
  154. package/es/tag/tag.js +86 -38
  155. package/es/tag/tag.js.map +1 -1
  156. package/es/tag/type.d.ts +4 -5
  157. package/es/tag/type.js.map +1 -1
  158. package/es/title/title.js +84 -50
  159. package/es/title/title.js.map +1 -1
  160. package/es/title/type.d.ts +10 -5
  161. package/es/title/type.js.map +1 -1
  162. package/es/tooltip/tooltip.js +52 -13
  163. package/es/tooltip/tooltip.js.map +1 -1
  164. package/es/tooltip/type.d.ts +7 -2
  165. package/es/tooltip/type.js.map +1 -1
  166. package/es/tooltip/util.js +9 -1
  167. package/es/tooltip/util.js.map +1 -1
  168. package/es/util/label-smartInvert.d.ts +2 -2
  169. package/es/util/label-smartInvert.js +9 -5
  170. package/es/util/label-smartInvert.js.map +1 -1
  171. package/package.json +8 -8
package/es/title/title.js CHANGED
@@ -2,19 +2,21 @@ import { merge, isValid, normalizePadding } from "@visactor/vutils";
2
2
 
3
3
  import { AbstractComponent } from "../core/base";
4
4
 
5
+ import { DEFAULT_HTML_TEXT_SPEC } from "../constant";
6
+
5
7
  export class Title extends AbstractComponent {
6
8
  constructor(attributes) {
7
9
  super(merge({}, Title.defaultAttributes, attributes)), this.name = "title";
8
10
  }
9
11
  render() {
10
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37;
11
- const {text: text, textStyle: textStyle, subtext: subtext, subtextStyle: subtextStyle, width: width, height: height, minWidth: minWidth, maxWidth: maxWidth, minHeight: minHeight, maxHeight: maxHeight, align: align, verticalAlign: verticalAlign, padding: padding = 0} = this.attribute, parsedPadding = normalizePadding(padding), group = this.createOrUpdateChild("title-container", {
12
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55;
13
+ const {textType: textType, text: text, subtextType: subtextType, textStyle: textStyle, subtext: subtext, subtextStyle: subtextStyle, width: width, height: height, minWidth: minWidth, maxWidth: maxWidth, minHeight: minHeight, maxHeight: maxHeight, align: align, verticalAlign: verticalAlign, padding: padding = 0} = this.attribute, parsedPadding = normalizePadding(padding), group = this.createOrUpdateChild("title-container", {
12
14
  x: parsedPadding[3],
13
15
  y: parsedPadding[0],
14
16
  zIndex: 1
15
17
  }, "group");
16
- if (!1 !== (null === (_a = this.attribute) || void 0 === _a ? void 0 : _a.visible) && !1 !== (null == textStyle ? void 0 : textStyle.visible)) if (textStyle && isValid(null == textStyle ? void 0 : textStyle.character)) {
17
- const attr = {
18
+ if (!1 !== (null === (_a = this.attribute) || void 0 === _a ? void 0 : _a.visible) && !1 !== (null == textStyle ? void 0 : textStyle.visible)) if ("rich" === textType || isValid(textStyle.character)) {
19
+ const attr = Object.assign({
18
20
  x: null !== (_b = textStyle.x) && void 0 !== _b ? _b : 0,
19
21
  y: null !== (_c = textStyle.y) && void 0 !== _c ? _c : 0,
20
22
  width: null !== (_e = null !== (_d = textStyle.width) && void 0 !== _d ? _d : width) && void 0 !== _e ? _e : 0,
@@ -23,84 +25,116 @@ export class Title extends AbstractComponent {
23
25
  wordBreak: null !== (_j = textStyle.wordBreak) && void 0 !== _j ? _j : "break-word",
24
26
  maxHeight: textStyle.maxHeight,
25
27
  maxWidth: textStyle.maxWidth,
26
- textConfig: textStyle.character
27
- };
28
+ textConfig: null !== (_k = text) && void 0 !== _k ? _k : textStyle.character
29
+ }, textStyle);
30
+ this._mainTitle = group.createOrUpdateChild("mainTitle", attr, "richtext");
31
+ } else if ("html" === textType) {
32
+ const attr = Object.assign({
33
+ html: Object.assign(Object.assign({
34
+ dom: text
35
+ }, DEFAULT_HTML_TEXT_SPEC), textStyle),
36
+ x: null !== (_l = textStyle.x) && void 0 !== _l ? _l : 0,
37
+ y: null !== (_m = textStyle.y) && void 0 !== _m ? _m : 0,
38
+ width: null !== (_p = null !== (_o = textStyle.width) && void 0 !== _o ? _o : width) && void 0 !== _p ? _p : 0,
39
+ height: null !== (_r = null !== (_q = textStyle.height) && void 0 !== _q ? _q : height) && void 0 !== _r ? _r : 0,
40
+ ellipsis: null === (_s = textStyle.ellipsis) || void 0 === _s || _s,
41
+ wordBreak: null !== (_t = textStyle.wordBreak) && void 0 !== _t ? _t : "break-word",
42
+ maxHeight: textStyle.maxHeight,
43
+ maxWidth: textStyle.maxWidth,
44
+ textConfig: []
45
+ }, textStyle);
28
46
  this._mainTitle = group.createOrUpdateChild("mainTitle", attr, "richtext");
29
47
  } else isValid(text) && (this._mainTitle = group.createOrUpdateChild("mainTitle", Object.assign(Object.assign({
30
48
  text: [ text ]
31
49
  }, textStyle), {
32
- maxLineWidth: null !== (_k = null == textStyle ? void 0 : textStyle.maxLineWidth) && void 0 !== _k ? _k : width,
50
+ maxLineWidth: null !== (_u = null == textStyle ? void 0 : textStyle.maxLineWidth) && void 0 !== _u ? _u : width,
33
51
  heightLimit: null == textStyle ? void 0 : textStyle.heightLimit,
34
52
  lineClamp: null == textStyle ? void 0 : textStyle.lineClamp,
35
- ellipsis: null === (_l = null == textStyle ? void 0 : textStyle.ellipsis) || void 0 === _l || _l,
53
+ ellipsis: null === (_v = null == textStyle ? void 0 : textStyle.ellipsis) || void 0 === _v || _v,
36
54
  x: 0,
37
55
  y: 0
38
56
  }), "wrapText"));
39
- const maintextHeight = this._mainTitle ? null === (_m = this._mainTitle) || void 0 === _m ? void 0 : _m.AABBBounds.height() : 0, maintextWidth = this._mainTitle ? null === (_o = this._mainTitle) || void 0 === _o ? void 0 : _o.AABBBounds.width() : 0;
40
- if (!1 !== (null === (_p = this.attribute) || void 0 === _p ? void 0 : _p.visible) && !1 !== (null == subtextStyle ? void 0 : subtextStyle.visible)) if (subtextStyle && isValid(null == subtextStyle ? void 0 : subtextStyle.character)) {
41
- const attr = {
42
- x: null !== (_q = subtextStyle.x) && void 0 !== _q ? _q : 0,
43
- y: null !== (_r = subtextStyle.y) && void 0 !== _r ? _r : maintextHeight,
44
- width: null !== (_t = null !== (_s = subtextStyle.width) && void 0 !== _s ? _s : width) && void 0 !== _t ? _t : 0,
45
- height: null !== (_v = null !== (_u = subtextStyle.height) && void 0 !== _u ? _u : height) && void 0 !== _v ? _v : 0,
46
- ellipsis: null === (_w = subtextStyle.ellipsis) || void 0 === _w || _w,
47
- wordBreak: null !== (_x = subtextStyle.wordBreak) && void 0 !== _x ? _x : "break-word",
57
+ const maintextHeight = this._mainTitle ? null === (_w = this._mainTitle) || void 0 === _w ? void 0 : _w.AABBBounds.height() : 0, maintextWidth = this._mainTitle ? null === (_x = this._mainTitle) || void 0 === _x ? void 0 : _x.AABBBounds.width() : 0;
58
+ if (!1 !== (null === (_y = this.attribute) || void 0 === _y ? void 0 : _y.visible) && !1 !== (null == subtextStyle ? void 0 : subtextStyle.visible)) if ("rich" === subtextType || isValid(subtextStyle.character)) {
59
+ const attr = Object.assign({
60
+ x: null !== (_z = subtextStyle.x) && void 0 !== _z ? _z : 0,
61
+ y: null !== (_0 = subtextStyle.y) && void 0 !== _0 ? _0 : 0,
62
+ width: null !== (_2 = null !== (_1 = subtextStyle.width) && void 0 !== _1 ? _1 : width) && void 0 !== _2 ? _2 : 0,
63
+ height: null !== (_4 = null !== (_3 = subtextStyle.height) && void 0 !== _3 ? _3 : height) && void 0 !== _4 ? _4 : 0,
64
+ ellipsis: null === (_5 = subtextStyle.ellipsis) || void 0 === _5 || _5,
65
+ wordBreak: null !== (_6 = subtextStyle.wordBreak) && void 0 !== _6 ? _6 : "break-word",
66
+ maxHeight: subtextStyle.maxHeight,
67
+ maxWidth: subtextStyle.maxWidth,
68
+ textConfig: null !== (_7 = subtext) && void 0 !== _7 ? _7 : subtextStyle.character
69
+ }, subtextStyle);
70
+ this._subTitle = group.createOrUpdateChild("subTitle", attr, "richtext");
71
+ } else if ("html" === subtextType) {
72
+ const attr = Object.assign({
73
+ html: Object.assign(Object.assign({
74
+ dom: subtext
75
+ }, DEFAULT_HTML_TEXT_SPEC), subtextStyle),
76
+ x: null !== (_8 = subtextStyle.x) && void 0 !== _8 ? _8 : 0,
77
+ y: null !== (_9 = subtextStyle.y) && void 0 !== _9 ? _9 : 0,
78
+ width: null !== (_11 = null !== (_10 = subtextStyle.width) && void 0 !== _10 ? _10 : width) && void 0 !== _11 ? _11 : 0,
79
+ height: null !== (_13 = null !== (_12 = subtextStyle.height) && void 0 !== _12 ? _12 : height) && void 0 !== _13 ? _13 : 0,
80
+ ellipsis: null === (_14 = subtextStyle.ellipsis) || void 0 === _14 || _14,
81
+ wordBreak: null !== (_15 = subtextStyle.wordBreak) && void 0 !== _15 ? _15 : "break-word",
48
82
  maxHeight: subtextStyle.maxHeight,
49
83
  maxWidth: subtextStyle.maxWidth,
50
- textConfig: subtextStyle.character
51
- };
84
+ textConfig: []
85
+ }, subtextStyle);
52
86
  this._subTitle = group.createOrUpdateChild("subTitle", attr, "richtext");
53
87
  } else isValid(subtext) && (this._subTitle = group.createOrUpdateChild("subTitle", Object.assign(Object.assign({
54
88
  text: [ subtext ]
55
89
  }, subtextStyle), {
56
- maxLineWidth: null !== (_y = null == subtextStyle ? void 0 : subtextStyle.maxLineWidth) && void 0 !== _y ? _y : width,
90
+ maxLineWidth: null !== (_16 = null == subtextStyle ? void 0 : subtextStyle.maxLineWidth) && void 0 !== _16 ? _16 : width,
57
91
  heightLimit: null == subtextStyle ? void 0 : subtextStyle.heightLimit,
58
92
  lineClamp: null == subtextStyle ? void 0 : subtextStyle.lineClamp,
59
- ellipsis: null === (_z = null == subtextStyle ? void 0 : subtextStyle.ellipsis) || void 0 === _z || _z,
93
+ ellipsis: null === (_17 = null == subtextStyle ? void 0 : subtextStyle.ellipsis) || void 0 === _17 || _17,
60
94
  x: 0,
61
95
  y: maintextHeight
62
96
  }), "wrapText"));
63
- const subtextHeight = this._subTitle ? null === (_0 = this._subTitle) || void 0 === _0 ? void 0 : _0.AABBBounds.height() : 0, subtextWidth = this._subTitle ? null === (_1 = this._subTitle) || void 0 === _1 ? void 0 : _1.AABBBounds.width() : 0;
64
- let titleWidth = Math.max(maintextWidth, subtextWidth), titleHeight = maintextHeight + (null !== (_2 = null == subtextStyle ? void 0 : subtextStyle.height) && void 0 !== _2 ? _2 : subtextHeight);
65
- if (isValid(width) && (titleWidth = width, null === (_3 = this._mainTitle) || void 0 === _3 || _3.setAttribute("maxLineWidth", width),
66
- null === (_4 = this._subTitle) || void 0 === _4 || _4.setAttribute("maxLineWidth", width)),
97
+ const subtextHeight = this._subTitle ? null === (_18 = this._subTitle) || void 0 === _18 ? void 0 : _18.AABBBounds.height() : 0, subtextWidth = this._subTitle ? null === (_19 = this._subTitle) || void 0 === _19 ? void 0 : _19.AABBBounds.width() : 0;
98
+ let titleWidth = Math.max(maintextWidth, subtextWidth), titleHeight = maintextHeight + (null !== (_20 = null == subtextStyle ? void 0 : subtextStyle.height) && void 0 !== _20 ? _20 : subtextHeight);
99
+ if (isValid(width) && (titleWidth = width, null === (_21 = this._mainTitle) || void 0 === _21 || _21.setAttribute("maxLineWidth", width),
100
+ null === (_22 = this._subTitle) || void 0 === _22 || _22.setAttribute("maxLineWidth", width)),
67
101
  isValid(height) && (titleHeight = height), isValid(minWidth) && titleWidth < minWidth && (titleWidth = minWidth),
68
- isValid(maxWidth) && (null === (_5 = this._mainTitle) || void 0 === _5 || _5.setAttribute("maxLineWidth", maxWidth),
69
- null === (_6 = this._subTitle) || void 0 === _6 || _6.setAttribute("maxLineWidth", maxWidth),
70
- null === (_7 = this._mainTitle) || void 0 === _7 || _7.setAttribute("maxWidth", maxWidth),
71
- null === (_8 = this._subTitle) || void 0 === _8 || _8.setAttribute("maxWidth", maxWidth),
102
+ isValid(maxWidth) && (null === (_23 = this._mainTitle) || void 0 === _23 || _23.setAttribute("maxLineWidth", maxWidth),
103
+ null === (_24 = this._subTitle) || void 0 === _24 || _24.setAttribute("maxLineWidth", maxWidth),
104
+ null === (_25 = this._mainTitle) || void 0 === _25 || _25.setAttribute("maxWidth", maxWidth),
105
+ null === (_26 = this._subTitle) || void 0 === _26 || _26.setAttribute("maxWidth", maxWidth),
72
106
  titleWidth > maxWidth && (titleWidth = maxWidth)), isValid(minHeight) && titleHeight < minHeight && (titleHeight = minHeight),
73
- isValid(maxHeight) && (null === (_9 = this._mainTitle) || void 0 === _9 || _9.setAttribute("maxHeight", maxHeight),
74
- null === (_10 = this._subTitle) || void 0 === _10 || _10.setAttribute("maxHeight", maxHeight - maintextHeight),
107
+ isValid(maxHeight) && (null === (_27 = this._mainTitle) || void 0 === _27 || _27.setAttribute("maxHeight", maxHeight),
108
+ null === (_28 = this._subTitle) || void 0 === _28 || _28.setAttribute("maxHeight", maxHeight - maintextHeight),
75
109
  titleHeight > maxHeight && (titleHeight = maxHeight)), group.attribute.width = titleWidth,
76
110
  group.attribute.height = titleHeight, group.attribute.boundsPadding = parsedPadding,
77
111
  isValid(align) || isValid(null == textStyle ? void 0 : textStyle.align)) {
78
- const mainTitleAlign = (null == textStyle ? void 0 : textStyle.align) ? null == textStyle ? void 0 : textStyle.align : align, mainTitleWidth = null !== (_11 = null == textStyle ? void 0 : textStyle.width) && void 0 !== _11 ? _11 : maintextWidth;
79
- "left" === mainTitleAlign ? (null === (_12 = this._mainTitle) || void 0 === _12 || _12.setAttribute("x", 0),
80
- null === (_13 = this._mainTitle) || void 0 === _13 || _13.setAttribute("textAlign", "left")) : "center" === mainTitleAlign ? (null === (_14 = this._mainTitle) || void 0 === _14 || _14.setAttribute("x", mainTitleWidth / 2),
81
- null === (_15 = this._mainTitle) || void 0 === _15 || _15.setAttribute("textAlign", "center")) : "right" === mainTitleAlign && (null === (_16 = this._mainTitle) || void 0 === _16 || _16.setAttribute("x", mainTitleWidth),
82
- null === (_17 = this._mainTitle) || void 0 === _17 || _17.setAttribute("textAlign", "right"));
112
+ const mainTitleAlign = (null == textStyle ? void 0 : textStyle.align) ? null == textStyle ? void 0 : textStyle.align : align, mainTitleWidth = null !== (_29 = null == textStyle ? void 0 : textStyle.width) && void 0 !== _29 ? _29 : maintextWidth;
113
+ "left" === mainTitleAlign ? (null === (_30 = this._mainTitle) || void 0 === _30 || _30.setAttribute("x", 0),
114
+ null === (_31 = this._mainTitle) || void 0 === _31 || _31.setAttribute("textAlign", "left")) : "center" === mainTitleAlign ? (null === (_32 = this._mainTitle) || void 0 === _32 || _32.setAttribute("x", mainTitleWidth / 2),
115
+ null === (_33 = this._mainTitle) || void 0 === _33 || _33.setAttribute("textAlign", "center")) : "right" === mainTitleAlign && (null === (_34 = this._mainTitle) || void 0 === _34 || _34.setAttribute("x", mainTitleWidth),
116
+ null === (_35 = this._mainTitle) || void 0 === _35 || _35.setAttribute("textAlign", "right"));
83
117
  }
84
118
  if (isValid(verticalAlign) || isValid(null == textStyle ? void 0 : textStyle.verticalAlign)) {
85
119
  const mainTitleVerticalAlign = (null == textStyle ? void 0 : textStyle.verticalAlign) ? null == textStyle ? void 0 : textStyle.verticalAlign : verticalAlign, mainTitleHeight = (null == textStyle ? void 0 : textStyle.height) ? null == textStyle ? void 0 : textStyle.height : titleHeight;
86
- "top" === mainTitleVerticalAlign ? (null === (_18 = this._mainTitle) || void 0 === _18 || _18.setAttribute("y", 0),
87
- null === (_19 = this._mainTitle) || void 0 === _19 || _19.setAttribute("textBaseline", "top")) : "middle" === mainTitleVerticalAlign ? (null === (_20 = this._mainTitle) || void 0 === _20 || _20.setAttribute("y", mainTitleHeight / 2),
88
- null === (_21 = this._mainTitle) || void 0 === _21 || _21.setAttribute("textBaseline", "middle")) : "bottom" === mainTitleVerticalAlign && (null === (_22 = this._mainTitle) || void 0 === _22 || _22.setAttribute("y", mainTitleHeight),
89
- null === (_23 = this._mainTitle) || void 0 === _23 || _23.setAttribute("textBaseline", "bottom"));
120
+ "top" === mainTitleVerticalAlign ? (null === (_36 = this._mainTitle) || void 0 === _36 || _36.setAttribute("y", 0),
121
+ null === (_37 = this._mainTitle) || void 0 === _37 || _37.setAttribute("textBaseline", "top")) : "middle" === mainTitleVerticalAlign ? (null === (_38 = this._mainTitle) || void 0 === _38 || _38.setAttribute("y", mainTitleHeight / 2),
122
+ null === (_39 = this._mainTitle) || void 0 === _39 || _39.setAttribute("textBaseline", "middle")) : "bottom" === mainTitleVerticalAlign && (null === (_40 = this._mainTitle) || void 0 === _40 || _40.setAttribute("y", mainTitleHeight),
123
+ null === (_41 = this._mainTitle) || void 0 === _41 || _41.setAttribute("textBaseline", "bottom"));
90
124
  }
91
125
  if (isValid(align) || isValid(null == subtextStyle ? void 0 : subtextStyle.align)) {
92
- const subTitleAlign = (null == subtextStyle ? void 0 : subtextStyle.align) ? null == subtextStyle ? void 0 : subtextStyle.align : align, subTitleWidth = null !== (_24 = null == subtextStyle ? void 0 : subtextStyle.width) && void 0 !== _24 ? _24 : subtextWidth;
93
- "left" === subTitleAlign ? (null === (_25 = this._subTitle) || void 0 === _25 || _25.setAttribute("x", 0),
94
- null === (_26 = this._subTitle) || void 0 === _26 || _26.setAttribute("textAlign", "left")) : "center" === subTitleAlign ? (null === (_27 = this._subTitle) || void 0 === _27 || _27.setAttribute("x", subTitleWidth / 2),
95
- null === (_28 = this._subTitle) || void 0 === _28 || _28.setAttribute("textAlign", "center")) : "right" === subTitleAlign && (null === (_29 = this._subTitle) || void 0 === _29 || _29.setAttribute("x", subTitleWidth),
96
- null === (_30 = this._subTitle) || void 0 === _30 || _30.setAttribute("textAlign", "right"));
126
+ const subTitleAlign = (null == subtextStyle ? void 0 : subtextStyle.align) ? null == subtextStyle ? void 0 : subtextStyle.align : align, subTitleWidth = null !== (_42 = null == subtextStyle ? void 0 : subtextStyle.width) && void 0 !== _42 ? _42 : subtextWidth;
127
+ "left" === subTitleAlign ? (null === (_43 = this._subTitle) || void 0 === _43 || _43.setAttribute("x", 0),
128
+ null === (_44 = this._subTitle) || void 0 === _44 || _44.setAttribute("textAlign", "left")) : "center" === subTitleAlign ? (null === (_45 = this._subTitle) || void 0 === _45 || _45.setAttribute("x", subTitleWidth / 2),
129
+ null === (_46 = this._subTitle) || void 0 === _46 || _46.setAttribute("textAlign", "center")) : "right" === subTitleAlign && (null === (_47 = this._subTitle) || void 0 === _47 || _47.setAttribute("x", subTitleWidth),
130
+ null === (_48 = this._subTitle) || void 0 === _48 || _48.setAttribute("textAlign", "right"));
97
131
  }
98
132
  if (isValid(verticalAlign) || isValid(null == textStyle ? void 0 : textStyle.verticalAlign)) {
99
- const subTitleVerticalAlign = (null == subtextStyle ? void 0 : subtextStyle.verticalAlign) ? null == subtextStyle ? void 0 : subtextStyle.verticalAlign : verticalAlign, subTitleYStart = maintextHeight, subTitleHeight = null !== (_31 = null == subtextStyle ? void 0 : subtextStyle.height) && void 0 !== _31 ? _31 : 0;
100
- "top" === subTitleVerticalAlign ? (null === (_32 = this._subTitle) || void 0 === _32 || _32.setAttribute("y", subTitleYStart),
101
- null === (_33 = this._subTitle) || void 0 === _33 || _33.setAttribute("textBaseline", "top")) : "middle" === subTitleVerticalAlign ? (null === (_34 = this._subTitle) || void 0 === _34 || _34.setAttribute("y", subTitleYStart + subTitleHeight / 2),
102
- null === (_35 = this._subTitle) || void 0 === _35 || _35.setAttribute("textBaseline", "middle")) : "bottom" === subTitleVerticalAlign && (null === (_36 = this._subTitle) || void 0 === _36 || _36.setAttribute("y", subTitleYStart + subTitleHeight),
103
- null === (_37 = this._subTitle) || void 0 === _37 || _37.setAttribute("textBaseline", "bottom"));
133
+ const subTitleVerticalAlign = (null == subtextStyle ? void 0 : subtextStyle.verticalAlign) ? null == subtextStyle ? void 0 : subtextStyle.verticalAlign : verticalAlign, subTitleYStart = maintextHeight, subTitleHeight = null !== (_49 = null == subtextStyle ? void 0 : subtextStyle.height) && void 0 !== _49 ? _49 : 0;
134
+ "top" === subTitleVerticalAlign ? (null === (_50 = this._subTitle) || void 0 === _50 || _50.setAttribute("y", subTitleYStart),
135
+ null === (_51 = this._subTitle) || void 0 === _51 || _51.setAttribute("textBaseline", "top")) : "middle" === subTitleVerticalAlign ? (null === (_52 = this._subTitle) || void 0 === _52 || _52.setAttribute("y", subTitleYStart + subTitleHeight / 2),
136
+ null === (_53 = this._subTitle) || void 0 === _53 || _53.setAttribute("textBaseline", "middle")) : "bottom" === subTitleVerticalAlign && (null === (_54 = this._subTitle) || void 0 === _54 || _54.setAttribute("y", subTitleYStart + subTitleHeight),
137
+ null === (_55 = this._subTitle) || void 0 === _55 || _55.setAttribute("textBaseline", "bottom"));
104
138
  }
105
139
  }
106
140
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["/**\n * @description 标题组件\n */\nimport type { IGroup, IText, IRichText } from '@visactor/vrender-core';\nimport { merge, isValid, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { TitleAttrs } from './type';\n\nexport class Title extends AbstractComponent<Required<TitleAttrs>> {\n name = 'title';\n\n private _mainTitle?: IText | IRichText;\n private _subTitle?: IText | IRichText;\n\n static defaultAttributes: Partial<TitleAttrs> = {\n textStyle: {\n ellipsis: '...',\n fill: '#333',\n fontSize: 20,\n fontWeight: 'bold',\n textAlign: 'left',\n textBaseline: 'top'\n },\n subtextStyle: {\n ellipsis: '...',\n fill: '#6F6F6F',\n fontSize: 16,\n fontWeight: 'normal',\n textAlign: 'left',\n textBaseline: 'top'\n }\n };\n\n constructor(attributes: TitleAttrs) {\n super(merge({}, Title.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n text,\n textStyle,\n subtext,\n subtextStyle,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n align,\n verticalAlign,\n padding = 0\n } = this.attribute as TitleAttrs;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild(\n 'title-container',\n { x: parsedPadding[3], y: parsedPadding[0], zIndex: 1 },\n 'group'\n ) as IGroup;\n\n if (this.attribute?.visible !== false && textStyle?.visible !== false) {\n if (textStyle && isValid(textStyle?.character)) {\n const attr = {\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n textConfig: textStyle.character\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (isValid(text)) {\n this._mainTitle = group.createOrUpdateChild(\n 'mainTitle',\n {\n text: [text as string],\n ...textStyle,\n maxLineWidth: textStyle?.maxLineWidth ?? width,\n heightLimit: textStyle?.heightLimit,\n lineClamp: textStyle?.lineClamp,\n ellipsis: textStyle?.ellipsis ?? true,\n x: 0,\n y: 0\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const maintextHeight = this._mainTitle ? this._mainTitle?.AABBBounds.height() : 0;\n const maintextWidth = this._mainTitle ? this._mainTitle?.AABBBounds.width() : 0;\n\n if (this.attribute?.visible !== false && subtextStyle?.visible !== false) {\n if (subtextStyle && isValid(subtextStyle?.character)) {\n const attr = {\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? maintextHeight,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n textConfig: subtextStyle.character\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (isValid(subtext)) {\n this._subTitle = group.createOrUpdateChild(\n 'subTitle',\n {\n text: [subtext as string],\n ...subtextStyle,\n maxLineWidth: subtextStyle?.maxLineWidth ?? width,\n heightLimit: subtextStyle?.heightLimit,\n lineClamp: subtextStyle?.lineClamp,\n ellipsis: subtextStyle?.ellipsis ?? true,\n x: 0,\n y: maintextHeight\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const subtextHeight = this._subTitle ? this._subTitle?.AABBBounds.height() : 0;\n const subtextWidth = this._subTitle ? this._subTitle?.AABBBounds.width() : 0;\n\n // 设置宽高\n let titleWidth = Math.max(maintextWidth, subtextWidth);\n let titleHeight = maintextHeight + (subtextStyle?.height ?? subtextHeight);\n\n if (isValid(width)) {\n titleWidth = width;\n this._mainTitle?.setAttribute('maxLineWidth', width);\n this._subTitle?.setAttribute('maxLineWidth', width);\n }\n\n if (isValid(height)) {\n titleHeight = height;\n }\n\n if (isValid(minWidth) && titleWidth < minWidth) {\n titleWidth = minWidth;\n }\n if (isValid(maxWidth)) {\n this._mainTitle?.setAttribute('maxLineWidth', maxWidth);\n this._subTitle?.setAttribute('maxLineWidth', maxWidth);\n this._mainTitle?.setAttribute('maxWidth', maxWidth);\n this._subTitle?.setAttribute('maxWidth', maxWidth);\n if (titleWidth > maxWidth) {\n titleWidth = maxWidth;\n }\n }\n\n if (isValid(minHeight) && titleHeight < minHeight) {\n titleHeight = minHeight;\n }\n if (isValid(maxHeight)) {\n this._mainTitle?.setAttribute('maxHeight', maxHeight);\n this._subTitle?.setAttribute('maxHeight', maxHeight - maintextHeight);\n if (titleHeight > maxHeight) {\n titleHeight = maxHeight;\n }\n }\n\n group.attribute.width = titleWidth;\n group.attribute.height = titleHeight;\n group.attribute.boundsPadding = parsedPadding;\n\n // 设置对齐\n if (isValid(align) || isValid(textStyle?.align)) {\n const mainTitleAlign = textStyle?.align ? textStyle?.align : align;\n const mainTitleWidth = textStyle?.width ?? maintextWidth;\n if (mainTitleAlign === 'left') {\n this._mainTitle?.setAttribute('x', 0);\n this._mainTitle?.setAttribute('textAlign', 'left');\n } else if (mainTitleAlign === 'center') {\n this._mainTitle?.setAttribute('x', mainTitleWidth / 2);\n this._mainTitle?.setAttribute('textAlign', 'center');\n } else if (mainTitleAlign === 'right') {\n this._mainTitle?.setAttribute('x', mainTitleWidth);\n this._mainTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const mainTitleVerticalAlign = textStyle?.verticalAlign ? textStyle?.verticalAlign : verticalAlign;\n const mainTitleHeight = textStyle?.height ? textStyle?.height : titleHeight;\n if (mainTitleVerticalAlign === 'top') {\n this._mainTitle?.setAttribute('y', 0);\n this._mainTitle?.setAttribute('textBaseline', 'top');\n } else if (mainTitleVerticalAlign === 'middle') {\n this._mainTitle?.setAttribute('y', mainTitleHeight / 2);\n this._mainTitle?.setAttribute('textBaseline', 'middle');\n } else if (mainTitleVerticalAlign === 'bottom') {\n this._mainTitle?.setAttribute('y', mainTitleHeight);\n this._mainTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n\n if (isValid(align) || isValid(subtextStyle?.align)) {\n const subTitleAlign = subtextStyle?.align ? subtextStyle?.align : align;\n const subTitleWidth = subtextStyle?.width ?? subtextWidth;\n if (subTitleAlign === 'left') {\n this._subTitle?.setAttribute('x', 0);\n this._subTitle?.setAttribute('textAlign', 'left');\n } else if (subTitleAlign === 'center') {\n this._subTitle?.setAttribute('x', subTitleWidth / 2);\n this._subTitle?.setAttribute('textAlign', 'center');\n } else if (subTitleAlign === 'right') {\n this._subTitle?.setAttribute('x', subTitleWidth);\n this._subTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const subTitleVerticalAlign = subtextStyle?.verticalAlign ? subtextStyle?.verticalAlign : verticalAlign;\n const subTitleYStart = maintextHeight;\n const subTitleHeight = subtextStyle?.height ?? 0;\n if (subTitleVerticalAlign === 'top') {\n this._subTitle?.setAttribute('y', subTitleYStart);\n this._subTitle?.setAttribute('textBaseline', 'top');\n } else if (subTitleVerticalAlign === 'middle') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight / 2);\n this._subTitle?.setAttribute('textBaseline', 'middle');\n } else if (subTitleVerticalAlign === 'bottom') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight);\n this._subTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["/**\n * @description 标题组件\n */\nimport type { IGroup, IText, IRichText, IRichTextCharacter } from '@visactor/vrender-core';\nimport { merge, isValid, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { TitleAttrs } from './type';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nexport class Title extends AbstractComponent<Required<TitleAttrs>> {\n name = 'title';\n\n private _mainTitle?: IText | IRichText;\n private _subTitle?: IText | IRichText;\n\n static defaultAttributes: Partial<TitleAttrs> = {\n textStyle: {\n ellipsis: '...',\n fill: '#333',\n fontSize: 20,\n fontWeight: 'bold',\n textAlign: 'left',\n textBaseline: 'top'\n },\n subtextStyle: {\n ellipsis: '...',\n fill: '#6F6F6F',\n fontSize: 16,\n fontWeight: 'normal',\n textAlign: 'left',\n textBaseline: 'top'\n }\n };\n\n constructor(attributes: TitleAttrs) {\n super(merge({}, Title.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n textType,\n text,\n subtextType,\n textStyle,\n subtext,\n subtextStyle,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n align,\n verticalAlign,\n padding = 0\n } = this.attribute as TitleAttrs;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild(\n 'title-container',\n { x: parsedPadding[3], y: parsedPadding[0], zIndex: 1 },\n 'group'\n ) as IGroup;\n\n if (this.attribute?.visible !== false && textStyle?.visible !== false) {\n if (textType === 'rich' || isValid(textStyle.character)) {\n const attr = {\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n textConfig: (text as IRichTextCharacter[]) ?? textStyle.character,\n ...textStyle\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (textType === 'html') {\n const attr = {\n html: {\n dom: text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...textStyle\n },\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n textConfig: [] as any[],\n ...textStyle\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (isValid(text)) {\n this._mainTitle = group.createOrUpdateChild(\n 'mainTitle',\n {\n text: [text as string],\n ...textStyle,\n maxLineWidth: textStyle?.maxLineWidth ?? width,\n heightLimit: textStyle?.heightLimit,\n lineClamp: textStyle?.lineClamp,\n ellipsis: textStyle?.ellipsis ?? true,\n x: 0,\n y: 0\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const maintextHeight = this._mainTitle ? this._mainTitle?.AABBBounds.height() : 0;\n const maintextWidth = this._mainTitle ? this._mainTitle?.AABBBounds.width() : 0;\n\n if (this.attribute?.visible !== false && subtextStyle?.visible !== false) {\n if (subtextType === 'rich' || isValid(subtextStyle.character)) {\n const attr: any = {\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? 0,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n textConfig: (subtext as IRichTextCharacter[]) ?? subtextStyle.character,\n ...subtextStyle\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (subtextType === 'html') {\n const attr: any = {\n html: {\n dom: subtext as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...subtextStyle\n },\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? 0,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n textConfig: [] as any[],\n ...subtextStyle\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (isValid(subtext)) {\n this._subTitle = group.createOrUpdateChild(\n 'subTitle',\n {\n text: [subtext as string],\n ...subtextStyle,\n maxLineWidth: subtextStyle?.maxLineWidth ?? width,\n heightLimit: subtextStyle?.heightLimit,\n lineClamp: subtextStyle?.lineClamp,\n ellipsis: subtextStyle?.ellipsis ?? true,\n x: 0,\n y: maintextHeight\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const subtextHeight = this._subTitle ? this._subTitle?.AABBBounds.height() : 0;\n const subtextWidth = this._subTitle ? this._subTitle?.AABBBounds.width() : 0;\n\n // 设置宽高\n let titleWidth = Math.max(maintextWidth, subtextWidth);\n let titleHeight = maintextHeight + (subtextStyle?.height ?? subtextHeight);\n\n if (isValid(width)) {\n titleWidth = width;\n this._mainTitle?.setAttribute('maxLineWidth', width);\n this._subTitle?.setAttribute('maxLineWidth', width);\n }\n\n if (isValid(height)) {\n titleHeight = height;\n }\n\n if (isValid(minWidth) && titleWidth < minWidth) {\n titleWidth = minWidth;\n }\n if (isValid(maxWidth)) {\n this._mainTitle?.setAttribute('maxLineWidth', maxWidth);\n this._subTitle?.setAttribute('maxLineWidth', maxWidth);\n this._mainTitle?.setAttribute('maxWidth', maxWidth);\n this._subTitle?.setAttribute('maxWidth', maxWidth);\n if (titleWidth > maxWidth) {\n titleWidth = maxWidth;\n }\n }\n\n if (isValid(minHeight) && titleHeight < minHeight) {\n titleHeight = minHeight;\n }\n if (isValid(maxHeight)) {\n this._mainTitle?.setAttribute('maxHeight', maxHeight);\n this._subTitle?.setAttribute('maxHeight', maxHeight - maintextHeight);\n if (titleHeight > maxHeight) {\n titleHeight = maxHeight;\n }\n }\n\n group.attribute.width = titleWidth;\n group.attribute.height = titleHeight;\n group.attribute.boundsPadding = parsedPadding;\n\n // 设置对齐\n if (isValid(align) || isValid(textStyle?.align)) {\n const mainTitleAlign = textStyle?.align ? textStyle?.align : align;\n const mainTitleWidth = textStyle?.width ?? maintextWidth;\n if (mainTitleAlign === 'left') {\n this._mainTitle?.setAttribute('x', 0);\n this._mainTitle?.setAttribute('textAlign', 'left');\n } else if (mainTitleAlign === 'center') {\n this._mainTitle?.setAttribute('x', mainTitleWidth / 2);\n this._mainTitle?.setAttribute('textAlign', 'center');\n } else if (mainTitleAlign === 'right') {\n this._mainTitle?.setAttribute('x', mainTitleWidth);\n this._mainTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const mainTitleVerticalAlign = textStyle?.verticalAlign ? textStyle?.verticalAlign : verticalAlign;\n const mainTitleHeight = textStyle?.height ? textStyle?.height : titleHeight;\n if (mainTitleVerticalAlign === 'top') {\n this._mainTitle?.setAttribute('y', 0);\n this._mainTitle?.setAttribute('textBaseline', 'top');\n } else if (mainTitleVerticalAlign === 'middle') {\n this._mainTitle?.setAttribute('y', mainTitleHeight / 2);\n this._mainTitle?.setAttribute('textBaseline', 'middle');\n } else if (mainTitleVerticalAlign === 'bottom') {\n this._mainTitle?.setAttribute('y', mainTitleHeight);\n this._mainTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n\n if (isValid(align) || isValid(subtextStyle?.align)) {\n const subTitleAlign = subtextStyle?.align ? subtextStyle?.align : align;\n const subTitleWidth = subtextStyle?.width ?? subtextWidth;\n if (subTitleAlign === 'left') {\n this._subTitle?.setAttribute('x', 0);\n this._subTitle?.setAttribute('textAlign', 'left');\n } else if (subTitleAlign === 'center') {\n this._subTitle?.setAttribute('x', subTitleWidth / 2);\n this._subTitle?.setAttribute('textAlign', 'center');\n } else if (subTitleAlign === 'right') {\n this._subTitle?.setAttribute('x', subTitleWidth);\n this._subTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const subTitleVerticalAlign = subtextStyle?.verticalAlign ? subtextStyle?.verticalAlign : verticalAlign;\n const subTitleYStart = maintextHeight;\n const subTitleHeight = subtextStyle?.height ?? 0;\n if (subTitleVerticalAlign === 'top') {\n this._subTitle?.setAttribute('y', subTitleYStart);\n this._subTitle?.setAttribute('textBaseline', 'top');\n } else if (subTitleVerticalAlign === 'middle') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight / 2);\n this._subTitle?.setAttribute('textBaseline', 'middle');\n } else if (subTitleVerticalAlign === 'bottom') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight);\n this._subTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n }\n}\n"]}
@@ -1,8 +1,10 @@
1
- import type { IGroupGraphicAttribute, ITextGraphicAttribute, IRichTextCharacter, RichTextWordBreak } from '@visactor/vrender-core';
1
+ import type { IGroupGraphicAttribute, ITextGraphicAttribute, IRichTextGraphicAttribute, IRichTextCharacter, RichTextWordBreak } from '@visactor/vrender-core';
2
2
  import type { Padding } from '../core/type';
3
3
  export interface TitleAttrs extends IGroupGraphicAttribute {
4
- text?: string | number | string[] | number[];
5
- subtext?: string | number | string[] | number[];
4
+ text?: string | number | string[] | number[] | IRichTextCharacter[];
5
+ textType?: string;
6
+ subtext?: string | number | string[] | number[] | IRichTextCharacter[];
7
+ subtextType?: string;
6
8
  width?: number;
7
9
  height?: number;
8
10
  minWidth?: number;
@@ -10,6 +12,8 @@ export interface TitleAttrs extends IGroupGraphicAttribute {
10
12
  minHeight?: number;
11
13
  maxHeight?: number;
12
14
  padding?: Padding;
15
+ x?: number;
16
+ y?: number;
13
17
  align?: string;
14
18
  verticalAlign?: string;
15
19
  textStyle?: {
@@ -24,7 +28,8 @@ export interface TitleAttrs extends IGroupGraphicAttribute {
24
28
  heightLimit?: number;
25
29
  lineClamp?: number;
26
30
  character?: IRichTextCharacter[];
27
- } & Partial<ITextGraphicAttribute>;
31
+ text?: string | number | string[] | number[] | IRichTextCharacter[];
32
+ } & Partial<ITextGraphicAttribute> & Partial<IRichTextGraphicAttribute>;
28
33
  subtextStyle?: {
29
34
  width?: number;
30
35
  height?: number;
@@ -37,5 +42,5 @@ export interface TitleAttrs extends IGroupGraphicAttribute {
37
42
  heightLimit?: number;
38
43
  lineClamp?: number;
39
44
  character?: IRichTextCharacter[];
40
- } & Partial<ITextGraphicAttribute>;
45
+ } & Partial<ITextGraphicAttribute> & Partial<IRichTextGraphicAttribute>;
41
46
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/title/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGroupGraphicAttribute,\n ITextGraphicAttribute,\n IRichTextCharacter,\n RichTextWordBreak\n} from '@visactor/vrender-core';\nimport type { Padding } from '../core/type';\n\nexport interface TitleAttrs extends IGroupGraphicAttribute {\n /**\n * 主标题文本内容\n */\n text?: string | number | string[] | number[];\n /**\n * 副标题文本内容\n */\n subtext?: string | number | string[] | number[];\n /**\n * 指定宽度,像素值\n */\n width?: number;\n /**\n * 指定高度,像素值\n */\n height?: number;\n /**\n * 最小宽度,像素值\n */\n minWidth?: number;\n /**\n * 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * 最小高度,像素值\n */\n minHeight?: number;\n /**\n * 最大高度,像素值\n */\n maxHeight?: number;\n /**\n * 内部边距\n */\n padding?: Padding;\n /**\n * 整体(包括 text 和 subtext)的水平对齐\n * 'left' | 'center' | 'right'\n */\n align?: string;\n /**\n * 整体(包括 text 和 subtext)的垂直对齐\n * 'top' | 'middle' | 'bottom'\n */\n verticalAlign?: string;\n /**\n * 主标题样式\n */\n textStyle?: {\n /** 指定宽度 */\n width?: number;\n /** 指定高度 */\n height?: number;\n /** 最大宽度 */\n maxWidth?: number;\n /** 最大高度 */\n maxHeight?: number;\n /**\n * 文字水平对齐方式\n * 'left' | 'center' | 'right'\n */\n align?: string;\n /**\n * 文字垂直对齐方式\n * 'top' | 'middle' | 'bottom'\n */\n verticalAlign?: string;\n /**\n * 折行方式\n * 'break-word' | 'break-all'\n */\n wordBreak?: RichTextWordBreak;\n /**\n * 按照宽度限制自动折行或显示省略号(maxLineWidth)\n * 默认设置为title宽度\n */\n maxLineWidth?: number;\n /**\n * 高度限制控制显示内容及省略号(heightLimit)\n */\n heightLimit?: number;\n /**\n * 按照行数限制显示内容及省略号(lineClamp)\n */\n lineClamp?: number;\n /**\n * 富文本配置\n */\n character?: IRichTextCharacter[];\n } & Partial<ITextGraphicAttribute>;\n /**\n * 副标题样式\n */\n subtextStyle?: {\n /** 指定宽度 */\n width?: number;\n /** 指定高度 */\n height?: number;\n /** 最大宽度 */\n maxWidth?: number;\n /** 最大高度 */\n maxHeight?: number;\n /**\n * 文字水平对齐方式\n * 'left' | 'center' | 'right'\n */\n align?: string;\n /**\n * 文字垂直对齐方式\n * 'top' | 'middle' | 'bottom'\n */\n verticalAlign?: string;\n /**\n * 折行方式\n * 'break-word' | 'break-all'\n */\n wordBreak?: RichTextWordBreak;\n /**\n * 按照宽度限制自动折行或显示省略号(maxLineWidth)\n * 默认设置为title宽度\n */\n maxLineWidth?: number;\n /**\n * 高度限制控制显示内容及省略号(heightLimit)\n */\n heightLimit?: number;\n /**\n * 按照行数限制显示内容及省略号(lineClamp)\n */\n lineClamp?: number;\n /**\n * 富文本配置\n */\n character?: IRichTextCharacter[];\n } & Partial<ITextGraphicAttribute>;\n}\n"]}
1
+ {"version":3,"sources":["../src/title/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGroupGraphicAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n IRichTextCharacter,\n RichTextWordBreak\n} from '@visactor/vrender-core';\nimport type { Padding } from '../core/type';\n\nexport interface TitleAttrs extends IGroupGraphicAttribute {\n /**\n * 主标题文本内容\n * - 支持富文本配置\n */\n text?: string | number | string[] | number[] | IRichTextCharacter[];\n /**\n * 主标题文本类型(默认类型为text)\n * text, rich, html\n */\n textType?: string;\n /**\n * 副标题文本内容\n * - 支持富文本配置\n */\n subtext?: string | number | string[] | number[] | IRichTextCharacter[];\n /**\n * 副标题文本类型(默认类型为text)\n * text, rich, html\n */\n subtextType?: string;\n /**\n * 指定宽度,像素值\n */\n width?: number;\n /**\n * 指定高度,像素值\n */\n height?: number;\n /**\n * 最小宽度,像素值\n */\n minWidth?: number;\n /**\n * 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * 最小高度,像素值\n */\n minHeight?: number;\n /**\n * 最大高度,像素值\n */\n maxHeight?: number;\n /**\n * 内部边距\n */\n padding?: Padding;\n /**\n * x方向偏移量\n */\n x?: number;\n /**\n * y方向偏移量\n */\n y?: number;\n /**\n * 整体(包括 text 和 subtext)的水平对齐\n * 'left' | 'center' | 'right'\n */\n align?: string;\n /**\n * 整体(包括 text 和 subtext)的垂直对齐\n * 'top' | 'middle' | 'bottom'\n */\n verticalAlign?: string;\n /**\n * 主标题样式\n */\n textStyle?: {\n /** 指定宽度 */\n width?: number;\n /** 指定高度 */\n height?: number;\n /** 最大宽度 */\n maxWidth?: number;\n /** 最大高度 */\n maxHeight?: number;\n /**\n * 文字水平对齐方式\n * 'left' | 'center' | 'right'\n */\n align?: string;\n /**\n * 文字垂直对齐方式\n * 'top' | 'middle' | 'bottom'\n */\n verticalAlign?: string;\n /**\n * 折行方式\n * 'break-word' | 'break-all'\n */\n wordBreak?: RichTextWordBreak;\n /**\n * 按照宽度限制自动折行或显示省略号(maxLineWidth)\n * 默认设置为title宽度\n */\n maxLineWidth?: number;\n /**\n * 高度限制控制显示内容及省略号(heightLimit)\n */\n heightLimit?: number;\n /**\n * 按照行数限制显示内容及省略号(lineClamp)\n */\n lineClamp?: number;\n /**\n * 富文本配置(暂时保留旧设置)\n */\n character?: IRichTextCharacter[];\n /**\n * text兼容IText和IRichtext\n */\n text?: string | number | string[] | number[] | IRichTextCharacter[];\n } & Partial<ITextGraphicAttribute> &\n Partial<IRichTextGraphicAttribute>;\n /**\n * 副标题样式\n */\n subtextStyle?: {\n /** 指定宽度 */\n width?: number;\n /** 指定高度 */\n height?: number;\n /** 最大宽度 */\n maxWidth?: number;\n /** 最大高度 */\n maxHeight?: number;\n /**\n * 文字水平对齐方式\n * 'left' | 'center' | 'right'\n */\n align?: string;\n /**\n * 文字垂直对齐方式\n * 'top' | 'middle' | 'bottom'\n */\n verticalAlign?: string;\n /**\n * 折行方式\n * 'break-word' | 'break-all'\n */\n wordBreak?: RichTextWordBreak;\n /**\n * 按照宽度限制自动折行或显示省略号(maxLineWidth)\n * 默认设置为title宽度\n */\n maxLineWidth?: number;\n /**\n * 高度限制控制显示内容及省略号(heightLimit)\n */\n heightLimit?: number;\n /**\n * 按照行数限制显示内容及省略号(lineClamp)\n */\n lineClamp?: number;\n /**\n * 富文本配置(暂时保留旧设置)\n */\n character?: IRichTextCharacter[];\n } & Partial<ITextGraphicAttribute> &\n Partial<IRichTextGraphicAttribute>;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { builtinSymbolsMap } from "@visactor/vrender-core";
1
+ import { builtinSymbolsMap, calculateLineHeight } from "@visactor/vrender-core";
2
2
 
3
3
  import { merge, isValid, normalizePadding, isNil } from "@visactor/vutils";
4
4
 
@@ -12,6 +12,8 @@ import { getRichTextAttribute, mergeRowAttrs } from "./util";
12
12
 
13
13
  import { defaultAttributes, TOOLTIP_POSITION_ATTRIBUTES } from "./config";
14
14
 
15
+ import { DEFAULT_HTML_TEXT_SPEC } from "../constant";
16
+
15
17
  const TOOLTIP_BACKGROUND_NAME = "tooltip-background", TOOLTIP_TITLE_NAME = "tooltip-title", TOOLTIP_CONTENT_NAME = "tooltip-content", TOOLTIP_SHAPE_NAME_SUFFIX = "shape", TOOLTIP_KEY_NAME_SUFFIX = "key", TOOLTIP_VALUE_NAME_SUFFIX = "value";
16
18
 
17
19
  export class Tooltip extends AbstractComponent {
@@ -19,6 +21,7 @@ export class Tooltip extends AbstractComponent {
19
21
  super(merge({}, Tooltip.defaultAttributes, attributes)), this.name = "tooltip";
20
22
  }
21
23
  render() {
24
+ var _a;
22
25
  const {visible: visible, content: content, panel: panel, keyWidth: keyWidth, valueWidth: valueWidth, hasContentShape: hasContentShape, autoCalculatePosition: autoCalculatePosition, autoMeasure: autoMeasure} = this.attribute;
23
26
  if (!visible) return void this.hideAll();
24
27
  autoMeasure && Tooltip.measureTooltip(this.attribute), autoCalculatePosition && Tooltip.calculateTooltipPosition(this.attribute);
@@ -35,12 +38,26 @@ export class Tooltip extends AbstractComponent {
35
38
  symbolType: "circle"
36
39
  }, titleAttr.shape, {
37
40
  visible: isVisible(titleAttr) && isVisible(titleAttr.shape)
38
- }), "symbol"), titleAttr.value.multiLine ? this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild("tooltip-title-value", Object.assign({
41
+ }), "symbol"), "object" != typeof titleAttr.value.text || null === titleAttr.value.text || "rich" !== titleAttr.value.text.type && "html" !== titleAttr.value.text.type ? titleAttr.value.multiLine ? this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild("tooltip-title-value", Object.assign({
39
42
  visible: isVisible(titleAttr) && isVisible(titleAttr.value)
40
43
  }, getRichTextAttribute(titleAttr.value)), "richtext") : this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild("tooltip-title-value", Object.assign({
41
- text: "",
44
+ text: null !== (_a = titleAttr.value.text) && void 0 !== _a ? _a : "",
45
+ visible: isVisible(titleAttr) && isVisible(titleAttr.value)
46
+ }, titleAttr.value), "text") : "rich" === titleAttr.value.text.type ? this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild("tooltip-title-value", Object.assign({
42
47
  visible: isVisible(titleAttr) && isVisible(titleAttr.value)
43
- }, titleAttr.value), "text");
48
+ }, getRichTextAttribute(titleAttr.value)), "richtext") : "html" === titleAttr.value.text.type && (this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild("tooltip-title-value", Object.assign({
49
+ html: Object.assign(Object.assign({
50
+ dom: titleAttr.value.text.text
51
+ }, DEFAULT_HTML_TEXT_SPEC), titleAttr.value),
52
+ visible: isVisible(titleAttr) && isVisible(titleAttr.value),
53
+ width: titleAttr.value.width,
54
+ height: titleAttr.value.height,
55
+ wordBreak: titleAttr.value.wordBreak,
56
+ textAlign: titleAttr.value.textAlign,
57
+ textBaseline: titleAttr.value.textBaseline,
58
+ singleLine: !1,
59
+ textConfig: []
60
+ }, titleAttr.value), "richtext"));
44
61
  const titlePaddingLeft = isVisible(titleAttr.shape) ? titleAttr.shape.size + titleAttr.shape.spacing : 0, {textAlign: textAlign, textBaseline: textBaseline} = titleAttr.value, contentWidth = panel.width - padding[3] - padding[0] - titlePaddingLeft;
45
62
  "center" === textAlign ? this._tooltipTitle.setAttribute("x", titlePaddingLeft + contentWidth / 2) : "right" === textAlign || "end" === textAlign ? this._tooltipTitle.setAttribute("x", titlePaddingLeft + contentWidth) : this._tooltipTitle.setAttribute("x", titlePaddingLeft),
46
63
  "bottom" === textBaseline ? this._tooltipTitle.setAttribute("y", titleAttr.height) : "middle" === textBaseline ? this._tooltipTitle.setAttribute("y", titleAttr.height / 2) : this._tooltipTitle.setAttribute("y", 0);
@@ -51,7 +68,7 @@ export class Tooltip extends AbstractComponent {
51
68
  this._tooltipContent.setAttribute("x", padding[3]), this._tooltipContent.setAttribute("y", padding[0] + titleHeight);
52
69
  let lastYPos = 0;
53
70
  content.forEach(((item, i) => {
54
- var _a;
71
+ var _a, _b, _c;
55
72
  const itemAttr = Tooltip.getContentAttr(this.attribute, i);
56
73
  if (!isVisible(itemAttr)) return;
57
74
  const itemGroupName = `tooltip-content-${i}`, itemGroup = this._tooltipContent.createOrUpdateChild(itemGroupName, {
@@ -63,7 +80,7 @@ export class Tooltip extends AbstractComponent {
63
80
  if (isVisible(itemAttr.shape) && itemGroup.createOrUpdateChild(`${itemGroupName}-shape`, Object.assign({
64
81
  visible: !0,
65
82
  x: itemAttr.shape.size / 2,
66
- y: itemAttr.shape.size / 2 + ((null !== (_a = itemAttr.key.lineHeight) && void 0 !== _a ? _a : itemAttr.key.fontSize) - itemAttr.shape.size) / 2
83
+ y: itemAttr.shape.size / 2 + ((null !== (_a = calculateLineHeight(itemAttr.key.lineHeight, itemAttr.key.fontSize)) && void 0 !== _a ? _a : itemAttr.key.fontSize) - itemAttr.shape.size) / 2
67
84
  }, itemAttr.shape), "symbol"), hasContentShape && (x += itemAttr.shape.size + itemAttr.shape.spacing),
68
85
  isVisible(itemAttr.key)) {
69
86
  let element;
@@ -71,11 +88,20 @@ export class Tooltip extends AbstractComponent {
71
88
  visible: !0
72
89
  }, getRichTextAttribute(itemAttr.key)), {
73
90
  textBaseline: "top"
74
- }), "richtext") : itemGroup.createOrUpdateChild(`${itemGroupName}-key`, Object.assign(Object.assign({
75
- visible: !0
91
+ }), "richtext") : "object" != typeof itemAttr.key.text || null === itemAttr.key.text || "rich" !== itemAttr.key.text.type && "html" !== itemAttr.key.text.type ? itemGroup.createOrUpdateChild(`${itemGroupName}-key`, Object.assign(Object.assign({
92
+ visible: !0,
93
+ text: null !== (_b = itemAttr.key.text) && void 0 !== _b ? _b : ""
76
94
  }, itemAttr.key), {
77
95
  textBaseline: "top"
78
- }), "text");
96
+ }), "text") : "rich" === itemAttr.key.text.type ? itemGroup.createOrUpdateChild(`${itemGroupName}-value`, Object.assign(Object.assign({
97
+ visible: !0
98
+ }, getRichTextAttribute(itemAttr.key)), {
99
+ textBaseline: "top"
100
+ }), "richtext") : itemGroup.createOrUpdateChild(`${itemGroupName}-value`, {
101
+ html: Object.assign(Object.assign({
102
+ dom: itemAttr.key.text.text
103
+ }, DEFAULT_HTML_TEXT_SPEC), itemAttr.key)
104
+ }, "richtext");
79
105
  const {textAlign: textAlign} = itemAttr.key;
80
106
  "center" === textAlign ? element.setAttribute("x", x + keyWidth / 2) : "right" === textAlign || "end" === textAlign ? element.setAttribute("x", x + keyWidth) : element.setAttribute("x", x),
81
107
  element.setAttribute("y", 0), x += keyWidth + itemAttr.key.spacing;
@@ -86,11 +112,24 @@ export class Tooltip extends AbstractComponent {
86
112
  visible: !0
87
113
  }, getRichTextAttribute(itemAttr.value)), {
88
114
  textBaseline: "top"
89
- }), "richtext") : itemGroup.createOrUpdateChild(`${itemGroupName}-value`, Object.assign(Object.assign({
90
- visible: !0
115
+ }), "richtext") : "object" != typeof itemAttr.value.text || null === itemAttr.value.text || "rich" !== itemAttr.value.text.type && "html" !== itemAttr.value.text.type ? itemGroup.createOrUpdateChild(`${itemGroupName}-value`, Object.assign(Object.assign({
116
+ visible: !0,
117
+ text: null !== (_c = itemAttr.value.text) && void 0 !== _c ? _c : ""
91
118
  }, itemAttr.value), {
92
119
  textBaseline: "top"
93
- }), "text");
120
+ }), "text") : "rich" === itemAttr.value.text.type ? itemGroup.createOrUpdateChild(`${itemGroupName}-value`, Object.assign(Object.assign({
121
+ visible: !0
122
+ }, getRichTextAttribute(itemAttr.value)), {
123
+ textBaseline: "top"
124
+ }), "richtext") : itemGroup.createOrUpdateChild(`${itemGroupName}-value`, {
125
+ html: Object.assign({
126
+ dom: itemAttr.value.text.text,
127
+ container: "",
128
+ width: 30,
129
+ height: 30,
130
+ style: {}
131
+ }, itemAttr.value)
132
+ }, "richtext");
94
133
  let textAlign = "right";
95
134
  isValid(itemAttr.value.textAlign) ? textAlign = itemAttr.value.textAlign : isVisible(itemAttr.key) || (textAlign = "left"),
96
135
  element.setAttribute("textAlign", textAlign), "center" === textAlign ? element.setAttribute("x", x + valueWidth / 2) : "right" === textAlign || "end" === textAlign ? element.setAttribute("x", x + valueWidth) : element.setAttribute("x", x),
@@ -122,7 +161,7 @@ export class Tooltip extends AbstractComponent {
122
161
  const {content: content, contentStyle: contentStyle} = attribute, padding = normalizePadding(attribute.padding), titleAttr = Tooltip.getTitleAttr(attribute);
123
162
  let maxWidth = 0, containerHeight = padding[0] + padding[2], titleMaxHeight = 0;
124
163
  const {value: titleValue, shape: titleShape} = titleAttr, {visible: titleHasShape = !1, symbolType: titleShapeType = ""} = null != titleShape ? titleShape : {};
125
- if (isValid(titleValue)) {
164
+ if (isValid(titleValue) && "object" != typeof titleAttr.value.text) {
126
165
  const {width: width, height: height} = initTextMeasure(titleValue).quickMeasure(titleValue.text);
127
166
  maxWidth = width, titleMaxHeight = height;
128
167
  }