@visactor/vrender-core 0.21.0-alpha.1 → 0.21.0-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 (260) hide show
  1. package/cjs/animate/Ticker/default-ticker.d.ts +4 -2
  2. package/cjs/animate/Ticker/default-ticker.js +8 -5
  3. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  4. package/cjs/animate/custom-animate.d.ts +2 -0
  5. package/cjs/animate/custom-animate.js +11 -2
  6. package/cjs/animate/custom-animate.js.map +1 -1
  7. package/cjs/common/path-svg.js +3 -3
  8. package/cjs/common/path-svg.js.map +1 -1
  9. package/cjs/common/simplify.js +2 -3
  10. package/cjs/common/simplify.js.map +1 -1
  11. package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +56 -4
  12. package/cjs/core/contributions/textMeasure/AtextMeasure.js +119 -18
  13. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  14. package/cjs/core/contributions/textMeasure/layout.d.ts +8 -3
  15. package/cjs/core/contributions/textMeasure/layout.js +45 -40
  16. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  17. package/cjs/core/stage.d.ts +5 -0
  18. package/cjs/core/stage.js +20 -7
  19. package/cjs/core/stage.js.map +1 -1
  20. package/cjs/core/window.js +3 -2
  21. package/cjs/core/window.js.map +1 -1
  22. package/cjs/event/event-manager.d.ts +1 -0
  23. package/cjs/event/event-manager.js +1 -1
  24. package/cjs/event/event-manager.js.map +1 -1
  25. package/cjs/event/event-system.js +2 -1
  26. package/cjs/event/event-system.js.map +1 -1
  27. package/cjs/graphic/builtin-symbol/arrow.js +2 -2
  28. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  29. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -2
  30. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  31. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -2
  32. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  33. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -2
  34. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  35. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -2
  36. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  37. package/cjs/graphic/builtin-symbol/base.d.ts +1 -0
  38. package/cjs/graphic/builtin-symbol/base.js +3 -0
  39. package/cjs/graphic/builtin-symbol/base.js.map +1 -1
  40. package/cjs/graphic/builtin-symbol/circle.js +3 -3
  41. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  42. package/cjs/graphic/builtin-symbol/close.js +3 -3
  43. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  44. package/cjs/graphic/builtin-symbol/cross.js +2 -2
  45. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  46. package/cjs/graphic/builtin-symbol/diamond.js +3 -3
  47. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  48. package/cjs/graphic/builtin-symbol/line-h.js +3 -3
  49. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  50. package/cjs/graphic/builtin-symbol/line-v.js +3 -3
  51. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  52. package/cjs/graphic/builtin-symbol/square.js +2 -2
  53. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  54. package/cjs/graphic/builtin-symbol/star.js +2 -2
  55. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  56. package/cjs/graphic/builtin-symbol/stroke.js +2 -2
  57. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  58. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -2
  59. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  60. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -2
  61. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  62. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -2
  63. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  64. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -2
  65. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  66. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -2
  67. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  68. package/cjs/graphic/builtin-symbol/utils.d.ts +1 -0
  69. package/cjs/graphic/builtin-symbol/utils.js +6 -3
  70. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  71. package/cjs/graphic/builtin-symbol/wedge.js +2 -2
  72. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  73. package/cjs/graphic/builtin-symbol/wye.js +2 -2
  74. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  75. package/cjs/graphic/config.d.ts +1 -1
  76. package/cjs/graphic/config.js +9 -3
  77. package/cjs/graphic/config.js.map +1 -1
  78. package/cjs/graphic/richtext/paragraph.js +3 -1
  79. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  80. package/cjs/graphic/text.d.ts +11 -11
  81. package/cjs/graphic/text.js +104 -170
  82. package/cjs/graphic/text.js.map +1 -1
  83. package/cjs/graphic/wrap-text.js +16 -4
  84. package/cjs/graphic/wrap-text.js.map +1 -1
  85. package/cjs/interface/animate.d.ts +3 -1
  86. package/cjs/interface/animate.js.map +1 -1
  87. package/cjs/interface/context.d.ts +1 -0
  88. package/cjs/interface/context.js.map +1 -1
  89. package/cjs/interface/graphic/text.d.ts +11 -3
  90. package/cjs/interface/graphic/text.js +6 -1
  91. package/cjs/interface/graphic/text.js.map +1 -1
  92. package/cjs/interface/graphic.d.ts +2 -0
  93. package/cjs/interface/graphic.js.map +1 -1
  94. package/cjs/interface/stage.d.ts +2 -0
  95. package/cjs/interface/stage.js.map +1 -1
  96. package/cjs/interface/text.d.ts +9 -1
  97. package/cjs/interface/text.js.map +1 -1
  98. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.d.ts +16 -0
  99. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.js +48 -0
  100. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.js.map +1 -0
  101. package/cjs/render/contributions/render/arc-render.js +30 -18
  102. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  103. package/cjs/render/contributions/render/area-render.js +40 -36
  104. package/cjs/render/contributions/render/area-render.js.map +1 -1
  105. package/cjs/render/contributions/render/circle-render.js +10 -5
  106. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  107. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +2 -2
  108. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  109. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +2 -2
  110. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  111. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +2 -2
  112. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  113. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +2 -2
  114. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  115. package/cjs/render/contributions/render/group-render.js +10 -5
  116. package/cjs/render/contributions/render/group-render.js.map +1 -1
  117. package/cjs/render/contributions/render/image-render.js +26 -22
  118. package/cjs/render/contributions/render/image-render.js.map +1 -1
  119. package/cjs/render/contributions/render/path-render.js +10 -5
  120. package/cjs/render/contributions/render/path-render.js.map +1 -1
  121. package/cjs/render/contributions/render/polygon-render.js +10 -5
  122. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  123. package/cjs/render/contributions/render/rect-render.js +10 -5
  124. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  125. package/cjs/render/contributions/render/symbol-render.js +18 -8
  126. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  127. package/cjs/render/contributions/render/text-render.d.ts +1 -1
  128. package/cjs/render/contributions/render/text-render.js +24 -46
  129. package/cjs/render/contributions/render/text-render.js.map +1 -1
  130. package/dist/index.es.js +1020 -818
  131. package/es/animate/Ticker/default-ticker.d.ts +4 -2
  132. package/es/animate/Ticker/default-ticker.js +9 -6
  133. package/es/animate/Ticker/default-ticker.js.map +1 -1
  134. package/es/animate/custom-animate.d.ts +2 -0
  135. package/es/animate/custom-animate.js +11 -2
  136. package/es/animate/custom-animate.js.map +1 -1
  137. package/es/common/path-svg.js +3 -3
  138. package/es/common/path-svg.js.map +1 -1
  139. package/es/common/simplify.js +2 -3
  140. package/es/common/simplify.js.map +1 -1
  141. package/es/core/contributions/textMeasure/AtextMeasure.d.ts +56 -4
  142. package/es/core/contributions/textMeasure/AtextMeasure.js +122 -17
  143. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  144. package/es/core/contributions/textMeasure/layout.d.ts +8 -3
  145. package/es/core/contributions/textMeasure/layout.js +45 -40
  146. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  147. package/es/core/stage.d.ts +5 -0
  148. package/es/core/stage.js +21 -6
  149. package/es/core/stage.js.map +1 -1
  150. package/es/core/window.js +3 -1
  151. package/es/core/window.js.map +1 -1
  152. package/es/event/event-manager.d.ts +1 -0
  153. package/es/event/event-manager.js +1 -1
  154. package/es/event/event-manager.js.map +1 -1
  155. package/es/event/event-system.js +2 -1
  156. package/es/event/event-system.js.map +1 -1
  157. package/es/graphic/builtin-symbol/arrow.js +2 -2
  158. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  159. package/es/graphic/builtin-symbol/arrow2-down.js +2 -2
  160. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  161. package/es/graphic/builtin-symbol/arrow2-left.js +2 -2
  162. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  163. package/es/graphic/builtin-symbol/arrow2-right.js +2 -2
  164. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  165. package/es/graphic/builtin-symbol/arrow2-up.js +2 -2
  166. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  167. package/es/graphic/builtin-symbol/base.d.ts +1 -0
  168. package/es/graphic/builtin-symbol/base.js +3 -0
  169. package/es/graphic/builtin-symbol/base.js.map +1 -1
  170. package/es/graphic/builtin-symbol/circle.js +3 -3
  171. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  172. package/es/graphic/builtin-symbol/close.js +3 -3
  173. package/es/graphic/builtin-symbol/close.js.map +1 -1
  174. package/es/graphic/builtin-symbol/cross.js +2 -2
  175. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  176. package/es/graphic/builtin-symbol/diamond.js +3 -3
  177. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  178. package/es/graphic/builtin-symbol/line-h.js +3 -3
  179. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  180. package/es/graphic/builtin-symbol/line-v.js +3 -3
  181. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  182. package/es/graphic/builtin-symbol/square.js +2 -2
  183. package/es/graphic/builtin-symbol/square.js.map +1 -1
  184. package/es/graphic/builtin-symbol/star.js +2 -2
  185. package/es/graphic/builtin-symbol/star.js.map +1 -1
  186. package/es/graphic/builtin-symbol/stroke.js +2 -2
  187. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  188. package/es/graphic/builtin-symbol/thin-triangle.js +2 -2
  189. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  190. package/es/graphic/builtin-symbol/triangle-down.js +2 -2
  191. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  192. package/es/graphic/builtin-symbol/triangle-left.js +2 -2
  193. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  194. package/es/graphic/builtin-symbol/triangle-right.js +2 -2
  195. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  196. package/es/graphic/builtin-symbol/triangle-up.js +2 -2
  197. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  198. package/es/graphic/builtin-symbol/utils.d.ts +1 -0
  199. package/es/graphic/builtin-symbol/utils.js +7 -4
  200. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  201. package/es/graphic/builtin-symbol/wedge.js +2 -2
  202. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  203. package/es/graphic/builtin-symbol/wye.js +2 -2
  204. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  205. package/es/graphic/config.d.ts +1 -1
  206. package/es/graphic/config.js +10 -2
  207. package/es/graphic/config.js.map +1 -1
  208. package/es/graphic/richtext/paragraph.js +4 -2
  209. package/es/graphic/richtext/paragraph.js.map +1 -1
  210. package/es/graphic/text.d.ts +11 -11
  211. package/es/graphic/text.js +103 -165
  212. package/es/graphic/text.js.map +1 -1
  213. package/es/graphic/wrap-text.js +16 -4
  214. package/es/graphic/wrap-text.js.map +1 -1
  215. package/es/interface/animate.d.ts +3 -1
  216. package/es/interface/animate.js.map +1 -1
  217. package/es/interface/context.d.ts +1 -0
  218. package/es/interface/context.js.map +1 -1
  219. package/es/interface/graphic/text.d.ts +11 -3
  220. package/es/interface/graphic/text.js +6 -1
  221. package/es/interface/graphic/text.js.map +1 -1
  222. package/es/interface/graphic.d.ts +2 -0
  223. package/es/interface/graphic.js.map +1 -1
  224. package/es/interface/stage.d.ts +2 -0
  225. package/es/interface/stage.js.map +1 -1
  226. package/es/interface/text.d.ts +9 -1
  227. package/es/interface/text.js.map +1 -1
  228. package/es/plugins/builtin-plugin/auto-refresh-plugin.d.ts +16 -0
  229. package/es/plugins/builtin-plugin/auto-refresh-plugin.js +41 -0
  230. package/es/plugins/builtin-plugin/auto-refresh-plugin.js.map +1 -0
  231. package/es/render/contributions/render/arc-render.js +30 -18
  232. package/es/render/contributions/render/arc-render.js.map +1 -1
  233. package/es/render/contributions/render/area-render.js +40 -36
  234. package/es/render/contributions/render/area-render.js.map +1 -1
  235. package/es/render/contributions/render/circle-render.js +10 -5
  236. package/es/render/contributions/render/circle-render.js.map +1 -1
  237. package/es/render/contributions/render/contributions/arc-contribution-render.js +2 -2
  238. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  239. package/es/render/contributions/render/contributions/circle-contribution-render.js +2 -2
  240. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  241. package/es/render/contributions/render/contributions/rect-contribution-render.js +2 -2
  242. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  243. package/es/render/contributions/render/contributions/symbol-contribution-render.js +2 -2
  244. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  245. package/es/render/contributions/render/group-render.js +10 -5
  246. package/es/render/contributions/render/group-render.js.map +1 -1
  247. package/es/render/contributions/render/image-render.js +26 -22
  248. package/es/render/contributions/render/image-render.js.map +1 -1
  249. package/es/render/contributions/render/path-render.js +10 -5
  250. package/es/render/contributions/render/path-render.js.map +1 -1
  251. package/es/render/contributions/render/polygon-render.js +10 -5
  252. package/es/render/contributions/render/polygon-render.js.map +1 -1
  253. package/es/render/contributions/render/rect-render.js +10 -5
  254. package/es/render/contributions/render/rect-render.js.map +1 -1
  255. package/es/render/contributions/render/symbol-render.js +18 -8
  256. package/es/render/contributions/render/symbol-render.js.map +1 -1
  257. package/es/render/contributions/render/text-render.d.ts +1 -1
  258. package/es/render/contributions/render/text-render.js +23 -45
  259. package/es/render/contributions/render/text-render.js.map +1 -1
  260. package/package.json +4 -3
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.createText = exports.Text = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), text_1 = require("../common/text"), layout_1 = require("../core/contributions/textMeasure/layout"), application_1 = require("../application"), graphic_1 = require("./graphic"), theme_1 = require("./theme"), utils_1 = require("../common/utils"), constants_1 = require("./constants"), tools_1 = require("./tools"), TEXT_UPDATE_TAG_KEY = [ "text", "maxLineWidth", "textAlign", "textBaseline", "heightLimit", "lineClamp", "fontSize", "fontFamily", "fontWeight", "ellipsis", "lineHeight", "direction", "wordBreak", "heightLimit", "lineClamp", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
7
+ const vutils_1 = require("@visactor/vutils"), text_1 = require("../common/text"), layout_1 = require("../core/contributions/textMeasure/layout"), application_1 = require("../application"), graphic_1 = require("./graphic"), theme_1 = require("./theme"), utils_1 = require("../common/utils"), constants_1 = require("./constants"), tools_1 = require("./tools"), TEXT_UPDATE_TAG_KEY = [ "text", "maxLineWidth", "maxWidth", "textAlign", "textBaseline", "heightLimit", "lineClamp", "fontSize", "fontFamily", "fontWeight", "ellipsis", "lineHeight", "direction", "wordBreak", "heightLimit", "lineClamp", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
8
8
 
9
9
  class Text extends graphic_1.Graphic {
10
10
  get font() {
@@ -14,18 +14,17 @@ class Text extends graphic_1.Graphic {
14
14
  }
15
15
  get clipedText() {
16
16
  var _a;
17
- const attribute = this.attribute, textTheme = this.getGraphicTheme();
18
- if (!this.isSimplify()) return;
19
- const {maxLineWidth: maxLineWidth = textTheme.maxLineWidth} = attribute;
20
- return Number.isFinite(maxLineWidth) ? (this.tryUpdateAABBBounds(), this.cache.clipedText) : (null !== (_a = attribute.text) && void 0 !== _a ? _a : textTheme.text).toString();
17
+ const attribute = this.attribute, textTheme = this.getGraphicTheme(), maxWidth = this.getMaxWidth(textTheme);
18
+ return Number.isFinite(maxWidth) ? (this.tryUpdateAABBBounds(), this.cache.clipedText) : (null !== (_a = attribute.text) && void 0 !== _a ? _a : textTheme.text).toString();
21
19
  }
22
20
  get clipedWidth() {
23
- if (this.isSimplify()) return this.tryUpdateAABBBounds(), this.cache.clipedWidth;
21
+ return this.tryUpdateAABBBounds(), this.cache.clipedWidth;
24
22
  }
25
23
  get cliped() {
26
24
  var _a, _b;
27
- const textTheme = this.getGraphicTheme(), attribute = this.attribute, {maxLineWidth: maxLineWidth = textTheme.maxLineWidth, text: text, whiteSpace: whiteSpace = textTheme.whiteSpace} = attribute;
28
- if (!Number.isFinite(maxLineWidth)) return !1;
25
+ const textTheme = this.getGraphicTheme(), attribute = this.attribute, maxWidth = this.getMaxWidth(textTheme);
26
+ if (!Number.isFinite(maxWidth)) return !1;
27
+ const {text: text} = this.attribute;
29
28
  if (this.tryUpdateAABBBounds(), null === (_b = null === (_a = this.cache) || void 0 === _a ? void 0 : _a.layoutData) || void 0 === _b ? void 0 : _b.lines) {
30
29
  let mergedText = "";
31
30
  this.cache.layoutData.lines.forEach((item => {
@@ -36,10 +35,7 @@ class Text extends graphic_1.Graphic {
36
35
  return "vertical" === attribute.direction && this.cache.verticalList && this.cache.verticalList[0] ? this.cache.verticalList[0].map((item => item.text)).join("") !== attribute.text.toString() : null != this.clipedText && this.clipedText !== attribute.text.toString();
37
36
  }
38
37
  get multilineLayout() {
39
- if (this.isMultiLine) return this.tryUpdateAABBBounds(), this.cache.layoutData;
40
- }
41
- isSimplify() {
42
- return !this.isMultiLine && "vertical" !== this.attribute.direction;
38
+ return this.tryUpdateAABBBounds(), this.cache.layoutData;
43
39
  }
44
40
  get isMultiLine() {
45
41
  return Array.isArray(this.attribute.text) || "normal" === this.attribute.whiteSpace;
@@ -95,20 +91,61 @@ class Text extends graphic_1.Graphic {
95
91
  (0, vutils_1.transformBoundsWithMatrix)(aabbBounds, aabbBounds, this.transMatrix),
96
92
  aabbBounds;
97
93
  }
94
+ updateSingallineAABBBounds(text) {
95
+ this.updateMultilineAABBBounds([ text ]);
96
+ const layoutData = this.cache.layoutData;
97
+ if (layoutData) {
98
+ const line = layoutData.lines[0];
99
+ this.cache.clipedText = line.str, this.cache.clipedWidth = line.width;
100
+ }
101
+ return this._AABBBounds;
102
+ }
103
+ updateMultilineAABBBounds(text) {
104
+ const textTheme = this.getGraphicTheme(), {direction: direction = textTheme.direction, underlineOffset: underlineOffset = textTheme.underlineOffset} = this.attribute, b = "horizontal" === direction ? this.updateHorizontalMultilineAABBBounds(text) : this.updateVerticalMultilineAABBBounds(text);
105
+ return "horizontal" === direction && underlineOffset && this._AABBBounds.add(this._AABBBounds.x1, this._AABBBounds.y2 + underlineOffset),
106
+ b;
107
+ }
108
+ guessLineHeightBuf(fontSize) {
109
+ return fontSize ? .1 * fontSize : 0;
110
+ }
111
+ updateHorizontalMultilineAABBBounds(text) {
112
+ var _a;
113
+ const textTheme = this.getGraphicTheme(), attribute = this.attribute, {fontFamily: fontFamily = textTheme.fontFamily, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontSize: fontSize = textTheme.fontSize, fontWeight: fontWeight = textTheme.fontWeight, ellipsis: ellipsis = textTheme.ellipsis, maxLineWidth: maxLineWidth, stroke: stroke = textTheme.stroke, wrap: wrap = textTheme.wrap, measureMode: measureMode = textTheme.measureMode, lineWidth: lineWidth = textTheme.lineWidth, whiteSpace: whiteSpace = textTheme.whiteSpace, suffixPosition: suffixPosition = textTheme.suffixPosition, ignoreBuf: ignoreBuf = textTheme.ignoreBuf, keepCenterInLine: keepCenterInLine = textTheme.keepCenterInLine} = attribute, buf = ignoreBuf ? 0 : this.guessLineHeightBuf(fontSize), lineHeight = this.getLineHeight(attribute, textTheme) + buf;
114
+ if ("normal" === whiteSpace || wrap) return this.updateWrapAABBBounds(text);
115
+ if (!this.shouldUpdateShape() && (null === (_a = this.cache) || void 0 === _a ? void 0 : _a.layoutData)) {
116
+ const bbox = this.cache.layoutData.bbox;
117
+ return this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
118
+ stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
119
+ }
120
+ const textMeasure = application_1.application.graphicUtil.textMeasure, layoutData = new layout_1.CanvasTextLayout(fontFamily, {
121
+ fontSize: fontSize,
122
+ fontWeight: fontWeight,
123
+ fontFamily: fontFamily,
124
+ lineHeight: lineHeight
125
+ }, textMeasure).GetLayoutByLines(text, textAlign, textBaseline, lineHeight, !0 === ellipsis ? textTheme.ellipsis : ellipsis || void 0, !1, {
126
+ lineWidth: maxLineWidth,
127
+ suffixPosition: suffixPosition,
128
+ measureMode: measureMode,
129
+ keepCenterInLine: keepCenterInLine
130
+ }), {bbox: bbox} = layoutData;
131
+ return this.cache.layoutData = layoutData, this.clearUpdateShapeTag(), this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
132
+ stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
133
+ }
98
134
  updateWrapAABBBounds(text) {
99
- var _a, _b, _c, _d;
100
- const textTheme = this.getGraphicTheme(), {fontFamily: fontFamily = textTheme.fontFamily, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontSize: fontSize = textTheme.fontSize, ellipsis: ellipsis = textTheme.ellipsis, maxLineWidth: maxLineWidth, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, wordBreak: wordBreak = textTheme.wordBreak, fontWeight: fontWeight = textTheme.fontWeight, ignoreBuf: ignoreBuf = textTheme.ignoreBuf, suffixPosition: suffixPosition = textTheme.suffixPosition, heightLimit: heightLimit = 0, lineClamp: lineClamp} = this.attribute, lineHeight = null !== (_a = (0,
101
- utils_1.calculateLineHeight)(this.attribute.lineHeight, this.attribute.fontSize || textTheme.fontSize)) && void 0 !== _a ? _a : this.attribute.fontSize || textTheme.fontSize, buf = ignoreBuf ? 0 : 2;
102
- if (!this.shouldUpdateShape() && (null === (_b = this.cache) || void 0 === _b ? void 0 : _b.layoutData)) {
135
+ var _a, _b, _c;
136
+ const textTheme = this.getGraphicTheme(), {fontFamily: fontFamily = textTheme.fontFamily, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontSize: fontSize = textTheme.fontSize, ellipsis: ellipsis = textTheme.ellipsis, maxLineWidth: maxLineWidth, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, wordBreak: wordBreak = textTheme.wordBreak, fontWeight: fontWeight = textTheme.fontWeight, ignoreBuf: ignoreBuf = textTheme.ignoreBuf, measureMode: measureMode = textTheme.measureMode, suffixPosition: suffixPosition = textTheme.suffixPosition, heightLimit: heightLimit = 0, lineClamp: lineClamp, keepCenterInLine: keepCenterInLine = textTheme.keepCenterInLine} = this.attribute, buf = ignoreBuf ? 0 : this.guessLineHeightBuf(fontSize), lineHeight = this.getLineHeight(this.attribute, textTheme) + buf;
137
+ if (!this.shouldUpdateShape() && (null === (_a = this.cache) || void 0 === _a ? void 0 : _a.layoutData)) {
103
138
  const bbox = this.cache.layoutData.bbox;
104
139
  return this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
105
140
  stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
106
141
  }
107
- const textMeasure = application_1.application.graphicUtil.textMeasure, layoutObj = new layout_1.CanvasTextLayout(fontFamily, {
142
+ const textMeasure = application_1.application.graphicUtil.textMeasure, textOptions = {
108
143
  fontSize: fontSize,
109
144
  fontWeight: fontWeight,
110
- fontFamily: fontFamily
111
- }, textMeasure), lines = (0, vutils_1.isArray)(text) ? text.map((l => l.toString())) : [ text.toString() ], linesLayout = [], bboxWH = [ 0, 0 ];
145
+ fontFamily: fontFamily,
146
+ lineHeight: lineHeight
147
+ }, layoutObj = new layout_1.CanvasTextLayout(fontFamily, textOptions, textMeasure), lines = (0,
148
+ vutils_1.isArray)(text) ? text.map((l => l.toString())) : [ text.toString() ], linesLayout = [], bboxWH = [ 0, 0 ];
112
149
  let lineCountLimit = 1 / 0;
113
150
  if (heightLimit > 0 && (lineCountLimit = Math.max(Math.floor(heightLimit / lineHeight), 1)),
114
151
  lineClamp && (lineCountLimit = Math.min(lineCountLimit, lineClamp)), "number" == typeof maxLineWidth && maxLineWidth !== 1 / 0) {
@@ -116,30 +153,37 @@ class Text extends graphic_1.Graphic {
116
153
  const str = lines[i];
117
154
  let needCut = !0;
118
155
  if (i === lineCountLimit - 1) {
119
- const clip = layoutObj.textMeasure.clipTextWithSuffix(str, layoutObj.textOptions, maxLineWidth, ellipsis, !1, suffixPosition, i !== lines.length - 1);
156
+ const clip = textMeasure.clipTextWithSuffix(str, textOptions, maxLineWidth, ellipsis, !1, suffixPosition, i !== lines.length - 1), matrics = textMeasure.measureTextPixelADscentAndWidth(clip.str, textOptions, measureMode);
120
157
  linesLayout.push({
121
158
  str: clip.str,
122
- width: clip.width
159
+ width: clip.width,
160
+ ascent: matrics.ascent,
161
+ descent: matrics.descent,
162
+ keepCenterInLine: keepCenterInLine
123
163
  });
124
164
  break;
125
165
  }
126
- const clip = layoutObj.textMeasure.clipText(str, layoutObj.textOptions, maxLineWidth, "break-all" !== wordBreak, "keep-all" === wordBreak);
166
+ const clip = textMeasure.clipText(str, textOptions, maxLineWidth, "break-all" !== wordBreak, "keep-all" === wordBreak);
127
167
  if ("" !== str && "" === clip.str || clip.wordBreaked) {
128
168
  if (ellipsis) {
129
- const clipEllipsis = layoutObj.textMeasure.clipTextWithSuffix(str, layoutObj.textOptions, maxLineWidth, ellipsis, !1, suffixPosition);
130
- clip.str = null !== (_c = clipEllipsis.str) && void 0 !== _c ? _c : "", clip.width = null !== (_d = clipEllipsis.width) && void 0 !== _d ? _d : 0;
169
+ const clipEllipsis = textMeasure.clipTextWithSuffix(str, textOptions, maxLineWidth, ellipsis, !1, suffixPosition);
170
+ clip.str = null !== (_b = clipEllipsis.str) && void 0 !== _b ? _b : "", clip.width = null !== (_c = clipEllipsis.width) && void 0 !== _c ? _c : 0;
131
171
  } else clip.str = "", clip.width = 0;
132
172
  needCut = !1;
133
173
  }
174
+ const matrics = textMeasure.measureTextPixelADscentAndWidth(clip.str, textOptions, measureMode);
134
175
  linesLayout.push({
135
176
  str: clip.str,
136
- width: clip.width
177
+ width: clip.width,
178
+ ascent: matrics.ascent,
179
+ descent: matrics.descent,
180
+ keepCenterInLine: keepCenterInLine
137
181
  });
138
182
  let cutLength = clip.str.length;
139
183
  if (!clip.wordBreaked || "" !== str && "" === clip.str || (needCut = !0, cutLength = clip.wordBreaked),
140
184
  clip.str.length === str.length) ; else if (needCut) {
141
- let newStr = str.substring(cutLength);
142
- "keep-all" === wordBreak && (newStr = newStr.replace(/^\s+/g, "")), lines.splice(i + 1, 0, newStr);
185
+ const newStr = str.substring(cutLength);
186
+ lines.splice(i + 1, 0, newStr);
143
187
  }
144
188
  }
145
189
  let maxWidth = 0;
@@ -150,175 +194,50 @@ class Text extends graphic_1.Graphic {
150
194
  let width, text, lineWidth = 0;
151
195
  for (let i = 0, len = lines.length; i < len; i++) {
152
196
  if (i === lineCountLimit - 1) {
153
- const clip = layoutObj.textMeasure.clipTextWithSuffix(lines[i], layoutObj.textOptions, maxLineWidth, ellipsis, !1, suffixPosition);
197
+ const clip = textMeasure.clipTextWithSuffix(lines[i], textOptions, maxLineWidth, ellipsis, !1, suffixPosition), matrics = textMeasure.measureTextPixelADscentAndWidth(clip.str, textOptions, measureMode);
154
198
  linesLayout.push({
155
199
  str: clip.str,
156
- width: clip.width
200
+ width: clip.width,
201
+ ascent: matrics.ascent,
202
+ descent: matrics.descent,
203
+ keepCenterInLine: keepCenterInLine
157
204
  }), lineWidth = Math.max(lineWidth, clip.width);
158
205
  break;
159
206
  }
160
- text = lines[i], width = layoutObj.textMeasure.measureTextWidth(text, layoutObj.textOptions, "break-word" === wordBreak),
161
- lineWidth = Math.max(lineWidth, width), linesLayout.push({
207
+ text = lines[i], width = textMeasure.measureTextWidth(text, textOptions), lineWidth = Math.max(lineWidth, width);
208
+ const matrics = textMeasure.measureTextPixelADscentAndWidth(text, textOptions, measureMode);
209
+ linesLayout.push({
162
210
  str: text,
163
- width: width
211
+ width: width,
212
+ ascent: matrics.ascent,
213
+ descent: matrics.descent,
214
+ keepCenterInLine: keepCenterInLine
164
215
  });
165
216
  }
166
217
  bboxWH[0] = lineWidth;
167
218
  }
168
- bboxWH[1] = linesLayout.length * (lineHeight + buf);
219
+ bboxWH[1] = linesLayout.length * lineHeight;
169
220
  const bbox = {
170
221
  xOffset: 0,
171
222
  yOffset: 0,
172
223
  width: bboxWH[0],
173
224
  height: bboxWH[1]
174
225
  };
175
- layoutObj.LayoutBBox(bbox, textAlign, textBaseline);
226
+ layoutObj.LayoutBBox(bbox, textAlign, textBaseline, linesLayout);
176
227
  const layoutData = layoutObj.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);
177
228
  return this.cache.layoutData = layoutData, this.clearUpdateShapeTag(), this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
178
229
  stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
179
230
  }
180
- updateSingallineAABBBounds(text) {
181
- const textTheme = this.getGraphicTheme(), {direction: direction = textTheme.direction, underlineOffset: underlineOffset = textTheme.underlineOffset} = this.attribute, b = "horizontal" === direction ? this.updateHorizontalSinglelineAABBBounds(text) : this.updateVerticalSinglelineAABBBounds(text);
182
- return "horizontal" === direction && underlineOffset && this._AABBBounds.add(this._AABBBounds.x1, this._AABBBounds.y2 + underlineOffset),
183
- b;
184
- }
185
- updateMultilineAABBBounds(text) {
186
- const textTheme = this.getGraphicTheme(), {direction: direction = textTheme.direction, underlineOffset: underlineOffset = textTheme.underlineOffset} = this.attribute, b = "horizontal" === direction ? this.updateHorizontalMultilineAABBBounds(text) : this.updateVerticalMultilineAABBBounds(text);
187
- return "horizontal" === direction && underlineOffset && this._AABBBounds.add(this._AABBBounds.x1, this._AABBBounds.y2 + underlineOffset),
188
- b;
189
- }
190
- updateHorizontalSinglelineAABBBounds(text) {
191
- var _a, _b;
192
- const textTheme = this.getGraphicTheme(), {wrap: wrap = textTheme.wrap} = this.attribute;
193
- if (wrap) return this.updateWrapAABBBounds([ text ]);
194
- const textMeasure = application_1.application.graphicUtil.textMeasure;
195
- let width, str;
196
- const attribute = this.attribute, {maxLineWidth: maxLineWidth = textTheme.maxLineWidth, ellipsis: ellipsis = textTheme.ellipsis, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontFamily: fontFamily = textTheme.fontFamily, fontSize: fontSize = textTheme.fontSize, fontWeight: fontWeight = textTheme.fontWeight, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, ignoreBuf: ignoreBuf = textTheme.ignoreBuf, whiteSpace: whiteSpace = textTheme.whiteSpace, suffixPosition: suffixPosition = textTheme.suffixPosition} = attribute;
197
- if ("normal" === whiteSpace) return this.updateWrapAABBBounds(text);
198
- const buf = ignoreBuf ? 0 : Math.max(2, .075 * fontSize), textFontSize = attribute.fontSize || textTheme.fontSize, lineHeight = null !== (_a = (0,
199
- utils_1.calculateLineHeight)(attribute.lineHeight, textFontSize)) && void 0 !== _a ? _a : textFontSize + buf;
200
- if (!this.shouldUpdateShape() && this.cache) {
201
- width = null !== (_b = this.cache.clipedWidth) && void 0 !== _b ? _b : 0;
202
- const dx = (0, text_1.textDrawOffsetX)(textAlign, width), dy = (0, text_1.textLayoutOffsetY)(textBaseline, lineHeight, fontSize);
203
- return this._AABBBounds.set(dx, dy, dx + width, dy + lineHeight), stroke && this._AABBBounds.expand(lineWidth / 2),
204
- this._AABBBounds;
205
- }
206
- if (Number.isFinite(maxLineWidth)) {
207
- if (ellipsis) {
208
- const strEllipsis = !0 === ellipsis ? textTheme.ellipsis : ellipsis, data = textMeasure.clipTextWithSuffix(text.toString(), {
209
- fontSize: fontSize,
210
- fontWeight: fontWeight,
211
- fontFamily: fontFamily
212
- }, maxLineWidth, strEllipsis, !1, suffixPosition);
213
- str = data.str, width = data.width;
214
- } else {
215
- const data = textMeasure.clipText(text.toString(), {
216
- fontSize: fontSize,
217
- fontWeight: fontWeight,
218
- fontFamily: fontFamily
219
- }, maxLineWidth, !1);
220
- str = data.str, width = data.width;
221
- }
222
- this.cache.clipedText = str, this.cache.clipedWidth = width;
223
- } else width = textMeasure.measureTextWidth(text.toString(), {
224
- fontSize: fontSize,
225
- fontWeight: fontWeight,
226
- fontFamily: fontFamily
227
- }), this.cache.clipedText = text.toString(), this.cache.clipedWidth = width;
228
- this.clearUpdateShapeTag();
229
- const dx = (0, text_1.textDrawOffsetX)(textAlign, width);
230
- let lh = lineHeight;
231
- application_1.application.global && application_1.application.global.isSafari() && (lh += .2 * fontSize);
232
- const dy = (0, text_1.textLayoutOffsetY)(textBaseline, lh, fontSize, buf);
233
- return this._AABBBounds.set(dx, dy, dx + width, dy + lh), stroke && this._AABBBounds.expand(lineWidth / 2),
234
- this._AABBBounds;
235
- }
236
- getBaselineMapAlign() {
237
- return Text.baselineMapAlign;
238
- }
239
- getAlignMapBaseline() {
240
- return Text.alignMapBaseline;
241
- }
242
- updateVerticalSinglelineAABBBounds(text) {
243
- var _a, _b, _c;
244
- const textTheme = this.getGraphicTheme(), textMeasure = application_1.application.graphicUtil.textMeasure;
245
- let width;
246
- const attribute = this.attribute, {ignoreBuf: ignoreBuf = textTheme.ignoreBuf} = attribute, buf = ignoreBuf ? 0 : 2, {maxLineWidth: maxLineWidth = textTheme.maxLineWidth, ellipsis: ellipsis = textTheme.ellipsis, fontSize: fontSize = textTheme.fontSize, fontWeight: fontWeight = textTheme.fontWeight, fontFamily: fontFamily = textTheme.fontFamily, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, verticalMode: verticalMode = textTheme.verticalMode, suffixPosition: suffixPosition = textTheme.suffixPosition} = attribute, lineHeight = null !== (_a = (0,
247
- utils_1.calculateLineHeight)(attribute.lineHeight, attribute.fontSize || textTheme.fontSize)) && void 0 !== _a ? _a : (attribute.fontSize || textTheme.fontSize) + buf;
248
- let {textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline} = attribute;
249
- if (!verticalMode) {
250
- const t = textAlign;
251
- textAlign = null !== (_b = Text.baselineMapAlign[textBaseline]) && void 0 !== _b ? _b : "left",
252
- textBaseline = null !== (_c = Text.alignMapBaseline[t]) && void 0 !== _c ? _c : "top";
253
- }
254
- if (!this.shouldUpdateShape() && this.cache) {
255
- width = this.cache.clipedWidth;
256
- const dx = (0, text_1.textDrawOffsetX)(textAlign, width), dy = (0, text_1.textLayoutOffsetY)(textBaseline, lineHeight, fontSize);
257
- return this._AABBBounds.set(dy, dx, dy + lineHeight, dx + width), stroke && this._AABBBounds.expand(lineWidth / 2),
258
- this._AABBBounds;
259
- }
260
- let verticalList = [ (0, tools_1.verticalLayout)(text.toString()) ];
261
- if (Number.isFinite(maxLineWidth)) {
262
- if (ellipsis) {
263
- const strEllipsis = !0 === ellipsis ? textTheme.ellipsis : ellipsis, data = textMeasure.clipTextWithSuffixVertical(verticalList[0], {
264
- fontSize: fontSize,
265
- fontWeight: fontWeight,
266
- fontFamily: fontFamily
267
- }, maxLineWidth, strEllipsis, !1, suffixPosition);
268
- verticalList = [ data.verticalList ], width = data.width;
269
- } else {
270
- const data = textMeasure.clipTextVertical(verticalList[0], {
271
- fontSize: fontSize,
272
- fontWeight: fontWeight,
273
- fontFamily: fontFamily
274
- }, maxLineWidth, !1);
275
- verticalList = [ data.verticalList ], width = data.width;
276
- }
277
- this.cache.verticalList = verticalList, this.cache.clipedWidth = width;
278
- } else width = 0, verticalList[0].forEach((t => {
279
- const w = t.direction === tools_1.TextDirection.HORIZONTAL ? fontSize : textMeasure.measureTextWidth(t.text, {
280
- fontSize: fontSize,
281
- fontWeight: fontWeight,
282
- fontFamily: fontFamily
283
- });
284
- width += w, t.width = w;
285
- })), this.cache.verticalList = verticalList, this.cache.clipedWidth = width;
286
- this.clearUpdateShapeTag();
287
- const dx = (0, text_1.textDrawOffsetX)(textAlign, width), dy = (0, text_1.textLayoutOffsetY)(textBaseline, lineHeight, fontSize);
288
- return this._AABBBounds.set(dy, dx, dy + lineHeight, dx + width), stroke && this._AABBBounds.expand(lineWidth / 2),
289
- this._AABBBounds;
290
- }
291
- updateHorizontalMultilineAABBBounds(text) {
292
- var _a, _b;
293
- const textTheme = this.getGraphicTheme(), {wrap: wrap = textTheme.wrap} = this.attribute;
294
- if (wrap) return this.updateWrapAABBBounds(text);
295
- const attribute = this.attribute, {fontFamily: fontFamily = textTheme.fontFamily, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontSize: fontSize = textTheme.fontSize, fontWeight: fontWeight = textTheme.fontWeight, ellipsis: ellipsis = textTheme.ellipsis, maxLineWidth: maxLineWidth, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, whiteSpace: whiteSpace = textTheme.whiteSpace, suffixPosition: suffixPosition = textTheme.suffixPosition} = attribute, lineHeight = null !== (_a = (0,
296
- utils_1.calculateLineHeight)(attribute.lineHeight, attribute.fontSize || textTheme.fontSize)) && void 0 !== _a ? _a : attribute.fontSize || textTheme.fontSize;
297
- if ("normal" === whiteSpace) return this.updateWrapAABBBounds(text);
298
- if (!this.shouldUpdateShape() && (null === (_b = this.cache) || void 0 === _b ? void 0 : _b.layoutData)) {
299
- const bbox = this.cache.layoutData.bbox;
300
- return this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
301
- stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
302
- }
303
- const textMeasure = application_1.application.graphicUtil.textMeasure, layoutData = new layout_1.CanvasTextLayout(fontFamily, {
304
- fontSize: fontSize,
305
- fontWeight: fontWeight,
306
- fontFamily: fontFamily
307
- }, textMeasure).GetLayoutByLines(text, textAlign, textBaseline, lineHeight, !0 === ellipsis ? textTheme.ellipsis : ellipsis || void 0, !1, maxLineWidth, suffixPosition), {bbox: bbox} = layoutData;
308
- return this.cache.layoutData = layoutData, this.clearUpdateShapeTag(), this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
309
- stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
310
- }
311
231
  updateVerticalMultilineAABBBounds(text) {
312
- var _a, _b, _c;
232
+ var _a, _b;
313
233
  const textTheme = this.getGraphicTheme(), textMeasure = application_1.application.graphicUtil.textMeasure;
314
234
  let width;
315
- const attribute = this.attribute, {ignoreBuf: ignoreBuf = textTheme.ignoreBuf} = attribute, buf = ignoreBuf ? 0 : 2, {maxLineWidth: maxLineWidth = textTheme.maxLineWidth, ellipsis: ellipsis = textTheme.ellipsis, fontFamily: fontFamily = textTheme.fontFamily, fontSize: fontSize = textTheme.fontSize, fontWeight: fontWeight = textTheme.fontWeight, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, verticalMode: verticalMode = textTheme.verticalMode, suffixPosition: suffixPosition = textTheme.suffixPosition} = attribute, lineHeight = null !== (_a = (0,
316
- utils_1.calculateLineHeight)(attribute.lineHeight, attribute.fontSize || textTheme.fontSize)) && void 0 !== _a ? _a : (attribute.fontSize || textTheme.fontSize) + buf;
235
+ const attribute = this.attribute, {maxLineWidth: maxLineWidth = textTheme.maxLineWidth, ellipsis: ellipsis = textTheme.ellipsis, fontFamily: fontFamily = textTheme.fontFamily, fontSize: fontSize = textTheme.fontSize, fontWeight: fontWeight = textTheme.fontWeight, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, verticalMode: verticalMode = textTheme.verticalMode, suffixPosition: suffixPosition = textTheme.suffixPosition} = attribute, lineHeight = this.getLineHeight(attribute, textTheme);
317
236
  let {textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline} = attribute;
318
237
  if (!verticalMode) {
319
238
  const t = textAlign;
320
- textAlign = null !== (_b = Text.baselineMapAlign[textBaseline]) && void 0 !== _b ? _b : "left",
321
- textBaseline = null !== (_c = Text.alignMapBaseline[t]) && void 0 !== _c ? _c : "top";
239
+ textAlign = null !== (_a = Text.baselineMapAlign[textBaseline]) && void 0 !== _a ? _a : "left",
240
+ textBaseline = null !== (_b = Text.alignMapBaseline[t]) && void 0 !== _b ? _b : "top";
322
241
  }
323
242
  if (width = 0, !this.shouldUpdateShape() && this.cache) {
324
243
  this.cache.verticalList.forEach((item => {
@@ -363,6 +282,15 @@ class Text extends graphic_1.Graphic {
363
282
  return this._AABBBounds.set(dy, dx, dy + height, dx + width), stroke && this._AABBBounds.expand(lineWidth / 2),
364
283
  this._AABBBounds;
365
284
  }
285
+ getMaxWidth(theme) {
286
+ var _a, _b;
287
+ const attribute = this.attribute;
288
+ return null !== (_b = null !== (_a = attribute.maxLineWidth) && void 0 !== _a ? _a : attribute.maxWidth) && void 0 !== _b ? _b : theme.maxWidth;
289
+ }
290
+ getLineHeight(attribute, textTheme) {
291
+ var _a;
292
+ return null !== (_a = (0, utils_1.calculateLineHeight)(attribute.lineHeight, attribute.fontSize || textTheme.fontSize)) && void 0 !== _a ? _a : attribute.fontSize || textTheme.fontSize;
293
+ }
366
294
  needUpdateTags(keys, k = TEXT_UPDATE_TAG_KEY) {
367
295
  return super.needUpdateTags(keys, k);
368
296
  }
@@ -375,6 +303,12 @@ class Text extends graphic_1.Graphic {
375
303
  getNoWorkAnimateAttr() {
376
304
  return Text.NOWORK_ANIMATE_ATTR;
377
305
  }
306
+ getBaselineMapAlign() {
307
+ return Text.baselineMapAlign;
308
+ }
309
+ getAlignMapBaseline() {
310
+ return Text.alignMapBaseline;
311
+ }
378
312
  }
379
313
 
380
314
  function createText(attributes) {