@visactor/vrender-core 0.17.0-alpha.8 → 0.17.1-alpha.1

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 (814) hide show
  1. package/cjs/allocator/bounds-allocate.d.ts +13 -0
  2. package/cjs/allocator/bounds-allocate.js +38 -0
  3. package/cjs/allocator/bounds-allocate.js.map +1 -0
  4. package/cjs/allocator/canvas-allocate.d.ts +4 -0
  5. package/cjs/allocator/canvas-allocate.js +19 -6
  6. package/cjs/allocator/canvas-allocate.js.map +1 -1
  7. package/cjs/allocator/graphic-allocate.d.ts +56 -1
  8. package/cjs/allocator/graphic-allocate.js +163 -1
  9. package/cjs/allocator/graphic-allocate.js.map +1 -1
  10. package/cjs/animate/Ticker/default-ticker.js +3 -3
  11. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  12. package/cjs/animate/animate.js +2 -2
  13. package/cjs/animate/animate.js.map +1 -1
  14. package/cjs/animate/config.js +1 -2
  15. package/cjs/animate/custom-animate.d.ts +14 -3
  16. package/cjs/animate/custom-animate.js +100 -5
  17. package/cjs/animate/custom-animate.js.map +1 -1
  18. package/cjs/animate/default-ticker.js +2 -1
  19. package/cjs/canvas/contributions/base-canvas.js +4 -2
  20. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  21. package/cjs/common/Reflect-metadata.js +349 -359
  22. package/cjs/common/Reflect-metadata.js.map +1 -1
  23. package/cjs/common/bounds-context.js +2 -1
  24. package/cjs/common/inversify/annotation/inject.d.ts +1 -0
  25. package/cjs/common/inversify/annotation/inject.js +10 -0
  26. package/cjs/common/inversify/annotation/inject.js.map +1 -0
  27. package/cjs/common/inversify/annotation/inject_base.d.ts +14 -0
  28. package/cjs/common/inversify/annotation/inject_base.js +39 -0
  29. package/cjs/common/inversify/annotation/inject_base.js.map +1 -0
  30. package/cjs/common/inversify/annotation/injectable.d.ts +1 -0
  31. package/cjs/common/{inversify-lite/annotation/post_construct.js → inversify/annotation/injectable.js} +15 -5
  32. package/cjs/common/inversify/annotation/injectable.js.map +1 -0
  33. package/cjs/common/inversify/annotation/multi_inject.d.ts +1 -0
  34. package/cjs/common/inversify/annotation/multi_inject.js +10 -0
  35. package/cjs/common/inversify/annotation/multi_inject.js.map +1 -0
  36. package/cjs/common/inversify/annotation/named.d.ts +1 -0
  37. package/cjs/common/inversify/annotation/named.js +14 -0
  38. package/cjs/common/inversify/annotation/named.js.map +1 -0
  39. package/cjs/common/inversify/binding.d.ts +18 -0
  40. package/cjs/common/inversify/binding.js +26 -0
  41. package/cjs/common/inversify/binding.js.map +1 -0
  42. package/cjs/common/inversify/container.d.ts +28 -0
  43. package/cjs/common/inversify/container.js +155 -0
  44. package/cjs/common/inversify/container.js.map +1 -0
  45. package/cjs/common/inversify/cotainer-module.d.ts +6 -0
  46. package/cjs/common/inversify/cotainer-module.js +16 -0
  47. package/cjs/common/inversify/cotainer-module.js.map +1 -0
  48. package/cjs/common/inversify/index.d.ts +7 -0
  49. package/cjs/common/inversify/index.js +75 -0
  50. package/cjs/common/inversify/index.js.map +1 -0
  51. package/cjs/common/inversify/interfaces.d.ts +218 -0
  52. package/cjs/common/inversify/interfaces.js +6 -0
  53. package/cjs/common/inversify/interfaces.js.map +1 -0
  54. package/cjs/common/inversify/literal_types.d.ts +5 -0
  55. package/cjs/common/inversify/literal_types.js +34 -0
  56. package/cjs/common/inversify/literal_types.js.map +1 -0
  57. package/cjs/common/inversify/meta-data.d.ts +6 -0
  58. package/cjs/common/inversify/meta-data.js +19 -0
  59. package/cjs/common/inversify/meta-data.js.map +1 -0
  60. package/cjs/common/inversify/metadata_keys.d.ts +12 -0
  61. package/cjs/common/inversify/metadata_keys.js +15 -0
  62. package/cjs/common/inversify/metadata_keys.js.map +1 -0
  63. package/cjs/common/inversify/metadata_reader.d.ts +6 -0
  64. package/cjs/common/inversify/metadata_reader.js +28 -0
  65. package/cjs/common/inversify/metadata_reader.js.map +1 -0
  66. package/cjs/common/inversify/syntax/binding_in_syntax.d.ts +10 -0
  67. package/cjs/common/inversify/syntax/binding_in_syntax.js +29 -0
  68. package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -0
  69. package/cjs/common/inversify/syntax/binding_to_syntax.d.ts +12 -0
  70. package/cjs/common/inversify/syntax/binding_to_syntax.js +40 -0
  71. package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -0
  72. package/cjs/common/inversify/syntax/constraint_helpers.d.ts +2 -0
  73. package/cjs/common/inversify/syntax/constraint_helpers.js +20 -0
  74. package/cjs/common/inversify/syntax/constraint_helpers.js.map +1 -0
  75. package/cjs/common/inversify-lite/container/container.js +1 -3
  76. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  77. package/cjs/common/inversify-lite/index.d.ts +1 -8
  78. package/cjs/common/inversify-lite/index.js +1 -64
  79. package/cjs/common/inversify-lite/index.js.map +1 -1
  80. package/cjs/common/inversify-lite/interfaces/interfaces.d.ts +0 -2
  81. package/cjs/common/inversify-lite/interfaces/interfaces.js.map +1 -1
  82. package/cjs/common/inversify-lite/planning/queryable_string.d.ts +0 -2
  83. package/cjs/common/inversify-lite/planning/queryable_string.js +0 -10
  84. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  85. package/cjs/common/inversify-lite/resolution/resolver.js.map +1 -1
  86. package/cjs/common/segment/monotone.js +2 -2
  87. package/cjs/common/segment/monotone.js.map +1 -1
  88. package/cjs/common/shape/rect.js +2 -1
  89. package/cjs/common/shape/rect.js.map +1 -1
  90. package/cjs/common/sort.js +1 -2
  91. package/cjs/common/store.js +2 -1
  92. package/cjs/common/utils.d.ts +1 -0
  93. package/cjs/common/utils.js +10 -1
  94. package/cjs/common/utils.js.map +1 -1
  95. package/cjs/common/xml/OrderedObjParser.js +2 -2
  96. package/cjs/common/xml/OrderedObjParser.js.map +1 -1
  97. package/cjs/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
  98. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +4 -9
  99. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  100. package/cjs/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
  101. package/cjs/core/contributions/layerHandler/empty-contribution.js +4 -9
  102. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  103. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
  104. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +4 -9
  105. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  106. package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +14 -2
  107. package/cjs/core/contributions/textMeasure/AtextMeasure.js +99 -13
  108. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  109. package/cjs/core/contributions/textMeasure/layout.d.ts +2 -2
  110. package/cjs/core/contributions/textMeasure/layout.js +4 -4
  111. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  112. package/cjs/core/contributions/textMeasure/modules.js +1 -2
  113. package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
  114. package/cjs/core/core-modules.js +5 -6
  115. package/cjs/core/core-modules.js.map +1 -1
  116. package/cjs/core/global-module.js +2 -0
  117. package/cjs/core/global.d.ts +9 -0
  118. package/cjs/core/global.js +23 -5
  119. package/cjs/core/global.js.map +1 -1
  120. package/cjs/core/graphic-utils.d.ts +7 -4
  121. package/cjs/core/graphic-utils.js +18 -14
  122. package/cjs/core/graphic-utils.js.map +1 -1
  123. package/cjs/core/layer-service.d.ts +5 -2
  124. package/cjs/core/layer-service.js +17 -15
  125. package/cjs/core/layer-service.js.map +1 -1
  126. package/cjs/core/stage.d.ts +8 -4
  127. package/cjs/core/stage.js +42 -27
  128. package/cjs/core/stage.js.map +1 -1
  129. package/cjs/core/window.d.ts +2 -2
  130. package/cjs/core/window.js +7 -12
  131. package/cjs/core/window.js.map +1 -1
  132. package/cjs/env-check.d.ts +3 -0
  133. package/cjs/env-check.js +19 -0
  134. package/cjs/env-check.js.map +1 -0
  135. package/cjs/event/event-manager.d.ts +5 -1
  136. package/cjs/event/event-manager.js +31 -25
  137. package/cjs/event/event-manager.js.map +1 -1
  138. package/cjs/event/event-system.js +12 -11
  139. package/cjs/event/event-system.js.map +1 -1
  140. package/cjs/event/federated-event/base-event.d.ts +5 -6
  141. package/cjs/event/federated-event/base-event.js +15 -5
  142. package/cjs/event/federated-event/base-event.js.map +1 -1
  143. package/cjs/event/federated-event/mouse-event.d.ts +6 -6
  144. package/cjs/event/federated-event/mouse-event.js +17 -3
  145. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  146. package/cjs/graphic/area.js +1 -0
  147. package/cjs/graphic/area.js.map +1 -1
  148. package/cjs/graphic/bounds.d.ts +2 -2
  149. package/cjs/graphic/bounds.js +8 -10
  150. package/cjs/graphic/bounds.js.map +1 -1
  151. package/cjs/graphic/builtin-symbol/index.d.ts +1 -0
  152. package/cjs/graphic/builtin-symbol/index.js +7 -2
  153. package/cjs/graphic/builtin-symbol/index.js.map +1 -1
  154. package/cjs/graphic/builtin-symbol/rect.d.ts +2 -1
  155. package/cjs/graphic/builtin-symbol/rect.js +11 -6
  156. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  157. package/cjs/graphic/config.js +11 -3
  158. package/cjs/graphic/config.js.map +1 -1
  159. package/cjs/graphic/graphic-creator.d.ts +24 -36
  160. package/cjs/graphic/graphic-creator.js +16 -99
  161. package/cjs/graphic/graphic-creator.js.map +1 -1
  162. package/cjs/graphic/graphic-service/arc-contribution.d.ts +1 -5
  163. package/cjs/graphic/graphic-service/arc-contribution.js +0 -18
  164. package/cjs/graphic/graphic-service/arc-contribution.js.map +1 -1
  165. package/cjs/graphic/graphic-service/area-contribution.d.ts +1 -1
  166. package/cjs/graphic/graphic-service/area-contribution.js +1 -4
  167. package/cjs/graphic/graphic-service/area-contribution.js.map +1 -1
  168. package/cjs/graphic/graphic-service/circle-contribution.d.ts +1 -5
  169. package/cjs/graphic/graphic-service/circle-contribution.js +0 -18
  170. package/cjs/graphic/graphic-service/circle-contribution.js.map +1 -1
  171. package/cjs/graphic/graphic-service/common-contribution.js +2 -11
  172. package/cjs/graphic/graphic-service/common-contribution.js.map +1 -1
  173. package/cjs/graphic/graphic-service/graphic-module.js +2 -17
  174. package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
  175. package/cjs/graphic/graphic-service/graphic-service.d.ts +5 -9
  176. package/cjs/graphic/graphic-service/graphic-service.js +43 -32
  177. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  178. package/cjs/graphic/graphic-service/path-contribution.d.ts +1 -5
  179. package/cjs/graphic/graphic-service/path-contribution.js +0 -18
  180. package/cjs/graphic/graphic-service/path-contribution.js.map +1 -1
  181. package/cjs/graphic/graphic-service/rect-contribution.d.ts +1 -5
  182. package/cjs/graphic/graphic-service/rect-contribution.js +0 -18
  183. package/cjs/graphic/graphic-service/rect-contribution.js.map +1 -1
  184. package/cjs/graphic/graphic-service/symbol-contribution.d.ts +0 -1
  185. package/cjs/graphic/graphic-service/symbol-contribution.js +4 -13
  186. package/cjs/graphic/graphic-service/symbol-contribution.js.map +1 -1
  187. package/cjs/graphic/graphic.js +9 -7
  188. package/cjs/graphic/graphic.js.map +1 -1
  189. package/cjs/graphic/group.d.ts +1 -0
  190. package/cjs/graphic/group.js +7 -3
  191. package/cjs/graphic/group.js.map +1 -1
  192. package/cjs/graphic/index.d.ts +1 -0
  193. package/cjs/graphic/index.js +6 -5
  194. package/cjs/graphic/index.js.map +1 -1
  195. package/cjs/graphic/line.js +1 -0
  196. package/cjs/graphic/line.js.map +1 -1
  197. package/cjs/graphic/node-tree.js +1 -1
  198. package/cjs/graphic/node-tree.js.map +1 -1
  199. package/cjs/graphic/rect.d.ts +2 -3
  200. package/cjs/graphic/rect.js +3 -5
  201. package/cjs/graphic/rect.js.map +1 -1
  202. package/cjs/graphic/richtext/line.d.ts +1 -0
  203. package/cjs/graphic/richtext/line.js +6 -3
  204. package/cjs/graphic/richtext/line.js.map +1 -1
  205. package/cjs/graphic/richtext/paragraph.js +12 -11
  206. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  207. package/cjs/graphic/richtext/utils.js +2 -1
  208. package/cjs/graphic/richtext/utils.js.map +1 -1
  209. package/cjs/graphic/richtext.d.ts +3 -3
  210. package/cjs/graphic/richtext.js +12 -3
  211. package/cjs/graphic/richtext.js.map +1 -1
  212. package/cjs/graphic/symbol.js +11 -9
  213. package/cjs/graphic/symbol.js.map +1 -1
  214. package/cjs/graphic/text.d.ts +1 -0
  215. package/cjs/graphic/text.js +97 -11
  216. package/cjs/graphic/text.js.map +1 -1
  217. package/cjs/graphic/theme.d.ts +4 -4
  218. package/cjs/graphic/theme.js +26 -27
  219. package/cjs/graphic/theme.js.map +1 -1
  220. package/cjs/graphic/tools.js +1 -1
  221. package/cjs/graphic/tools.js.map +1 -1
  222. package/cjs/graphic/wrap-text.js +6 -5
  223. package/cjs/graphic/wrap-text.js.map +1 -1
  224. package/cjs/index.d.ts +18 -0
  225. package/cjs/index.js +10 -1
  226. package/cjs/index.js.map +1 -1
  227. package/cjs/interface/allocator.d.ts +1 -0
  228. package/cjs/interface/allocator.js.map +1 -1
  229. package/cjs/interface/event.d.ts +15 -44
  230. package/cjs/interface/event.js.map +1 -1
  231. package/cjs/interface/global.d.ts +1 -0
  232. package/cjs/interface/global.js.map +1 -1
  233. package/cjs/interface/graphic/rect.d.ts +2 -0
  234. package/cjs/interface/graphic/rect.js.map +1 -1
  235. package/cjs/interface/graphic/richText.d.ts +1 -1
  236. package/cjs/interface/graphic/richText.js.map +1 -1
  237. package/cjs/interface/graphic/text.d.ts +5 -1
  238. package/cjs/interface/graphic/text.js.map +1 -1
  239. package/cjs/interface/graphic.d.ts +3 -2
  240. package/cjs/interface/graphic.js.map +1 -1
  241. package/cjs/interface/render.d.ts +2 -2
  242. package/cjs/interface/render.js.map +1 -1
  243. package/cjs/interface/stage.d.ts +8 -1
  244. package/cjs/interface/stage.js.map +1 -1
  245. package/cjs/interface/text.d.ts +2 -2
  246. package/cjs/interface/text.js.map +1 -1
  247. package/cjs/modules.d.ts +1 -2
  248. package/cjs/modules.js +8 -8
  249. package/cjs/modules.js.map +1 -1
  250. package/cjs/picker/global-picker-service.d.ts +2 -2
  251. package/cjs/picker/global-picker-service.js +4 -9
  252. package/cjs/picker/global-picker-service.js.map +1 -1
  253. package/cjs/picker/pick-interceptor.js +2 -1
  254. package/cjs/picker/pick-interceptor.js.map +1 -1
  255. package/cjs/picker/pick-modules.js +2 -4
  256. package/cjs/picker/pick-modules.js.map +1 -1
  257. package/cjs/picker/picker-service.d.ts +2 -2
  258. package/cjs/picker/picker-service.js +11 -7
  259. package/cjs/picker/picker-service.js.map +1 -1
  260. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +9 -5
  261. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  262. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
  263. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  264. package/cjs/plugins/plugin-modules.js +1 -2
  265. package/cjs/plugins/plugin-modules.js.map +1 -1
  266. package/cjs/render/contributions/render/arc-module.d.ts +2 -0
  267. package/cjs/render/contributions/render/arc-module.js +17 -0
  268. package/cjs/render/contributions/render/arc-module.js.map +1 -0
  269. package/cjs/render/contributions/render/arc-render.js +2 -1
  270. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  271. package/cjs/render/contributions/render/arc3d-module.d.ts +2 -0
  272. package/cjs/render/contributions/render/arc3d-module.js +15 -0
  273. package/cjs/render/contributions/render/arc3d-module.js.map +1 -0
  274. package/cjs/render/contributions/render/area-module.d.ts +2 -0
  275. package/cjs/render/contributions/render/area-module.js +18 -0
  276. package/cjs/render/contributions/render/area-module.js.map +1 -0
  277. package/cjs/render/contributions/render/area-render.d.ts +1 -0
  278. package/cjs/render/contributions/render/area-render.js +44 -6
  279. package/cjs/render/contributions/render/area-render.js.map +1 -1
  280. package/cjs/render/contributions/render/base-render.d.ts +1 -1
  281. package/cjs/render/contributions/render/base-render.js +15 -18
  282. package/cjs/render/contributions/render/base-render.js.map +1 -1
  283. package/cjs/render/contributions/render/circle-module.d.ts +2 -0
  284. package/cjs/render/contributions/render/circle-module.js +17 -0
  285. package/cjs/render/contributions/render/circle-module.js.map +1 -0
  286. package/cjs/render/contributions/render/circle-render.js +2 -1
  287. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  288. package/cjs/render/contributions/render/contributions/arc-contribution-render.d.ts +3 -7
  289. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +7 -30
  290. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  291. package/cjs/render/contributions/render/contributions/area-contribution-render.d.ts +3 -4
  292. package/cjs/render/contributions/render/contributions/area-contribution-render.js +7 -21
  293. package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  294. package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +4 -0
  295. package/cjs/render/contributions/render/contributions/base-contribution-render.js +24 -15
  296. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  297. package/cjs/render/contributions/render/contributions/circle-contribution-render.d.ts +3 -7
  298. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +7 -30
  299. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  300. package/cjs/render/contributions/render/contributions/constants.d.ts +1 -0
  301. package/cjs/render/contributions/render/contributions/constants.js +2 -2
  302. package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
  303. package/cjs/render/contributions/render/contributions/group-contribution-render.d.ts +1 -0
  304. package/cjs/render/contributions/render/contributions/group-contribution-render.js +8 -14
  305. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  306. package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -0
  307. package/cjs/render/contributions/render/contributions/image-contribution-render.js +8 -15
  308. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  309. package/cjs/render/contributions/render/contributions/path-contribution-render.d.ts +2 -9
  310. package/cjs/render/contributions/render/contributions/path-contribution-render.js +4 -25
  311. package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  312. package/cjs/render/contributions/render/contributions/polygon-contribution-render.d.ts +2 -9
  313. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js +4 -25
  314. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  315. package/cjs/render/contributions/render/contributions/rect-contribution-render.d.ts +5 -7
  316. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +17 -37
  317. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  318. package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +3 -7
  319. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +6 -27
  320. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  321. package/cjs/render/contributions/render/contributions/text-contribution-render.d.ts +8 -1
  322. package/cjs/render/contributions/render/contributions/text-contribution-render.js +25 -1
  323. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  324. package/cjs/render/contributions/render/draw-contribution.d.ts +7 -6
  325. package/cjs/render/contributions/render/draw-contribution.js +44 -26
  326. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  327. package/cjs/render/contributions/render/draw-interceptor.d.ts +7 -1
  328. package/cjs/render/contributions/render/draw-interceptor.js +43 -28
  329. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  330. package/cjs/render/contributions/render/glyph-module.d.ts +2 -0
  331. package/cjs/render/contributions/render/glyph-module.js +15 -0
  332. package/cjs/render/contributions/render/glyph-module.js.map +1 -0
  333. package/cjs/render/contributions/render/glyph-render.d.ts +1 -2
  334. package/cjs/render/contributions/render/glyph-render.js +13 -8
  335. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  336. package/cjs/render/contributions/render/group-render.js +3 -2
  337. package/cjs/render/contributions/render/group-render.js.map +1 -1
  338. package/cjs/render/contributions/render/image-module.d.ts +2 -0
  339. package/cjs/render/contributions/render/image-module.js +16 -0
  340. package/cjs/render/contributions/render/image-module.js.map +1 -0
  341. package/cjs/render/contributions/render/image-render.js +4 -2
  342. package/cjs/render/contributions/render/image-render.js.map +1 -1
  343. package/cjs/render/contributions/render/incremental-draw-contribution.d.ts +2 -6
  344. package/cjs/render/contributions/render/incremental-draw-contribution.js +8 -11
  345. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  346. package/cjs/render/contributions/render/line-module.d.ts +2 -0
  347. package/cjs/render/contributions/render/line-module.js +17 -0
  348. package/cjs/render/contributions/render/line-module.js.map +1 -0
  349. package/cjs/render/contributions/render/line-render.d.ts +1 -0
  350. package/cjs/render/contributions/render/line-render.js +21 -6
  351. package/cjs/render/contributions/render/line-render.js.map +1 -1
  352. package/cjs/render/contributions/render/module.js +8 -98
  353. package/cjs/render/contributions/render/module.js.map +1 -1
  354. package/cjs/render/contributions/render/path-module.d.ts +2 -0
  355. package/cjs/render/contributions/render/path-module.js +17 -0
  356. package/cjs/render/contributions/render/path-module.js.map +1 -0
  357. package/cjs/render/contributions/render/path-render.d.ts +2 -1
  358. package/cjs/render/contributions/render/path-render.js +8 -5
  359. package/cjs/render/contributions/render/path-render.js.map +1 -1
  360. package/cjs/render/contributions/render/polygon-module.d.ts +2 -0
  361. package/cjs/render/contributions/render/polygon-module.js +16 -0
  362. package/cjs/render/contributions/render/polygon-module.js.map +1 -0
  363. package/cjs/render/contributions/render/polygon-render.js +2 -1
  364. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  365. package/cjs/render/contributions/render/pyramid3d-module.d.ts +2 -0
  366. package/cjs/render/contributions/render/pyramid3d-module.js +15 -0
  367. package/cjs/render/contributions/render/pyramid3d-module.js.map +1 -0
  368. package/cjs/render/contributions/render/rect-module.d.ts +2 -0
  369. package/cjs/render/contributions/render/rect-module.js +17 -0
  370. package/cjs/render/contributions/render/rect-module.js.map +1 -0
  371. package/cjs/render/contributions/render/rect-render.d.ts +2 -1
  372. package/cjs/render/contributions/render/rect-render.js +11 -5
  373. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  374. package/cjs/render/contributions/render/rect3d-module.d.ts +2 -0
  375. package/cjs/render/contributions/render/rect3d-module.js +15 -0
  376. package/cjs/render/contributions/render/rect3d-module.js.map +1 -0
  377. package/cjs/render/contributions/render/render-slector.d.ts +1 -4
  378. package/cjs/render/contributions/render/render-slector.js +0 -20
  379. package/cjs/render/contributions/render/render-slector.js.map +1 -1
  380. package/cjs/render/contributions/render/richtext-module.d.ts +2 -0
  381. package/cjs/render/contributions/render/richtext-module.js +15 -0
  382. package/cjs/render/contributions/render/richtext-module.js.map +1 -0
  383. package/cjs/render/contributions/render/richtext-render.d.ts +1 -0
  384. package/cjs/render/contributions/render/richtext-render.js +12 -7
  385. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  386. package/cjs/render/contributions/render/symbol-module.d.ts +2 -0
  387. package/cjs/render/contributions/render/symbol-module.js +17 -0
  388. package/cjs/render/contributions/render/symbol-module.js.map +1 -0
  389. package/cjs/render/contributions/render/symbol-render.js +22 -5
  390. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  391. package/cjs/render/contributions/render/text-module.d.ts +2 -0
  392. package/cjs/render/contributions/render/text-module.js +16 -0
  393. package/cjs/render/contributions/render/text-module.js.map +1 -0
  394. package/cjs/render/contributions/render/text-render.js +13 -10
  395. package/cjs/render/contributions/render/text-render.js.map +1 -1
  396. package/cjs/render/contributions/render/utils.js +2 -2
  397. package/cjs/render/contributions/render/utils.js.map +1 -1
  398. package/cjs/render/render-modules.js +1 -1
  399. package/cjs/render/render-modules.js.map +1 -1
  400. package/cjs/render/render-service.js +1 -1
  401. package/cjs/render/render-service.js.map +1 -1
  402. package/cjs/resource-loader/loader.js +1 -3
  403. package/cjs/resource-loader/loader.js.map +1 -1
  404. package/dist/index.js +8931 -9097
  405. package/dist/index.min.js +1 -1
  406. package/es/allocator/bounds-allocate.d.ts +13 -0
  407. package/es/allocator/bounds-allocate.js +32 -0
  408. package/es/allocator/bounds-allocate.js.map +1 -0
  409. package/es/allocator/canvas-allocate.d.ts +4 -0
  410. package/es/allocator/canvas-allocate.js +19 -6
  411. package/es/allocator/canvas-allocate.js.map +1 -1
  412. package/es/allocator/graphic-allocate.d.ts +56 -1
  413. package/es/allocator/graphic-allocate.js +155 -1
  414. package/es/allocator/graphic-allocate.js.map +1 -1
  415. package/es/animate/Ticker/default-ticker.js +4 -2
  416. package/es/animate/Ticker/default-ticker.js.map +1 -1
  417. package/es/animate/animate.js +3 -3
  418. package/es/animate/animate.js.map +1 -1
  419. package/es/animate/config.js +1 -2
  420. package/es/animate/custom-animate.d.ts +14 -3
  421. package/es/animate/custom-animate.js +103 -5
  422. package/es/animate/custom-animate.js.map +1 -1
  423. package/es/animate/default-ticker.js +2 -1
  424. package/es/canvas/contributions/base-canvas.js +4 -2
  425. package/es/canvas/contributions/base-canvas.js.map +1 -1
  426. package/es/common/Reflect-metadata.js +349 -359
  427. package/es/common/Reflect-metadata.js.map +1 -1
  428. package/es/common/bounds-context.js +2 -1
  429. package/es/common/inversify/annotation/inject.d.ts +1 -0
  430. package/es/common/inversify/annotation/inject.js +6 -0
  431. package/es/common/inversify/annotation/inject.js.map +1 -0
  432. package/es/common/inversify/annotation/inject_base.d.ts +14 -0
  433. package/es/common/inversify/annotation/inject_base.js +29 -0
  434. package/es/common/inversify/annotation/inject_base.js.map +1 -0
  435. package/es/common/inversify/annotation/injectable.d.ts +1 -0
  436. package/es/common/inversify/annotation/injectable.js +10 -0
  437. package/es/common/inversify/annotation/injectable.js.map +1 -0
  438. package/es/common/inversify/annotation/multi_inject.d.ts +1 -0
  439. package/es/common/inversify/annotation/multi_inject.js +6 -0
  440. package/es/common/inversify/annotation/multi_inject.js.map +1 -0
  441. package/es/common/inversify/annotation/named.d.ts +1 -0
  442. package/es/common/inversify/annotation/named.js +10 -0
  443. package/es/common/inversify/annotation/named.js.map +1 -0
  444. package/es/common/inversify/binding.d.ts +18 -0
  445. package/es/common/inversify/binding.js +22 -0
  446. package/es/common/inversify/binding.js.map +1 -0
  447. package/es/common/inversify/container.d.ts +28 -0
  448. package/es/common/inversify/container.js +155 -0
  449. package/es/common/inversify/container.js.map +1 -0
  450. package/es/common/inversify/cotainer-module.d.ts +6 -0
  451. package/es/common/inversify/cotainer-module.js +8 -0
  452. package/es/common/inversify/cotainer-module.js.map +1 -0
  453. package/es/common/inversify/index.d.ts +7 -0
  454. package/es/common/inversify/index.js +14 -0
  455. package/es/common/inversify/index.js.map +1 -0
  456. package/es/common/inversify/interfaces.d.ts +218 -0
  457. package/es/common/inversify/interfaces.js +2 -0
  458. package/es/common/inversify/interfaces.js.map +1 -0
  459. package/es/common/inversify/literal_types.d.ts +5 -0
  460. package/es/common/inversify/literal_types.js +20 -0
  461. package/es/common/inversify/literal_types.js.map +1 -0
  462. package/es/common/inversify/meta-data.d.ts +6 -0
  463. package/es/common/inversify/meta-data.js +11 -0
  464. package/es/common/inversify/meta-data.js.map +1 -0
  465. package/es/common/inversify/metadata_keys.d.ts +12 -0
  466. package/es/common/inversify/metadata_keys.js +28 -0
  467. package/es/common/inversify/metadata_keys.js.map +1 -0
  468. package/es/common/inversify/metadata_reader.d.ts +6 -0
  469. package/es/common/inversify/metadata_reader.js +18 -0
  470. package/es/common/inversify/metadata_reader.js.map +1 -0
  471. package/es/common/inversify/syntax/binding_in_syntax.d.ts +10 -0
  472. package/es/common/inversify/syntax/binding_in_syntax.js +24 -0
  473. package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -0
  474. package/es/common/inversify/syntax/binding_to_syntax.d.ts +12 -0
  475. package/es/common/inversify/syntax/binding_to_syntax.js +36 -0
  476. package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -0
  477. package/es/common/inversify/syntax/constraint_helpers.d.ts +2 -0
  478. package/es/common/inversify/syntax/constraint_helpers.js +18 -0
  479. package/es/common/inversify/syntax/constraint_helpers.js.map +1 -0
  480. package/es/common/inversify-lite/container/container.js +2 -4
  481. package/es/common/inversify-lite/container/container.js.map +1 -1
  482. package/es/common/inversify-lite/index.d.ts +1 -8
  483. package/es/common/inversify-lite/index.js +1 -15
  484. package/es/common/inversify-lite/index.js.map +1 -1
  485. package/es/common/inversify-lite/interfaces/interfaces.d.ts +0 -2
  486. package/es/common/inversify-lite/interfaces/interfaces.js.map +1 -1
  487. package/es/common/inversify-lite/planning/queryable_string.d.ts +0 -2
  488. package/es/common/inversify-lite/planning/queryable_string.js +0 -10
  489. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  490. package/es/common/inversify-lite/resolution/resolver.js.map +1 -1
  491. package/es/common/segment/monotone.js +2 -2
  492. package/es/common/segment/monotone.js.map +1 -1
  493. package/es/common/shape/rect.js +2 -1
  494. package/es/common/shape/rect.js.map +1 -1
  495. package/es/common/sort.js +1 -2
  496. package/es/common/store.js +2 -1
  497. package/es/common/utils.d.ts +1 -0
  498. package/es/common/utils.js +8 -1
  499. package/es/common/utils.js.map +1 -1
  500. package/es/common/xml/OrderedObjParser.js +2 -2
  501. package/es/common/xml/OrderedObjParser.js.map +1 -1
  502. package/es/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
  503. package/es/core/contributions/layerHandler/canvas2d-contribution.js +5 -9
  504. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  505. package/es/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
  506. package/es/core/contributions/layerHandler/empty-contribution.js +5 -9
  507. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  508. package/es/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
  509. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -9
  510. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  511. package/es/core/contributions/textMeasure/AtextMeasure.d.ts +14 -2
  512. package/es/core/contributions/textMeasure/AtextMeasure.js +99 -13
  513. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  514. package/es/core/contributions/textMeasure/layout.d.ts +2 -2
  515. package/es/core/contributions/textMeasure/layout.js +4 -4
  516. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  517. package/es/core/contributions/textMeasure/modules.js +1 -1
  518. package/es/core/contributions/textMeasure/modules.js.map +1 -1
  519. package/es/core/core-modules.js +4 -6
  520. package/es/core/core-modules.js.map +1 -1
  521. package/es/core/global-module.js +2 -0
  522. package/es/core/global.d.ts +9 -0
  523. package/es/core/global.js +23 -4
  524. package/es/core/global.js.map +1 -1
  525. package/es/core/graphic-utils.d.ts +7 -4
  526. package/es/core/graphic-utils.js +20 -15
  527. package/es/core/graphic-utils.js.map +1 -1
  528. package/es/core/layer-service.d.ts +5 -2
  529. package/es/core/layer-service.js +18 -15
  530. package/es/core/layer-service.js.map +1 -1
  531. package/es/core/stage.d.ts +8 -4
  532. package/es/core/stage.js +47 -30
  533. package/es/core/stage.js.map +1 -1
  534. package/es/core/window.d.ts +2 -2
  535. package/es/core/window.js +8 -12
  536. package/es/core/window.js.map +1 -1
  537. package/es/env-check.d.ts +3 -0
  538. package/es/env-check.js +12 -0
  539. package/es/env-check.js.map +1 -0
  540. package/es/event/event-manager.d.ts +5 -1
  541. package/es/event/event-manager.js +32 -26
  542. package/es/event/event-manager.js.map +1 -1
  543. package/es/event/event-system.js +8 -6
  544. package/es/event/event-system.js.map +1 -1
  545. package/es/event/federated-event/base-event.d.ts +5 -6
  546. package/es/event/federated-event/base-event.js +15 -5
  547. package/es/event/federated-event/base-event.js.map +1 -1
  548. package/es/event/federated-event/mouse-event.d.ts +6 -6
  549. package/es/event/federated-event/mouse-event.js +16 -4
  550. package/es/event/federated-event/mouse-event.js.map +1 -1
  551. package/es/graphic/area.js +1 -0
  552. package/es/graphic/area.js.map +1 -1
  553. package/es/graphic/bounds.d.ts +2 -2
  554. package/es/graphic/bounds.js +6 -8
  555. package/es/graphic/bounds.js.map +1 -1
  556. package/es/graphic/builtin-symbol/index.d.ts +1 -0
  557. package/es/graphic/builtin-symbol/index.js +7 -0
  558. package/es/graphic/builtin-symbol/index.js.map +1 -1
  559. package/es/graphic/builtin-symbol/rect.d.ts +2 -1
  560. package/es/graphic/builtin-symbol/rect.js +9 -4
  561. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  562. package/es/graphic/config.js +12 -4
  563. package/es/graphic/config.js.map +1 -1
  564. package/es/graphic/graphic-creator.d.ts +24 -36
  565. package/es/graphic/graphic-creator.js +14 -125
  566. package/es/graphic/graphic-creator.js.map +1 -1
  567. package/es/graphic/graphic-service/arc-contribution.d.ts +1 -5
  568. package/es/graphic/graphic-service/arc-contribution.js +0 -15
  569. package/es/graphic/graphic-service/arc-contribution.js.map +1 -1
  570. package/es/graphic/graphic-service/area-contribution.d.ts +1 -1
  571. package/es/graphic/graphic-service/area-contribution.js +2 -1
  572. package/es/graphic/graphic-service/area-contribution.js.map +1 -1
  573. package/es/graphic/graphic-service/circle-contribution.d.ts +1 -5
  574. package/es/graphic/graphic-service/circle-contribution.js +0 -15
  575. package/es/graphic/graphic-service/circle-contribution.js.map +1 -1
  576. package/es/graphic/graphic-service/common-contribution.js +2 -14
  577. package/es/graphic/graphic-service/common-contribution.js.map +1 -1
  578. package/es/graphic/graphic-service/graphic-module.js +1 -23
  579. package/es/graphic/graphic-service/graphic-module.js.map +1 -1
  580. package/es/graphic/graphic-service/graphic-service.d.ts +5 -9
  581. package/es/graphic/graphic-service/graphic-service.js +44 -34
  582. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  583. package/es/graphic/graphic-service/path-contribution.d.ts +1 -5
  584. package/es/graphic/graphic-service/path-contribution.js +0 -15
  585. package/es/graphic/graphic-service/path-contribution.js.map +1 -1
  586. package/es/graphic/graphic-service/rect-contribution.d.ts +1 -5
  587. package/es/graphic/graphic-service/rect-contribution.js +0 -15
  588. package/es/graphic/graphic-service/rect-contribution.js.map +1 -1
  589. package/es/graphic/graphic-service/symbol-contribution.d.ts +0 -1
  590. package/es/graphic/graphic-service/symbol-contribution.js +2 -16
  591. package/es/graphic/graphic-service/symbol-contribution.js.map +1 -1
  592. package/es/graphic/graphic.js +8 -6
  593. package/es/graphic/graphic.js.map +1 -1
  594. package/es/graphic/group.d.ts +1 -0
  595. package/es/graphic/group.js +8 -1
  596. package/es/graphic/group.js.map +1 -1
  597. package/es/graphic/index.d.ts +1 -0
  598. package/es/graphic/index.js +2 -0
  599. package/es/graphic/index.js.map +1 -1
  600. package/es/graphic/line.js +1 -0
  601. package/es/graphic/line.js.map +1 -1
  602. package/es/graphic/node-tree.js +2 -2
  603. package/es/graphic/node-tree.js.map +1 -1
  604. package/es/graphic/rect.d.ts +2 -3
  605. package/es/graphic/rect.js +3 -7
  606. package/es/graphic/rect.js.map +1 -1
  607. package/es/graphic/richtext/line.d.ts +1 -0
  608. package/es/graphic/richtext/line.js +6 -4
  609. package/es/graphic/richtext/line.js.map +1 -1
  610. package/es/graphic/richtext/paragraph.js +5 -2
  611. package/es/graphic/richtext/paragraph.js.map +1 -1
  612. package/es/graphic/richtext/utils.js +2 -1
  613. package/es/graphic/richtext/utils.js.map +1 -1
  614. package/es/graphic/richtext.d.ts +3 -3
  615. package/es/graphic/richtext.js +12 -3
  616. package/es/graphic/richtext.js.map +1 -1
  617. package/es/graphic/symbol.js +11 -10
  618. package/es/graphic/symbol.js.map +1 -1
  619. package/es/graphic/text.d.ts +1 -0
  620. package/es/graphic/text.js +94 -13
  621. package/es/graphic/text.js.map +1 -1
  622. package/es/graphic/theme.d.ts +4 -4
  623. package/es/graphic/theme.js +27 -28
  624. package/es/graphic/theme.js.map +1 -1
  625. package/es/graphic/tools.js +1 -1
  626. package/es/graphic/tools.js.map +1 -1
  627. package/es/graphic/wrap-text.js +6 -4
  628. package/es/graphic/wrap-text.js.map +1 -1
  629. package/es/index.d.ts +18 -0
  630. package/es/index.js +36 -0
  631. package/es/index.js.map +1 -1
  632. package/es/interface/allocator.d.ts +1 -0
  633. package/es/interface/allocator.js.map +1 -1
  634. package/es/interface/event.d.ts +15 -44
  635. package/es/interface/event.js.map +1 -1
  636. package/es/interface/global.d.ts +1 -0
  637. package/es/interface/global.js.map +1 -1
  638. package/es/interface/graphic/rect.d.ts +2 -0
  639. package/es/interface/graphic/rect.js.map +1 -1
  640. package/es/interface/graphic/richText.d.ts +1 -1
  641. package/es/interface/graphic/richText.js.map +1 -1
  642. package/es/interface/graphic/text.d.ts +5 -1
  643. package/es/interface/graphic/text.js.map +1 -1
  644. package/es/interface/graphic.d.ts +3 -2
  645. package/es/interface/graphic.js.map +1 -1
  646. package/es/interface/render.d.ts +2 -2
  647. package/es/interface/render.js.map +1 -1
  648. package/es/interface/stage.d.ts +8 -1
  649. package/es/interface/stage.js.map +1 -1
  650. package/es/interface/text.d.ts +2 -2
  651. package/es/interface/text.js.map +1 -1
  652. package/es/modules.d.ts +1 -2
  653. package/es/modules.js +0 -4
  654. package/es/modules.js.map +1 -1
  655. package/es/picker/global-picker-service.d.ts +2 -2
  656. package/es/picker/global-picker-service.js +5 -9
  657. package/es/picker/global-picker-service.js.map +1 -1
  658. package/es/picker/pick-interceptor.js +2 -1
  659. package/es/picker/pick-interceptor.js.map +1 -1
  660. package/es/picker/pick-modules.js +1 -4
  661. package/es/picker/pick-modules.js.map +1 -1
  662. package/es/picker/picker-service.d.ts +2 -2
  663. package/es/picker/picker-service.js +10 -6
  664. package/es/picker/picker-service.js.map +1 -1
  665. package/es/plugins/builtin-plugin/flex-layout-plugin.js +12 -6
  666. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  667. package/es/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
  668. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  669. package/es/plugins/plugin-modules.js +1 -2
  670. package/es/plugins/plugin-modules.js.map +1 -1
  671. package/es/render/contributions/render/arc-module.d.ts +2 -0
  672. package/es/render/contributions/render/arc-module.js +21 -0
  673. package/es/render/contributions/render/arc-module.js.map +1 -0
  674. package/es/render/contributions/render/arc-render.js +3 -0
  675. package/es/render/contributions/render/arc-render.js.map +1 -1
  676. package/es/render/contributions/render/arc3d-module.d.ts +2 -0
  677. package/es/render/contributions/render/arc3d-module.js +13 -0
  678. package/es/render/contributions/render/arc3d-module.js.map +1 -0
  679. package/es/render/contributions/render/area-module.d.ts +2 -0
  680. package/es/render/contributions/render/area-module.js +23 -0
  681. package/es/render/contributions/render/area-module.js.map +1 -0
  682. package/es/render/contributions/render/area-render.d.ts +1 -0
  683. package/es/render/contributions/render/area-render.js +45 -5
  684. package/es/render/contributions/render/area-render.js.map +1 -1
  685. package/es/render/contributions/render/base-render.d.ts +1 -1
  686. package/es/render/contributions/render/base-render.js +15 -22
  687. package/es/render/contributions/render/base-render.js.map +1 -1
  688. package/es/render/contributions/render/circle-module.d.ts +2 -0
  689. package/es/render/contributions/render/circle-module.js +21 -0
  690. package/es/render/contributions/render/circle-module.js.map +1 -0
  691. package/es/render/contributions/render/circle-render.js +3 -0
  692. package/es/render/contributions/render/circle-render.js.map +1 -1
  693. package/es/render/contributions/render/contributions/arc-contribution-render.d.ts +3 -7
  694. package/es/render/contributions/render/contributions/arc-contribution-render.js +6 -32
  695. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  696. package/es/render/contributions/render/contributions/area-contribution-render.d.ts +3 -4
  697. package/es/render/contributions/render/contributions/area-contribution-render.js +5 -23
  698. package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  699. package/es/render/contributions/render/contributions/base-contribution-render.d.ts +4 -0
  700. package/es/render/contributions/render/contributions/base-contribution-render.js +21 -16
  701. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  702. package/es/render/contributions/render/contributions/circle-contribution-render.d.ts +3 -7
  703. package/es/render/contributions/render/contributions/circle-contribution-render.js +6 -32
  704. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  705. package/es/render/contributions/render/contributions/constants.d.ts +1 -0
  706. package/es/render/contributions/render/contributions/constants.js +2 -0
  707. package/es/render/contributions/render/contributions/constants.js.map +1 -1
  708. package/es/render/contributions/render/contributions/group-contribution-render.d.ts +1 -0
  709. package/es/render/contributions/render/contributions/group-contribution-render.js +5 -15
  710. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  711. package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -0
  712. package/es/render/contributions/render/contributions/image-contribution-render.js +6 -17
  713. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  714. package/es/render/contributions/render/contributions/path-contribution-render.d.ts +2 -9
  715. package/es/render/contributions/render/contributions/path-contribution-render.js +3 -29
  716. package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  717. package/es/render/contributions/render/contributions/polygon-contribution-render.d.ts +2 -9
  718. package/es/render/contributions/render/contributions/polygon-contribution-render.js +3 -29
  719. package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  720. package/es/render/contributions/render/contributions/rect-contribution-render.d.ts +5 -7
  721. package/es/render/contributions/render/contributions/rect-contribution-render.js +19 -46
  722. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  723. package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +3 -7
  724. package/es/render/contributions/render/contributions/symbol-contribution-render.js +6 -24
  725. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  726. package/es/render/contributions/render/contributions/text-contribution-render.d.ts +8 -1
  727. package/es/render/contributions/render/contributions/text-contribution-render.js +24 -1
  728. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  729. package/es/render/contributions/render/draw-contribution.d.ts +7 -6
  730. package/es/render/contributions/render/draw-contribution.js +49 -29
  731. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  732. package/es/render/contributions/render/draw-interceptor.d.ts +7 -1
  733. package/es/render/contributions/render/draw-interceptor.js +42 -38
  734. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  735. package/es/render/contributions/render/glyph-module.d.ts +2 -0
  736. package/es/render/contributions/render/glyph-module.js +13 -0
  737. package/es/render/contributions/render/glyph-module.js.map +1 -0
  738. package/es/render/contributions/render/glyph-render.d.ts +1 -2
  739. package/es/render/contributions/render/glyph-render.js +12 -9
  740. package/es/render/contributions/render/glyph-render.js.map +1 -1
  741. package/es/render/contributions/render/group-render.js +4 -1
  742. package/es/render/contributions/render/group-render.js.map +1 -1
  743. package/es/render/contributions/render/image-module.d.ts +2 -0
  744. package/es/render/contributions/render/image-module.js +20 -0
  745. package/es/render/contributions/render/image-module.js.map +1 -0
  746. package/es/render/contributions/render/image-render.js +5 -2
  747. package/es/render/contributions/render/image-render.js.map +1 -1
  748. package/es/render/contributions/render/incremental-draw-contribution.d.ts +2 -6
  749. package/es/render/contributions/render/incremental-draw-contribution.js +5 -11
  750. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  751. package/es/render/contributions/render/line-module.d.ts +2 -0
  752. package/es/render/contributions/render/line-module.js +16 -0
  753. package/es/render/contributions/render/line-module.js.map +1 -0
  754. package/es/render/contributions/render/line-render.d.ts +1 -0
  755. package/es/render/contributions/render/line-render.js +21 -6
  756. package/es/render/contributions/render/line-render.js.map +1 -1
  757. package/es/render/contributions/render/module.js +8 -129
  758. package/es/render/contributions/render/module.js.map +1 -1
  759. package/es/render/contributions/render/path-module.d.ts +2 -0
  760. package/es/render/contributions/render/path-module.js +21 -0
  761. package/es/render/contributions/render/path-module.js.map +1 -0
  762. package/es/render/contributions/render/path-render.d.ts +2 -1
  763. package/es/render/contributions/render/path-render.js +8 -4
  764. package/es/render/contributions/render/path-render.js.map +1 -1
  765. package/es/render/contributions/render/polygon-module.d.ts +2 -0
  766. package/es/render/contributions/render/polygon-module.js +20 -0
  767. package/es/render/contributions/render/polygon-module.js.map +1 -0
  768. package/es/render/contributions/render/polygon-render.js +3 -0
  769. package/es/render/contributions/render/polygon-render.js.map +1 -1
  770. package/es/render/contributions/render/pyramid3d-module.d.ts +2 -0
  771. package/es/render/contributions/render/pyramid3d-module.js +13 -0
  772. package/es/render/contributions/render/pyramid3d-module.js.map +1 -0
  773. package/es/render/contributions/render/rect-module.d.ts +2 -0
  774. package/es/render/contributions/render/rect-module.js +21 -0
  775. package/es/render/contributions/render/rect-module.js.map +1 -0
  776. package/es/render/contributions/render/rect-render.d.ts +2 -1
  777. package/es/render/contributions/render/rect-render.js +11 -3
  778. package/es/render/contributions/render/rect-render.js.map +1 -1
  779. package/es/render/contributions/render/rect3d-module.d.ts +2 -0
  780. package/es/render/contributions/render/rect3d-module.js +13 -0
  781. package/es/render/contributions/render/rect3d-module.js.map +1 -0
  782. package/es/render/contributions/render/render-slector.d.ts +1 -4
  783. package/es/render/contributions/render/render-slector.js +0 -15
  784. package/es/render/contributions/render/render-slector.js.map +1 -1
  785. package/es/render/contributions/render/richtext-module.d.ts +2 -0
  786. package/es/render/contributions/render/richtext-module.js +13 -0
  787. package/es/render/contributions/render/richtext-module.js.map +1 -0
  788. package/es/render/contributions/render/richtext-render.d.ts +1 -0
  789. package/es/render/contributions/render/richtext-render.js +12 -6
  790. package/es/render/contributions/render/richtext-render.js.map +1 -1
  791. package/es/render/contributions/render/symbol-module.d.ts +2 -0
  792. package/es/render/contributions/render/symbol-module.js +21 -0
  793. package/es/render/contributions/render/symbol-module.js.map +1 -0
  794. package/es/render/contributions/render/symbol-render.js +23 -4
  795. package/es/render/contributions/render/symbol-render.js.map +1 -1
  796. package/es/render/contributions/render/text-module.d.ts +2 -0
  797. package/es/render/contributions/render/text-module.js +20 -0
  798. package/es/render/contributions/render/text-module.js.map +1 -0
  799. package/es/render/contributions/render/text-render.js +16 -10
  800. package/es/render/contributions/render/text-render.js.map +1 -1
  801. package/es/render/contributions/render/utils.js +2 -2
  802. package/es/render/contributions/render/utils.js.map +1 -1
  803. package/es/render/render-modules.js +1 -1
  804. package/es/render/render-modules.js.map +1 -1
  805. package/es/render/render-service.js +1 -1
  806. package/es/render/render-service.js.map +1 -1
  807. package/es/resource-loader/loader.js +1 -3
  808. package/es/resource-loader/loader.js.map +1 -1
  809. package/package.json +7 -3
  810. package/cjs/common/inversify-lite/annotation/post_construct.d.ts +0 -4
  811. package/cjs/common/inversify-lite/annotation/post_construct.js.map +0 -1
  812. package/es/common/inversify-lite/annotation/post_construct.d.ts +0 -4
  813. package/es/common/inversify-lite/annotation/post_construct.js +0 -10
  814. package/es/common/inversify-lite/annotation/post_construct.js.map +0 -1
