@visactor/vrender-core 1.0.0-alpha.4 → 1.0.0-alpha.6

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 (254) hide show
  1. package/cjs/animate/config.d.ts +0 -1
  2. package/cjs/animate/config.js +1 -5
  3. package/cjs/animate/config.js.map +1 -1
  4. package/cjs/application.d.ts +2 -1
  5. package/cjs/application.js.map +1 -1
  6. package/cjs/color-string/interpolate.js +5 -2
  7. package/cjs/color-string/interpolate.js.map +1 -1
  8. package/cjs/common/canvas-utils.js +6 -3
  9. package/cjs/common/canvas-utils.js.map +1 -1
  10. package/cjs/common/custom-path2d.js +2 -2
  11. package/cjs/common/custom-path2d.js.map +1 -1
  12. package/cjs/common/morphing-utils.js +32 -124
  13. package/cjs/common/morphing-utils.js.map +1 -1
  14. package/cjs/common/segment/index.js +3 -0
  15. package/cjs/common/segment/index.js.map +1 -1
  16. package/cjs/common/segment/step.d.ts +6 -0
  17. package/cjs/common/segment/step.js +19 -2
  18. package/cjs/common/segment/step.js.map +1 -1
  19. package/cjs/common/shape/arc.d.ts +1 -1
  20. package/cjs/common/shape/arc.js +7 -3
  21. package/cjs/common/shape/arc.js.map +1 -1
  22. package/cjs/common/split-path.js +1 -1
  23. package/cjs/common/split-path.js.map +1 -1
  24. package/cjs/common/utils.d.ts +0 -2
  25. package/cjs/common/utils.js +4 -8
  26. package/cjs/common/utils.js.map +1 -1
  27. package/cjs/core/stage.js +4 -4
  28. package/cjs/core/stage.js.map +1 -1
  29. package/cjs/graphic/arc.d.ts +1 -2
  30. package/cjs/graphic/arc.js +4 -3
  31. package/cjs/graphic/arc.js.map +1 -1
  32. package/cjs/graphic/area.d.ts +1 -2
  33. package/cjs/graphic/area.js +5 -2
  34. package/cjs/graphic/area.js.map +1 -1
  35. package/cjs/graphic/circle.d.ts +1 -2
  36. package/cjs/graphic/circle.js +7 -3
  37. package/cjs/graphic/circle.js.map +1 -1
  38. package/cjs/graphic/config.d.ts +2 -1
  39. package/cjs/graphic/config.js +10 -3
  40. package/cjs/graphic/config.js.map +1 -1
  41. package/cjs/graphic/constants.d.ts +1 -0
  42. package/cjs/graphic/constants.js +4 -3
  43. package/cjs/graphic/constants.js.map +1 -1
  44. package/cjs/graphic/graphic.d.ts +7 -1
  45. package/cjs/graphic/graphic.js +20 -15
  46. package/cjs/graphic/graphic.js.map +1 -1
  47. package/cjs/graphic/image.js +2 -1
  48. package/cjs/graphic/image.js.map +1 -1
  49. package/cjs/graphic/index.d.ts +1 -0
  50. package/cjs/graphic/index.js +8 -8
  51. package/cjs/graphic/index.js.map +1 -1
  52. package/cjs/graphic/line.d.ts +1 -2
  53. package/cjs/graphic/line.js +7 -2
  54. package/cjs/graphic/line.js.map +1 -1
  55. package/cjs/graphic/path.js +2 -1
  56. package/cjs/graphic/path.js.map +1 -1
  57. package/cjs/graphic/polygon.js +2 -1
  58. package/cjs/graphic/polygon.js.map +1 -1
  59. package/cjs/graphic/rect.js +7 -3
  60. package/cjs/graphic/rect.js.map +1 -1
  61. package/cjs/graphic/richtext/icon.d.ts +1 -1
  62. package/cjs/graphic/richtext/icon.js.map +1 -1
  63. package/cjs/graphic/richtext.js +3 -2
  64. package/cjs/graphic/richtext.js.map +1 -1
  65. package/cjs/graphic/star.d.ts +52 -0
  66. package/cjs/graphic/star.js +78 -0
  67. package/cjs/graphic/star.js.map +1 -0
  68. package/cjs/graphic/symbol.js +3 -1
  69. package/cjs/graphic/symbol.js.map +1 -1
  70. package/cjs/graphic/text.js +1 -0
  71. package/cjs/graphic/text.js.map +1 -1
  72. package/cjs/graphic/theme.js +2 -0
  73. package/cjs/graphic/theme.js.map +1 -1
  74. package/cjs/index.d.ts +2 -0
  75. package/cjs/index.js +7 -6
  76. package/cjs/index.js.map +1 -1
  77. package/cjs/interface/animation/animate.d.ts +17 -0
  78. package/cjs/interface/animation/animate.js.map +1 -1
  79. package/cjs/interface/animation/ticker.d.ts +2 -0
  80. package/cjs/interface/animation/ticker.js.map +1 -1
  81. package/cjs/interface/common.d.ts +1 -1
  82. package/cjs/interface/common.js.map +1 -1
  83. package/cjs/interface/contribution.d.ts +2 -0
  84. package/cjs/interface/contribution.js.map +1 -1
  85. package/cjs/interface/graphic/index.d.ts +1 -0
  86. package/cjs/interface/graphic/index.js +3 -2
  87. package/cjs/interface/graphic/index.js.map +1 -1
  88. package/cjs/interface/graphic/star.d.ts +12 -0
  89. package/cjs/interface/graphic/star.js +6 -0
  90. package/cjs/interface/graphic/star.js.map +1 -0
  91. package/cjs/interface/graphic/theme.d.ts +3 -0
  92. package/cjs/interface/graphic/theme.js.map +1 -1
  93. package/cjs/interface/graphic.d.ts +11 -0
  94. package/cjs/interface/graphic.js.map +1 -1
  95. package/cjs/interface/render.d.ts +1 -0
  96. package/cjs/interface/render.js.map +1 -1
  97. package/cjs/modules.d.ts +2 -1
  98. package/cjs/modules.js +4 -3
  99. package/cjs/modules.js.map +1 -1
  100. package/cjs/register/register-star.d.ts +1 -0
  101. package/cjs/register/register-star.js +14 -0
  102. package/cjs/register/register-star.js.map +1 -0
  103. package/cjs/render/contributions/render/area-render.js +2 -2
  104. package/cjs/render/contributions/render/area-render.js.map +1 -1
  105. package/cjs/render/contributions/render/contributions/constants.d.ts +1 -0
  106. package/cjs/render/contributions/render/contributions/constants.js +3 -2
  107. package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
  108. package/cjs/render/contributions/render/contributions/index.d.ts +1 -0
  109. package/cjs/render/contributions/render/contributions/index.js +2 -2
  110. package/cjs/render/contributions/render/contributions/index.js.map +1 -1
  111. package/cjs/render/contributions/render/contributions/star-contribution-render.d.ts +2 -0
  112. package/cjs/render/contributions/render/contributions/star-contribution-render.js +11 -0
  113. package/cjs/render/contributions/render/contributions/star-contribution-render.js.map +1 -0
  114. package/cjs/render/contributions/render/line-render.js +1 -1
  115. package/cjs/render/contributions/render/line-render.js.map +1 -1
  116. package/cjs/render/contributions/render/star-module.d.ts +2 -0
  117. package/cjs/render/contributions/render/star-module.js +15 -0
  118. package/cjs/render/contributions/render/star-module.js.map +1 -0
  119. package/cjs/render/contributions/render/star-render.d.ts +10 -0
  120. package/cjs/render/contributions/render/star-render.js +54 -0
  121. package/cjs/render/contributions/render/star-render.js.map +1 -0
  122. package/cjs/render/contributions/render/symbol.d.ts +1 -0
  123. package/cjs/render/contributions/render/symbol.js +2 -2
  124. package/cjs/render/contributions/render/symbol.js.map +1 -1
  125. package/cjs/render/render-service.d.ts +1 -1
  126. package/cjs/render/render-service.js.map +1 -1
  127. package/dist/index.es.js +12265 -12093
  128. package/es/animate/config.d.ts +0 -1
  129. package/es/animate/config.js +0 -5
  130. package/es/animate/config.js.map +1 -1
  131. package/es/application.d.ts +2 -1
  132. package/es/application.js.map +1 -1
  133. package/es/color-string/interpolate.js +4 -1
  134. package/es/color-string/interpolate.js.map +1 -1
  135. package/es/common/canvas-utils.js +6 -3
  136. package/es/common/canvas-utils.js.map +1 -1
  137. package/es/common/custom-path2d.js +2 -2
  138. package/es/common/custom-path2d.js.map +1 -1
  139. package/es/common/morphing-utils.js +29 -124
  140. package/es/common/morphing-utils.js.map +1 -1
  141. package/es/common/segment/index.js +4 -1
  142. package/es/common/segment/index.js.map +1 -1
  143. package/es/common/segment/step.d.ts +6 -0
  144. package/es/common/segment/step.js +13 -0
  145. package/es/common/segment/step.js.map +1 -1
  146. package/es/common/shape/arc.d.ts +1 -1
  147. package/es/common/shape/arc.js +7 -3
  148. package/es/common/shape/arc.js.map +1 -1
  149. package/es/common/split-path.js +1 -1
  150. package/es/common/split-path.js.map +1 -1
  151. package/es/common/utils.d.ts +0 -2
  152. package/es/common/utils.js +0 -4
  153. package/es/common/utils.js.map +1 -1
  154. package/es/core/stage.js +4 -4
  155. package/es/core/stage.js.map +1 -1
  156. package/es/graphic/arc.d.ts +1 -2
  157. package/es/graphic/arc.js +4 -3
  158. package/es/graphic/arc.js.map +1 -1
  159. package/es/graphic/area.d.ts +1 -2
  160. package/es/graphic/area.js +5 -2
  161. package/es/graphic/area.js.map +1 -1
  162. package/es/graphic/circle.d.ts +1 -2
  163. package/es/graphic/circle.js +6 -3
  164. package/es/graphic/circle.js.map +1 -1
  165. package/es/graphic/config.d.ts +2 -1
  166. package/es/graphic/config.js +11 -2
  167. package/es/graphic/config.js.map +1 -1
  168. package/es/graphic/constants.d.ts +1 -0
  169. package/es/graphic/constants.js +2 -0
  170. package/es/graphic/constants.js.map +1 -1
  171. package/es/graphic/graphic.d.ts +7 -1
  172. package/es/graphic/graphic.js +21 -14
  173. package/es/graphic/graphic.js.map +1 -1
  174. package/es/graphic/image.js +2 -1
  175. package/es/graphic/image.js.map +1 -1
  176. package/es/graphic/index.d.ts +1 -0
  177. package/es/graphic/index.js +2 -0
  178. package/es/graphic/index.js.map +1 -1
  179. package/es/graphic/line.d.ts +1 -2
  180. package/es/graphic/line.js +7 -2
  181. package/es/graphic/line.js.map +1 -1
  182. package/es/graphic/path.js +2 -1
  183. package/es/graphic/path.js.map +1 -1
  184. package/es/graphic/polygon.js +2 -1
  185. package/es/graphic/polygon.js.map +1 -1
  186. package/es/graphic/rect.js +7 -3
  187. package/es/graphic/rect.js.map +1 -1
  188. package/es/graphic/richtext/icon.d.ts +1 -1
  189. package/es/graphic/richtext/icon.js.map +1 -1
  190. package/es/graphic/richtext.js +3 -2
  191. package/es/graphic/richtext.js.map +1 -1
  192. package/es/graphic/star.d.ts +52 -0
  193. package/es/graphic/star.js +82 -0
  194. package/es/graphic/star.js.map +1 -0
  195. package/es/graphic/symbol.js +3 -1
  196. package/es/graphic/symbol.js.map +1 -1
  197. package/es/graphic/text.js +1 -0
  198. package/es/graphic/text.js.map +1 -1
  199. package/es/graphic/theme.js +3 -1
  200. package/es/graphic/theme.js.map +1 -1
  201. package/es/index.d.ts +2 -0
  202. package/es/index.js +4 -0
  203. package/es/index.js.map +1 -1
  204. package/es/interface/animation/animate.d.ts +17 -0
  205. package/es/interface/animation/animate.js.map +1 -1
  206. package/es/interface/animation/ticker.d.ts +2 -0
  207. package/es/interface/animation/ticker.js.map +1 -1
  208. package/es/interface/common.d.ts +1 -1
  209. package/es/interface/common.js.map +1 -1
  210. package/es/interface/contribution.d.ts +2 -0
  211. package/es/interface/contribution.js.map +1 -1
  212. package/es/interface/graphic/index.d.ts +1 -0
  213. package/es/interface/graphic/index.js +2 -0
  214. package/es/interface/graphic/index.js.map +1 -1
  215. package/es/interface/graphic/star.d.ts +12 -0
  216. package/es/interface/graphic/star.js +2 -0
  217. package/es/interface/graphic/star.js.map +1 -0
  218. package/es/interface/graphic/theme.d.ts +3 -0
  219. package/es/interface/graphic/theme.js.map +1 -1
  220. package/es/interface/graphic.d.ts +11 -0
  221. package/es/interface/graphic.js.map +1 -1
  222. package/es/interface/render.d.ts +1 -0
  223. package/es/interface/render.js.map +1 -1
  224. package/es/modules.d.ts +2 -1
  225. package/es/modules.js +6 -0
  226. package/es/modules.js.map +1 -1
  227. package/es/register/register-star.d.ts +1 -0
  228. package/es/register/register-star.js +8 -0
  229. package/es/register/register-star.js.map +1 -0
  230. package/es/render/contributions/render/area-render.js +2 -2
  231. package/es/render/contributions/render/area-render.js.map +1 -1
  232. package/es/render/contributions/render/contributions/constants.d.ts +1 -0
  233. package/es/render/contributions/render/contributions/constants.js +2 -0
  234. package/es/render/contributions/render/contributions/constants.js.map +1 -1
  235. package/es/render/contributions/render/contributions/index.d.ts +1 -0
  236. package/es/render/contributions/render/contributions/index.js +2 -0
  237. package/es/render/contributions/render/contributions/index.js.map +1 -1
  238. package/es/render/contributions/render/contributions/star-contribution-render.d.ts +2 -0
  239. package/es/render/contributions/render/contributions/star-contribution-render.js +8 -0
  240. package/es/render/contributions/render/contributions/star-contribution-render.js.map +1 -0
  241. package/es/render/contributions/render/line-render.js +1 -1
  242. package/es/render/contributions/render/line-render.js.map +1 -1
  243. package/es/render/contributions/render/star-module.d.ts +2 -0
  244. package/es/render/contributions/render/star-module.js +13 -0
  245. package/es/render/contributions/render/star-module.js.map +1 -0
  246. package/es/render/contributions/render/star-render.d.ts +10 -0
  247. package/es/render/contributions/render/star-render.js +59 -0
  248. package/es/render/contributions/render/star-render.js.map +1 -0
  249. package/es/render/contributions/render/symbol.d.ts +1 -0
  250. package/es/render/contributions/render/symbol.js +2 -0
  251. package/es/render/contributions/render/symbol.js.map +1 -1
  252. package/es/render/render-service.d.ts +1 -1
  253. package/es/render/render-service.js.map +1 -1
  254. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { IAABBBounds, IPointLike } from '@visactor/vutils';\nimport type { ILine, ILineGraphicAttribute } from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { pointsInterpolation } from '../common/utils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { LINE_NUMBER_TYPE } from './constants';\n\nconst LINE_UPDATE_TAG_KEY = ['segments', 'points', 'curveType', 'curveTension', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Line extends Graphic<ILineGraphicAttribute> implements ILine {\n type: 'line' = 'line';\n\n constructor(params: ILineGraphicAttribute = {}) {\n super(params);\n this.numberType = LINE_NUMBER_TYPE;\n }\n\n static NOWORK_ANIMATE_ATTR = {\n segments: 1,\n curveType: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n if (this.pathProxy) {\n return true;\n }\n const { points, segments } = this.attribute;\n if (segments) {\n if (segments.length === 0) {\n return false;\n }\n return true;\n } else if (points) {\n if (points.length <= 1) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void {\n if (key === 'points') {\n (nextAttributes as any).points = pointsInterpolation(lastStepVal, nextStepVal, ratio);\n }\n }\n\n getGraphicTheme(): Required<ILineGraphicAttribute> {\n return getTheme(this).line;\n }\n\n protected updateAABBBounds(\n attribute: ILineGraphicAttribute,\n lineTheme: Required<ILineGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n attribute.segments\n ? this.updateLineAABBBoundsBySegments(attribute, lineTheme, aabbBounds)\n : this.updateLineAABBBoundsByPoints(attribute, lineTheme, aabbBounds);\n }\n\n application.graphicService.updateTempAABBBounds(aabbBounds);\n\n const { lineJoin = lineTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, lineTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected updateLineAABBBoundsByPoints(\n attribute: ILineGraphicAttribute,\n lineTheme: Required<ILineGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: ILine\n ): IAABBBounds {\n const { points = lineTheme.points, connectedType } = attribute;\n const b = aabbBounds;\n points.forEach(p => {\n if (p.defined !== false || connectedType === 'connect') {\n b.add(p.x, p.y);\n }\n });\n return b;\n }\n protected updateLineAABBBoundsBySegments(\n attribute: ILineGraphicAttribute,\n lineTheme: Required<ILineGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: ILine\n ): IAABBBounds {\n const { segments = lineTheme.segments, connectedType } = attribute;\n const b = aabbBounds;\n segments.forEach(s => {\n s.points.forEach(p => {\n if (p.defined !== false || connectedType === 'connect') {\n b.add(p.x, p.y);\n }\n });\n });\n return b;\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, LINE_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, LINE_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const attribute = this.attribute;\n const path = new CustomPath2D();\n const segments = attribute.segments;\n\n const parsePoints = (points: IPointLike[]) => {\n if (points && points.length) {\n let isFirst = true;\n points.forEach(point => {\n if (point.defined === false) {\n return;\n }\n if (isFirst) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n\n isFirst = false;\n });\n }\n };\n\n if (segments && segments.length) {\n segments.forEach(seg => {\n parsePoints(seg.points);\n });\n } else if (attribute.points) {\n parsePoints(attribute.points);\n }\n\n return path;\n }\n\n clone() {\n return new Line({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Line.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createLine(attributes: ILineGraphicAttribute): ILine {\n return new Line(attributes);\n}\n\n// addAttributeToPrototype(DefaultLineStyle, Line, PURE_STYLE_KEY);\n"]}