@@ -26,9 +26,10 @@ __exportStar(require("./richtext"), exports), __exportStar(require("./path"), ex
26
26
  __exportStar(require("./area"), exports), __exportStar(require("./image"), exports),
27
27
  __exportStar(require("./arc"), exports), __exportStar(require("./arc3d"), exports),
28
28
  __exportStar(require("./group"), exports), __exportStar(require("./polygon"), exports),
29
- __exportStar(require("./pyramid3d"), exports), __exportStar(require("./config"), exports),
30
- __exportStar(require("./graphic-service/graphic-service"), exports), __exportStar(require("./graphic-creator"), exports),
31
- __exportStar(require("./builtin-symbol"), exports), __exportStar(require("./graphic"), exports),
32
- __exportStar(require("./bounds"), exports), __exportStar(require("./theme"), exports),
33
- __exportStar(require("./tools"), exports), __exportStar(require("./constants"), exports);
29
+ __exportStar(require("./pyramid3d"), exports), __exportStar(require("./shadow-root"), exports),
30
+ __exportStar(require("./config"), exports), __exportStar(require("./graphic-service/graphic-service"), exports),
31
+ __exportStar(require("./graphic-creator"), exports), __exportStar(require("./builtin-symbol"), exports),
32
+ __exportStar(require("./graphic"), exports), __exportStar(require("./bounds"), exports),
33
+ __exportStar(require("./theme"), exports), __exportStar(require("./tools"), exports),
34
+ __exportStar(require("./constants"), exports);
34
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA,8CAA4B;AAC5B,2CAAyB;AACzB,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,mDAAiC;AACjC,yCAAuB;AACvB,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,yCAAuB;AACvB,0CAAwB;AACxB,wCAAsB;AACtB,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,oEAAkD;AAClD,oDAAkC;AAClC,mDAAiC;AACjC,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,8CAA4B","file":"index.js","sourcesContent":["// export { Node } from './node-tree';\n// export { Circle, DefaultCircleAttribute, CIRCLE_NUMBER_TYPE } from './circle';\n// export { Text, DefaultTextAttribute, TEXT_NUMBER_TYPE } from './text';\n// export { Symbol, DefaultSymbolAttribute, SYMBOL_NUMBER_TYPE } from './symbol';\n// export { builtinSymbolsMap } from './builtin-symbol';\n// export { Line, DefaultLineAttribute, LINE_NUMBER_TYPE } from './line';\n// export { Rect, DefaultRectAttribute, RECT_NUMBER_TYPE } from './rect';\n// export { Path, DefaultPathAttribute, PATH_NUMBER_TYPE } from './path';\n// export { RichText, DefaultRichTextAttribute, RICHTEXT_NUMBER_TYPE } from './richtext';\n// export { Area, DefaultAreaAttribute, AREA_NUMBER_TYPE } from './area';\n// export { Image, DefaultImageAttribute, IMAGE_NUMBER_TYPE } from './image';\n// export { Arc, DefaultArcAttribute, ARC_NUMBER_TYPE } from './arc';\n// export { Group } from './group';\n// export { DefaultAttribute, DefaultFillStyle, DefaultStrokeStyle, DefaultTransform } from './config';\n// export * from './graphic-service/graphic-service';\n\nexport * from './node-tree';\nexport * from './circle';\nexport * from './text';\nexport * from './wrap-text';\nexport * from './symbol';\nexport * from './builtin-symbol';\nexport * from './line';\nexport * from './rect';\nexport * from './rect3d';\nexport * from './glyph';\nexport * from './richtext';\nexport * from './path';\nexport * from './area';\nexport * from './image';\nexport * from './arc';\nexport * from './arc3d';\nexport * from './group';\nexport * from './polygon';\nexport * from './pyramid3d';\nexport * from './config';\nexport * from './graphic-service/graphic-service';\nexport * from './graphic-creator';\nexport * from './builtin-symbol';\nexport * from './graphic';\nexport * from './bounds';\nexport * from './theme';\nexport * from './tools';\nexport * from './constants';\n"]}
1
+ {"version":3,"sources":["../src/graphic/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA,8CAA4B;AAC5B,2CAAyB;AACzB,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,mDAAiC;AACjC,yCAAuB;AACvB,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,yCAAuB;AACvB,0CAAwB;AACxB,wCAAsB;AACtB,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,gDAA8B;AAC9B,2CAAyB;AACzB,oEAAkD;AAClD,oDAAkC;AAClC,mDAAiC;AACjC,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,8CAA4B","file":"index.js","sourcesContent":["// export { Node } from './node-tree';\n// export { Circle, DefaultCircleAttribute, CIRCLE_NUMBER_TYPE } from './circle';\n// export { Text, DefaultTextAttribute, TEXT_NUMBER_TYPE } from './text';\n// export { Symbol, DefaultSymbolAttribute, SYMBOL_NUMBER_TYPE } from './symbol';\n// export { builtinSymbolsMap } from './builtin-symbol';\n// export { Line, DefaultLineAttribute, LINE_NUMBER_TYPE } from './line';\n// export { Rect, DefaultRectAttribute, RECT_NUMBER_TYPE } from './rect';\n// export { Path, DefaultPathAttribute, PATH_NUMBER_TYPE } from './path';\n// export { RichText, DefaultRichTextAttribute, RICHTEXT_NUMBER_TYPE } from './richtext';\n// export { Area, DefaultAreaAttribute, AREA_NUMBER_TYPE } from './area';\n// export { Image, DefaultImageAttribute, IMAGE_NUMBER_TYPE } from './image';\n// export { Arc, DefaultArcAttribute, ARC_NUMBER_TYPE } from './arc';\n// export { Group } from './group';\n// export { DefaultAttribute, DefaultFillStyle, DefaultStrokeStyle, DefaultTransform } from './config';\n// export * from './graphic-service/graphic-service';\n\nexport * from './node-tree';\nexport * from './circle';\nexport * from './text';\nexport * from './wrap-text';\nexport * from './symbol';\nexport * from './builtin-symbol';\nexport * from './line';\nexport * from './rect';\nexport * from './rect3d';\nexport * from './glyph';\nexport * from './richtext';\nexport * from './path';\nexport * from './area';\nexport * from './image';\nexport * from './arc';\nexport * from './arc3d';\nexport * from './group';\nexport * from './polygon';\nexport * from './pyramid3d';\nexport * from './shadow-root';\nexport * from './config';\nexport * from './graphic-service/graphic-service';\nexport * from './graphic-creator';\nexport * from './builtin-symbol';\nexport * from './graphic';\nexport * from './bounds';\nexport * from './theme';\nexport * from './tools';\nexport * from './constants';\n"]}
@@ -14,6 +14,7 @@ class Line extends graphic_1.Graphic {
14
14
  return super.isValid() && this._isValid();
15
15
  }
16
16
  _isValid() {
17
+ if (this.pathProxy) return !0;
17
18
  const {points: points, segments: segments} = this.attribute;
18
19
  return segments ? 0 !== segments.length : !!points && !(points.length <= 1);
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { AABBBounds, OBBBounds, 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 { parsePadding, 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', ...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 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 protected doUpdateAABBBounds(): AABBBounds {\n const lineTheme = getTheme(this).line;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateLineAABBBounds(\n attribute,\n getTheme(this).line,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = lineTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const lineTheme = getTheme(this).line;\n return lineTheme[name];\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\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 { AABBBounds, OBBBounds, 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 { parsePadding, 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', ...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 protected doUpdateAABBBounds(): AABBBounds {\n const lineTheme = getTheme(this).line;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateLineAABBBounds(\n attribute,\n getTheme(this).line,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = lineTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const lineTheme = getTheme(this).line;\n return lineTheme[name];\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\n// addAttributeToPrototype(DefaultLineStyle, Line, PURE_STYLE_KEY);\n"]}
@@ -127,7 +127,7 @@ class Node extends vutils_1.EventEmitter {
127
127
  this._structEdit = !0, this.setCount(newNode.count), newNode);
128
128
  }
129
129
  insertInto(newNode, idx) {
130
- if (!this._ignoreWarn && this._nodeList && console.warn("insertIntoKeepIdx和insertInto混用可能会存在错误"),
130
+ if (!this._ignoreWarn && this._nodeList && vutils_1.Logger.getInstance().warn("insertIntoKeepIdx和insertInto混用可能会存在错误"),
131
131
  idx >= this.childrenCount) return this.appendChild(newNode);
132
132
  if (this._uid === newNode._uid) return null;
133
133
  if (newNode.isAncestorsOf(this)) throw new Error("【Node::insertBefore】不能将父辈元素insert为子元素");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/node-tree.ts"],"names":[],"mappings":"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","file":"node-tree.js","sourcesContent":["import type { Dict, LooseFunction } from '@visactor/vutils';\nimport { EventEmitter, isBoolean, isFunction, isObject } from '@visactor/vutils';\nimport { Generator } from '../common/generator';\nimport type { INode, IGroup } from '../interface';\n\nexport class Node extends EventEmitter<any, any> implements INode {\n parent: any;\n declare name: string;\n declare id: string | number;\n\n declare _uid: number;\n _prev?: INode;\n _next?: INode;\n protected _firstChild: INode | null;\n protected _lastChild: INode | null;\n protected _idMap?: Map<number, INode>;\n protected _count: number;\n // protected _dirty?: boolean; // dirty表示属性是否有修改\n protected _structEdit?: boolean; // 树的结构是否发生修改\n protected _nodeList?: INode[]; // 用于有顺序的插入(正常情况用不到)\n\n declare _ignoreWarn?: boolean;\n\n get previousSibling(): INode | null {\n return this._prev;\n }\n\n get nextSibling(): INode | null {\n return this._next;\n }\n\n get children(): INode[] {\n return this.getChildren();\n }\n get firstChild(): INode | null {\n return this._firstChild;\n }\n get lastChild(): INode | null {\n return this._lastChild;\n }\n get count(): number {\n return this._count;\n }\n get childrenCount(): number {\n if (!this._idMap) {\n return 0;\n }\n return this._idMap.size;\n }\n // get dirty(): boolean {\n // return !!this._dirty;\n // }\n\n constructor() {\n super();\n this._uid = Generator.GenAutoIncrementId();\n this._firstChild = null;\n this._lastChild = null;\n this.parent = null;\n this._count = 1;\n }\n\n forEachChildren<T extends INode = INode>(cb: (item: T, index: number) => void | boolean, reverse: boolean = false) {\n if (reverse) {\n let child = this._lastChild;\n let i = 0;\n while (child) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n child = child._prev;\n }\n } else {\n let child = this._firstChild;\n let i = 0;\n while (child) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n child = child._next;\n }\n }\n }\n\n async forEachChildrenAsync<T extends INode = INode>(\n cb: (item: T, index: number) => Promise<void | boolean> | void | boolean,\n reverse: boolean = false\n ) {\n if (reverse) {\n let child = this._lastChild;\n let i = 0;\n while (child) {\n let breakTag = cb(child as T, i++);\n if ((breakTag as any).then) {\n breakTag = await breakTag;\n }\n if (breakTag) {\n return;\n }\n child = child._prev;\n }\n } else {\n let child = this._firstChild;\n let i = 0;\n while (child) {\n let breakTag = cb(child as T, i++);\n if ((breakTag as any).then) {\n breakTag = await breakTag;\n }\n if (breakTag) {\n return;\n }\n child = child._next;\n }\n }\n }\n\n forEach<T extends INode = INode>(cb: (item: T, index: number) => void): void {\n return this.forEachChildren<T>(cb);\n }\n\n /**\n * 方法将一个节点附加到指定父节点的子节点列表的末尾处。\n * 如果将被插入的节点已经存在于当前文档的文档树中,那么 appendChild() 只会将它从原先的位置移动到新的位置(不需要事先移除要移动的节点)。\n * 不能append父级元素\n * @param node 要插入的节点\n */\n appendChild(node: INode, highPerformance: boolean = true): INode | null {\n if (this._uid === node._uid) {\n return null;\n }\n if (!highPerformance && node.isAncestorsOf(this)) {\n throw new Error('【Node::appendChild】不能将父辈元素append为子元素');\n }\n\n // 清理该节点的上次关系\n node.parent && node.parent.removeChild(node);\n node.parent = this as unknown as Node;\n\n if (!this._lastChild) {\n this._firstChild = this._lastChild = node;\n node._prev = node._next = null;\n } else {\n this._lastChild._next = node;\n node._prev = this._lastChild;\n this._lastChild = node;\n }\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(node._uid, node);\n\n this.setCount(node.count);\n\n this._structEdit = true;\n return node;\n }\n\n /**\n * 方法将一个节点数组附加到指定父节点的子节点列表的末尾处。\n * 不会判断元素是否是自身以及是否是父元素或者是否是其他节点的子元素\n * @param nodes 要插入的节点数组\n */\n appendChildArrHighPerformance(nodes: INode[], replace: boolean = false): INode[] | null {\n console.error('暂不支持该函数');\n\n return nodes;\n }\n\n /**\n * 方法在参考节点之前插入一个拥有指定父节点的子节点。\n * 如果给定的子节点是对文档中现有节点的引用,\n * insertBefore() 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。\n * 不能insert父级元素\n * @param newNode 要插入的节点\n * @param referenceNode 插入到referenceNode之前\n */\n insertBefore(newNode: INode, referenceNode: INode | undefined): INode | null {\n if (!referenceNode) {\n return this.appendChild(newNode);\n }\n if (this._uid === newNode._uid) {\n return null;\n }\n if (newNode.isAncestorsOf(this)) {\n throw new Error('【Node::insertBefore】不能将父辈元素insert为子元素');\n }\n if (referenceNode.parent !== (this as unknown as Node)) {\n return null;\n }\n\n newNode.parent && newNode.parent.removeChild(newNode);\n newNode.parent = this as unknown as Node;\n\n newNode._prev = referenceNode._prev;\n if (!referenceNode._prev) {\n this._firstChild = newNode;\n } else {\n referenceNode._prev._next = newNode;\n }\n referenceNode._prev = newNode;\n newNode._next = referenceNode;\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(newNode._uid, newNode);\n\n this._structEdit = true;\n this.setCount(newNode.count);\n\n return newNode;\n }\n\n /**\n * 方法在参考节点之后插入一个拥有指定父节点的子节点。\n * 如果给定的子节点是对文档中现有节点的引用,\n * insertAfter() 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。\n * 不能insert父级元素\n * @param newNode 要插入的节点\n * @param referenceNode 插入到referenceNode之后\n */\n insertAfter(newNode: INode, referenceNode: INode | undefined): INode | null {\n if (!referenceNode) {\n return this.appendChild(newNode);\n }\n if (this._uid === newNode._uid) {\n return null;\n }\n if (newNode.isAncestorsOf(this)) {\n throw new Error('【Node::insertAfter】不能将父辈元素insert为子元素');\n }\n if (referenceNode.parent !== (this as unknown as Node)) {\n return null;\n }\n\n newNode.parent && newNode.parent.removeChild(newNode);\n newNode.parent = this as unknown as Node;\n\n if (!referenceNode._next) {\n this._lastChild = newNode;\n } else {\n referenceNode._next._prev = newNode;\n newNode._next = referenceNode._next;\n }\n referenceNode._next = newNode;\n newNode._prev = referenceNode;\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(newNode._uid, newNode);\n\n this._structEdit = true;\n this.setCount(newNode.count);\n\n return newNode;\n }\n\n /**\n * 方法在参考节点之前插入一个拥有指定父节点的子节点。\n * 如果给定的子节点是对文档中现有节点的引用,\n * insertBefore() 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。\n * 不能insert父级元素\n * @param newNode 要插入的节点\n * @param referenceNode 插入到referenceNode之前\n */\n insertInto(newNode: INode, idx: number): INode | null {\n if (!this._ignoreWarn && this._nodeList) {\n console.warn('insertIntoKeepIdx和insertInto混用可能会存在错误');\n }\n if (idx >= this.childrenCount) {\n return this.appendChild(newNode);\n }\n if (this._uid === newNode._uid) {\n return null;\n }\n if (newNode.isAncestorsOf(this)) {\n throw new Error('【Node::insertBefore】不能将父辈元素insert为子元素');\n }\n\n newNode.parent && newNode.parent.removeChild(newNode);\n newNode.parent = this as unknown as Node;\n\n if (idx === 0) {\n newNode._next = this._firstChild;\n this._firstChild && (this._firstChild._prev = newNode);\n newNode._prev = null;\n this._firstChild = newNode;\n } else {\n let child = this._firstChild;\n for (let i = 0; i < idx; i++) {\n if (!child) {\n return null;\n }\n if (i > 0) {\n child = child._next;\n }\n }\n if (!child) {\n return null;\n }\n newNode._next = child._next;\n newNode._prev = child;\n child._next = newNode;\n if (newNode._next) {\n newNode._next._prev = newNode;\n }\n }\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(newNode._uid, newNode);\n\n // // 预期不会执行\n // if (idx === this.childrenCount) {\n // this._lastChild = newNode;\n // }\n this._structEdit = true;\n this.setCount(newNode.count);\n\n return newNode;\n }\n\n /**\n * 相比于insertInto,会保持idx顺序,举例:\n * 先插入idx:6的元素,再插入idx:2的元素,此时idx:2的元素会放置在idx为6的元素之前\n */\n insertIntoKeepIdx(newNode: INode, idx: number): INode | null {\n if (!this._nodeList) {\n this._nodeList = this.children;\n }\n // 如果这个位置有了,那就将这个位置之前的元素向后移动\n if (this._nodeList[idx]) {\n const node = this._nodeList[idx];\n this._nodeList.splice(idx, 0, newNode);\n return this.insertBefore(newNode, node);\n }\n // 查找idx之前的元素,插入到其后面\n this._nodeList[idx] = newNode;\n let node: INode | undefined;\n for (let i = idx - 1; i >= 0; i--) {\n node = this._nodeList[i];\n if (node) {\n break;\n }\n }\n if (node) {\n return node._next ? this.insertBefore(newNode, node._next) : this.appendChild(newNode);\n }\n this._ignoreWarn = true;\n const data = this.insertInto(newNode, 0);\n this._ignoreWarn = false;\n return data;\n }\n\n /**\n * 方法从DOM中删除一个子节点。返回删除的节点。\n * @param child 要删除的子节点\n */\n removeChild(child: INode): INode | null {\n if (!this._idMap) {\n return null;\n }\n if (!this._idMap.has(child._uid)) {\n return null;\n }\n this._idMap.delete(child._uid);\n if (this._nodeList) {\n // 找到idx\n const idx = this._nodeList.findIndex(n => n === child);\n if (idx > 0) {\n this._nodeList.splice(idx, 1);\n }\n }\n\n if (!child._prev) {\n this._firstChild = child._next;\n } else {\n child._prev._next = child._next;\n }\n if (child._next) {\n child._next._prev = child._prev;\n } else {\n this._lastChild = child._prev;\n }\n\n // 重置属性\n child.parent = null;\n child._prev = null;\n child._next = null;\n\n this._structEdit = true;\n this.setCount(-child.count);\n\n return child;\n }\n\n /**\n * 从当前节点的父节点删除当前节点\n */\n delete() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n }\n\n /**\n * 删除所有的孩子节点\n */\n removeAllChild() {\n if (!this._idMap) {\n return;\n }\n let child = this._firstChild;\n while (child) {\n child.parent = null;\n // child._rootNode = child;\n child._prev = null;\n child._next = null;\n child = child._next;\n }\n\n this._firstChild = null;\n this._lastChild = null;\n this._idMap.clear();\n\n this._structEdit = true;\n this.setCount(-this._count + 1);\n }\n\n /**\n * 方法用指定的节点替换当前节点的一个子节点,并返回被替换掉的节点。\n * 如果该节点已经存在于DOM树中,则它首先会被从原始位置删除。\n * 不能replace父级元素\n * @param newChild 新节点\n * @param oldChild 旧节点\n */\n replaceChild(newChild: INode, oldChild: INode): INode | null {\n throw new Error('暂不支持');\n }\n\n /**\n * 根据自定义逻辑查找元素,返回单一图形元素\n * @param callback 自定义查找过滤器\n * @param deep 是否进行深度查找,默认为 false\n * @returns 返回匹配的图形元素\n */\n find<T extends INode = INode>(callback: (node: T, index: number) => boolean, deep: boolean = false): T | null {\n let target: T | null = null;\n this.forEachChildren((node: T, index: number) => {\n if (node !== (this as unknown as INode) && callback(node, index)) {\n target = node;\n return true; // 提前退出循环\n }\n return false;\n });\n\n if (deep) {\n this.forEachChildren(child => {\n if ((child as IGroup).isContainer) {\n const node = (child as IGroup).find(callback, true) as T;\n if (node) {\n target = node;\n return true; // 提前退出循环\n }\n }\n return false;\n });\n }\n\n return target;\n }\n\n /**\n * 根据自定义逻辑查找元素,返回匹配的元素集合\n * @param callback 自定义查找过滤器\n * @param deep 是否进行深度查找,默认为 false\n * @returns 返回匹配的图形元素集合\n */\n findAll<T extends INode = INode>(callback: (node: T, index: number) => boolean, deep: boolean = false): T[] {\n let nodes: T[] = [];\n this.forEachChildren((node: T, index) => {\n if (node !== (this as unknown as INode) && callback(node, index)) {\n nodes.push(node);\n }\n });\n\n if (deep) {\n this.forEachChildren(child => {\n if ((child as IGroup).isContainer) {\n const targets = (child as IGroup).findAll(callback, true) as T[];\n if (targets.length) {\n nodes = nodes.concat(targets);\n }\n }\n });\n }\n return nodes;\n }\n\n /**\n * 通过用户设置的 id 查找对应的图形元素\n * @param id 子节点的 id\n */\n getElementById(id: string | number): INode | null {\n return this.find(node => node.id === id, true);\n }\n\n /**\n * @alias getElementById\n * 通过用户设置的 id 查找对应的图形元素\n * @param id 子节点的 id\n */\n findChildById(id: string | number): INode | null {\n return this.getElementById(id);\n }\n\n /**\n * 通过内部生成的节点 id:_uid 查找对应的图形元素\n * @param id 子节点的key\n */\n findChildByUid(uid: number): INode | null {\n if (!this._idMap) {\n return null;\n }\n return this._idMap.get(uid) || null;\n }\n\n /**\n * 根据用户传入的 name 查找元素,返回匹配的元素集合\n * @param name 用户设置的图形名称\n * @returns 匹配 name 的元素集合\n */\n getElementsByName(name: string) {\n return this.findAll(node => node.name === name, true);\n }\n\n /**\n * @alias getElementsByName\n * 根据用户传入的 name 查找元素,返回匹配的元素集合\n * @param name 用户设置的图形名称\n * @returns 匹配 name 的元素集合\n */\n findChildrenByName(name: string) {\n return this.getElementsByName(name);\n }\n /**\n * 根据用户传入的 type 查找元素,返回匹配的元素集合\n * @param type 用户设置的图形类型\n * @returns 匹配 type 的元素集合\n */\n getElementsByType(type: string) {\n return this.findAll(node => node.type === type, true);\n }\n\n /**\n * 根据名字查找元素,只返回第一个查找到的元素\n * @deprecated 待 vis-component & chartspace 修改之后删除\n * @param name\n * @param deep\n * @returns\n */\n getChildByName(name: string, deep: boolean = false) {\n return this.find(node => node.name === name, deep);\n }\n\n getChildAt(idx: number): INode | null {\n let c = this._firstChild;\n if (!c) {\n return null;\n }\n for (let i = 0; i < idx; i++) {\n if (!c._next) {\n return null;\n }\n c = c._next;\n }\n return c;\n }\n\n at(idx: number): INode | null {\n return this.getChildAt(idx);\n }\n\n /**\n * 返回的是一个布尔值,来表示传入的节点是否为该节点的后代节点。\n * @param node 判断是否包含的节点\n */\n containNode(node: INode): boolean {\n if (!this._idMap) {\n return false;\n }\n if (this._idMap.has(node._uid)) {\n return true;\n }\n let child = this._firstChild;\n while (child) {\n if (child.containNode(node)) {\n return true;\n }\n child = child._next;\n }\n return false;\n }\n\n /**\n * 方法返回上下文中的根节点,不常用\n */\n getRootNode(): INode {\n let parent = this.parent;\n while (parent?.parent) {\n parent = parent.parent;\n }\n return parent || this;\n }\n\n /**\n * 方法返回一个布尔值,表明当前节点是否包含有子节点.\n */\n hasChildNodes(): boolean {\n return this._firstChild !== null;\n }\n\n /* 语法糖 */\n addChild(node: INode): INode | null {\n return this.appendChild(node);\n }\n add(node: INode): INode | null {\n return this.appendChild(node);\n }\n getChildren(): INode[] {\n const nodes: INode[] = [];\n let child = this._firstChild;\n while (child) {\n nodes.push(child);\n child = child._next;\n }\n return nodes;\n }\n\n /**\n * 判断该节点是否是node的子节点\n * @param node\n */\n isChildOf(node: INode): boolean {\n if (!this.parent) {\n return false;\n }\n return this.parent._uid === node._uid;\n }\n\n /**\n * 判断该节点是否是node的父节点\n * @param node\n */\n isParentOf(node: INode): boolean {\n return node.isChildOf(this);\n }\n\n /**\n * 判断节点是否是node的后代节点\n * @param node\n */\n isDescendantsOf(node: INode): boolean {\n let parent = this.parent;\n if (!parent) {\n return false;\n }\n do {\n if (parent._uid === node._uid) {\n return true;\n }\n parent = parent.parent;\n } while (parent !== null);\n\n return false;\n }\n\n /**\n * 判断节点是否是node的祖先节点\n * @param node\n */\n isAncestorsOf(node: INode): boolean {\n return node.isDescendantsOf(this);\n }\n\n getAncestor(idx: number): INode {\n throw new Error('暂不支持');\n }\n\n /**\n * 设置该节点的所有后代节点某个属性\n * @param propsName 属性名\n * @param propsValue 属性值\n */\n setAllDescendantsProps(propsName: string, propsValue: any) {\n let child = this._firstChild;\n while (child) {\n child[propsName] = propsValue;\n child.setAllDescendantsProps(propsName, propsValue);\n child = child._next;\n }\n }\n /**\n * 设置当前节点的count属性,会更改父节点的count属性\n * @param deltaCount delta count\n */\n private setCount(deltaCount: number): void {\n this._count += deltaCount;\n let parent = this.parent;\n if (!parent) {\n return;\n }\n do {\n parent._count += deltaCount;\n parent = parent.parent;\n } while (parent !== null);\n }\n\n clone(): INode {\n throw new Error('暂不支持');\n }\n\n /**\n * clone to node\n * @param node\n */\n cloneTo(node: INode): void {\n throw new Error('暂不支持');\n }\n\n /***************语法糖***************/\n getParent(): INode | null {\n return this.parent;\n }\n\n del(child: INode): INode | null {\n return this.removeChild(child);\n }\n\n // 事件相关别名\n /**\n * @alias on\n * @param type\n * @param listener\n * @param options\n */\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n const capture =\n (isBoolean(options, true) && options) || (isObject(options) && (options as AddEventListenerOptions).capture);\n const once = isObject(options) && (options as AddEventListenerOptions).once;\n const context = isFunction(listener) ? undefined : listener;\n\n type = capture ? `${type}capture` : type;\n listener = isFunction(listener) ? (listener as LooseFunction) : (listener as EventListenerObject).handleEvent;\n\n if (once) {\n super.once(type, listener, context);\n } else {\n super.on(type, listener, context);\n }\n return this;\n }\n\n on(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n return this.addEventListener(type, listener, options);\n }\n\n /**\n * @alias off\n * @param type\n * @param listener\n * @param options\n * @returns\n */\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n const capture =\n (isBoolean(options, true) && options) || (isObject(options) && (options as AddEventListenerOptions).capture);\n const context = isFunction(listener) ? undefined : listener;\n\n type = capture ? `${type}capture` : type;\n listener = isFunction(listener) ? (listener as LooseFunction) : (listener as EventListenerObject).handleEvent;\n\n const once = isObject(options) && (options as AddEventListenerOptions).once;\n super.off(type, listener, context, once);\n\n return this;\n }\n\n /**\n * @alias off\n * @param type\n * @param listener\n * @param options\n * @returns\n */\n off(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n return this.removeEventListener(type, listener, options);\n }\n\n once(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n if (isObject(options)) {\n options.once = true;\n return this.addEventListener(type, listener, options);\n }\n return this.addEventListener(type, listener, { once: true });\n }\n\n removeAllEventListeners() {\n super.removeAllListeners();\n return this;\n }\n\n removeAllListeners(): this {\n return this.removeAllEventListeners();\n }\n\n dispatchEvent(event: any, ...args: any) {\n super.emit(event.type, event, ...args);\n return !event.defaultPrevented;\n }\n\n emit(event: any, data?: Dict<any>) {\n return this.dispatchEvent(event, data);\n }\n\n release() {\n // 卸载事件\n this.removeAllListeners();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/node-tree.ts"],"names":[],"mappings":"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","file":"node-tree.js","sourcesContent":["import type { Dict, LooseFunction } from '@visactor/vutils';\nimport { EventEmitter, Logger, isBoolean, isFunction, isObject } from '@visactor/vutils';\nimport { Generator } from '../common/generator';\nimport type { INode, IGroup } from '../interface';\n\nexport class Node extends EventEmitter<any, any> implements INode {\n parent: any;\n declare name: string;\n declare id: string | number;\n\n declare _uid: number;\n _prev?: INode;\n _next?: INode;\n protected _firstChild: INode | null;\n protected _lastChild: INode | null;\n protected _idMap?: Map<number, INode>;\n protected _count: number;\n // protected _dirty?: boolean; // dirty表示属性是否有修改\n protected _structEdit?: boolean; // 树的结构是否发生修改\n protected _nodeList?: INode[]; // 用于有顺序的插入(正常情况用不到)\n\n declare _ignoreWarn?: boolean;\n\n get previousSibling(): INode | null {\n return this._prev;\n }\n\n get nextSibling(): INode | null {\n return this._next;\n }\n\n get children(): INode[] {\n return this.getChildren();\n }\n get firstChild(): INode | null {\n return this._firstChild;\n }\n get lastChild(): INode | null {\n return this._lastChild;\n }\n get count(): number {\n return this._count;\n }\n get childrenCount(): number {\n if (!this._idMap) {\n return 0;\n }\n return this._idMap.size;\n }\n // get dirty(): boolean {\n // return !!this._dirty;\n // }\n\n constructor() {\n super();\n this._uid = Generator.GenAutoIncrementId();\n this._firstChild = null;\n this._lastChild = null;\n this.parent = null;\n this._count = 1;\n }\n\n forEachChildren<T extends INode = INode>(cb: (item: T, index: number) => void | boolean, reverse: boolean = false) {\n if (reverse) {\n let child = this._lastChild;\n let i = 0;\n while (child) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n child = child._prev;\n }\n } else {\n let child = this._firstChild;\n let i = 0;\n while (child) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n child = child._next;\n }\n }\n }\n\n async forEachChildrenAsync<T extends INode = INode>(\n cb: (item: T, index: number) => Promise<void | boolean> | void | boolean,\n reverse: boolean = false\n ) {\n if (reverse) {\n let child = this._lastChild;\n let i = 0;\n while (child) {\n let breakTag = cb(child as T, i++);\n if ((breakTag as any).then) {\n breakTag = await breakTag;\n }\n if (breakTag) {\n return;\n }\n child = child._prev;\n }\n } else {\n let child = this._firstChild;\n let i = 0;\n while (child) {\n let breakTag = cb(child as T, i++);\n if ((breakTag as any).then) {\n breakTag = await breakTag;\n }\n if (breakTag) {\n return;\n }\n child = child._next;\n }\n }\n }\n\n forEach<T extends INode = INode>(cb: (item: T, index: number) => void): void {\n return this.forEachChildren<T>(cb);\n }\n\n /**\n * 方法将一个节点附加到指定父节点的子节点列表的末尾处。\n * 如果将被插入的节点已经存在于当前文档的文档树中,那么 appendChild() 只会将它从原先的位置移动到新的位置(不需要事先移除要移动的节点)。\n * 不能append父级元素\n * @param node 要插入的节点\n */\n appendChild(node: INode, highPerformance: boolean = true): INode | null {\n if (this._uid === node._uid) {\n return null;\n }\n if (!highPerformance && node.isAncestorsOf(this)) {\n throw new Error('【Node::appendChild】不能将父辈元素append为子元素');\n }\n\n // 清理该节点的上次关系\n node.parent && node.parent.removeChild(node);\n node.parent = this as unknown as Node;\n\n if (!this._lastChild) {\n this._firstChild = this._lastChild = node;\n node._prev = node._next = null;\n } else {\n this._lastChild._next = node;\n node._prev = this._lastChild;\n this._lastChild = node;\n }\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(node._uid, node);\n\n this.setCount(node.count);\n\n this._structEdit = true;\n return node;\n }\n\n /**\n * 方法将一个节点数组附加到指定父节点的子节点列表的末尾处。\n * 不会判断元素是否是自身以及是否是父元素或者是否是其他节点的子元素\n * @param nodes 要插入的节点数组\n */\n appendChildArrHighPerformance(nodes: INode[], replace: boolean = false): INode[] | null {\n console.error('暂不支持该函数');\n\n return nodes;\n }\n\n /**\n * 方法在参考节点之前插入一个拥有指定父节点的子节点。\n * 如果给定的子节点是对文档中现有节点的引用,\n * insertBefore() 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。\n * 不能insert父级元素\n * @param newNode 要插入的节点\n * @param referenceNode 插入到referenceNode之前\n */\n insertBefore(newNode: INode, referenceNode: INode | undefined): INode | null {\n if (!referenceNode) {\n return this.appendChild(newNode);\n }\n if (this._uid === newNode._uid) {\n return null;\n }\n if (newNode.isAncestorsOf(this)) {\n throw new Error('【Node::insertBefore】不能将父辈元素insert为子元素');\n }\n if (referenceNode.parent !== (this as unknown as Node)) {\n return null;\n }\n\n newNode.parent && newNode.parent.removeChild(newNode);\n newNode.parent = this as unknown as Node;\n\n newNode._prev = referenceNode._prev;\n if (!referenceNode._prev) {\n this._firstChild = newNode;\n } else {\n referenceNode._prev._next = newNode;\n }\n referenceNode._prev = newNode;\n newNode._next = referenceNode;\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(newNode._uid, newNode);\n\n this._structEdit = true;\n this.setCount(newNode.count);\n\n return newNode;\n }\n\n /**\n * 方法在参考节点之后插入一个拥有指定父节点的子节点。\n * 如果给定的子节点是对文档中现有节点的引用,\n * insertAfter() 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。\n * 不能insert父级元素\n * @param newNode 要插入的节点\n * @param referenceNode 插入到referenceNode之后\n */\n insertAfter(newNode: INode, referenceNode: INode | undefined): INode | null {\n if (!referenceNode) {\n return this.appendChild(newNode);\n }\n if (this._uid === newNode._uid) {\n return null;\n }\n if (newNode.isAncestorsOf(this)) {\n throw new Error('【Node::insertAfter】不能将父辈元素insert为子元素');\n }\n if (referenceNode.parent !== (this as unknown as Node)) {\n return null;\n }\n\n newNode.parent && newNode.parent.removeChild(newNode);\n newNode.parent = this as unknown as Node;\n\n if (!referenceNode._next) {\n this._lastChild = newNode;\n } else {\n referenceNode._next._prev = newNode;\n newNode._next = referenceNode._next;\n }\n referenceNode._next = newNode;\n newNode._prev = referenceNode;\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(newNode._uid, newNode);\n\n this._structEdit = true;\n this.setCount(newNode.count);\n\n return newNode;\n }\n\n /**\n * 方法在参考节点之前插入一个拥有指定父节点的子节点。\n * 如果给定的子节点是对文档中现有节点的引用,\n * insertBefore() 会将其从当前位置移动到新位置(在将节点附加到其他节点之前,不需要从其父节点删除该节点)。\n * 不能insert父级元素\n * @param newNode 要插入的节点\n * @param referenceNode 插入到referenceNode之前\n */\n insertInto(newNode: INode, idx: number): INode | null {\n if (!this._ignoreWarn && this._nodeList) {\n Logger.getInstance().warn('insertIntoKeepIdx和insertInto混用可能会存在错误');\n }\n if (idx >= this.childrenCount) {\n return this.appendChild(newNode);\n }\n if (this._uid === newNode._uid) {\n return null;\n }\n if (newNode.isAncestorsOf(this)) {\n throw new Error('【Node::insertBefore】不能将父辈元素insert为子元素');\n }\n\n newNode.parent && newNode.parent.removeChild(newNode);\n newNode.parent = this as unknown as Node;\n\n if (idx === 0) {\n newNode._next = this._firstChild;\n this._firstChild && (this._firstChild._prev = newNode);\n newNode._prev = null;\n this._firstChild = newNode;\n } else {\n let child = this._firstChild;\n for (let i = 0; i < idx; i++) {\n if (!child) {\n return null;\n }\n if (i > 0) {\n child = child._next;\n }\n }\n if (!child) {\n return null;\n }\n newNode._next = child._next;\n newNode._prev = child;\n child._next = newNode;\n if (newNode._next) {\n newNode._next._prev = newNode;\n }\n }\n if (!this._idMap) {\n this._idMap = new Map();\n }\n this._idMap.set(newNode._uid, newNode);\n\n // // 预期不会执行\n // if (idx === this.childrenCount) {\n // this._lastChild = newNode;\n // }\n this._structEdit = true;\n this.setCount(newNode.count);\n\n return newNode;\n }\n\n /**\n * 相比于insertInto,会保持idx顺序,举例:\n * 先插入idx:6的元素,再插入idx:2的元素,此时idx:2的元素会放置在idx为6的元素之前\n */\n insertIntoKeepIdx(newNode: INode, idx: number): INode | null {\n if (!this._nodeList) {\n this._nodeList = this.children;\n }\n // 如果这个位置有了,那就将这个位置之前的元素向后移动\n if (this._nodeList[idx]) {\n const node = this._nodeList[idx];\n this._nodeList.splice(idx, 0, newNode);\n return this.insertBefore(newNode, node);\n }\n // 查找idx之前的元素,插入到其后面\n this._nodeList[idx] = newNode;\n let node: INode | undefined;\n for (let i = idx - 1; i >= 0; i--) {\n node = this._nodeList[i];\n if (node) {\n break;\n }\n }\n if (node) {\n return node._next ? this.insertBefore(newNode, node._next) : this.appendChild(newNode);\n }\n this._ignoreWarn = true;\n const data = this.insertInto(newNode, 0);\n this._ignoreWarn = false;\n return data;\n }\n\n /**\n * 方法从DOM中删除一个子节点。返回删除的节点。\n * @param child 要删除的子节点\n */\n removeChild(child: INode): INode | null {\n if (!this._idMap) {\n return null;\n }\n if (!this._idMap.has(child._uid)) {\n return null;\n }\n this._idMap.delete(child._uid);\n if (this._nodeList) {\n // 找到idx\n const idx = this._nodeList.findIndex(n => n === child);\n if (idx > 0) {\n this._nodeList.splice(idx, 1);\n }\n }\n\n if (!child._prev) {\n this._firstChild = child._next;\n } else {\n child._prev._next = child._next;\n }\n if (child._next) {\n child._next._prev = child._prev;\n } else {\n this._lastChild = child._prev;\n }\n\n // 重置属性\n child.parent = null;\n child._prev = null;\n child._next = null;\n\n this._structEdit = true;\n this.setCount(-child.count);\n\n return child;\n }\n\n /**\n * 从当前节点的父节点删除当前节点\n */\n delete() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n }\n\n /**\n * 删除所有的孩子节点\n */\n removeAllChild() {\n if (!this._idMap) {\n return;\n }\n let child = this._firstChild;\n while (child) {\n child.parent = null;\n // child._rootNode = child;\n child._prev = null;\n child._next = null;\n child = child._next;\n }\n\n this._firstChild = null;\n this._lastChild = null;\n this._idMap.clear();\n\n this._structEdit = true;\n this.setCount(-this._count + 1);\n }\n\n /**\n * 方法用指定的节点替换当前节点的一个子节点,并返回被替换掉的节点。\n * 如果该节点已经存在于DOM树中,则它首先会被从原始位置删除。\n * 不能replace父级元素\n * @param newChild 新节点\n * @param oldChild 旧节点\n */\n replaceChild(newChild: INode, oldChild: INode): INode | null {\n throw new Error('暂不支持');\n }\n\n /**\n * 根据自定义逻辑查找元素,返回单一图形元素\n * @param callback 自定义查找过滤器\n * @param deep 是否进行深度查找,默认为 false\n * @returns 返回匹配的图形元素\n */\n find<T extends INode = INode>(callback: (node: T, index: number) => boolean, deep: boolean = false): T | null {\n let target: T | null = null;\n this.forEachChildren((node: T, index: number) => {\n if (node !== (this as unknown as INode) && callback(node, index)) {\n target = node;\n return true; // 提前退出循环\n }\n return false;\n });\n\n if (deep) {\n this.forEachChildren(child => {\n if ((child as IGroup).isContainer) {\n const node = (child as IGroup).find(callback, true) as T;\n if (node) {\n target = node;\n return true; // 提前退出循环\n }\n }\n return false;\n });\n }\n\n return target;\n }\n\n /**\n * 根据自定义逻辑查找元素,返回匹配的元素集合\n * @param callback 自定义查找过滤器\n * @param deep 是否进行深度查找,默认为 false\n * @returns 返回匹配的图形元素集合\n */\n findAll<T extends INode = INode>(callback: (node: T, index: number) => boolean, deep: boolean = false): T[] {\n let nodes: T[] = [];\n this.forEachChildren((node: T, index) => {\n if (node !== (this as unknown as INode) && callback(node, index)) {\n nodes.push(node);\n }\n });\n\n if (deep) {\n this.forEachChildren(child => {\n if ((child as IGroup).isContainer) {\n const targets = (child as IGroup).findAll(callback, true) as T[];\n if (targets.length) {\n nodes = nodes.concat(targets);\n }\n }\n });\n }\n return nodes;\n }\n\n /**\n * 通过用户设置的 id 查找对应的图形元素\n * @param id 子节点的 id\n */\n getElementById(id: string | number): INode | null {\n return this.find(node => node.id === id, true);\n }\n\n /**\n * @alias getElementById\n * 通过用户设置的 id 查找对应的图形元素\n * @param id 子节点的 id\n */\n findChildById(id: string | number): INode | null {\n return this.getElementById(id);\n }\n\n /**\n * 通过内部生成的节点 id:_uid 查找对应的图形元素\n * @param id 子节点的key\n */\n findChildByUid(uid: number): INode | null {\n if (!this._idMap) {\n return null;\n }\n return this._idMap.get(uid) || null;\n }\n\n /**\n * 根据用户传入的 name 查找元素,返回匹配的元素集合\n * @param name 用户设置的图形名称\n * @returns 匹配 name 的元素集合\n */\n getElementsByName(name: string) {\n return this.findAll(node => node.name === name, true);\n }\n\n /**\n * @alias getElementsByName\n * 根据用户传入的 name 查找元素,返回匹配的元素集合\n * @param name 用户设置的图形名称\n * @returns 匹配 name 的元素集合\n */\n findChildrenByName(name: string) {\n return this.getElementsByName(name);\n }\n /**\n * 根据用户传入的 type 查找元素,返回匹配的元素集合\n * @param type 用户设置的图形类型\n * @returns 匹配 type 的元素集合\n */\n getElementsByType(type: string) {\n return this.findAll(node => node.type === type, true);\n }\n\n /**\n * 根据名字查找元素,只返回第一个查找到的元素\n * @deprecated 待 vis-component & chartspace 修改之后删除\n * @param name\n * @param deep\n * @returns\n */\n getChildByName(name: string, deep: boolean = false) {\n return this.find(node => node.name === name, deep);\n }\n\n getChildAt(idx: number): INode | null {\n let c = this._firstChild;\n if (!c) {\n return null;\n }\n for (let i = 0; i < idx; i++) {\n if (!c._next) {\n return null;\n }\n c = c._next;\n }\n return c;\n }\n\n at(idx: number): INode | null {\n return this.getChildAt(idx);\n }\n\n /**\n * 返回的是一个布尔值,来表示传入的节点是否为该节点的后代节点。\n * @param node 判断是否包含的节点\n */\n containNode(node: INode): boolean {\n if (!this._idMap) {\n return false;\n }\n if (this._idMap.has(node._uid)) {\n return true;\n }\n let child = this._firstChild;\n while (child) {\n if (child.containNode(node)) {\n return true;\n }\n child = child._next;\n }\n return false;\n }\n\n /**\n * 方法返回上下文中的根节点,不常用\n */\n getRootNode(): INode {\n let parent = this.parent;\n while (parent?.parent) {\n parent = parent.parent;\n }\n return parent || this;\n }\n\n /**\n * 方法返回一个布尔值,表明当前节点是否包含有子节点.\n */\n hasChildNodes(): boolean {\n return this._firstChild !== null;\n }\n\n /* 语法糖 */\n addChild(node: INode): INode | null {\n return this.appendChild(node);\n }\n add(node: INode): INode | null {\n return this.appendChild(node);\n }\n getChildren(): INode[] {\n const nodes: INode[] = [];\n let child = this._firstChild;\n while (child) {\n nodes.push(child);\n child = child._next;\n }\n return nodes;\n }\n\n /**\n * 判断该节点是否是node的子节点\n * @param node\n */\n isChildOf(node: INode): boolean {\n if (!this.parent) {\n return false;\n }\n return this.parent._uid === node._uid;\n }\n\n /**\n * 判断该节点是否是node的父节点\n * @param node\n */\n isParentOf(node: INode): boolean {\n return node.isChildOf(this);\n }\n\n /**\n * 判断节点是否是node的后代节点\n * @param node\n */\n isDescendantsOf(node: INode): boolean {\n let parent = this.parent;\n if (!parent) {\n return false;\n }\n do {\n if (parent._uid === node._uid) {\n return true;\n }\n parent = parent.parent;\n } while (parent !== null);\n\n return false;\n }\n\n /**\n * 判断节点是否是node的祖先节点\n * @param node\n */\n isAncestorsOf(node: INode): boolean {\n return node.isDescendantsOf(this);\n }\n\n getAncestor(idx: number): INode {\n throw new Error('暂不支持');\n }\n\n /**\n * 设置该节点的所有后代节点某个属性\n * @param propsName 属性名\n * @param propsValue 属性值\n */\n setAllDescendantsProps(propsName: string, propsValue: any) {\n let child = this._firstChild;\n while (child) {\n child[propsName] = propsValue;\n child.setAllDescendantsProps(propsName, propsValue);\n child = child._next;\n }\n }\n /**\n * 设置当前节点的count属性,会更改父节点的count属性\n * @param deltaCount delta count\n */\n private setCount(deltaCount: number): void {\n this._count += deltaCount;\n let parent = this.parent;\n if (!parent) {\n return;\n }\n do {\n parent._count += deltaCount;\n parent = parent.parent;\n } while (parent !== null);\n }\n\n clone(): INode {\n throw new Error('暂不支持');\n }\n\n /**\n * clone to node\n * @param node\n */\n cloneTo(node: INode): void {\n throw new Error('暂不支持');\n }\n\n /***************语法糖***************/\n getParent(): INode | null {\n return this.parent;\n }\n\n del(child: INode): INode | null {\n return this.removeChild(child);\n }\n\n // 事件相关别名\n /**\n * @alias on\n * @param type\n * @param listener\n * @param options\n */\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n const capture =\n (isBoolean(options, true) && options) || (isObject(options) && (options as AddEventListenerOptions).capture);\n const once = isObject(options) && (options as AddEventListenerOptions).once;\n const context = isFunction(listener) ? undefined : listener;\n\n type = capture ? `${type}capture` : type;\n listener = isFunction(listener) ? (listener as LooseFunction) : (listener as EventListenerObject).handleEvent;\n\n if (once) {\n super.once(type, listener, context);\n } else {\n super.on(type, listener, context);\n }\n return this;\n }\n\n on(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n return this.addEventListener(type, listener, options);\n }\n\n /**\n * @alias off\n * @param type\n * @param listener\n * @param options\n * @returns\n */\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n const capture =\n (isBoolean(options, true) && options) || (isObject(options) && (options as AddEventListenerOptions).capture);\n const context = isFunction(listener) ? undefined : listener;\n\n type = capture ? `${type}capture` : type;\n listener = isFunction(listener) ? (listener as LooseFunction) : (listener as EventListenerObject).handleEvent;\n\n const once = isObject(options) && (options as AddEventListenerOptions).once;\n super.off(type, listener, context, once);\n\n return this;\n }\n\n /**\n * @alias off\n * @param type\n * @param listener\n * @param options\n * @returns\n */\n off(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n return this.removeEventListener(type, listener, options);\n }\n\n once(\n type: string,\n listener: EventListenerOrEventListenerObject | LooseFunction,\n options?: AddEventListenerOptions | boolean\n ) {\n if (isObject(options)) {\n options.once = true;\n return this.addEventListener(type, listener, options);\n }\n return this.addEventListener(type, listener, { once: true });\n }\n\n removeAllEventListeners() {\n super.removeAllListeners();\n return this;\n }\n\n removeAllListeners(): this {\n return this.removeAllEventListeners();\n }\n\n dispatchEvent(event: any, ...args: any) {\n super.emit(event.type, event, ...args);\n return !event.defaultPrevented;\n }\n\n emit(event: any, data?: Dict<any>) {\n return this.dispatchEvent(event, data);\n }\n\n release() {\n // 卸载事件\n this.removeAllListeners();\n }\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  import type { AABBBounds, OBBBounds } from '@visactor/vutils';
2
2
  import { Graphic } from './graphic';
3
- import type { GraphicType, IRect, IRectGraphicAttribute } from '../interface';
4
- import { CustomPath2D } from '../common/custom-path2d';
3
+ import type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';
5
4
  export declare class Rect extends Graphic<IRectGraphicAttribute> implements IRect {
6
5
  type: GraphicType;
7
6
  static NOWORK_ANIMATE_ATTR: {
@@ -41,7 +40,7 @@ export declare class Rect extends Graphic<IRectGraphicAttribute> implements IRec
41
40
  getDefaultAttribute(name: string): any;
42
41
  protected needUpdateTags(keys: string[]): boolean;
43
42
  protected needUpdateTag(key: string): boolean;
44
- toCustomPath(): CustomPath2D;
43
+ toCustomPath(): ICustomPath2D;
45
44
  clone(): Rect;
46
45
  getNoWorkAnimateAttr(): Record<string, number>;
47
46
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.Rect = void 0;
6
6
 
7
- const graphic_1 = require("./graphic"), custom_path2d_1 = require("../common/custom-path2d"), utils_1 = require("../common/utils"), theme_1 = require("./theme"), application_1 = require("../application"), constants_1 = require("./constants"), RECT_UPDATE_TAG_KEY = [ "width", "height", "cornerRadius", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
7
+ const graphic_1 = require("./graphic"), utils_1 = require("../common/utils"), theme_1 = require("./theme"), application_1 = require("../application"), constants_1 = require("./constants"), RECT_UPDATE_TAG_KEY = [ "width", "x1", "y1", "height", "cornerRadius", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
8
8
 
9
9
  class Rect extends graphic_1.Graphic {
10
10
  constructor(params) {
@@ -14,8 +14,7 @@ class Rect extends graphic_1.Graphic {
14
14
  return super.isValid() && this._isValid();
15
15
  }
16
16
  _isValid() {
17
- const {width: width, height: height} = this.attribute;
18
- return this._validNumber(width) && this._validNumber(height);
17
+ return !0;
19
18
  }
20
19
  doUpdateAABBBounds() {
21
20
  const rectTheme = (0, theme_1.getTheme)(this).rect;
@@ -39,8 +38,7 @@ class Rect extends graphic_1.Graphic {
39
38
  return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);
40
39
  }
41
40
  toCustomPath() {
42
- const attribute = this.attribute, width = attribute.width, height = attribute.height, path = new custom_path2d_1.CustomPath2D;
43
- return path.moveTo(0, 0), path.rect(0, 0, width, height), path;
41
+ throw new Error("暂不支持");
44
42
  }
45
43
  clone() {
46
44
  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 { AABBBounds, OBBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\n\nconst RECT_UPDATE_TAG_KEY = ['width', '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 const { width, height } = this.attribute;\n return this._validNumber(width) && this._validNumber(height);\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const rectTheme = getTheme(this).rect;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRectAABBBounds(\n attribute,\n getTheme(this).rect,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = rectTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const rectTheme = getTheme(this).rect;\n return rectTheme[name];\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() {\n const attribute = this.attribute;\n const width = attribute.width;\n const height = attribute.height;\n const x = 0;\n const y = 0;\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"]}
1
+ {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":";;;AACA,uCAAiF;AAGjF,2CAA+C;AAC/C,mCAAmC;AACnC,gDAA6C;AAC7C,2CAA+C;AAE/C,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,gCAAsB,CAAC,CAAC;AAEvG,MAAa,IAAK,SAAQ,iBAA8B;IAKtD,YAAY,MAA6B;QACvC,KAAK,CAAC,MAAM,CAAC,CAAC;QALhB,SAAI,GAAgB,MAAM,CAAC;QAMzB,IAAI,CAAC,UAAU,GAAG,4BAAgB,CAAC;IACrC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACO,QAAQ;QACd,OAAO,IAAI,CAAC;IAId,CAAC;IAES,kBAAkB;QAC1B,MAAM,SAAS,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,MAAM,GAAG,yBAAW,CAAC,cAAc,CAAC,oBAAoB,CAC5D,SAAS,EACT,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,EACnB,IAAI,CAAC,WAAW,EAChB,IAAI,CACS,CAAC;QAEhB,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,CAAC;QACjD,IAAI,YAAY,EAAE;YAChB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,kBAAkB;QAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAAC,IAAY;QAC9B,MAAM,SAAS,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAES,cAAc,CAAC,IAAc;QACrC,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACzD,CAAC;IACS,aAAa,CAAC,GAAW;QACjC,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;QACV,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAY1B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,IAAI,mBAAM,IAAI,CAAC,SAAS,EAAG,CAAC;IACzC,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;;AA9EH,oBA+EC;AA5EQ,wBAAmB,GAAG,6BAAmB,CAAC","file":"rect.js","sourcesContent":["import type { AABBBounds, OBBBounds } 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 { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\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 protected doUpdateAABBBounds(): AABBBounds {\n const rectTheme = getTheme(this).rect;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRectAABBBounds(\n attribute,\n getTheme(this).rect,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = rectTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const rectTheme = getTheme(this).rect;\n return rectTheme[name];\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 width = attribute.width;\n // const height = attribute.height;\n // const x = 0;\n // const y = 0;\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"]}
@@ -22,6 +22,7 @@ export default class Line {
22
22
  y: string;
23
23
  };
24
24
  constructor(left: number, width: number, baseline: number, ascent: number, descent: number, lineBuffer: (Paragraph | RichTextIcon)[], direction: 'horizontal' | 'vertical', isWidthMax: boolean);
25
+ calcOffset(width: number, isWidthMax: boolean): void;
25
26
  draw(ctx: IContext2d, lastLine: boolean, x: number, y: number, drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void): void;
26
27
  getWidthWithEllips(): number;
27
28
  }
@@ -17,8 +17,7 @@ class Line {
17
17
  this.left = left, this.width = width, this.baseline = baseline, this.ascent = ascent,
18
18
  this.descent = descent, this.top = baseline - ascent, this.paragraphs = lineBuffer.map((p => p)),
19
19
  this.textAlign = (this.paragraphs[0] instanceof icon_1.RichTextIcon ? this.paragraphs[0].attribute.textAlign : this.paragraphs[0].character.textAlign) || "left",
20
- this.direction = direction, this.directionKey = utils_1.DIRECTION_KEY[this.direction];
21
- const directionKey = this.directionKey;
20
+ this.direction = direction, this.directionKey = utils_1.DIRECTION_KEY[this.direction],
22
21
  this.actualWidth = 0;
23
22
  let maxHeight = 0;
24
23
  this.paragraphs.forEach(((word, index) => {
@@ -28,7 +27,11 @@ class Line {
28
27
  word.updateWidth());
29
28
  }
30
29
  this.actualWidth += word[this.directionKey.width], maxHeight = Math.max(word[this.directionKey.height], maxHeight);
31
- })), this.height = maxHeight, this.blankWidth = isWidthMax ? 0 : this.width - this.actualWidth;
30
+ })), this.height = maxHeight, this.blankWidth = isWidthMax ? 0 : this.width - this.actualWidth,
31
+ this.calcOffset(width, isWidthMax);
32
+ }
33
+ calcOffset(width, isWidthMax) {
34
+ const directionKey = this.directionKey, maxHeight = this.height;
32
35
  let x = this.left, spacing = 0;
33
36
  if (this.actualWidth < width && !isWidthMax) switch (this.textAlign) {
34
37
  case "right":
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/richtext/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["// import { IContext2d } from '../../IContext';\nimport type { IContext2d, IRichTextIcon } from '../../interface';\nimport { RichTextIcon } from './icon';\nimport Paragraph from './paragraph';\nimport { DIRECTION_KEY, measureTextCanvas, regFirstSpace } from './utils';\n\n/**\n * 部分代码参考 https://github.com/danielearwicker/carota/\n * The MIT License (MIT)\n\n \"Carota\" - Copyright (c) 2013 Daniel Earwicker\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// 行\n// 参考carota\n// https://github.com/danielearwicker/carota/blob/master/src/line.js\nexport default class Line {\n left: number;\n top: number;\n width: number;\n height: number;\n baseline: number;\n ascent: number;\n descent: number;\n paragraphs: (Paragraph | RichTextIcon)[];\n actualWidth: number;\n blankWidth: number;\n textAlign: string;\n direction: 'horizontal' | 'vertical';\n directionKey: { width: string; height: string; left: string; x: string; y: string };\n\n constructor(\n left: number,\n width: number,\n baseline: number,\n ascent: number,\n descent: number,\n lineBuffer: (Paragraph | RichTextIcon)[],\n direction: 'horizontal' | 'vertical',\n isWidthMax: boolean\n ) {\n this.left = left;\n this.width = width;\n this.baseline = baseline;\n this.ascent = ascent;\n this.descent = descent;\n // this.height = ascent + descent;\n this.top = baseline - ascent;\n this.paragraphs = lineBuffer.map(p => p);\n this.textAlign =\n (this.paragraphs[0] instanceof RichTextIcon\n ? this.paragraphs[0].attribute.textAlign\n : this.paragraphs[0].character.textAlign) || 'left'; // 对齐方式选择第一个paragraph属性\n this.direction = direction;\n this.directionKey = DIRECTION_KEY[this.direction];\n const directionKey = this.directionKey;\n\n this.actualWidth = 0;\n let maxHeight = 0;\n this.paragraphs.forEach((word, index) => {\n // 每行中第一个字符不能是空格\n if (index === 0 && word instanceof Paragraph) {\n const result = regFirstSpace.exec(word.text);\n if (result?.index !== 0) {\n word.text = word.text.slice(result?.index);\n word.updateWidth();\n }\n }\n this.actualWidth += word[this.directionKey.width];\n maxHeight = Math.max(word[this.directionKey.height], maxHeight);\n });\n this.height = maxHeight;\n\n this.blankWidth = !isWidthMax ? this.width - this.actualWidth : 0;\n // 处理对齐方式,计算左侧偏移距离和字符之间间距\n let x = this.left;\n let spacing = 0;\n if (this.actualWidth < width && !isWidthMax) {\n switch (this.textAlign) {\n case 'right':\n x = width - this.actualWidth;\n break;\n case 'center':\n x = (width - this.actualWidth) / 2;\n break;\n case 'justify':\n if (this.paragraphs.length < 2) {\n // 只有一个paragraph两端对齐居中显示\n x = (width - this.actualWidth) / 2;\n } else {\n spacing = (width - this.actualWidth) / (this.paragraphs.length - 1);\n }\n break;\n }\n }\n\n this.paragraphs.map(function (paragraph) {\n if (paragraph instanceof RichTextIcon) {\n // paragraph.setAttribute(directionKey.x, x);\n paragraph['_' + directionKey.x] = x;\n x += paragraph[directionKey.width] + spacing;\n // 处理纵向对齐\n paragraph['_' + directionKey.y] =\n paragraph.attribute.textBaseline === 'top'\n ? 0\n : paragraph.attribute.textBaseline === 'bottom'\n ? maxHeight - paragraph.height\n : (maxHeight - paragraph.height) / 2;\n } else {\n paragraph[directionKey.left] = x;\n x += paragraph[directionKey.width] + spacing;\n }\n });\n }\n\n draw(\n ctx: IContext2d,\n lastLine: boolean,\n x: number,\n y: number,\n drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void\n ) {\n if (lastLine) {\n // 处理省略号\n let otherParagraphWidth = 0;\n for (let i = this.paragraphs.length - 1; i >= 0; i--) {\n const paragraph = this.paragraphs[i];\n if (paragraph instanceof RichTextIcon) {\n break; // todo: 处理最后为图标,显示省略号的情况\n }\n if (this.direction === 'vertical' && paragraph.direction !== 'vertical') {\n paragraph.verticalEllipsis = true;\n break;\n }\n // const { width } = measureText('...', paragraph.style);\n const { width } = measureTextCanvas('...', paragraph.character);\n const ellipsisWidth = width || 0;\n if (ellipsisWidth <= this.blankWidth + otherParagraphWidth) {\n // 省略号可以直接接在后面paragraph\n paragraph.ellipsis = 'add';\n\n break;\n } else if (ellipsisWidth <= this.blankWidth + otherParagraphWidth + paragraph.width) {\n // 省略号需要替换paragraph中的字符\n paragraph.ellipsis = 'replace';\n paragraph.ellipsisWidth = ellipsisWidth;\n paragraph.ellipsisOtherParagraphWidth = this.blankWidth + otherParagraphWidth;\n\n break;\n } else {\n // 省略号需要的width大于paragraph的width,隐藏paragraph,向前搜索\n paragraph.ellipsis = 'hide';\n otherParagraphWidth += paragraph.width;\n }\n }\n }\n\n // 正常绘制\n this.paragraphs.map((paragraph, index) => {\n if (paragraph instanceof RichTextIcon) {\n // 更新icon位置\n paragraph.setAttributes({\n x: x + paragraph._x,\n y: y + paragraph._y\n });\n\n // 绘制icon\n drawIcon(paragraph, ctx, x + paragraph._x, y + paragraph._y, this.ascent);\n return;\n }\n paragraph.draw(ctx, y + this.ascent, x, index === 0, this.textAlign);\n });\n }\n\n getWidthWithEllips() {\n // 处理省略号\n let otherParagraphWidth = 0;\n for (let i = this.paragraphs.length - 1; i >= 0; i--) {\n const paragraph = this.paragraphs[i];\n if (paragraph instanceof RichTextIcon) {\n break; // todo: 处理最后为图标,显示省略号的情况\n }\n\n const { width } = measureTextCanvas('...', paragraph.character);\n const ellipsisWidth = width || 0;\n if (ellipsisWidth <= this.blankWidth + otherParagraphWidth) {\n // 省略号可以直接接在后面paragraph\n paragraph.ellipsis = 'add';\n paragraph.ellipsisWidth = ellipsisWidth;\n break;\n } else if (ellipsisWidth <= this.blankWidth + otherParagraphWidth + paragraph.width) {\n // 省略号需要替换paragraph中的字符\n paragraph.ellipsis = 'replace';\n paragraph.ellipsisWidth = ellipsisWidth;\n paragraph.ellipsisOtherParagraphWidth = this.blankWidth + otherParagraphWidth;\n\n break;\n } else {\n // 省略号需要的width大于paragraph的width,隐藏paragraph,向前搜索\n paragraph.ellipsis = 'hide';\n otherParagraphWidth += paragraph.width;\n }\n }\n\n let width = 0;\n // 正常绘制\n this.paragraphs.map((paragraph, index) => {\n if (paragraph instanceof RichTextIcon) {\n width += paragraph.width; // todo: 处理direction\n } else {\n width += paragraph.getWidthWithEllips(this.direction);\n }\n });\n\n return width;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/richtext/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["// import { IContext2d } from '../../IContext';\nimport type { IContext2d, IRichTextIcon } from '../../interface';\nimport { RichTextIcon } from './icon';\nimport Paragraph from './paragraph';\nimport { DIRECTION_KEY, measureTextCanvas, regFirstSpace } from './utils';\n\n/**\n * 部分代码参考 https://github.com/danielearwicker/carota/\n * The MIT License (MIT)\n\n \"Carota\" - Copyright (c) 2013 Daniel Earwicker\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// 行\n// 参考carota\n// https://github.com/danielearwicker/carota/blob/master/src/line.js\nexport default class Line {\n left: number;\n top: number;\n width: number;\n height: number;\n baseline: number;\n ascent: number;\n descent: number;\n paragraphs: (Paragraph | RichTextIcon)[];\n actualWidth: number;\n blankWidth: number;\n textAlign: string;\n direction: 'horizontal' | 'vertical';\n directionKey: { width: string; height: string; left: string; x: string; y: string };\n\n constructor(\n left: number,\n width: number,\n baseline: number,\n ascent: number,\n descent: number,\n lineBuffer: (Paragraph | RichTextIcon)[],\n direction: 'horizontal' | 'vertical',\n isWidthMax: boolean\n ) {\n this.left = left;\n this.width = width;\n this.baseline = baseline;\n this.ascent = ascent;\n this.descent = descent;\n // this.height = ascent + descent;\n this.top = baseline - ascent;\n this.paragraphs = lineBuffer.map(p => p);\n this.textAlign =\n (this.paragraphs[0] instanceof RichTextIcon\n ? this.paragraphs[0].attribute.textAlign\n : this.paragraphs[0].character.textAlign) || 'left'; // 对齐方式选择第一个paragraph属性\n this.direction = direction;\n this.directionKey = DIRECTION_KEY[this.direction];\n\n this.actualWidth = 0;\n let maxHeight = 0;\n this.paragraphs.forEach((word, index) => {\n // 每行中第一个字符不能是空格\n if (index === 0 && word instanceof Paragraph) {\n const result = regFirstSpace.exec(word.text);\n if (result?.index !== 0) {\n word.text = word.text.slice(result?.index);\n word.updateWidth();\n }\n }\n this.actualWidth += word[this.directionKey.width];\n maxHeight = Math.max(word[this.directionKey.height], maxHeight);\n });\n this.height = maxHeight;\n\n this.blankWidth = !isWidthMax ? this.width - this.actualWidth : 0;\n\n this.calcOffset(width, isWidthMax);\n }\n\n calcOffset(width: number, isWidthMax: boolean) {\n // 处理对齐方式,计算左侧偏移距离和字符之间间距\n const directionKey = this.directionKey;\n const maxHeight = this.height;\n let x = this.left;\n let spacing = 0;\n if (this.actualWidth < width && !isWidthMax) {\n switch (this.textAlign) {\n case 'right':\n x = width - this.actualWidth;\n break;\n case 'center':\n x = (width - this.actualWidth) / 2;\n break;\n case 'justify':\n if (this.paragraphs.length < 2) {\n // 只有一个paragraph两端对齐居中显示\n x = (width - this.actualWidth) / 2;\n } else {\n spacing = (width - this.actualWidth) / (this.paragraphs.length - 1);\n }\n break;\n }\n }\n\n this.paragraphs.map(function (paragraph) {\n if (paragraph instanceof RichTextIcon) {\n // paragraph.setAttribute(directionKey.x, x);\n paragraph['_' + directionKey.x] = x;\n x += paragraph[directionKey.width] + spacing;\n // 处理纵向对齐\n paragraph['_' + directionKey.y] =\n paragraph.attribute.textBaseline === 'top'\n ? 0\n : paragraph.attribute.textBaseline === 'bottom'\n ? maxHeight - paragraph.height\n : (maxHeight - paragraph.height) / 2;\n } else {\n paragraph[directionKey.left] = x;\n x += paragraph[directionKey.width] + spacing;\n }\n });\n }\n\n draw(\n ctx: IContext2d,\n lastLine: boolean,\n x: number,\n y: number,\n drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void\n ) {\n if (lastLine) {\n // 处理省略号\n let otherParagraphWidth = 0;\n for (let i = this.paragraphs.length - 1; i >= 0; i--) {\n const paragraph = this.paragraphs[i];\n if (paragraph instanceof RichTextIcon) {\n break; // todo: 处理最后为图标,显示省略号的情况\n }\n if (this.direction === 'vertical' && paragraph.direction !== 'vertical') {\n paragraph.verticalEllipsis = true;\n break;\n }\n // const { width } = measureText('...', paragraph.style);\n const { width } = measureTextCanvas('...', paragraph.character);\n const ellipsisWidth = width || 0;\n if (ellipsisWidth <= this.blankWidth + otherParagraphWidth) {\n // 省略号可以直接接在后面paragraph\n paragraph.ellipsis = 'add';\n\n break;\n } else if (ellipsisWidth <= this.blankWidth + otherParagraphWidth + paragraph.width) {\n // 省略号需要替换paragraph中的字符\n paragraph.ellipsis = 'replace';\n paragraph.ellipsisWidth = ellipsisWidth;\n paragraph.ellipsisOtherParagraphWidth = this.blankWidth + otherParagraphWidth;\n\n break;\n } else {\n // 省略号需要的width大于paragraph的width,隐藏paragraph,向前搜索\n paragraph.ellipsis = 'hide';\n otherParagraphWidth += paragraph.width;\n }\n }\n }\n\n // 正常绘制\n this.paragraphs.map((paragraph, index) => {\n if (paragraph instanceof RichTextIcon) {\n // 更新icon位置\n paragraph.setAttributes({\n x: x + paragraph._x,\n y: y + paragraph._y\n });\n\n // 绘制icon\n drawIcon(paragraph, ctx, x + paragraph._x, y + paragraph._y, this.ascent);\n return;\n }\n paragraph.draw(ctx, y + this.ascent, x, index === 0, this.textAlign);\n });\n }\n\n getWidthWithEllips() {\n // 处理省略号\n let otherParagraphWidth = 0;\n for (let i = this.paragraphs.length - 1; i >= 0; i--) {\n const paragraph = this.paragraphs[i];\n if (paragraph instanceof RichTextIcon) {\n break; // todo: 处理最后为图标,显示省略号的情况\n }\n\n const { width } = measureTextCanvas('...', paragraph.character);\n const ellipsisWidth = width || 0;\n if (ellipsisWidth <= this.blankWidth + otherParagraphWidth) {\n // 省略号可以直接接在后面paragraph\n paragraph.ellipsis = 'add';\n paragraph.ellipsisWidth = ellipsisWidth;\n break;\n } else if (ellipsisWidth <= this.blankWidth + otherParagraphWidth + paragraph.width) {\n // 省略号需要替换paragraph中的字符\n paragraph.ellipsis = 'replace';\n paragraph.ellipsisWidth = ellipsisWidth;\n paragraph.ellipsisOtherParagraphWidth = this.blankWidth + otherParagraphWidth;\n\n break;\n } else {\n // 省略号需要的width大于paragraph的width,隐藏paragraph,向前搜索\n paragraph.ellipsis = 'hide';\n otherParagraphWidth += paragraph.width;\n }\n }\n\n let width = 0;\n // 正常绘制\n this.paragraphs.map((paragraph, index) => {\n if (paragraph instanceof RichTextIcon) {\n width += paragraph.width; // todo: 处理direction\n } else {\n width += paragraph.getWidthWithEllips(this.direction);\n }\n });\n\n return width;\n }\n}\n"]}
@@ -4,14 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.seperateParagraph = void 0;
6
6
 
7
- const utils_1 = require("./utils");
7
+ const utils_1 = require("../../common/utils"), utils_2 = require("./utils");
8
8
 
9
9
  class Paragraph {
10
10
  constructor(text, newLine, character) {
11
- this.fontSize = character.fontSize || 16, this.textBaseline = character.textBaseline || "alphabetic",
12
- "number" == typeof character.lineHeight ? this.lineHeight = character.lineHeight > this.fontSize ? character.lineHeight : this.fontSize : this.lineHeight = Math.floor(1.2 * this.fontSize),
11
+ this.fontSize = character.fontSize || 16, this.textBaseline = character.textBaseline || "alphabetic";
12
+ const lineHeight = (0, utils_1.calculateLineHeight)(character.lineHeight, this.fontSize);
13
+ this.lineHeight = "number" == typeof lineHeight ? lineHeight > this.fontSize ? lineHeight : this.fontSize : Math.floor(1.2 * this.fontSize),
13
14
  this.height = this.lineHeight;
14
- const {ascent: ascent, height: height, descent: descent, width: width} = (0, utils_1.measureTextCanvas)(text, character);
15
+ const {ascent: ascent, height: height, descent: descent, width: width} = (0, utils_2.measureTextCanvas)(text, character);
15
16
  let halfDetaHeight = 0, deltaAscent = 0, deltaDescent = 0;
16
17
  this.height > height && (halfDetaHeight = (this.height - height) / 2, deltaAscent = Math.ceil(halfDetaHeight),
17
18
  deltaDescent = Math.floor(halfDetaHeight)), "top" === this.textBaseline ? (this.ascent = halfDetaHeight,
@@ -25,7 +26,7 @@ class Paragraph {
25
26
  this.height = this.widthOrigin, this.lineHeight = this.height);
26
27
  }
27
28
  updateWidth() {
28
- const {width: width} = (0, utils_1.measureTextCanvas)(this.text, this.character);
29
+ const {width: width} = (0, utils_2.measureTextCanvas)(this.text, this.character);
29
30
  this.width = width, "vertical" === this.direction && (this.widthOrigin = this.width,
30
31
  this.width = this.heightOrigin, this.height = this.widthOrigin);
31
32
  }
@@ -36,9 +37,9 @@ class Paragraph {
36
37
  if (this.verticalEllipsis) text = "...", direction = "vertical", baseline -= this.ellipsisWidth / 2; else {
37
38
  if ("hide" === this.ellipsis) return;
38
39
  if ("add" === this.ellipsis) text += "...", "right" === textAlign && (left -= this.ellipsisWidth); else if ("replace" === this.ellipsis) {
39
- const index = (0, utils_1.getStrByWithCanvas)(text, ("vertical" === direction ? this.height : this.width) - this.ellipsisWidth + this.ellipsisOtherParagraphWidth, this.character, text.length - 1);
40
+ const index = (0, utils_2.getStrByWithCanvas)(text, ("vertical" === direction ? this.height : this.width) - this.ellipsisWidth + this.ellipsisOtherParagraphWidth, this.character, text.length - 1);
40
41
  if (text = text.slice(0, index), text += "...", "right" === textAlign) {
41
- const {width: width} = (0, utils_1.measureTextCanvas)(this.text.slice(index), this.character);
42
+ const {width: width} = (0, utils_2.measureTextCanvas)(this.text.slice(index), this.character);
42
43
  "vertical" === direction || (left -= this.ellipsisWidth - width);
43
44
  }
44
45
  }
@@ -53,8 +54,8 @@ class Paragraph {
53
54
  }
54
55
  "vertical" === direction && (ctx.save(), ctx.rotateAbout(Math.PI / 2, left, baseline),
55
56
  ctx.translate(-this.heightOrigin || -this.lineHeight / 2, -this.descent / 2), ctx.translate(left, baseline),
56
- left = 0, baseline = 0), this.character.stroke && ((0, utils_1.applyStrokeStyle)(ctx, this.character),
57
- ctx.strokeText(text, left, baseline)), (0, utils_1.applyFillStyle)(ctx, this.character),
57
+ left = 0, baseline = 0), this.character.stroke && ((0, utils_2.applyStrokeStyle)(ctx, this.character),
58
+ ctx.strokeText(text, left, baseline)), (0, utils_2.applyFillStyle)(ctx, this.character),
58
59
  this.character.fill && ctx.fillText(text, left, baseline), this.character.fill && ("boolean" == typeof this.character.lineThrough || "boolean" == typeof this.character.underline ? (this.character.underline && ctx.fillRect(left, 1 + baseline, this.widthOrigin || this.width, this.character.fontSize ? Math.max(1, Math.floor(this.character.fontSize / 10)) : 1),
59
60
  this.character.lineThrough && ctx.fillRect(left, 1 + baseline - this.ascent / 2, this.widthOrigin || this.width, this.character.fontSize ? Math.max(1, Math.floor(this.character.fontSize / 10)) : 1)) : "underline" === this.character.textDecoration ? ctx.fillRect(left, 1 + baseline, this.widthOrigin || this.width, this.character.fontSize ? Math.max(1, Math.floor(this.character.fontSize / 10)) : 1) : "line-through" === this.character.textDecoration && ctx.fillRect(left, 1 + baseline - this.ascent / 2, this.widthOrigin || this.width, this.character.fontSize ? Math.max(1, Math.floor(this.character.fontSize / 10)) : 1)),
60
61
  "vertical" === direction && ctx.restore();
@@ -65,9 +66,9 @@ class Paragraph {
65
66
  if ("hide" === this.ellipsis) return width;
66
67
  if ("add" === this.ellipsis) return width + this.ellipsisWidth;
67
68
  if ("replace" === this.ellipsis) {
68
- const index = (0, utils_1.getStrByWithCanvas)(text, width - this.ellipsisWidth + this.ellipsisOtherParagraphWidth, this.character, text.length - 1);
69
+ const index = (0, utils_2.getStrByWithCanvas)(text, width - this.ellipsisWidth + this.ellipsisOtherParagraphWidth, this.character, text.length - 1);
69
70
  text = text.slice(0, index), text += "...";
70
- const {width: measureWidth} = (0, utils_1.measureTextCanvas)(this.text.slice(index), this.character);
71
+ const {width: measureWidth} = (0, utils_2.measureTextCanvas)(this.text.slice(index), this.character);
71
72
  return width + this.ellipsisWidth - measureWidth;
72
73
  }
73
74
  return width;