1
+ {"version":3,"sources":["../src/graphic/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { IAABBBounds, IPointLike } from '@visactor/vutils';\nimport type { ILine, ILineGraphicAttribute } from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { pointsInterpolation } from '../common/utils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { LINE_NUMBER_TYPE } from './constants';\n\nconst LINE_UPDATE_TAG_KEY = ['segments', 'points', 'curveType', 'curveTension', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Line extends Graphic<ILineGraphicAttribute> implements ILine {\n type: 'line' = 'line';\n\n constructor(params: ILineGraphicAttribute = {}) {\n super(params);\n this.numberType = LINE_NUMBER_TYPE;\n }\n\n static NOWORK_ANIMATE_ATTR = {\n segments: 1,\n curveType: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n if (this.pathProxy) {\n return true;\n }\n const { points, segments } = this.attribute;\n if (segments) {\n if (segments.length === 0) {\n return false;\n }\n return true;\n } else if (points) {\n if (points.length <= 1) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void {\n if (key === 'points') {\n (nextAttributes as any).points = pointsInterpolation(lastStepVal, nextStepVal, ratio);\n }\n }\n\n getGraphicTheme(): Required<ILineGraphicAttribute> {\n return getTheme(this).line;\n }\n\n protected updateAABBBounds(\n attribute: ILineGraphicAttribute,\n lineTheme: Required<ILineGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n attribute.segments\n ? this.updateLineAABBBoundsBySegments(attribute, lineTheme, aabbBounds)\n : this.updateLineAABBBoundsByPoints(attribute, lineTheme, aabbBounds);\n }\n\n application.graphicService.updateTempAABBBounds(aabbBounds);\n\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n\n const { lineJoin = lineTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, lineTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected updateLineAABBBoundsByPoints(\n attribute: ILineGraphicAttribute,\n lineTheme: Required<ILineGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: ILine\n ): IAABBBounds {\n const { points = lineTheme.points, connectedType } = attribute;\n const b = aabbBounds;\n points.forEach(p => {\n if (p.defined !== false || connectedType === 'connect') {\n b.add(p.x, p.y);\n }\n });\n return b;\n }\n protected updateLineAABBBoundsBySegments(\n attribute: ILineGraphicAttribute,\n lineTheme: Required<ILineGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: ILine\n ): IAABBBounds {\n const { segments = lineTheme.segments, connectedType } = attribute;\n const b = aabbBounds;\n segments.forEach(s => {\n s.points.forEach(p => {\n if (p.defined !== false || connectedType === 'connect') {\n b.add(p.x, p.y);\n }\n });\n });\n return b;\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, LINE_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, LINE_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n let path = super.toCustomPath();\n if (path) {\n return path;\n }\n const attribute = this.attribute;\n path = new CustomPath2D();\n const segments = attribute.segments;\n\n const parsePoints = (points: IPointLike[]) => {\n if (points && points.length) {\n let isFirst = true;\n points.forEach(point => {\n if (point.defined === false) {\n return;\n }\n if (isFirst) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n\n isFirst = false;\n });\n }\n };\n\n if (segments && segments.length) {\n segments.forEach(seg => {\n parsePoints(seg.points);\n });\n } else if (attribute.points) {\n parsePoints(attribute.points);\n }\n\n return path;\n }\n\n clone() {\n return new Line({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Line.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createLine(attributes: ILineGraphicAttribute): ILine {\n return new Line(attributes);\n}\n\n// addAttributeToPrototype(DefaultLineStyle, Line, PURE_STYLE_KEY);\n"]}
@@ -37,7 +37,8 @@ class Path extends graphic_1.Graphic {
37
37
  }
38
38
  const {tb1: tb1, tb2: tb2} = application_1.application.graphicService.updateTempAABBBounds(aabbBounds);
39
39
  (0, common_outer_boder_bounds_1.updateBoundsOfCommonOuterBorder)(attribute, pathTheme, tb1),
40
- aabbBounds.union(tb1), tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);
40
+ aabbBounds.union(tb1), tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2), this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1,
41
+ this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;
41
42
  const {lineJoin: lineJoin = pathTheme.lineJoin} = attribute;
42
43
  return application_1.application.graphicService.transformAABBBounds(attribute, aabbBounds, pathTheme, "miter" === lineJoin, this),
43
44
  aabbBounds;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/path.ts"],"names":[],"mappings":"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","file":"path.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { isString, isNil } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { ICustomPath2D, IPath, IPathGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { PATH_NUMBER_TYPE } from './constants';\nimport { updateBoundsOfCommonOuterBorder } from './graphic-service/common-outer-boder-bounds';\n\nconst PATH_UPDATE_TAG_KEY = ['path', 'customPath', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Path extends Graphic<IPathGraphicAttribute> implements IPath {\n type: 'path' = 'path';\n cache?: ICustomPath2D;\n\n static NOWORK_ANIMATE_ATTR = {\n path: 1,\n customPath: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params: IPathGraphicAttribute) {\n super(params);\n this.numberType = PATH_NUMBER_TYPE;\n }\n\n get pathShape(): ICustomPath2D {\n this.tryUpdateAABBBounds();\n return this.getParsedPathShape();\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n const { path } = this.attribute;\n return path != null && path !== '';\n }\n\n getParsedPathShape(): CustomPath2D {\n const pathTheme = this.getGraphicTheme();\n if (!this.valid) {\n return pathTheme.path as CustomPath2D;\n }\n const attribute = this.attribute;\n if (attribute.path instanceof CustomPath2D) {\n return attribute.path;\n }\n\n if (isNil(this.cache)) {\n this.doUpdatePathShape();\n }\n\n if (this.cache instanceof CustomPath2D) {\n return this.cache;\n }\n return pathTheme.path as CustomPath2D;\n }\n\n getGraphicTheme(): Required<IPathGraphicAttribute> {\n return getTheme(this).path;\n }\n\n protected updateAABBBounds(\n attribute: IPathGraphicAttribute,\n pathTheme: Required<IPathGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n const pathShape = this.getParsedPathShape();\n aabbBounds.union(pathShape.getBounds());\n }\n\n const { tb1, tb2 } = application.graphicService.updateTempAABBBounds(aabbBounds);\n\n updateBoundsOfCommonOuterBorder(attribute, pathTheme, tb1);\n aabbBounds.union(tb1);\n tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);\n const { lineJoin = pathTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, pathTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected doUpdateAABBBounds(full?: boolean) {\n this.doUpdatePathShape();\n return super.doUpdateAABBBounds(full);\n }\n\n protected doUpdatePathShape() {\n const attribute = this.attribute;\n if (isString(attribute.path, true)) {\n this.cache = new CustomPath2D().fromString(attribute.path as string);\n } else if (attribute.customPath) {\n this.cache = new CustomPath2D();\n attribute.customPath(this.cache, this);\n }\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, PATH_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, PATH_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const x = 0;\n const y = 0;\n\n return new CustomPath2D().fromCustomPath2D(this.getParsedPathShape(), x, y);\n }\n\n clone() {\n return new Path({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Path.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createPath(attributes: IPathGraphicAttribute): IPath {\n return new Path(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/path.ts"],"names":[],"mappings":"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","file":"path.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { isString, isNil } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { ICustomPath2D, IPath, IPathGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { PATH_NUMBER_TYPE } from './constants';\nimport { updateBoundsOfCommonOuterBorder } from './graphic-service/common-outer-boder-bounds';\n\nconst PATH_UPDATE_TAG_KEY = ['path', 'customPath', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Path extends Graphic<IPathGraphicAttribute> implements IPath {\n type: 'path' = 'path';\n cache?: ICustomPath2D;\n\n static NOWORK_ANIMATE_ATTR = {\n path: 1,\n customPath: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params: IPathGraphicAttribute) {\n super(params);\n this.numberType = PATH_NUMBER_TYPE;\n }\n\n get pathShape(): ICustomPath2D {\n this.tryUpdateAABBBounds();\n return this.getParsedPathShape();\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n const { path } = this.attribute;\n return path != null && path !== '';\n }\n\n getParsedPathShape(): CustomPath2D {\n const pathTheme = this.getGraphicTheme();\n if (!this.valid) {\n return pathTheme.path as CustomPath2D;\n }\n const attribute = this.attribute;\n if (attribute.path instanceof CustomPath2D) {\n return attribute.path;\n }\n\n if (isNil(this.cache)) {\n this.doUpdatePathShape();\n }\n\n if (this.cache instanceof CustomPath2D) {\n return this.cache;\n }\n return pathTheme.path as CustomPath2D;\n }\n\n getGraphicTheme(): Required<IPathGraphicAttribute> {\n return getTheme(this).path;\n }\n\n protected updateAABBBounds(\n attribute: IPathGraphicAttribute,\n pathTheme: Required<IPathGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n const pathShape = this.getParsedPathShape();\n aabbBounds.union(pathShape.getBounds());\n }\n\n const { tb1, tb2 } = application.graphicService.updateTempAABBBounds(aabbBounds);\n\n updateBoundsOfCommonOuterBorder(attribute, pathTheme, tb1);\n aabbBounds.union(tb1);\n tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);\n\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n\n const { lineJoin = pathTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, pathTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected doUpdateAABBBounds(full?: boolean) {\n this.doUpdatePathShape();\n return super.doUpdateAABBBounds(full);\n }\n\n protected doUpdatePathShape() {\n const attribute = this.attribute;\n if (isString(attribute.path, true)) {\n this.cache = new CustomPath2D().fromString(attribute.path as string);\n } else if (attribute.customPath) {\n this.cache = new CustomPath2D();\n attribute.customPath(this.cache, this);\n }\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, PATH_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, PATH_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const x = 0;\n const y = 0;\n\n return new CustomPath2D().fromCustomPath2D(this.getParsedPathShape(), x, y);\n }\n\n clone() {\n return new Path({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Path.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createPath(attributes: IPathGraphicAttribute): IPath {\n return new Path(attributes);\n}\n"]}
@@ -22,7 +22,8 @@ class Polygon extends graphic_1.Graphic {
22
22
  }
23
23
  updateAABBBounds(attribute, polygonTheme, aabbBounds) {
24
24
  this.updatePathProxyAABBBounds(aabbBounds) || this.updatePolygonAABBBoundsImprecise(attribute, polygonTheme, aabbBounds),
25
- application_1.application.graphicService.updateTempAABBBounds(aabbBounds);
25
+ application_1.application.graphicService.updateTempAABBBounds(aabbBounds), this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1,
26
+ this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;
26
27
  const {lineJoin: lineJoin = polygonTheme.lineJoin} = attribute;
27
28
  return application_1.application.graphicService.transformAABBBounds(attribute, aabbBounds, polygonTheme, "miter" === lineJoin, this),
28
29
  aabbBounds;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/polygon.ts"],"names":[],"mappings":";;;AACA,uCAAiF;AAEjF,mCAAmC;AACnC,2CAAsD;AACtD,2DAAuD;AACvD,gDAA6C;AAE7C,2CAAkD;AAElD,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,gCAAsB,CAAC,CAAC;AAErF,MAAa,OAAQ,SAAQ,iBAAiC;IAK5D,YAAY,MAAgC;QAC1C,KAAK,CAAC,MAAM,CAAC,CAAC;QALhB,SAAI,GAAgB,SAAS,CAAC;QAM5B,IAAI,CAAC,UAAU,GAAG,+BAAmB,CAAC;IACxC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACS,QAAQ;QAChB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAES,gBAAgB,CACxB,SAAmC,EACnC,YAAgD,EAChD,UAAuB;QAEvB,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;YAC/C,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;SAC5E;QACD,yBAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAE5D,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;QACvD,yBAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,KAAK,OAAO,EAAE,IAAI,CAAC,CAAC;QAChH,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,gCAAgC,CACxC,SAAmC,EACnC,YAAgD,EAChD,UAAuB;QAEvB,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,WAAgB,EAAE,WAAgB,EAAE,cAAmB;QACxG,IAAI,GAAG,KAAK,QAAQ,EAAE;YACnB,cAAsB,CAAC,MAAM,GAAG,IAAA,2BAAmB,EAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;SACvF;IACH,CAAC;IAES,cAAc,CAAC,IAAc;QACrC,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAC5D,CAAC;IACS,aAAa,CAAC,GAAW;QACjC,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,4BAAY,EAAE,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aAC/B;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aAC/B;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,OAAO,mBAAM,IAAI,CAAC,SAAS,EAAG,CAAC;IAC5C,CAAC;IAED,oBAAoB;QAClB,OAAO,OAAO,CAAC,mBAAmB,CAAC;IACrC,CAAC;;AArFH,0BAsFC;AAnFQ,2BAAmB,GAAG,6BAAmB,CAAC;AAqFnD,SAAgB,aAAa,CAAC,UAAoC;IAChE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAFD,sCAEC","file":"polygon.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { IPolygon, IPolygonGraphicAttribute } from '../interface/graphic/polygon';\nimport { getTheme } from './theme';\nimport { pointsInterpolation } from '../common/utils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { application } from '../application';\nimport type { GraphicType } from '../interface';\nimport { POLYGON_NUMBER_TYPE } from './constants';\n\nconst POLYGON_UPDATE_TAG_KEY = ['points', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Polygon extends Graphic<IPolygonGraphicAttribute> implements IPolygon {\n type: GraphicType = 'polygon';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IPolygonGraphicAttribute) {\n super(params);\n this.numberType = POLYGON_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n protected _isValid(): boolean {\n const { points } = this.attribute;\n return points && points.length >= 2;\n }\n\n getGraphicTheme(): Required<IPolygonGraphicAttribute> {\n return getTheme(this).polygon;\n }\n\n protected updateAABBBounds(\n attribute: IPolygonGraphicAttribute,\n polygonTheme: Required<IPolygonGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n this.updatePolygonAABBBoundsImprecise(attribute, polygonTheme, aabbBounds);\n }\n application.graphicService.updateTempAABBBounds(aabbBounds);\n\n const { lineJoin = polygonTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, polygonTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected updatePolygonAABBBoundsImprecise(\n attribute: IPolygonGraphicAttribute,\n polygonTheme: Required<IPolygonGraphicAttribute>,\n aabbBounds: IAABBBounds\n ): IAABBBounds {\n const { points = polygonTheme.points } = attribute;\n points.forEach(p => {\n aabbBounds.add(p.x, p.y);\n });\n\n return aabbBounds;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void {\n if (key === 'points') {\n (nextAttributes as any).points = pointsInterpolation(lastStepVal, nextStepVal, ratio);\n }\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, POLYGON_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, POLYGON_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const points = this.attribute.points;\n const path = new CustomPath2D();\n\n points.forEach((point, index) => {\n if (index === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n });\n path.closePath();\n\n return path;\n }\n\n clone() {\n return new Polygon({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Polygon.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createPolygon(attributes: IPolygonGraphicAttribute): IPolygon {\n return new Polygon(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/polygon.ts"],"names":[],"mappings":"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","file":"polygon.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { IPolygon, IPolygonGraphicAttribute } from '../interface/graphic/polygon';\nimport { getTheme } from './theme';\nimport { pointsInterpolation } from '../common/utils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { application } from '../application';\nimport type { GraphicType } from '../interface';\nimport { POLYGON_NUMBER_TYPE } from './constants';\n\nconst POLYGON_UPDATE_TAG_KEY = ['points', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Polygon extends Graphic<IPolygonGraphicAttribute> implements IPolygon {\n type: GraphicType = 'polygon';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IPolygonGraphicAttribute) {\n super(params);\n this.numberType = POLYGON_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n protected _isValid(): boolean {\n const { points } = this.attribute;\n return points && points.length >= 2;\n }\n\n getGraphicTheme(): Required<IPolygonGraphicAttribute> {\n return getTheme(this).polygon;\n }\n\n protected updateAABBBounds(\n attribute: IPolygonGraphicAttribute,\n polygonTheme: Required<IPolygonGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n this.updatePolygonAABBBoundsImprecise(attribute, polygonTheme, aabbBounds);\n }\n application.graphicService.updateTempAABBBounds(aabbBounds);\n\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n\n const { lineJoin = polygonTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, polygonTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected updatePolygonAABBBoundsImprecise(\n attribute: IPolygonGraphicAttribute,\n polygonTheme: Required<IPolygonGraphicAttribute>,\n aabbBounds: IAABBBounds\n ): IAABBBounds {\n const { points = polygonTheme.points } = attribute;\n points.forEach(p => {\n aabbBounds.add(p.x, p.y);\n });\n\n return aabbBounds;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void {\n if (key === 'points') {\n (nextAttributes as any).points = pointsInterpolation(lastStepVal, nextStepVal, ratio);\n }\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, POLYGON_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, POLYGON_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const points = this.attribute.points;\n const path = new CustomPath2D();\n\n points.forEach((point, index) => {\n if (index === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n });\n path.closePath();\n\n return path;\n }\n\n clone() {\n return new Polygon({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Polygon.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createPolygon(attributes: IPolygonGraphicAttribute): IPolygon {\n return new Polygon(attributes);\n}\n"]}
@@ -28,7 +28,8 @@ class Rect extends graphic_1.Graphic {
28
28
  }
29
29
  const {tb1: tb1, tb2: tb2} = application_1.application.graphicService.updateTempAABBBounds(aabbBounds);
30
30
  return (0, common_outer_boder_bounds_1.updateBoundsOfCommonOuterBorder)(attribute, rectTheme, tb1),
31
- aabbBounds.union(tb1), tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2), application_1.application.graphicService.transformAABBBounds(attribute, aabbBounds, rectTheme, !1, this),
31
+ aabbBounds.union(tb1), tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2), this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1,
32
+ this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1, application_1.application.graphicService.transformAABBBounds(attribute, aabbBounds, rectTheme, !1, this),
32
33
  aabbBounds;
33
34
  }
34
35
  needUpdateTags(keys) {
@@ -38,9 +39,12 @@ class Rect extends graphic_1.Graphic {
38
39
  return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);
39
40
  }
40
41
  toCustomPath() {
42
+ let path = super.toCustomPath();
43
+ if (path) return path;
41
44
  const attribute = this.attribute, {x: x, y: y, width: width, height: height} = (0,
42
- rect_utils_1.normalizeRectAttributes)(attribute), path = new custom_path2d_1.CustomPath2D;
43
- return path.moveTo(x, y), path.rect(x, y, width, height), path;
45
+ rect_utils_1.normalizeRectAttributes)(attribute);
46
+ return path = new custom_path2d_1.CustomPath2D, path.moveTo(x, y), path.rect(x, y, width, height),
47
+ path;
44
48
  }
45
49
  clone() {
46
50
  return new Rect(Object.assign({}, this.attribute));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\nimport { normalizeRectAttributes } from '../common/rect-utils';\nimport { updateBoundsOfCommonOuterBorder } from './graphic-service/common-outer-boder-bounds';\n\nconst RECT_UPDATE_TAG_KEY = ['width', 'x1', 'y1', 'height', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Rect extends Graphic<IRectGraphicAttribute> implements IRect {\n type: GraphicType = 'rect';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IRectGraphicAttribute) {\n super(params);\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n return true;\n // 暂时不判断,理论上认为都是合法的,节省性能耗时\n // const { width, x1, y1, height } = this.attribute;\n // return (this._validNumber(width) || this._validNumber(x1)) && (this._validNumber(height) || this._validNumber(y1));\n }\n\n getGraphicTheme(): Required<IRectGraphicAttribute> {\n return getTheme(this).rect;\n }\n\n protected updateAABBBounds(\n attribute: IRectGraphicAttribute,\n rectTheme: Required<IRectGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n let { width, height } = attribute;\n const { x1, y1, x, y } = attribute;\n width = width ?? x1 - x;\n height = height ?? y1 - y;\n if (isFinite(width) || isFinite(height) || isFinite(x) || isFinite(y)) {\n aabbBounds.set(0, 0, width || 0, height || 0);\n }\n }\n\n const { tb1, tb2 } = application.graphicService.updateTempAABBBounds(aabbBounds);\n\n updateBoundsOfCommonOuterBorder(attribute, rectTheme, tb1);\n aabbBounds.union(tb1);\n tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);\n\n application.graphicService.transformAABBBounds(attribute, aabbBounds, rectTheme, false, this);\n return aabbBounds;\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RECT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);\n }\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const attribute = this.attribute;\n const { x, y, width, height } = normalizeRectAttributes(attribute);\n\n const path = new CustomPath2D();\n path.moveTo(x, y);\n path.rect(x, y, width, height);\n\n return path;\n }\n\n clone() {\n return new Rect({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Rect.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRect(attributes: IRectGraphicAttribute): IRect {\n return new Rect(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\nimport { normalizeRectAttributes } from '../common/rect-utils';\nimport { updateBoundsOfCommonOuterBorder } from './graphic-service/common-outer-boder-bounds';\nimport { EmptyContext2d } from '../canvas';\n\nconst RECT_UPDATE_TAG_KEY = ['width', 'x1', 'y1', 'height', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Rect extends Graphic<IRectGraphicAttribute> implements IRect {\n type: GraphicType = 'rect';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IRectGraphicAttribute) {\n super(params);\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n return true;\n // 暂时不判断,理论上认为都是合法的,节省性能耗时\n // const { width, x1, y1, height } = this.attribute;\n // return (this._validNumber(width) || this._validNumber(x1)) && (this._validNumber(height) || this._validNumber(y1));\n }\n\n getGraphicTheme(): Required<IRectGraphicAttribute> {\n return getTheme(this).rect;\n }\n\n protected updateAABBBounds(\n attribute: IRectGraphicAttribute,\n rectTheme: Required<IRectGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n let { width, height } = attribute;\n const { x1, y1, x, y } = attribute;\n width = width ?? x1 - x;\n height = height ?? y1 - y;\n if (isFinite(width) || isFinite(height) || isFinite(x) || isFinite(y)) {\n aabbBounds.set(0, 0, width || 0, height || 0);\n }\n }\n\n const { tb1, tb2 } = application.graphicService.updateTempAABBBounds(aabbBounds);\n\n updateBoundsOfCommonOuterBorder(attribute, rectTheme, tb1);\n aabbBounds.union(tb1);\n tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);\n\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n\n application.graphicService.transformAABBBounds(attribute, aabbBounds, rectTheme, false, this);\n return aabbBounds;\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RECT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);\n }\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n let path = super.toCustomPath();\n if (path) {\n return path;\n }\n const attribute = this.attribute;\n const { x, y, width, height } = normalizeRectAttributes(attribute);\n\n path = new CustomPath2D();\n path.moveTo(x, y);\n path.rect(x, y, width, height);\n\n return path;\n }\n\n clone() {\n return new Rect({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Rect.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRect(attributes: IRectGraphicAttribute): IRect {\n return new Rect(attributes);\n}\n"]}
@@ -16,7 +16,7 @@ export declare class RichTextIcon extends Image implements IRichTextIcon {
16
16
  to: Record<string, any>;
17
17
  } | undefined;
18
18
  incrementalAt?: number | undefined;
19
- toCustomPath?: (() => ICustomPath2D) | undefined;
19
+ toCustomPath: (() => ICustomPath2D) | undefined;
20
20
  get width(): number;
21
21
  get height(): number;
22
22
  protected tryUpdateAABBBounds(): IAABBBounds;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/richtext/icon.ts"],"names":[],"mappings":"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","file":"icon.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { isArray } from '@visactor/vutils';\nimport type { ICustomPath2D, IRichTextIcon, IRichTextIconGraphicAttribute } from '../../interface';\nimport { Image } from '../image';\nimport { DefaultImageAttribute } from '../config';\nimport { parsePadding } from '../../common/utils';\n\n// export const IMAGE_NUMBER_TYPE = genNumberType();\n\nexport class RichTextIcon extends Image implements IRichTextIcon {\n // type: 'richtext-icon' = 'richtext-icon';\n declare attribute: IRichTextIconGraphicAttribute;\n richtextId?: string;\n // 全局坐标,供外部用户pick后使用\n globalX?: number;\n globalY?: number;\n _x: number = 0;\n _y: number = 0;\n _hovered: boolean = false;\n _marginArray: [number, number, number, number] = [0, 0, 0, 0];\n\n constructor(params: IRichTextIconGraphicAttribute) {\n super(params);\n\n if (params.backgroundShowMode === 'always') {\n this._hovered = true;\n }\n\n if (params.margin) {\n const marginArray = parsePadding(params.margin);\n if (typeof marginArray === 'number') {\n this._marginArray = [marginArray, marginArray, marginArray, marginArray];\n } else {\n this._marginArray = marginArray;\n }\n }\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ((isArray(key) && key.indexOf('margin') !== -1) || key === 'margin') {\n if (attributes.margin) {\n const marginArray = parsePadding(attributes.margin);\n if (typeof marginArray === 'number') {\n this._marginArray = [marginArray, marginArray, marginArray, marginArray];\n } else {\n this._marginArray = marginArray;\n }\n } else {\n this._marginArray = [0, 0, 0, 0];\n }\n }\n return undefined;\n };\n }\n animationBackUps?: { from: Record<string, any>; to: Record<string, any> } | undefined;\n incrementalAt?: number | undefined;\n toCustomPath?: (() => ICustomPath2D) | undefined;\n\n get width(): number {\n return (this.attribute.width ?? 0) + this._marginArray[1] + this._marginArray[3];\n }\n\n get height(): number {\n return (this.attribute.height ?? 0) + this._marginArray[0] + this._marginArray[2];\n }\n\n protected tryUpdateAABBBounds(): IAABBBounds {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n\n this.doUpdateAABBBounds();\n\n // 扩大范围\n const { width = DefaultImageAttribute.width, height = DefaultImageAttribute.height } = this.attribute;\n const { backgroundWidth = width, backgroundHeight = height } = this.attribute;\n const expandX = (backgroundWidth - width) / 2;\n const expandY = (backgroundHeight - height) / 2;\n (this._AABBBounds as any).expand([0, expandX * 2, expandY * 2, 0]);\n\n return this._AABBBounds;\n }\n\n setHoverState(hovered: boolean) {\n if (this.attribute.backgroundShowMode === 'hover' && this._hovered !== hovered) {\n this._hovered = hovered;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/richtext/icon.ts"],"names":[],"mappings":"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","file":"icon.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { isArray } from '@visactor/vutils';\nimport type { ICustomPath2D, IRichTextIcon, IRichTextIconGraphicAttribute } from '../../interface';\nimport { Image } from '../image';\nimport { DefaultImageAttribute } from '../config';\nimport { parsePadding } from '../../common/utils';\n\n// export const IMAGE_NUMBER_TYPE = genNumberType();\n\nexport class RichTextIcon extends Image implements IRichTextIcon {\n // type: 'richtext-icon' = 'richtext-icon';\n declare attribute: IRichTextIconGraphicAttribute;\n richtextId?: string;\n // 全局坐标,供外部用户pick后使用\n globalX?: number;\n globalY?: number;\n _x: number = 0;\n _y: number = 0;\n _hovered: boolean = false;\n _marginArray: [number, number, number, number] = [0, 0, 0, 0];\n\n constructor(params: IRichTextIconGraphicAttribute) {\n super(params);\n\n if (params.backgroundShowMode === 'always') {\n this._hovered = true;\n }\n\n if (params.margin) {\n const marginArray = parsePadding(params.margin);\n if (typeof marginArray === 'number') {\n this._marginArray = [marginArray, marginArray, marginArray, marginArray];\n } else {\n this._marginArray = marginArray;\n }\n }\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ((isArray(key) && key.indexOf('margin') !== -1) || key === 'margin') {\n if (attributes.margin) {\n const marginArray = parsePadding(attributes.margin);\n if (typeof marginArray === 'number') {\n this._marginArray = [marginArray, marginArray, marginArray, marginArray];\n } else {\n this._marginArray = marginArray;\n }\n } else {\n this._marginArray = [0, 0, 0, 0];\n }\n }\n return undefined;\n };\n }\n animationBackUps?: { from: Record<string, any>; to: Record<string, any> } | undefined;\n incrementalAt?: number | undefined;\n toCustomPath: (() => ICustomPath2D) | undefined;\n\n get width(): number {\n return (this.attribute.width ?? 0) + this._marginArray[1] + this._marginArray[3];\n }\n\n get height(): number {\n return (this.attribute.height ?? 0) + this._marginArray[0] + this._marginArray[2];\n }\n\n protected tryUpdateAABBBounds(): IAABBBounds {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n\n this.doUpdateAABBBounds();\n\n // 扩大范围\n const { width = DefaultImageAttribute.width, height = DefaultImageAttribute.height } = this.attribute;\n const { backgroundWidth = width, backgroundHeight = height } = this.attribute;\n const expandX = (backgroundWidth - width) / 2;\n const expandY = (backgroundHeight - height) / 2;\n (this._AABBBounds as any).expand([0, expandX * 2, expandY * 2, 0]);\n\n return this._AABBBounds;\n }\n\n setHoverState(hovered: boolean) {\n if (this.attribute.backgroundShowMode === 'hover' && this._hovered !== hovered) {\n this._hovered = hovered;\n }\n }\n}\n"]}
@@ -137,7 +137,7 @@ class RichText extends graphic_1.Graphic {
137
137
  }
138
138
  updateAABBBounds(attribute, richtextTheme, aabbBounds) {
139
139
  var _a, _b, _c, _d;
140
- const {width: width = richtextTheme.width, height: height = richtextTheme.height, maxWidth: maxWidth = richtextTheme.maxWidth, maxHeight: maxHeight = richtextTheme.maxHeight, textAlign: textAlign = richtextTheme.textAlign, verticalDirection: verticalDirection = (null !== (_b = null !== (_a = attribute.textBaseline) && void 0 !== _a ? _a : richtextTheme.textBaseline) && void 0 !== _b ? _b : richtextTheme.verticalDirection), editOptions: editOptions} = attribute;
140
+ const {width: width = richtextTheme.width, height: height = richtextTheme.height, maxWidth: maxWidth = richtextTheme.maxWidth, maxHeight: maxHeight = richtextTheme.maxHeight, textAlign: textAlign = richtextTheme.textAlign, textBaseline: textBaseline = (null !== (_b = null !== (_a = attribute.textBaseline) && void 0 !== _a ? _a : richtextTheme.textBaseline) && void 0 !== _b ? _b : "top"), editOptions: editOptions} = attribute;
141
141
  if (width > 0 && height > 0) aabbBounds.set(0, 0, width, height); else {
142
142
  const frameCache = this.getFrameCache(), {width: actualWidth, height: actualHeight} = frameCache.getActualSize();
143
143
  let contentWidth = width || actualWidth || 0, contentHeight = height || actualHeight || 0;
@@ -148,7 +148,7 @@ class RichText extends graphic_1.Graphic {
148
148
  editOptions && editOptions.keepHeightWhileEmpty && !aabbBounds.height() && !(null === (_c = attribute.textConfig) || void 0 === _c ? void 0 : _c.length) && (aabbBounds.y2 = aabbBounds.y1 + (null !== (_d = attribute.fontSize) && void 0 !== _d ? _d : 12),
149
149
  aabbBounds.x2 = aabbBounds.x1 + 2);
150
150
  let deltaY = 0;
151
- switch (verticalDirection) {
151
+ switch (textBaseline) {
152
152
  case "top":
153
153
  deltaY = 0;
154
154
  break;
@@ -175,6 +175,7 @@ class RichText extends graphic_1.Graphic {
175
175
  }
176
176
  return aabbBounds.translate(deltaX, deltaY), application_1.application.graphicService.updateTempAABBBounds(aabbBounds),
177
177
  null == attribute.forceBoundsHeight && null == attribute.forceBoundsWidth || application_1.application.graphicService.updateHTMLTextAABBBounds(attribute, richtextTheme, aabbBounds),
178
+ this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1, this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1,
178
179
  application_1.application.graphicService.transformAABBBounds(attribute, aabbBounds, richtextTheme, !1, this),
179
180
  0 === aabbBounds.width() && 0 === aabbBounds.height() && aabbBounds.clear(), aabbBounds;
180
181
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/richtext.ts"],"names":[],"mappings":"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","file":"richtext.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { isNumber, isString } from '@visactor/vutils';\nimport type {\n IRichText,\n IRichTextCharacter,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n RichTextVerticalDirection,\n RichTextWordBreak,\n IRichTextGraphicAttribute,\n IRichTextImageCharacter,\n IRichTextParagraphCharacter,\n IStage,\n ILayer,\n IRichTextIcon,\n EventPoint,\n IRichTextFrame,\n ISetAttributeContext\n} from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { DefaultRichTextAttribute } from './config';\nimport Frame from './richtext/frame';\nimport Paragraph from './richtext/paragraph';\nimport Wrapper from './richtext/wrapper';\nimport { getTheme } from './theme';\nimport { RichTextIcon } from './richtext/icon';\nimport type { FederatedMouseEvent } from '../event';\nimport { application } from '../application';\nimport { RICHTEXT_NUMBER_TYPE } from './constants';\n\nlet supportIntl = false;\ntry {\n supportIntl = Intl && typeof (Intl as any).Segmenter === 'function';\n} catch (e) {\n supportIntl = false;\n}\n\nconst RICHTEXT_UPDATE_TAG_KEY = [\n 'width',\n 'height',\n 'ellipsis',\n 'wordBreak',\n 'verticalDirection',\n 'maxHeight',\n 'maxWidth',\n 'textAlign',\n 'textBaseline',\n 'textConfig',\n 'layoutDirection',\n 'fill',\n 'stroke',\n 'fontSize',\n 'fontFamily',\n 'fontStyle',\n 'fontWeight',\n 'lineWidth',\n 'opacity',\n 'fillOpacity',\n 'strokeOpacity',\n ...GRAPHIC_UPDATE_TAG_KEY\n];\n\nexport class RichText extends Graphic<IRichTextGraphicAttribute> implements IRichText {\n type: 'richtext' = 'richtext';\n\n _frameCache: Frame; // 富文本布局画布\n _currentHoverIcon: IRichTextIcon | null = null;\n\n static NOWORK_ANIMATE_ATTR = {\n ellipsis: 1,\n wordBreak: 1,\n verticalDirection: 1,\n textAlign: 1,\n textBaseline: 1,\n textConfig: 1,\n layoutDirection: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params?: IRichTextGraphicAttribute) {\n super(params);\n this.numberType = RICHTEXT_NUMBER_TYPE;\n\n this.onBeforeAttributeUpdate = ((val: any, attributes: any, key: null | string | string[]) => {\n for (const key in val) {\n if (key === 'hoverIconId') {\n if (val[key] === attributes[key]) {\n continue;\n }\n const icon = this._frameCache.icons.get(val[key]);\n this.updateHoverIconState(icon);\n }\n }\n }) as any;\n }\n\n get width(): number {\n return this.attribute.width ?? DefaultRichTextAttribute.width;\n }\n set width(w: number) {\n if (this.attribute.width === w) {\n return;\n }\n this.attribute.width = w;\n this.addUpdateShapeAndBoundsTag();\n }\n get height(): number {\n return this.attribute.height ?? DefaultRichTextAttribute.height;\n }\n set height(h: number) {\n if (this.attribute.height === h) {\n return;\n }\n this.attribute.height = h;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxWidth(): number | undefined {\n return this.attribute.maxWidth;\n }\n set maxWidth(mw: number | undefined) {\n if (this.attribute.maxWidth === mw) {\n return;\n }\n this.attribute.maxWidth = mw;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxHeight(): number | undefined {\n return this.attribute.maxHeight;\n }\n set maxHeight(mh: number | undefined) {\n if (this.attribute.maxHeight === mh) {\n return;\n }\n this.attribute.maxHeight = mh;\n this.addUpdateShapeAndBoundsTag();\n }\n get ellipsis(): boolean | string {\n return this.attribute.ellipsis ?? DefaultRichTextAttribute.ellipsis;\n }\n set ellipsis(e: boolean | string) {\n if (this.attribute.ellipsis === e) {\n return;\n }\n this.attribute.ellipsis = e;\n this.addUpdateShapeAndBoundsTag();\n }\n get wordBreak(): RichTextWordBreak {\n return this.attribute.wordBreak ?? DefaultRichTextAttribute.wordBreak;\n }\n set wordBreak(wb: RichTextWordBreak) {\n if (this.attribute.wordBreak === wb) {\n return;\n }\n this.attribute.wordBreak = wb;\n this.addUpdateShapeAndBoundsTag();\n }\n get verticalDirection(): RichTextVerticalDirection {\n return this.attribute.verticalDirection ?? DefaultRichTextAttribute.verticalDirection;\n }\n set verticalDirection(vd: RichTextVerticalDirection) {\n if (this.attribute.verticalDirection === vd) {\n return;\n }\n this.attribute.verticalDirection = vd;\n this.addUpdateShapeAndBoundsTag();\n }\n get textAlign(): RichTextGlobalAlignType {\n return this.attribute.textAlign ?? DefaultRichTextAttribute.textAlign;\n }\n set textAlign(align: RichTextGlobalAlignType) {\n if (this.attribute.textAlign === align) {\n return;\n }\n this.attribute.textAlign = align;\n this.addUpdateShapeAndBoundsTag();\n }\n get textBaseline(): RichTextGlobalBaselineType {\n return this.attribute.textBaseline ?? DefaultRichTextAttribute.textBaseline;\n }\n set textBaseline(baseline: RichTextGlobalBaselineType) {\n if (this.attribute.textBaseline === baseline) {\n return;\n }\n this.attribute.textBaseline = baseline;\n this.addUpdateShapeAndBoundsTag();\n }\n get textConfig(): IRichTextCharacter[] {\n return this.attribute.textConfig ?? DefaultRichTextAttribute.textConfig;\n }\n set textConfig(config: IRichTextCharacter[]) {\n this.attribute.textConfig = config;\n this.addUpdateShapeAndBoundsTag();\n }\n\n getGraphicTheme(): Required<IRichTextGraphicAttribute> {\n return getTheme(this).richtext;\n }\n\n static AllSingleCharacter(cache: IRichTextFrame | IRichTextGraphicAttribute['textConfig']) {\n if ((cache as IRichTextFrame).lines) {\n const frame = cache as IRichTextFrame;\n return frame.lines.every(line =>\n line.paragraphs.every(item => !(item.text && isString(item.text) && RichText.splitText(item.text).length > 1))\n );\n }\n // isComposing的不算\n const tc = cache as IRichTextGraphicAttribute['textConfig'];\n return tc.every(\n item =>\n (item as any).isComposing ||\n !((item as any).text && isString((item as any).text) && RichText.splitText((item as any).text).length > 1)\n );\n }\n\n static splitText(text: string) {\n if (supportIntl) {\n // 不传入具体语言标签,使用默认设置\n const segmenter = new (Intl as any).Segmenter(undefined, { granularity: 'grapheme' });\n const segments = [];\n for (const { segment } of segmenter.segment(text)) {\n segments.push(segment);\n }\n return segments;\n }\n // 如果不支持 Intl.Segmenter,则使用旧方法\n return Array.from(text);\n }\n\n static TransformTextConfig2SingleCharacter(textConfig: IRichTextGraphicAttribute['textConfig']) {\n const tc: IRichTextGraphicAttribute['textConfig'] = [];\n textConfig.forEach((item: IRichTextParagraphCharacter) => {\n const textList = RichText.splitText(item.text.toString());\n if (isString(item.text) && textList.length > 1) {\n // 拆分\n for (let i = 0; i < textList.length; i++) {\n const t = textList[i];\n tc.push({ ...item, text: t });\n }\n } else {\n tc.push(item);\n }\n });\n\n return tc;\n }\n\n protected updateAABBBounds(\n attribute: IRichTextGraphicAttribute,\n richtextTheme: Required<IRichTextGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n const {\n width = richtextTheme.width,\n height = richtextTheme.height,\n maxWidth = richtextTheme.maxWidth,\n maxHeight = richtextTheme.maxHeight,\n textAlign = richtextTheme.textAlign,\n verticalDirection = attribute.textBaseline ?? richtextTheme.textBaseline ?? richtextTheme.verticalDirection,\n editOptions\n } = attribute;\n\n if (width > 0 && height > 0) {\n // 外部设置宽高\n aabbBounds.set(0, 0, width, height);\n } else {\n // 获取内容宽高\n const frameCache = this.getFrameCache();\n const { width: actualWidth, height: actualHeight } = frameCache.getActualSize();\n let contentWidth = width || actualWidth || 0;\n let contentHeight = height || actualHeight || 0;\n\n contentHeight = typeof maxHeight === 'number' && contentHeight > maxHeight ? maxHeight : contentHeight || 0;\n contentWidth = typeof maxWidth === 'number' && contentWidth > maxWidth ? maxWidth : contentWidth || 0;\n\n aabbBounds.set(0, 0, contentWidth, contentHeight);\n }\n\n // 如果是可编辑状态,且没有设置高度,就用fontSize,否则就完全选不到了\n if (editOptions && editOptions.keepHeightWhileEmpty && !aabbBounds.height() && !attribute.textConfig?.length) {\n aabbBounds.y2 = aabbBounds.y1 + (attribute.fontSize ?? 12);\n aabbBounds.x2 = aabbBounds.x1 + 2;\n }\n\n // 调整对齐方式\n let deltaY = 0;\n switch (verticalDirection) {\n case 'top':\n deltaY = 0;\n break;\n case 'middle':\n deltaY = -aabbBounds.height() / 2;\n break;\n case 'bottom':\n deltaY = -aabbBounds.height();\n break;\n default:\n break;\n }\n let deltaX = 0;\n switch (textAlign) {\n case 'left':\n deltaX = 0;\n break;\n case 'center':\n deltaX = -aabbBounds.width() / 2;\n break;\n case 'right':\n deltaX = -aabbBounds.width();\n break;\n default:\n break;\n }\n aabbBounds.translate(deltaX, deltaY);\n\n application.graphicService.updateTempAABBBounds(aabbBounds);\n\n if (attribute.forceBoundsHeight != null || attribute.forceBoundsWidth != null) {\n application.graphicService.updateHTMLTextAABBBounds(attribute, richtextTheme, aabbBounds);\n }\n application.graphicService.transformAABBBounds(attribute, aabbBounds, richtextTheme, false, this);\n // 都为0的话,就直接clear\n if (aabbBounds.width() === 0 && aabbBounds.height() === 0) {\n aabbBounds.clear();\n }\n return aabbBounds;\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RICHTEXT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RICHTEXT_UPDATE_TAG_KEY);\n }\n getFrameCache(): IRichTextFrame {\n if (this.shouldUpdateShape()) {\n this.doUpdateFrameCache();\n this.clearUpdateShapeTag();\n }\n return this._frameCache as IRichTextFrame;\n }\n\n get cliped() {\n const frameCache = this.getFrameCache();\n if (frameCache.actualHeight > frameCache.height) {\n return true;\n }\n const { disableAutoWrapLine } = this.attribute;\n if (disableAutoWrapLine) {\n for (let i = 0; i < frameCache.lines.length; i++) {\n const l = frameCache.lines[i];\n for (let j = 0; j < l.paragraphs.length; j++) {\n const p = l.paragraphs[j];\n if ((p as any).overflow && (p as any).text !== '') {\n return true;\n }\n }\n }\n }\n return false;\n // if (height < this.attribute.height || )\n }\n combinedStyleToCharacter(config: IRichTextImageCharacter | IRichTextParagraphCharacter) {\n const {\n fill,\n stroke,\n fontSize,\n fontFamily,\n fontStyle,\n fontWeight,\n lineWidth,\n opacity,\n fillOpacity,\n lineHeight,\n strokeOpacity,\n upgradeAttrs\n } = this.attribute;\n const out = {\n fill,\n stroke,\n fontSize,\n fontFamily,\n fontStyle,\n fontWeight,\n lineWidth,\n opacity,\n fillOpacity,\n strokeOpacity,\n ...config\n };\n if (upgradeAttrs?.lineHeight) {\n out.lineHeight = lineHeight;\n }\n return out;\n }\n doUpdateFrameCache(tc?: IRichTextCharacter[]) {\n // 1. 测量,生成paragraph\n const {\n maxWidth,\n maxHeight,\n width,\n height,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection,\n singleLine,\n disableAutoWrapLine,\n editable,\n ascentDescentMode,\n upgradeAttrs\n } = this.attribute;\n\n const enableMultiBreakLine = upgradeAttrs && upgradeAttrs.multiBreakLine;\n\n let { textConfig: _tc = [] } = this.attribute;\n\n // 预处理editable,将textConfig中的text转换为单个字符\n if (editable && _tc.length > 0 && !RichText.AllSingleCharacter(_tc)) {\n _tc = RichText.TransformTextConfig2SingleCharacter(_tc);\n this.attribute.textConfig = _tc;\n }\n\n const paragraphs: (Paragraph | RichTextIcon)[] = [];\n\n const textConfig = tc ?? _tc;\n\n for (let i = 0; i < textConfig.length; i++) {\n if ('image' in textConfig[i]) {\n const config = this.combinedStyleToCharacter(\n textConfig[i] as IRichTextImageCharacter\n ) as IRichTextImageCharacter;\n (config as any).lineWidth = undefined; // for icon bounds\n // 直接创建icon Mark\n const iconCache =\n config.id && this._frameCache && this._frameCache.icons && this._frameCache.icons.get(config.id);\n if (iconCache) {\n paragraphs.push(iconCache as RichTextIcon);\n } else {\n const icon = new RichTextIcon(config);\n icon.successCallback = () => {\n this.addUpdateBoundTag();\n this.stage?.renderNextFrame();\n };\n icon.richtextId = config.id;\n paragraphs.push(icon);\n }\n } else {\n const richTextConfig = this.combinedStyleToCharacter(\n textConfig[i] as IRichTextParagraphCharacter\n ) as IRichTextParagraphCharacter;\n if (isNumber(richTextConfig.text)) {\n richTextConfig.text = `${richTextConfig.text}`;\n }\n if (richTextConfig.text && richTextConfig.text.includes('\\n')) {\n // 如果有文字内有换行符,将该段文字切为多段,并在后一段加入newLine标记\n const textParts = richTextConfig.text.split('\\n');\n for (let j = 0; j < textParts.length; j++) {\n if (j === 0) {\n paragraphs.push(new Paragraph(textParts[j], false, richTextConfig, ascentDescentMode));\n } else if (textParts[j] || i === textConfig.length - 1) {\n paragraphs.push(new Paragraph(textParts[j], true, richTextConfig, ascentDescentMode));\n } else {\n // 空行的话,config应该要和下一行对齐\n const nextRichTextConfig = this.combinedStyleToCharacter(\n textConfig[i + 1] as IRichTextParagraphCharacter\n ) as IRichTextParagraphCharacter;\n paragraphs.push(new Paragraph(textParts[j], true, nextRichTextConfig, ascentDescentMode));\n }\n // paragraphs.push(new Paragraph(textParts[j], j !== 0, richTextConfig, ascentDescentMode));\n }\n } else if (richTextConfig.text) {\n paragraphs.push(new Paragraph(richTextConfig.text, false, richTextConfig, ascentDescentMode));\n }\n }\n }\n\n // 2. 布局,生成frame\n // const frameHeight =\n // typeof maxHeight === 'number' && (!height || height > maxHeight) // height = 0或height>maxHeight,使用maxHeight布局\n // ? maxHeight\n // : height;\n // const frameWidth =\n // typeof maxWidth === 'number' && (!width || width > maxWidth) // height = 0或height>maxWidth,使用maxWidth布局\n // ? maxWidth\n // : width;\n\n const maxWidthFinite = typeof maxWidth === 'number' && Number.isFinite(maxWidth) && maxWidth > 0;\n const maxHeightFinite = typeof maxHeight === 'number' && Number.isFinite(maxHeight) && maxHeight > 0;\n\n const richTextWidthEnable =\n typeof width === 'number' &&\n Number.isFinite(width) &&\n width > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxWidthFinite || width <= maxWidth);\n const richTextHeightEnable =\n typeof height === 'number' &&\n Number.isFinite(height) &&\n height > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxHeightFinite || height <= maxHeight);\n\n const frameWidth = richTextWidthEnable ? width : maxWidthFinite ? maxWidth : 0;\n const frameHeight = richTextHeightEnable ? height : maxHeightFinite ? maxHeight : 0;\n\n const frame = new Frame(\n 0,\n 0,\n frameWidth || 0,\n frameHeight || 0,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection || 'horizontal',\n // typeof maxWidth === 'number' && (!width || width > maxWidth),\n // typeof maxHeight === 'number' && (!height || height > maxHeight),\n !richTextWidthEnable && maxWidthFinite,\n !richTextHeightEnable && maxHeightFinite,\n singleLine || false,\n this._frameCache?.icons\n );\n const wrapper = new Wrapper(frame);\n // @since 0.22.0\n // 如果可编辑的话,则支持多换行符\n wrapper.newLine = enableMultiBreakLine;\n if (disableAutoWrapLine) {\n let lineCount = 0;\n let skip = false;\n for (let i = 0; i < paragraphs.length; i++) {\n const p = paragraphs[i];\n if (skip) {\n (p as Paragraph).overflow = true;\n (p as Paragraph).left = Infinity;\n (p as Paragraph).top = Infinity;\n !(p as Paragraph).newLine && frame.lines[frame.lines.length - 1].paragraphs.push(p);\n } else {\n wrapper.deal(p, true);\n }\n if (frame.lines.length !== lineCount) {\n lineCount = frame.lines.length;\n wrapper.lineBuffer.length = 0;\n (p as Paragraph).overflow = true;\n (p as Paragraph).left = 1000;\n (p as Paragraph).top = 1000;\n frame.lines[frame.lines.length - 1].paragraphs.push(p);\n skip = true;\n }\n if ((p as Paragraph).newLine) {\n skip = false;\n wrapper.lineWidth = 0;\n }\n wrapper.send();\n }\n } else {\n for (let i = 0; i < paragraphs.length; i++) {\n wrapper.deal(paragraphs[i]);\n }\n }\n\n wrapper.send(); // 最后一行手动输出\n\n // 如果对应的配置宽度不可用,那么需要额外进行一次对齐\n const directionEnable = frame.layoutDirection === 'horizontal' ? richTextWidthEnable : richTextHeightEnable;\n if (!directionEnable) {\n // 使用实际宽度\n const frameSize = frame.getActualSizeWidthEllipsis();\n let offsetSize = frame.layoutDirection === 'horizontal' ? frameSize.width : frameSize.height;\n // 如果最大值可用\n if (frame.layoutDirection === 'horizontal' ? maxWidthFinite : maxHeightFinite) {\n // 取2者中的较小值\n offsetSize = Math.min(\n offsetSize,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n frame.layoutDirection === 'horizontal' ? maxWidth : maxHeight\n );\n }\n\n frame.lines.forEach(function (l) {\n l.calcOffset(offsetSize, false);\n });\n }\n\n // 处理空行\n if (enableMultiBreakLine) {\n frame.lines.forEach(item => {\n const lastParagraphs = item.paragraphs;\n item.paragraphs = item.paragraphs.filter(p => (p as any).text !== '');\n if (item.paragraphs.length === 0 && lastParagraphs.length) {\n (lastParagraphs[0] as any).text = '\\n';\n item.paragraphs.push(lastParagraphs[0]);\n }\n });\n }\n\n this._frameCache = frame;\n\n // this.bindIconEvent();\n }\n\n clone() {\n return new RichText({ ...this.attribute });\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n super.setStage(stage, layer);\n const frameCache = this.getFrameCache();\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // icon.setStage(stage, layer);\n // }\n frameCache.icons.forEach(icon => {\n icon.setStage(stage, layer);\n });\n }\n\n // richtext绑定icon交互事件,供外部调用\n bindIconEvent() {\n this.addEventListener('pointermove', (e: FederatedMouseEvent) => {\n const pickedIcon = this.pickIcon(e.global);\n if (pickedIcon && pickedIcon === this._currentHoverIcon) {\n // do nothing\n } else if (pickedIcon) {\n this.setAttribute('hoverIconId', pickedIcon.richtextId);\n\n // this._currentHoverIcon?.setHoverState(false);\n // this._currentHoverIcon = pickedIcon;\n // this._currentHoverIcon.setHoverState(true);\n // this.stage?.setCursor(pickedIcon.attribute.cursor);\n // this.stage?.renderNextFrame();\n } else if (!pickedIcon && this._currentHoverIcon) {\n this.setAttribute('hoverIconId', undefined);\n\n // this._currentHoverIcon.setHoverState(false);\n // this._currentHoverIcon = null;\n // this.stage?.setCursor();\n // this.stage?.renderNextFrame();\n }\n });\n\n this.addEventListener('pointerleave', (e: FederatedMouseEvent) => {\n if (this._currentHoverIcon) {\n this.setAttribute('hoverIconId', undefined);\n\n // this._currentHoverIcon.setHoverState(false);\n // this._currentHoverIcon = null;\n // this.stage?.setCursor();\n // this.stage?.renderNextFrame();\n }\n });\n }\n\n updateHoverIconState(pickedIcon?: IRichTextIcon) {\n if (pickedIcon) {\n this._currentHoverIcon?.setHoverState(false);\n this._currentHoverIcon = pickedIcon;\n this._currentHoverIcon.setHoverState(true);\n this.stage?.setCursor(pickedIcon.attribute.cursor);\n this.stage?.renderNextFrame();\n } else {\n this._currentHoverIcon.setHoverState(false);\n this._currentHoverIcon = null;\n this.stage?.setCursor();\n this.stage?.renderNextFrame();\n }\n }\n\n pickIcon(point: EventPoint): IRichTextIcon | undefined {\n const frameCache = this.getFrameCache();\n const { e: x, f: y } = this.globalTransMatrix;\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // if (icon.containsPoint(point.x - x, point.y - y)) {\n // return icon;\n // }\n // }\n let pickIcon: IRichTextIcon | undefined;\n frameCache.icons.forEach((icon, key) => {\n const bounds = icon.AABBBounds.clone();\n bounds.translate(icon._marginArray[3], icon._marginArray[0]);\n if (bounds.containsPoint({ x: point.x - x, y: point.y - y })) {\n pickIcon = icon;\n\n pickIcon.globalX = (pickIcon.attribute.x ?? 0) + x + icon._marginArray[3];\n pickIcon.globalY = (pickIcon.attribute.y ?? 0) + y + icon._marginArray[0];\n }\n });\n\n return pickIcon;\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return RichText.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRichText(attributes: IRichTextGraphicAttribute): IRichText {\n return new RichText(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/richtext.ts"],"names":[],"mappings":"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","file":"richtext.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { isNumber, isString } from '@visactor/vutils';\nimport type {\n IRichText,\n IRichTextCharacter,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n RichTextVerticalDirection,\n RichTextWordBreak,\n IRichTextGraphicAttribute,\n IRichTextImageCharacter,\n IRichTextParagraphCharacter,\n IStage,\n ILayer,\n IRichTextIcon,\n EventPoint,\n IRichTextFrame,\n ISetAttributeContext\n} from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { DefaultRichTextAttribute } from './config';\nimport Frame from './richtext/frame';\nimport Paragraph from './richtext/paragraph';\nimport Wrapper from './richtext/wrapper';\nimport { getTheme } from './theme';\nimport { RichTextIcon } from './richtext/icon';\nimport type { FederatedMouseEvent } from '../event';\nimport { application } from '../application';\nimport { RICHTEXT_NUMBER_TYPE } from './constants';\n\nlet supportIntl = false;\ntry {\n supportIntl = Intl && typeof (Intl as any).Segmenter === 'function';\n} catch (e) {\n supportIntl = false;\n}\n\nconst RICHTEXT_UPDATE_TAG_KEY = [\n 'width',\n 'height',\n 'ellipsis',\n 'wordBreak',\n 'verticalDirection',\n 'maxHeight',\n 'maxWidth',\n 'textAlign',\n 'textBaseline',\n 'textConfig',\n 'layoutDirection',\n 'fill',\n 'stroke',\n 'fontSize',\n 'fontFamily',\n 'fontStyle',\n 'fontWeight',\n 'lineWidth',\n 'opacity',\n 'fillOpacity',\n 'strokeOpacity',\n ...GRAPHIC_UPDATE_TAG_KEY\n];\n\nexport class RichText extends Graphic<IRichTextGraphicAttribute> implements IRichText {\n type: 'richtext' = 'richtext';\n\n _frameCache: Frame; // 富文本布局画布\n _currentHoverIcon: IRichTextIcon | null = null;\n\n static NOWORK_ANIMATE_ATTR = {\n ellipsis: 1,\n wordBreak: 1,\n verticalDirection: 1,\n textAlign: 1,\n textBaseline: 1,\n textConfig: 1,\n layoutDirection: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params?: IRichTextGraphicAttribute) {\n super(params);\n this.numberType = RICHTEXT_NUMBER_TYPE;\n\n this.onBeforeAttributeUpdate = ((val: any, attributes: any, key: null | string | string[]) => {\n for (const key in val) {\n if (key === 'hoverIconId') {\n if (val[key] === attributes[key]) {\n continue;\n }\n const icon = this._frameCache.icons.get(val[key]);\n this.updateHoverIconState(icon);\n }\n }\n }) as any;\n }\n\n get width(): number {\n return this.attribute.width ?? DefaultRichTextAttribute.width;\n }\n set width(w: number) {\n if (this.attribute.width === w) {\n return;\n }\n this.attribute.width = w;\n this.addUpdateShapeAndBoundsTag();\n }\n get height(): number {\n return this.attribute.height ?? DefaultRichTextAttribute.height;\n }\n set height(h: number) {\n if (this.attribute.height === h) {\n return;\n }\n this.attribute.height = h;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxWidth(): number | undefined {\n return this.attribute.maxWidth;\n }\n set maxWidth(mw: number | undefined) {\n if (this.attribute.maxWidth === mw) {\n return;\n }\n this.attribute.maxWidth = mw;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxHeight(): number | undefined {\n return this.attribute.maxHeight;\n }\n set maxHeight(mh: number | undefined) {\n if (this.attribute.maxHeight === mh) {\n return;\n }\n this.attribute.maxHeight = mh;\n this.addUpdateShapeAndBoundsTag();\n }\n get ellipsis(): boolean | string {\n return this.attribute.ellipsis ?? DefaultRichTextAttribute.ellipsis;\n }\n set ellipsis(e: boolean | string) {\n if (this.attribute.ellipsis === e) {\n return;\n }\n this.attribute.ellipsis = e;\n this.addUpdateShapeAndBoundsTag();\n }\n get wordBreak(): RichTextWordBreak {\n return this.attribute.wordBreak ?? DefaultRichTextAttribute.wordBreak;\n }\n set wordBreak(wb: RichTextWordBreak) {\n if (this.attribute.wordBreak === wb) {\n return;\n }\n this.attribute.wordBreak = wb;\n this.addUpdateShapeAndBoundsTag();\n }\n get verticalDirection(): RichTextVerticalDirection {\n return this.attribute.verticalDirection ?? DefaultRichTextAttribute.verticalDirection;\n }\n set verticalDirection(vd: RichTextVerticalDirection) {\n if (this.attribute.verticalDirection === vd) {\n return;\n }\n this.attribute.verticalDirection = vd;\n this.addUpdateShapeAndBoundsTag();\n }\n get textAlign(): RichTextGlobalAlignType {\n return this.attribute.textAlign ?? DefaultRichTextAttribute.textAlign;\n }\n set textAlign(align: RichTextGlobalAlignType) {\n if (this.attribute.textAlign === align) {\n return;\n }\n this.attribute.textAlign = align;\n this.addUpdateShapeAndBoundsTag();\n }\n get textBaseline(): RichTextGlobalBaselineType {\n return this.attribute.textBaseline ?? DefaultRichTextAttribute.textBaseline;\n }\n set textBaseline(baseline: RichTextGlobalBaselineType) {\n if (this.attribute.textBaseline === baseline) {\n return;\n }\n this.attribute.textBaseline = baseline;\n this.addUpdateShapeAndBoundsTag();\n }\n get textConfig(): IRichTextCharacter[] {\n return this.attribute.textConfig ?? DefaultRichTextAttribute.textConfig;\n }\n set textConfig(config: IRichTextCharacter[]) {\n this.attribute.textConfig = config;\n this.addUpdateShapeAndBoundsTag();\n }\n\n getGraphicTheme(): Required<IRichTextGraphicAttribute> {\n return getTheme(this).richtext;\n }\n\n static AllSingleCharacter(cache: IRichTextFrame | IRichTextGraphicAttribute['textConfig']) {\n if ((cache as IRichTextFrame).lines) {\n const frame = cache as IRichTextFrame;\n return frame.lines.every(line =>\n line.paragraphs.every(item => !(item.text && isString(item.text) && RichText.splitText(item.text).length > 1))\n );\n }\n // isComposing的不算\n const tc = cache as IRichTextGraphicAttribute['textConfig'];\n return tc.every(\n item =>\n (item as any).isComposing ||\n !((item as any).text && isString((item as any).text) && RichText.splitText((item as any).text).length > 1)\n );\n }\n\n static splitText(text: string) {\n if (supportIntl) {\n // 不传入具体语言标签,使用默认设置\n const segmenter = new (Intl as any).Segmenter(undefined, { granularity: 'grapheme' });\n const segments = [];\n for (const { segment } of segmenter.segment(text)) {\n segments.push(segment);\n }\n return segments;\n }\n // 如果不支持 Intl.Segmenter,则使用旧方法\n return Array.from(text);\n }\n\n static TransformTextConfig2SingleCharacter(textConfig: IRichTextGraphicAttribute['textConfig']) {\n const tc: IRichTextGraphicAttribute['textConfig'] = [];\n textConfig.forEach((item: IRichTextParagraphCharacter) => {\n const textList = RichText.splitText(item.text.toString());\n if (isString(item.text) && textList.length > 1) {\n // 拆分\n for (let i = 0; i < textList.length; i++) {\n const t = textList[i];\n tc.push({ ...item, text: t });\n }\n } else {\n tc.push(item);\n }\n });\n\n return tc;\n }\n\n protected updateAABBBounds(\n attribute: IRichTextGraphicAttribute,\n richtextTheme: Required<IRichTextGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n const {\n width = richtextTheme.width,\n height = richtextTheme.height,\n maxWidth = richtextTheme.maxWidth,\n maxHeight = richtextTheme.maxHeight,\n textAlign = richtextTheme.textAlign,\n textBaseline = attribute.textBaseline ?? richtextTheme.textBaseline ?? 'top',\n editOptions\n } = attribute;\n\n if (width > 0 && height > 0) {\n // 外部设置宽高\n aabbBounds.set(0, 0, width, height);\n } else {\n // 获取内容宽高\n const frameCache = this.getFrameCache();\n const { width: actualWidth, height: actualHeight } = frameCache.getActualSize();\n let contentWidth = width || actualWidth || 0;\n let contentHeight = height || actualHeight || 0;\n\n contentHeight = typeof maxHeight === 'number' && contentHeight > maxHeight ? maxHeight : contentHeight || 0;\n contentWidth = typeof maxWidth === 'number' && contentWidth > maxWidth ? maxWidth : contentWidth || 0;\n\n aabbBounds.set(0, 0, contentWidth, contentHeight);\n }\n\n // 如果是可编辑状态,且没有设置高度,就用fontSize,否则就完全选不到了\n if (editOptions && editOptions.keepHeightWhileEmpty && !aabbBounds.height() && !attribute.textConfig?.length) {\n aabbBounds.y2 = aabbBounds.y1 + (attribute.fontSize ?? 12);\n aabbBounds.x2 = aabbBounds.x1 + 2;\n }\n\n // 调整对齐方式\n let deltaY = 0;\n switch (textBaseline) {\n case 'top':\n deltaY = 0;\n break;\n case 'middle':\n deltaY = -aabbBounds.height() / 2;\n break;\n case 'bottom':\n deltaY = -aabbBounds.height();\n break;\n default:\n break;\n }\n let deltaX = 0;\n switch (textAlign) {\n case 'left':\n deltaX = 0;\n break;\n case 'center':\n deltaX = -aabbBounds.width() / 2;\n break;\n case 'right':\n deltaX = -aabbBounds.width();\n break;\n default:\n break;\n }\n aabbBounds.translate(deltaX, deltaY);\n\n application.graphicService.updateTempAABBBounds(aabbBounds);\n\n if (attribute.forceBoundsHeight != null || attribute.forceBoundsWidth != null) {\n application.graphicService.updateHTMLTextAABBBounds(attribute, richtextTheme, aabbBounds);\n }\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n\n application.graphicService.transformAABBBounds(attribute, aabbBounds, richtextTheme, false, this);\n // 都为0的话,就直接clear\n if (aabbBounds.width() === 0 && aabbBounds.height() === 0) {\n aabbBounds.clear();\n }\n return aabbBounds;\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RICHTEXT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RICHTEXT_UPDATE_TAG_KEY);\n }\n getFrameCache(): IRichTextFrame {\n if (this.shouldUpdateShape()) {\n this.doUpdateFrameCache();\n this.clearUpdateShapeTag();\n }\n return this._frameCache as IRichTextFrame;\n }\n\n get cliped() {\n const frameCache = this.getFrameCache();\n if (frameCache.actualHeight > frameCache.height) {\n return true;\n }\n const { disableAutoWrapLine } = this.attribute;\n if (disableAutoWrapLine) {\n for (let i = 0; i < frameCache.lines.length; i++) {\n const l = frameCache.lines[i];\n for (let j = 0; j < l.paragraphs.length; j++) {\n const p = l.paragraphs[j];\n if ((p as any).overflow && (p as any).text !== '') {\n return true;\n }\n }\n }\n }\n return false;\n // if (height < this.attribute.height || )\n }\n combinedStyleToCharacter(config: IRichTextImageCharacter | IRichTextParagraphCharacter) {\n const {\n fill,\n stroke,\n fontSize,\n fontFamily,\n fontStyle,\n fontWeight,\n lineWidth,\n opacity,\n fillOpacity,\n lineHeight,\n strokeOpacity,\n upgradeAttrs\n } = this.attribute;\n const out = {\n fill,\n stroke,\n fontSize,\n fontFamily,\n fontStyle,\n fontWeight,\n lineWidth,\n opacity,\n fillOpacity,\n strokeOpacity,\n ...config\n };\n if (upgradeAttrs?.lineHeight) {\n out.lineHeight = lineHeight;\n }\n return out;\n }\n doUpdateFrameCache(tc?: IRichTextCharacter[]) {\n // 1. 测量,生成paragraph\n const {\n maxWidth,\n maxHeight,\n width,\n height,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection,\n singleLine,\n disableAutoWrapLine,\n editable,\n ascentDescentMode,\n upgradeAttrs\n } = this.attribute;\n\n const enableMultiBreakLine = upgradeAttrs && upgradeAttrs.multiBreakLine;\n\n let { textConfig: _tc = [] } = this.attribute;\n\n // 预处理editable,将textConfig中的text转换为单个字符\n if (editable && _tc.length > 0 && !RichText.AllSingleCharacter(_tc)) {\n _tc = RichText.TransformTextConfig2SingleCharacter(_tc);\n this.attribute.textConfig = _tc;\n }\n\n const paragraphs: (Paragraph | RichTextIcon)[] = [];\n\n const textConfig = tc ?? _tc;\n\n for (let i = 0; i < textConfig.length; i++) {\n if ('image' in textConfig[i]) {\n const config = this.combinedStyleToCharacter(\n textConfig[i] as IRichTextImageCharacter\n ) as IRichTextImageCharacter;\n (config as any).lineWidth = undefined; // for icon bounds\n // 直接创建icon Mark\n const iconCache =\n config.id && this._frameCache && this._frameCache.icons && this._frameCache.icons.get(config.id);\n if (iconCache) {\n paragraphs.push(iconCache as RichTextIcon);\n } else {\n const icon = new RichTextIcon(config);\n icon.successCallback = () => {\n this.addUpdateBoundTag();\n this.stage?.renderNextFrame();\n };\n icon.richtextId = config.id;\n paragraphs.push(icon);\n }\n } else {\n const richTextConfig = this.combinedStyleToCharacter(\n textConfig[i] as IRichTextParagraphCharacter\n ) as IRichTextParagraphCharacter;\n if (isNumber(richTextConfig.text)) {\n richTextConfig.text = `${richTextConfig.text}`;\n }\n if (richTextConfig.text && richTextConfig.text.includes('\\n')) {\n // 如果有文字内有换行符,将该段文字切为多段,并在后一段加入newLine标记\n const textParts = richTextConfig.text.split('\\n');\n for (let j = 0; j < textParts.length; j++) {\n if (j === 0) {\n paragraphs.push(new Paragraph(textParts[j], false, richTextConfig, ascentDescentMode));\n } else if (textParts[j] || i === textConfig.length - 1) {\n paragraphs.push(new Paragraph(textParts[j], true, richTextConfig, ascentDescentMode));\n } else {\n // 空行的话,config应该要和下一行对齐\n const nextRichTextConfig = this.combinedStyleToCharacter(\n textConfig[i + 1] as IRichTextParagraphCharacter\n ) as IRichTextParagraphCharacter;\n paragraphs.push(new Paragraph(textParts[j], true, nextRichTextConfig, ascentDescentMode));\n }\n // paragraphs.push(new Paragraph(textParts[j], j !== 0, richTextConfig, ascentDescentMode));\n }\n } else if (richTextConfig.text) {\n paragraphs.push(new Paragraph(richTextConfig.text, false, richTextConfig, ascentDescentMode));\n }\n }\n }\n\n // 2. 布局,生成frame\n // const frameHeight =\n // typeof maxHeight === 'number' && (!height || height > maxHeight) // height = 0或height>maxHeight,使用maxHeight布局\n // ? maxHeight\n // : height;\n // const frameWidth =\n // typeof maxWidth === 'number' && (!width || width > maxWidth) // height = 0或height>maxWidth,使用maxWidth布局\n // ? maxWidth\n // : width;\n\n const maxWidthFinite = typeof maxWidth === 'number' && Number.isFinite(maxWidth) && maxWidth > 0;\n const maxHeightFinite = typeof maxHeight === 'number' && Number.isFinite(maxHeight) && maxHeight > 0;\n\n const richTextWidthEnable =\n typeof width === 'number' &&\n Number.isFinite(width) &&\n width > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxWidthFinite || width <= maxWidth);\n const richTextHeightEnable =\n typeof height === 'number' &&\n Number.isFinite(height) &&\n height > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxHeightFinite || height <= maxHeight);\n\n const frameWidth = richTextWidthEnable ? width : maxWidthFinite ? maxWidth : 0;\n const frameHeight = richTextHeightEnable ? height : maxHeightFinite ? maxHeight : 0;\n\n const frame = new Frame(\n 0,\n 0,\n frameWidth || 0,\n frameHeight || 0,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection || 'horizontal',\n // typeof maxWidth === 'number' && (!width || width > maxWidth),\n // typeof maxHeight === 'number' && (!height || height > maxHeight),\n !richTextWidthEnable && maxWidthFinite,\n !richTextHeightEnable && maxHeightFinite,\n singleLine || false,\n this._frameCache?.icons\n );\n const wrapper = new Wrapper(frame);\n // @since 0.22.0\n // 如果可编辑的话,则支持多换行符\n wrapper.newLine = enableMultiBreakLine;\n if (disableAutoWrapLine) {\n let lineCount = 0;\n let skip = false;\n for (let i = 0; i < paragraphs.length; i++) {\n const p = paragraphs[i];\n if (skip) {\n (p as Paragraph).overflow = true;\n (p as Paragraph).left = Infinity;\n (p as Paragraph).top = Infinity;\n !(p as Paragraph).newLine && frame.lines[frame.lines.length - 1].paragraphs.push(p);\n } else {\n wrapper.deal(p, true);\n }\n if (frame.lines.length !== lineCount) {\n lineCount = frame.lines.length;\n wrapper.lineBuffer.length = 0;\n (p as Paragraph).overflow = true;\n (p as Paragraph).left = 1000;\n (p as Paragraph).top = 1000;\n frame.lines[frame.lines.length - 1].paragraphs.push(p);\n skip = true;\n }\n if ((p as Paragraph).newLine) {\n skip = false;\n wrapper.lineWidth = 0;\n }\n wrapper.send();\n }\n } else {\n for (let i = 0; i < paragraphs.length; i++) {\n wrapper.deal(paragraphs[i]);\n }\n }\n\n wrapper.send(); // 最后一行手动输出\n\n // 如果对应的配置宽度不可用,那么需要额外进行一次对齐\n const directionEnable = frame.layoutDirection === 'horizontal' ? richTextWidthEnable : richTextHeightEnable;\n if (!directionEnable) {\n // 使用实际宽度\n const frameSize = frame.getActualSizeWidthEllipsis();\n let offsetSize = frame.layoutDirection === 'horizontal' ? frameSize.width : frameSize.height;\n // 如果最大值可用\n if (frame.layoutDirection === 'horizontal' ? maxWidthFinite : maxHeightFinite) {\n // 取2者中的较小值\n offsetSize = Math.min(\n offsetSize,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n frame.layoutDirection === 'horizontal' ? maxWidth : maxHeight\n );\n }\n\n frame.lines.forEach(function (l) {\n l.calcOffset(offsetSize, false);\n });\n }\n\n // 处理空行\n if (enableMultiBreakLine) {\n frame.lines.forEach(item => {\n const lastParagraphs = item.paragraphs;\n item.paragraphs = item.paragraphs.filter(p => (p as any).text !== '');\n if (item.paragraphs.length === 0 && lastParagraphs.length) {\n (lastParagraphs[0] as any).text = '\\n';\n item.paragraphs.push(lastParagraphs[0]);\n }\n });\n }\n\n this._frameCache = frame;\n\n // this.bindIconEvent();\n }\n\n clone() {\n return new RichText({ ...this.attribute });\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n super.setStage(stage, layer);\n const frameCache = this.getFrameCache();\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // icon.setStage(stage, layer);\n // }\n frameCache.icons.forEach(icon => {\n icon.setStage(stage, layer);\n });\n }\n\n // richtext绑定icon交互事件,供外部调用\n bindIconEvent() {\n this.addEventListener('pointermove', (e: FederatedMouseEvent) => {\n const pickedIcon = this.pickIcon(e.global);\n if (pickedIcon && pickedIcon === this._currentHoverIcon) {\n // do nothing\n } else if (pickedIcon) {\n this.setAttribute('hoverIconId', pickedIcon.richtextId);\n\n // this._currentHoverIcon?.setHoverState(false);\n // this._currentHoverIcon = pickedIcon;\n // this._currentHoverIcon.setHoverState(true);\n // this.stage?.setCursor(pickedIcon.attribute.cursor);\n // this.stage?.renderNextFrame();\n } else if (!pickedIcon && this._currentHoverIcon) {\n this.setAttribute('hoverIconId', undefined);\n\n // this._currentHoverIcon.setHoverState(false);\n // this._currentHoverIcon = null;\n // this.stage?.setCursor();\n // this.stage?.renderNextFrame();\n }\n });\n\n this.addEventListener('pointerleave', (e: FederatedMouseEvent) => {\n if (this._currentHoverIcon) {\n this.setAttribute('hoverIconId', undefined);\n\n // this._currentHoverIcon.setHoverState(false);\n // this._currentHoverIcon = null;\n // this.stage?.setCursor();\n // this.stage?.renderNextFrame();\n }\n });\n }\n\n updateHoverIconState(pickedIcon?: IRichTextIcon) {\n if (pickedIcon) {\n this._currentHoverIcon?.setHoverState(false);\n this._currentHoverIcon = pickedIcon;\n this._currentHoverIcon.setHoverState(true);\n this.stage?.setCursor(pickedIcon.attribute.cursor);\n this.stage?.renderNextFrame();\n } else {\n this._currentHoverIcon.setHoverState(false);\n this._currentHoverIcon = null;\n this.stage?.setCursor();\n this.stage?.renderNextFrame();\n }\n }\n\n pickIcon(point: EventPoint): IRichTextIcon | undefined {\n const frameCache = this.getFrameCache();\n const { e: x, f: y } = this.globalTransMatrix;\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // if (icon.containsPoint(point.x - x, point.y - y)) {\n // return icon;\n // }\n // }\n let pickIcon: IRichTextIcon | undefined;\n frameCache.icons.forEach((icon, key) => {\n const bounds = icon.AABBBounds.clone();\n bounds.translate(icon._marginArray[3], icon._marginArray[0]);\n if (bounds.containsPoint({ x: point.x - x, y: point.y - y })) {\n pickIcon = icon;\n\n pickIcon.globalX = (pickIcon.attribute.x ?? 0) + x + icon._marginArray[3];\n pickIcon.globalY = (pickIcon.attribute.y ?? 0) + y + icon._marginArray[0];\n }\n });\n\n return pickIcon;\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return RichText.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRichText(attributes: IRichTextGraphicAttribute): IRichText {\n return new RichText(attributes);\n}\n"]}
@@ -0,0 +1,52 @@
1
+ import type { IAABBBounds, IPointLike } from '@visactor/vutils';
2
+ import { Graphic } from './graphic';
3
+ import type { IStar, IStarGraphicAttribute } from '../interface/graphic/star';
4
+ import type { GraphicType } from '../interface';
5
+ export declare class Star extends Graphic<IStarGraphicAttribute> implements IStar {
6
+ type: GraphicType;
7
+ static NOWORK_ANIMATE_ATTR: {
8
+ strokeSeg: number;
9
+ boundsPadding: number;
10
+ pickMode: number;
11
+ boundsMode: number;
12
+ customPickShape: number;
13
+ pickable: number;
14
+ childrenPickable: number;
15
+ visible: number;
16
+ zIndex: number;
17
+ layout: number;
18
+ keepDirIn3d: number;
19
+ globalZIndex: number;
20
+ outerBorder: number;
21
+ innerBorder: number;
22
+ lineDash: number;
23
+ lineCap: number;
24
+ lineJoin: number;
25
+ miterLimit: number;
26
+ strokeBoundsBuffer: number;
27
+ scaleCenter: number;
28
+ anchor: number;
29
+ anchor3d: number;
30
+ postMatrix: number;
31
+ backgroundMode: number;
32
+ background: number;
33
+ texture: number;
34
+ cursor: number;
35
+ html: number;
36
+ };
37
+ _cachedPoints: IPointLike[];
38
+ constructor(params: IStarGraphicAttribute);
39
+ isValid(): boolean;
40
+ protected _isValid(): boolean;
41
+ getGraphicTheme(): Required<IStarGraphicAttribute>;
42
+ protected updateAABBBounds(attribute: IStarGraphicAttribute, rectTheme: Required<IStarGraphicAttribute>, aabbBounds: IAABBBounds): import("@visactor/vutils").IBounds;
43
+ getCachedPoints(): IPointLike[];
44
+ private getStarPoints;
45
+ protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void;
46
+ protected needUpdateTags(keys: string[]): boolean;
47
+ protected needUpdateTag(key: string): boolean;
48
+ toCustomPath(): import("../interface").ICustomPath2D;
49
+ clone(): Star;
50
+ getNoWorkAnimateAttr(): Record<string, number>;
51
+ }
52
+ export declare function createStar(attributes: IStarGraphicAttribute): IStar;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.createStar = exports.Star = void 0;
6
+
7
+ const graphic_1 = require("./graphic"), theme_1 = require("./theme"), application_1 = require("../application"), custom_path2d_1 = require("../common/custom-path2d"), constants_1 = require("./constants"), STAR_UPDATE_TAG_KEY = [ "width", "height", "spikes", "thickness", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
8
+
9
+ class Star extends graphic_1.Graphic {
10
+ constructor(params) {
11
+ super(params), this.type = "star", this._cachedPoints = [], this.numberType = constants_1.STAR_NUMBER_TYPE;
12
+ }
13
+ isValid() {
14
+ return super.isValid() && this._isValid();
15
+ }
16
+ _isValid() {
17
+ const {width: width, height: height, spikes: spikes} = this.attribute;
18
+ return (null == width || width > 0) && (null == height || height > 0) && (null == spikes || spikes >= 3 && Number.isInteger(spikes));
19
+ }
20
+ getGraphicTheme() {
21
+ return (0, theme_1.getTheme)(this).star;
22
+ }
23
+ updateAABBBounds(attribute, rectTheme, aabbBounds) {
24
+ if (!this.updatePathProxyAABBBounds(aabbBounds)) {
25
+ const {width: width = 0, height: height = 0} = attribute;
26
+ (isFinite(width) || isFinite(height)) && aabbBounds.set(0, 0, width, height);
27
+ }
28
+ const {tb1: tb1, tb2: tb2} = application_1.application.graphicService.updateTempAABBBounds(aabbBounds);
29
+ return aabbBounds.union(tb1), tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2), this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1,
30
+ this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1, application_1.application.graphicService.transformAABBBounds(attribute, aabbBounds, rectTheme, !1, this),
31
+ aabbBounds;
32
+ }
33
+ getCachedPoints() {
34
+ return this.shouldUpdateShape() && (this._cachedPoints = this.getStarPoints(this.attribute, this.getGraphicTheme()),
35
+ this.clearUpdateShapeTag()), this._cachedPoints;
36
+ }
37
+ getStarPoints(attribute, starTheme) {
38
+ const {width: width = starTheme.width, height: height = starTheme.height, spikes: spikes = starTheme.spikes, thickness: thickness = starTheme.thickness} = attribute, validSpikes = Math.max(3, Math.floor(spikes)), validThickness = Math.max(0, Math.min(1, thickness)), points = [], outerRadius = Math.min(width, height) / 2, innerRadius = outerRadius * (1 - validThickness), centerX = width / 2, centerY = height / 2;
39
+ for (let i = 0; i < 2 * validSpikes; i++) {
40
+ const radius = i % 2 == 0 ? outerRadius : innerRadius, angle = Math.PI / validSpikes * i, scaleX = width / (2 * outerRadius), scaleY = height / (2 * outerRadius);
41
+ points.push({
42
+ x: centerX + Math.sin(angle) * radius * scaleX,
43
+ y: centerY - Math.cos(angle) * radius * scaleY
44
+ });
45
+ }
46
+ return this._cachedPoints = points, points;
47
+ }
48
+ _interpolate(key, ratio, lastStepVal, nextStepVal, nextAttributes) {
49
+ "width" !== key && "height" !== key && "spikes" !== key && "thickness" !== key || (nextAttributes[key] = lastStepVal + (nextStepVal - lastStepVal) * ratio);
50
+ }
51
+ needUpdateTags(keys) {
52
+ return super.needUpdateTags(keys, STAR_UPDATE_TAG_KEY);
53
+ }
54
+ needUpdateTag(key) {
55
+ return super.needUpdateTag(key, STAR_UPDATE_TAG_KEY);
56
+ }
57
+ toCustomPath() {
58
+ let path = super.toCustomPath();
59
+ if (path) return path;
60
+ const starTheme = this.getGraphicTheme(), points = this.getStarPoints(this.attribute, starTheme);
61
+ return path = new custom_path2d_1.CustomPath2D, points.forEach(((point, index) => {
62
+ 0 === index ? path.moveTo(point.x, point.y) : path.lineTo(point.x, point.y);
63
+ })), path.closePath(), path;
64
+ }
65
+ clone() {
66
+ return new Star(Object.assign({}, this.attribute));
67
+ }
68
+ getNoWorkAnimateAttr() {
69
+ return Star.NOWORK_ANIMATE_ATTR;
70
+ }
71
+ }
72
+
73
+ function createStar(attributes) {
74
+ return new Star(attributes);
75
+ }
76
+
77
+ exports.Star = Star, Star.NOWORK_ANIMATE_ATTR = graphic_1.NOWORK_ANIMATE_ATTR, exports.createStar = createStar;
78
+ //# sourceMappingURL=star.js.map