@visactor/vrender-core 0.19.4-alpha.4 → 0.19.4

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 (776) hide show
  1. package/cjs/allocator/allocator-modules.js +0 -2
  2. package/cjs/allocator/bounds-allocate.js +1 -1
  3. package/cjs/allocator/bounds-allocate.js.map +1 -1
  4. package/cjs/allocator/canvas-allocate.js +11 -9
  5. package/cjs/allocator/canvas-allocate.js.map +1 -1
  6. package/cjs/allocator/graphic-allocate.js +5 -9
  7. package/cjs/allocator/graphic-allocate.js.map +1 -1
  8. package/cjs/allocator/matrix-allocate.js +2 -6
  9. package/cjs/allocator/matrix-allocate.js.map +1 -1
  10. package/cjs/animate/Ticker/default-ticker.js +25 -14
  11. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  12. package/cjs/animate/animate.js +8 -7
  13. package/cjs/animate/animate.js.map +1 -1
  14. package/cjs/animate/config.js +1 -2
  15. package/cjs/animate/custom-animate.js +54 -51
  16. package/cjs/animate/custom-animate.js.map +1 -1
  17. package/cjs/animate/easing.js +19 -8
  18. package/cjs/animate/easing.js.map +1 -1
  19. package/cjs/animate/morphing.js +20 -23
  20. package/cjs/animate/morphing.js.map +1 -1
  21. package/cjs/application.js +7 -1
  22. package/cjs/application.js.map +1 -1
  23. package/cjs/canvas/conical-gradient.js +12 -5
  24. package/cjs/canvas/conical-gradient.js.map +1 -1
  25. package/cjs/canvas/contributions/base-canvas.js +19 -7
  26. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  27. package/cjs/color-string/interpolate.js +5 -3
  28. package/cjs/color-string/interpolate.js.map +1 -1
  29. package/cjs/color-string/store.js +3 -1
  30. package/cjs/color-string/store.js.map +1 -1
  31. package/cjs/common/bounds-context.js +1 -0
  32. package/cjs/common/bounds-context.js.map +1 -1
  33. package/cjs/common/canvas-utils.js +3 -6
  34. package/cjs/common/canvas-utils.js.map +1 -1
  35. package/cjs/common/contribution-provider.js +3 -0
  36. package/cjs/common/contribution-provider.js.map +1 -1
  37. package/cjs/common/custom-path2d.js +7 -1
  38. package/cjs/common/custom-path2d.js.map +1 -1
  39. package/cjs/common/generator.js +2 -1
  40. package/cjs/common/generator.js.map +1 -1
  41. package/cjs/common/inversify/binding.js +12 -0
  42. package/cjs/common/inversify/binding.js.map +1 -1
  43. package/cjs/common/inversify/container.js +4 -0
  44. package/cjs/common/inversify/container.js.map +1 -1
  45. package/cjs/common/inversify/cotainer-module.js +2 -0
  46. package/cjs/common/inversify/cotainer-module.js.map +1 -1
  47. package/cjs/common/inversify/meta-data.js +2 -0
  48. package/cjs/common/inversify/meta-data.js.map +1 -1
  49. package/cjs/common/inversify/syntax/binding_in_syntax.js +1 -0
  50. package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  51. package/cjs/common/inversify/syntax/binding_to_syntax.js +1 -0
  52. package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  53. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  54. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  55. package/cjs/common/inversify-lite/bindings/binding.js +14 -0
  56. package/cjs/common/inversify-lite/bindings/binding.js.map +1 -1
  57. package/cjs/common/inversify-lite/container/container.js +22 -46
  58. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  59. package/cjs/common/inversify-lite/container/container_module.js +4 -0
  60. package/cjs/common/inversify-lite/container/container_module.js.map +1 -1
  61. package/cjs/common/inversify-lite/container/lookup.js +1 -0
  62. package/cjs/common/inversify-lite/container/lookup.js.map +1 -1
  63. package/cjs/common/inversify-lite/planning/context.js +4 -0
  64. package/cjs/common/inversify-lite/planning/context.js.map +1 -1
  65. package/cjs/common/inversify-lite/planning/metadata.js +2 -0
  66. package/cjs/common/inversify-lite/planning/metadata.js.map +1 -1
  67. package/cjs/common/inversify-lite/planning/plan.js +2 -0
  68. package/cjs/common/inversify-lite/planning/plan.js.map +1 -1
  69. package/cjs/common/inversify-lite/planning/queryable_string.js +1 -0
  70. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  71. package/cjs/common/inversify-lite/planning/request.js +8 -0
  72. package/cjs/common/inversify-lite/planning/request.js.map +1 -1
  73. package/cjs/common/inversify-lite/planning/target.js +7 -0
  74. package/cjs/common/inversify-lite/planning/target.js.map +1 -1
  75. package/cjs/common/inversify-lite/resolution/instantiation.js +16 -42
  76. package/cjs/common/inversify-lite/resolution/instantiation.js.map +1 -1
  77. package/cjs/common/inversify-lite/scope/scope.js +3 -29
  78. package/cjs/common/inversify-lite/scope/scope.js.map +1 -1
  79. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  80. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  81. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  82. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  83. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  84. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  85. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  86. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  87. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  88. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  89. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  90. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  91. package/cjs/common/polygon.js +1 -2
  92. package/cjs/common/polygon.js.map +1 -1
  93. package/cjs/common/render-area.js +2 -3
  94. package/cjs/common/render-area.js.map +1 -1
  95. package/cjs/common/render-curve.js +4 -8
  96. package/cjs/common/render-curve.js.map +1 -1
  97. package/cjs/common/seg-context.js +12 -3
  98. package/cjs/common/seg-context.js.map +1 -1
  99. package/cjs/common/segment/basis.js +13 -0
  100. package/cjs/common/segment/basis.js.map +1 -1
  101. package/cjs/common/segment/common.js +2 -2
  102. package/cjs/common/segment/common.js.map +1 -1
  103. package/cjs/common/segment/curve/arc.js +2 -2
  104. package/cjs/common/segment/curve/arc.js.map +1 -1
  105. package/cjs/common/segment/curve/base.js +4 -0
  106. package/cjs/common/segment/curve/base.js.map +1 -1
  107. package/cjs/common/segment/curve/cubic-bezier.js +2 -2
  108. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  109. package/cjs/common/segment/curve/curve-context.js +4 -0
  110. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  111. package/cjs/common/segment/curve/ellipse.js +3 -3
  112. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  113. package/cjs/common/segment/curve/line.js +2 -1
  114. package/cjs/common/segment/curve/line.js.map +1 -1
  115. package/cjs/common/segment/curve/move.js +2 -1
  116. package/cjs/common/segment/curve/move.js.map +1 -1
  117. package/cjs/common/segment/curve/path.js +2 -0
  118. package/cjs/common/segment/curve/path.js.map +1 -1
  119. package/cjs/common/segment/curve/quadratic-bezier.js +2 -2
  120. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  121. package/cjs/common/segment/linear-closed.js.map +1 -1
  122. package/cjs/common/segment/linear.js +10 -0
  123. package/cjs/common/segment/linear.js.map +1 -1
  124. package/cjs/common/segment/monotone.js +13 -0
  125. package/cjs/common/segment/monotone.js.map +1 -1
  126. package/cjs/common/segment/step.js +13 -2
  127. package/cjs/common/segment/step.js.map +1 -1
  128. package/cjs/common/sort.js +3 -34
  129. package/cjs/common/sort.js.map +1 -1
  130. package/cjs/common/split-path.js +4 -11
  131. package/cjs/common/split-path.js.map +1 -1
  132. package/cjs/common/utils.d.ts +1 -1
  133. package/cjs/common/utils.js +10 -6
  134. package/cjs/common/utils.js.map +1 -1
  135. package/cjs/common/xml/parser.js +3 -2
  136. package/cjs/common/xml/parser.js.map +1 -1
  137. package/cjs/core/camera.js +11 -4
  138. package/cjs/core/camera.js.map +1 -1
  139. package/cjs/core/contributions/env/base-contribution.js +6 -0
  140. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  141. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  142. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  143. package/cjs/core/contributions/layerHandler/empty-contribution.js +8 -8
  144. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  145. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  146. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  147. package/cjs/core/contributions/textMeasure/AtextMeasure.js +11 -8
  148. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  149. package/cjs/core/contributions/textMeasure/layout.js +3 -0
  150. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  151. package/cjs/core/contributions/window/base-contribution.js +2 -0
  152. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  153. package/cjs/core/global.js +8 -0
  154. package/cjs/core/global.js.map +1 -1
  155. package/cjs/core/graphic-utils.js +16 -5
  156. package/cjs/core/graphic-utils.js.map +1 -1
  157. package/cjs/core/layer-service.js +7 -7
  158. package/cjs/core/layer-service.js.map +1 -1
  159. package/cjs/core/layer.js +7 -9
  160. package/cjs/core/layer.js.map +1 -1
  161. package/cjs/core/stage.js +79 -35
  162. package/cjs/core/stage.js.map +1 -1
  163. package/cjs/core/window.js +16 -13
  164. package/cjs/core/window.js.map +1 -1
  165. package/cjs/event/event-manager.js +152 -143
  166. package/cjs/event/event-manager.js.map +1 -1
  167. package/cjs/event/event-system.js +60 -43
  168. package/cjs/event/event-system.js.map +1 -1
  169. package/cjs/event/event-target.js +1 -3
  170. package/cjs/event/event-target.js.map +1 -1
  171. package/cjs/event/federated-event/base-event.js +43 -15
  172. package/cjs/event/federated-event/base-event.js.map +1 -1
  173. package/cjs/event/federated-event/mouse-event.js +27 -18
  174. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  175. package/cjs/event/federated-event/pointer-event.js +13 -8
  176. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  177. package/cjs/event/federated-event/wheel-event.js +14 -10
  178. package/cjs/event/federated-event/wheel-event.js.map +1 -1
  179. package/cjs/graphic/arc.js +10 -5
  180. package/cjs/graphic/arc.js.map +1 -1
  181. package/cjs/graphic/arc3d.js +7 -4
  182. package/cjs/graphic/arc3d.js.map +1 -1
  183. package/cjs/graphic/area.js +14 -9
  184. package/cjs/graphic/area.js.map +1 -1
  185. package/cjs/graphic/builtin-symbol/arrow.js +2 -3
  186. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  187. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -3
  188. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  189. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -3
  190. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  191. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -3
  192. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  193. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -3
  194. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  195. package/cjs/graphic/builtin-symbol/circle.js +2 -3
  196. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  197. package/cjs/graphic/builtin-symbol/close.js +2 -3
  198. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  199. package/cjs/graphic/builtin-symbol/cross.js +2 -3
  200. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  201. package/cjs/graphic/builtin-symbol/diamond.js +2 -3
  202. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  203. package/cjs/graphic/builtin-symbol/line-h.js +2 -3
  204. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  205. package/cjs/graphic/builtin-symbol/line-v.js +2 -3
  206. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  207. package/cjs/graphic/builtin-symbol/rect.js +2 -3
  208. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  209. package/cjs/graphic/builtin-symbol/square.js +2 -3
  210. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  211. package/cjs/graphic/builtin-symbol/star.js +2 -3
  212. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  213. package/cjs/graphic/builtin-symbol/stroke.js +2 -3
  214. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  215. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -3
  216. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  217. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -3
  218. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  219. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -3
  220. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  221. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -3
  222. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  223. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -3
  224. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  225. package/cjs/graphic/builtin-symbol/triangle.js +1 -3
  226. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  227. package/cjs/graphic/builtin-symbol/utils.js +6 -1
  228. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  229. package/cjs/graphic/builtin-symbol/wedge.js +2 -3
  230. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  231. package/cjs/graphic/builtin-symbol/wye.js +2 -3
  232. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  233. package/cjs/graphic/circle.js +8 -6
  234. package/cjs/graphic/circle.js.map +1 -1
  235. package/cjs/graphic/config.js +59 -32
  236. package/cjs/graphic/config.js.map +1 -1
  237. package/cjs/graphic/glyph.js +10 -9
  238. package/cjs/graphic/glyph.js.map +1 -1
  239. package/cjs/graphic/graphic-service/graphic-service.js +12 -8
  240. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  241. package/cjs/graphic/graphic.d.ts +1 -0
  242. package/cjs/graphic/graphic.js +32 -42
  243. package/cjs/graphic/graphic.js.map +1 -1
  244. package/cjs/graphic/group.js +9 -5
  245. package/cjs/graphic/group.js.map +1 -1
  246. package/cjs/graphic/image.js +18 -16
  247. package/cjs/graphic/image.js.map +1 -1
  248. package/cjs/graphic/line.js +11 -6
  249. package/cjs/graphic/line.js.map +1 -1
  250. package/cjs/graphic/node-tree.js +25 -44
  251. package/cjs/graphic/node-tree.js.map +1 -1
  252. package/cjs/graphic/path.js +12 -6
  253. package/cjs/graphic/path.js.map +1 -1
  254. package/cjs/graphic/polygon.js +7 -4
  255. package/cjs/graphic/polygon.js.map +1 -1
  256. package/cjs/graphic/pyramid3d.js +4 -3
  257. package/cjs/graphic/pyramid3d.js.map +1 -1
  258. package/cjs/graphic/rect.js +7 -3
  259. package/cjs/graphic/rect.js.map +1 -1
  260. package/cjs/graphic/rect3d.js +5 -4
  261. package/cjs/graphic/rect3d.js.map +1 -1
  262. package/cjs/graphic/richtext/frame.js +19 -0
  263. package/cjs/graphic/richtext/frame.js.map +1 -1
  264. package/cjs/graphic/richtext/icon.js +14 -6
  265. package/cjs/graphic/richtext/icon.js.map +1 -1
  266. package/cjs/graphic/richtext/line.js +14 -2
  267. package/cjs/graphic/richtext/line.js.map +1 -1
  268. package/cjs/graphic/richtext/paragraph.js +22 -0
  269. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  270. package/cjs/graphic/richtext/utils.js +1 -2
  271. package/cjs/graphic/richtext/utils.js.map +1 -1
  272. package/cjs/graphic/richtext/wrapper.js +12 -0
  273. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  274. package/cjs/graphic/richtext.js +38 -45
  275. package/cjs/graphic/richtext.js.map +1 -1
  276. package/cjs/graphic/shadow-root.js +2 -1
  277. package/cjs/graphic/shadow-root.js.map +1 -1
  278. package/cjs/graphic/symbol.js +12 -5
  279. package/cjs/graphic/symbol.js.map +1 -1
  280. package/cjs/graphic/text.js +45 -45
  281. package/cjs/graphic/text.js.map +1 -1
  282. package/cjs/graphic/theme.js +4 -0
  283. package/cjs/graphic/theme.js.map +1 -1
  284. package/cjs/graphic/tools.js +16 -44
  285. package/cjs/graphic/tools.js.map +1 -1
  286. package/cjs/graphic/wrap-text.js +7 -7
  287. package/cjs/graphic/wrap-text.js.map +1 -1
  288. package/cjs/interface/global.d.ts +2 -1
  289. package/cjs/interface/global.js.map +1 -1
  290. package/cjs/interface/graphic.d.ts +1 -0
  291. package/cjs/interface/graphic.js.map +1 -1
  292. package/cjs/picker/global-picker-service.js +1 -0
  293. package/cjs/picker/global-picker-service.js.map +1 -1
  294. package/cjs/picker/pick-interceptor.js +5 -15
  295. package/cjs/picker/pick-interceptor.js.map +1 -1
  296. package/cjs/picker/picker-service.js +5 -5
  297. package/cjs/picker/picker-service.js.map +1 -1
  298. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  299. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  300. package/cjs/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  301. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  302. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  303. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  304. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  305. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  306. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +28 -19
  307. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  308. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  309. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  310. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +6 -7
  311. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  312. package/cjs/plugins/plugin-service.js +1 -0
  313. package/cjs/plugins/plugin-service.js.map +1 -1
  314. package/cjs/render/contributions/render/arc-render.js +6 -4
  315. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  316. package/cjs/render/contributions/render/arc3d-render.js +5 -7
  317. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  318. package/cjs/render/contributions/render/area-render.js +21 -23
  319. package/cjs/render/contributions/render/area-render.js.map +1 -1
  320. package/cjs/render/contributions/render/base-render.js +5 -0
  321. package/cjs/render/contributions/render/base-render.js.map +1 -1
  322. package/cjs/render/contributions/render/circle-render.js +6 -4
  323. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  324. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +3 -4
  325. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  326. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js +6 -9
  327. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  328. package/cjs/render/contributions/render/contributions/base-contribution-render.js +10 -8
  329. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  330. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +4 -4
  331. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  332. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +3 -4
  333. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  334. package/cjs/render/contributions/render/contributions/group-contribution-render.js +1 -3
  335. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  336. package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -3
  337. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  338. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -14
  339. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  340. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +3 -4
  341. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  342. package/cjs/render/contributions/render/contributions/text-contribution-render.js +6 -8
  343. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  344. package/cjs/render/contributions/render/draw-contribution.js +12 -14
  345. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  346. package/cjs/render/contributions/render/draw-interceptor.js +11 -21
  347. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  348. package/cjs/render/contributions/render/glyph-render.js +2 -3
  349. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  350. package/cjs/render/contributions/render/graphic-render.js +4 -1
  351. package/cjs/render/contributions/render/graphic-render.js.map +1 -1
  352. package/cjs/render/contributions/render/group-render.js +7 -3
  353. package/cjs/render/contributions/render/group-render.js.map +1 -1
  354. package/cjs/render/contributions/render/image-render.js +4 -2
  355. package/cjs/render/contributions/render/image-render.js.map +1 -1
  356. package/cjs/render/contributions/render/incremental-area-render.js +1 -3
  357. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  358. package/cjs/render/contributions/render/incremental-draw-contribution.js +80 -109
  359. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  360. package/cjs/render/contributions/render/incremental-line-render.js +1 -3
  361. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  362. package/cjs/render/contributions/render/line-render.js +12 -16
  363. package/cjs/render/contributions/render/line-render.js.map +1 -1
  364. package/cjs/render/contributions/render/path-render.js +8 -7
  365. package/cjs/render/contributions/render/path-render.js.map +1 -1
  366. package/cjs/render/contributions/render/polygon-render.js +6 -4
  367. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  368. package/cjs/render/contributions/render/pyramid3d-render.js +3 -5
  369. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  370. package/cjs/render/contributions/render/rect-render.js +8 -7
  371. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  372. package/cjs/render/contributions/render/rect3d-render.js +5 -7
  373. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  374. package/cjs/render/contributions/render/richtext-render.js +4 -3
  375. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  376. package/cjs/render/contributions/render/symbol-render.js +11 -14
  377. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  378. package/cjs/render/contributions/render/text-render.js +8 -8
  379. package/cjs/render/contributions/render/text-render.js.map +1 -1
  380. package/cjs/render/contributions/render/utils.js +1 -1
  381. package/cjs/render/contributions/render/utils.js.map +1 -1
  382. package/cjs/render/render-service.js +11 -2
  383. package/cjs/render/render-service.js.map +1 -1
  384. package/cjs/resource-loader/loader.js +13 -16
  385. package/cjs/resource-loader/loader.js.map +1 -1
  386. package/cjs/tapable/Hook.js +3 -0
  387. package/cjs/tapable/Hook.js.map +1 -1
  388. package/dist/index.es.js +28908 -0
  389. package/es/allocator/allocator-modules.js +0 -2
  390. package/es/allocator/bounds-allocate.js +1 -1
  391. package/es/allocator/bounds-allocate.js.map +1 -1
  392. package/es/allocator/canvas-allocate.js +11 -9
  393. package/es/allocator/canvas-allocate.js.map +1 -1
  394. package/es/allocator/graphic-allocate.js +5 -9
  395. package/es/allocator/graphic-allocate.js.map +1 -1
  396. package/es/allocator/matrix-allocate.js +2 -6
  397. package/es/allocator/matrix-allocate.js.map +1 -1
  398. package/es/animate/Ticker/default-ticker.js +25 -14
  399. package/es/animate/Ticker/default-ticker.js.map +1 -1
  400. package/es/animate/animate.js +7 -8
  401. package/es/animate/animate.js.map +1 -1
  402. package/es/animate/config.js +1 -2
  403. package/es/animate/custom-animate.js +52 -50
  404. package/es/animate/custom-animate.js.map +1 -1
  405. package/es/animate/easing.js +18 -8
  406. package/es/animate/easing.js.map +1 -1
  407. package/es/animate/morphing.js +20 -23
  408. package/es/animate/morphing.js.map +1 -1
  409. package/es/application.js +7 -1
  410. package/es/application.js.map +1 -1
  411. package/es/canvas/conical-gradient.js +12 -6
  412. package/es/canvas/conical-gradient.js.map +1 -1
  413. package/es/canvas/contributions/base-canvas.js +19 -7
  414. package/es/canvas/contributions/base-canvas.js.map +1 -1
  415. package/es/color-string/interpolate.js +5 -3
  416. package/es/color-string/interpolate.js.map +1 -1
  417. package/es/color-string/store.js +2 -2
  418. package/es/color-string/store.js.map +1 -1
  419. package/es/common/bounds-context.js +1 -0
  420. package/es/common/bounds-context.js.map +1 -1
  421. package/es/common/canvas-utils.js +3 -6
  422. package/es/common/canvas-utils.js.map +1 -1
  423. package/es/common/contribution-provider.js +3 -0
  424. package/es/common/contribution-provider.js.map +1 -1
  425. package/es/common/custom-path2d.js +7 -1
  426. package/es/common/custom-path2d.js.map +1 -1
  427. package/es/common/generator.js +1 -2
  428. package/es/common/generator.js.map +1 -1
  429. package/es/common/inversify/binding.js +12 -0
  430. package/es/common/inversify/binding.js.map +1 -1
  431. package/es/common/inversify/container.js +4 -0
  432. package/es/common/inversify/container.js.map +1 -1
  433. package/es/common/inversify/cotainer-module.js +2 -0
  434. package/es/common/inversify/cotainer-module.js.map +1 -1
  435. package/es/common/inversify/meta-data.js +2 -0
  436. package/es/common/inversify/meta-data.js.map +1 -1
  437. package/es/common/inversify/syntax/binding_in_syntax.js +1 -0
  438. package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  439. package/es/common/inversify/syntax/binding_to_syntax.js +1 -0
  440. package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  441. package/es/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  442. package/es/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  443. package/es/common/inversify-lite/bindings/binding.js +14 -0
  444. package/es/common/inversify-lite/bindings/binding.js.map +1 -1
  445. package/es/common/inversify-lite/container/container.js +22 -48
  446. package/es/common/inversify-lite/container/container.js.map +1 -1
  447. package/es/common/inversify-lite/container/container_module.js +4 -0
  448. package/es/common/inversify-lite/container/container_module.js.map +1 -1
  449. package/es/common/inversify-lite/container/lookup.js +1 -0
  450. package/es/common/inversify-lite/container/lookup.js.map +1 -1
  451. package/es/common/inversify-lite/planning/context.js +4 -0
  452. package/es/common/inversify-lite/planning/context.js.map +1 -1
  453. package/es/common/inversify-lite/planning/metadata.js +2 -0
  454. package/es/common/inversify-lite/planning/metadata.js.map +1 -1
  455. package/es/common/inversify-lite/planning/plan.js +2 -0
  456. package/es/common/inversify-lite/planning/plan.js.map +1 -1
  457. package/es/common/inversify-lite/planning/queryable_string.js +1 -0
  458. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  459. package/es/common/inversify-lite/planning/request.js +8 -0
  460. package/es/common/inversify-lite/planning/request.js.map +1 -1
  461. package/es/common/inversify-lite/planning/target.js +7 -0
  462. package/es/common/inversify-lite/planning/target.js.map +1 -1
  463. package/es/common/inversify-lite/resolution/instantiation.js +16 -44
  464. package/es/common/inversify-lite/resolution/instantiation.js.map +1 -1
  465. package/es/common/inversify-lite/scope/scope.js +3 -29
  466. package/es/common/inversify-lite/scope/scope.js.map +1 -1
  467. package/es/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  468. package/es/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  469. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  470. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  471. package/es/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  472. package/es/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  473. package/es/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  474. package/es/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  475. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  476. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  477. package/es/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  478. package/es/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  479. package/es/common/polygon.js +1 -2
  480. package/es/common/polygon.js.map +1 -1
  481. package/es/common/render-area.js +2 -3
  482. package/es/common/render-area.js.map +1 -1
  483. package/es/common/render-curve.js +4 -8
  484. package/es/common/render-curve.js.map +1 -1
  485. package/es/common/seg-context.js +12 -3
  486. package/es/common/seg-context.js.map +1 -1
  487. package/es/common/segment/basis.js +13 -0
  488. package/es/common/segment/basis.js.map +1 -1
  489. package/es/common/segment/common.js +1 -1
  490. package/es/common/segment/common.js.map +1 -1
  491. package/es/common/segment/curve/arc.js +2 -1
  492. package/es/common/segment/curve/arc.js.map +1 -1
  493. package/es/common/segment/curve/base.js +4 -0
  494. package/es/common/segment/curve/base.js.map +1 -1
  495. package/es/common/segment/curve/cubic-bezier.js +2 -2
  496. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  497. package/es/common/segment/curve/curve-context.js +4 -0
  498. package/es/common/segment/curve/curve-context.js.map +1 -1
  499. package/es/common/segment/curve/ellipse.js +3 -3
  500. package/es/common/segment/curve/ellipse.js.map +1 -1
  501. package/es/common/segment/curve/line.js +2 -1
  502. package/es/common/segment/curve/line.js.map +1 -1
  503. package/es/common/segment/curve/move.js +2 -1
  504. package/es/common/segment/curve/move.js.map +1 -1
  505. package/es/common/segment/curve/path.js +2 -0
  506. package/es/common/segment/curve/path.js.map +1 -1
  507. package/es/common/segment/curve/quadratic-bezier.js +2 -2
  508. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  509. package/es/common/segment/linear-closed.js.map +1 -1
  510. package/es/common/segment/linear.js +10 -0
  511. package/es/common/segment/linear.js.map +1 -1
  512. package/es/common/segment/monotone.js +13 -0
  513. package/es/common/segment/monotone.js.map +1 -1
  514. package/es/common/segment/step.js +12 -1
  515. package/es/common/segment/step.js.map +1 -1
  516. package/es/common/sort.js +3 -34
  517. package/es/common/sort.js.map +1 -1
  518. package/es/common/split-path.js +4 -11
  519. package/es/common/split-path.js.map +1 -1
  520. package/es/common/utils.d.ts +1 -1
  521. package/es/common/utils.js +9 -7
  522. package/es/common/utils.js.map +1 -1
  523. package/es/common/xml/parser.js +2 -2
  524. package/es/common/xml/parser.js.map +1 -1
  525. package/es/core/camera.js +11 -4
  526. package/es/core/camera.js.map +1 -1
  527. package/es/core/contributions/env/base-contribution.js +6 -0
  528. package/es/core/contributions/env/base-contribution.js.map +1 -1
  529. package/es/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  530. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  531. package/es/core/contributions/layerHandler/empty-contribution.js +8 -8
  532. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  533. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  534. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  535. package/es/core/contributions/textMeasure/AtextMeasure.js +11 -8
  536. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  537. package/es/core/contributions/textMeasure/layout.js +3 -0
  538. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  539. package/es/core/contributions/window/base-contribution.js +2 -0
  540. package/es/core/contributions/window/base-contribution.js.map +1 -1
  541. package/es/core/global.js +8 -0
  542. package/es/core/global.js.map +1 -1
  543. package/es/core/graphic-utils.js +16 -5
  544. package/es/core/graphic-utils.js.map +1 -1
  545. package/es/core/layer-service.js +7 -7
  546. package/es/core/layer-service.js.map +1 -1
  547. package/es/core/layer.js +7 -9
  548. package/es/core/layer.js.map +1 -1
  549. package/es/core/stage.js +79 -35
  550. package/es/core/stage.js.map +1 -1
  551. package/es/core/window.js +16 -14
  552. package/es/core/window.js.map +1 -1
  553. package/es/event/event-manager.js +152 -143
  554. package/es/event/event-manager.js.map +1 -1
  555. package/es/event/event-system.js +60 -43
  556. package/es/event/event-system.js.map +1 -1
  557. package/es/event/event-target.js +1 -3
  558. package/es/event/event-target.js.map +1 -1
  559. package/es/event/federated-event/base-event.js +43 -15
  560. package/es/event/federated-event/base-event.js.map +1 -1
  561. package/es/event/federated-event/mouse-event.js +27 -18
  562. package/es/event/federated-event/mouse-event.js.map +1 -1
  563. package/es/event/federated-event/pointer-event.js +13 -8
  564. package/es/event/federated-event/pointer-event.js.map +1 -1
  565. package/es/event/federated-event/wheel-event.js +13 -11
  566. package/es/event/federated-event/wheel-event.js.map +1 -1
  567. package/es/graphic/arc.js +9 -6
  568. package/es/graphic/arc.js.map +1 -1
  569. package/es/graphic/arc3d.js +6 -5
  570. package/es/graphic/arc3d.js.map +1 -1
  571. package/es/graphic/area.js +13 -10
  572. package/es/graphic/area.js.map +1 -1
  573. package/es/graphic/builtin-symbol/arrow.js +2 -3
  574. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  575. package/es/graphic/builtin-symbol/arrow2-down.js +2 -3
  576. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  577. package/es/graphic/builtin-symbol/arrow2-left.js +2 -3
  578. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  579. package/es/graphic/builtin-symbol/arrow2-right.js +2 -3
  580. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  581. package/es/graphic/builtin-symbol/arrow2-up.js +2 -3
  582. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  583. package/es/graphic/builtin-symbol/circle.js +2 -3
  584. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  585. package/es/graphic/builtin-symbol/close.js +2 -3
  586. package/es/graphic/builtin-symbol/close.js.map +1 -1
  587. package/es/graphic/builtin-symbol/cross.js +2 -3
  588. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  589. package/es/graphic/builtin-symbol/diamond.js +2 -3
  590. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  591. package/es/graphic/builtin-symbol/line-h.js +2 -3
  592. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  593. package/es/graphic/builtin-symbol/line-v.js +2 -3
  594. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  595. package/es/graphic/builtin-symbol/rect.js +2 -3
  596. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  597. package/es/graphic/builtin-symbol/square.js +2 -3
  598. package/es/graphic/builtin-symbol/square.js.map +1 -1
  599. package/es/graphic/builtin-symbol/star.js +2 -3
  600. package/es/graphic/builtin-symbol/star.js.map +1 -1
  601. package/es/graphic/builtin-symbol/stroke.js +2 -3
  602. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  603. package/es/graphic/builtin-symbol/thin-triangle.js +2 -3
  604. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  605. package/es/graphic/builtin-symbol/triangle-down.js +2 -3
  606. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  607. package/es/graphic/builtin-symbol/triangle-left.js +2 -3
  608. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  609. package/es/graphic/builtin-symbol/triangle-right.js +2 -3
  610. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  611. package/es/graphic/builtin-symbol/triangle-up.js +2 -3
  612. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  613. package/es/graphic/builtin-symbol/triangle.js +1 -3
  614. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  615. package/es/graphic/builtin-symbol/utils.js +6 -2
  616. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  617. package/es/graphic/builtin-symbol/wedge.js +2 -3
  618. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  619. package/es/graphic/builtin-symbol/wye.js +2 -3
  620. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  621. package/es/graphic/circle.js +7 -6
  622. package/es/graphic/circle.js.map +1 -1
  623. package/es/graphic/config.js +73 -44
  624. package/es/graphic/config.js.map +1 -1
  625. package/es/graphic/glyph.js +9 -9
  626. package/es/graphic/glyph.js.map +1 -1
  627. package/es/graphic/graphic-service/graphic-service.js +12 -8
  628. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  629. package/es/graphic/graphic.d.ts +1 -0
  630. package/es/graphic/graphic.js +32 -42
  631. package/es/graphic/graphic.js.map +1 -1
  632. package/es/graphic/group.js +8 -5
  633. package/es/graphic/group.js.map +1 -1
  634. package/es/graphic/image.js +17 -16
  635. package/es/graphic/image.js.map +1 -1
  636. package/es/graphic/line.js +10 -7
  637. package/es/graphic/line.js.map +1 -1
  638. package/es/graphic/node-tree.js +25 -44
  639. package/es/graphic/node-tree.js.map +1 -1
  640. package/es/graphic/path.js +11 -7
  641. package/es/graphic/path.js.map +1 -1
  642. package/es/graphic/polygon.js +6 -4
  643. package/es/graphic/polygon.js.map +1 -1
  644. package/es/graphic/pyramid3d.js +3 -3
  645. package/es/graphic/pyramid3d.js.map +1 -1
  646. package/es/graphic/rect.js +6 -4
  647. package/es/graphic/rect.js.map +1 -1
  648. package/es/graphic/rect3d.js +4 -4
  649. package/es/graphic/rect3d.js.map +1 -1
  650. package/es/graphic/richtext/frame.js +19 -0
  651. package/es/graphic/richtext/frame.js.map +1 -1
  652. package/es/graphic/richtext/icon.js +14 -6
  653. package/es/graphic/richtext/icon.js.map +1 -1
  654. package/es/graphic/richtext/line.js +14 -2
  655. package/es/graphic/richtext/line.js.map +1 -1
  656. package/es/graphic/richtext/paragraph.js +22 -0
  657. package/es/graphic/richtext/paragraph.js.map +1 -1
  658. package/es/graphic/richtext/utils.js +1 -2
  659. package/es/graphic/richtext/utils.js.map +1 -1
  660. package/es/graphic/richtext/wrapper.js +12 -0
  661. package/es/graphic/richtext/wrapper.js.map +1 -1
  662. package/es/graphic/richtext.js +37 -46
  663. package/es/graphic/richtext.js.map +1 -1
  664. package/es/graphic/shadow-root.js +2 -1
  665. package/es/graphic/shadow-root.js.map +1 -1
  666. package/es/graphic/symbol.js +11 -6
  667. package/es/graphic/symbol.js.map +1 -1
  668. package/es/graphic/text.js +39 -40
  669. package/es/graphic/text.js.map +1 -1
  670. package/es/graphic/theme.js +4 -0
  671. package/es/graphic/theme.js.map +1 -1
  672. package/es/graphic/tools.js +16 -44
  673. package/es/graphic/tools.js.map +1 -1
  674. package/es/graphic/wrap-text.js +6 -6
  675. package/es/graphic/wrap-text.js.map +1 -1
  676. package/es/interface/global.d.ts +2 -1
  677. package/es/interface/global.js.map +1 -1
  678. package/es/interface/graphic.d.ts +1 -0
  679. package/es/interface/graphic.js.map +1 -1
  680. package/es/picker/global-picker-service.js +1 -0
  681. package/es/picker/global-picker-service.js.map +1 -1
  682. package/es/picker/pick-interceptor.js +5 -15
  683. package/es/picker/pick-interceptor.js.map +1 -1
  684. package/es/picker/picker-service.js +5 -5
  685. package/es/picker/picker-service.js.map +1 -1
  686. package/es/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  687. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  688. package/es/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  689. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  690. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  691. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  692. package/es/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  693. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  694. package/es/plugins/builtin-plugin/html-attribute-plugin.js +28 -17
  695. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  696. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  697. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  698. package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -6
  699. package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  700. package/es/plugins/plugin-service.js +1 -0
  701. package/es/plugins/plugin-service.js.map +1 -1
  702. package/es/render/contributions/render/arc-render.js +6 -4
  703. package/es/render/contributions/render/arc-render.js.map +1 -1
  704. package/es/render/contributions/render/arc3d-render.js +5 -7
  705. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  706. package/es/render/contributions/render/area-render.js +21 -23
  707. package/es/render/contributions/render/area-render.js.map +1 -1
  708. package/es/render/contributions/render/base-render.js +5 -0
  709. package/es/render/contributions/render/base-render.js.map +1 -1
  710. package/es/render/contributions/render/circle-render.js +6 -4
  711. package/es/render/contributions/render/circle-render.js.map +1 -1
  712. package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
  713. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  714. package/es/render/contributions/render/contributions/area-texture-contribution-render.js +2 -5
  715. package/es/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  716. package/es/render/contributions/render/contributions/base-contribution-render.js +10 -7
  717. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  718. package/es/render/contributions/render/contributions/base-texture-contribution-render.js +4 -3
  719. package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  720. package/es/render/contributions/render/contributions/circle-contribution-render.js +3 -3
  721. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  722. package/es/render/contributions/render/contributions/group-contribution-render.js +1 -3
  723. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  724. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -3
  725. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  726. package/es/render/contributions/render/contributions/rect-contribution-render.js +11 -11
  727. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  728. package/es/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
  729. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  730. package/es/render/contributions/render/contributions/text-contribution-render.js +6 -8
  731. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  732. package/es/render/contributions/render/draw-contribution.js +12 -14
  733. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  734. package/es/render/contributions/render/draw-interceptor.js +11 -21
  735. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  736. package/es/render/contributions/render/glyph-render.js +2 -3
  737. package/es/render/contributions/render/glyph-render.js.map +1 -1
  738. package/es/render/contributions/render/graphic-render.js +4 -1
  739. package/es/render/contributions/render/graphic-render.js.map +1 -1
  740. package/es/render/contributions/render/group-render.js +7 -3
  741. package/es/render/contributions/render/group-render.js.map +1 -1
  742. package/es/render/contributions/render/image-render.js +5 -2
  743. package/es/render/contributions/render/image-render.js.map +1 -1
  744. package/es/render/contributions/render/incremental-area-render.js +1 -3
  745. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  746. package/es/render/contributions/render/incremental-draw-contribution.js +80 -109
  747. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  748. package/es/render/contributions/render/incremental-line-render.js +1 -3
  749. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  750. package/es/render/contributions/render/line-render.js +12 -16
  751. package/es/render/contributions/render/line-render.js.map +1 -1
  752. package/es/render/contributions/render/path-render.js +8 -6
  753. package/es/render/contributions/render/path-render.js.map +1 -1
  754. package/es/render/contributions/render/polygon-render.js +6 -4
  755. package/es/render/contributions/render/polygon-render.js.map +1 -1
  756. package/es/render/contributions/render/pyramid3d-render.js +3 -5
  757. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  758. package/es/render/contributions/render/rect-render.js +8 -6
  759. package/es/render/contributions/render/rect-render.js.map +1 -1
  760. package/es/render/contributions/render/rect3d-render.js +5 -7
  761. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  762. package/es/render/contributions/render/richtext-render.js +4 -3
  763. package/es/render/contributions/render/richtext-render.js.map +1 -1
  764. package/es/render/contributions/render/symbol-render.js +11 -14
  765. package/es/render/contributions/render/symbol-render.js.map +1 -1
  766. package/es/render/contributions/render/text-render.js +9 -8
  767. package/es/render/contributions/render/text-render.js.map +1 -1
  768. package/es/render/contributions/render/utils.js +1 -1
  769. package/es/render/contributions/render/utils.js.map +1 -1
  770. package/es/render/render-service.js +11 -2
  771. package/es/render/render-service.js.map +1 -1
  772. package/es/resource-loader/loader.js +12 -17
  773. package/es/resource-loader/loader.js.map +1 -1
  774. package/es/tapable/Hook.js +3 -0
  775. package/es/tapable/Hook.js.map +1 -1
  776. package/package.json +1 -1
@@ -32,7 +32,7 @@ export declare class RafBasedSTO {
32
32
  timeout: number;
33
33
  lastDate: number;
34
34
  durationsListThreshold: number;
35
- constructor();
35
+ constructor(timeout?: number);
36
36
  call(cb: FrameRequestCallback): number;
37
37
  clear(h: number): void;
38
38
  appendDuration(d: number): void;
@@ -10,13 +10,12 @@ export var Edge;
10
10
  const _strokeVec4 = [ !1, !1, !1, !1 ];
11
11
 
12
12
  export const parseStroke = stroke => {
13
- var _a;
14
13
  let isFullStroke = !0;
15
14
  if (isBoolean(stroke, !0)) {
16
- for (let i = 0; i < 4; i++) _strokeVec4[i] = stroke, isFullStroke && (isFullStroke = !(null !== (_a = _strokeVec4[i]) && void 0 !== _a && !_a));
15
+ for (let i = 0; i < 4; i++) _strokeVec4[i] = stroke, isFullStroke &&= !!(_strokeVec4[i] ?? 1);
17
16
  isFullStroke = stroke;
18
17
  } else if (Array.isArray(stroke)) for (let i = 0; i < 4; i++) _strokeVec4[i] = !!stroke[i],
19
- isFullStroke && (isFullStroke = !!_strokeVec4[i]); else _strokeVec4[0] = !1, _strokeVec4[1] = !1,
18
+ isFullStroke &&= !!_strokeVec4[i]; else _strokeVec4[0] = !1, _strokeVec4[1] = !1,
20
19
  _strokeVec4[2] = !1, _strokeVec4[3] = !1;
21
20
  return {
22
21
  isFullStroke: isFullStroke,
@@ -120,8 +119,13 @@ export function getAttributeFromDefaultAttrList(attr, key) {
120
119
  }
121
120
 
122
121
  export class RafBasedSTO {
123
- constructor() {
124
- this.durations = [], this.timeout = RafBasedSTO.TimeOut, this.lastDate = 0, this.durationsListThreshold = 30;
122
+ static TimeOut=1e3 / 60;
123
+ durations;
124
+ timeout;
125
+ lastDate;
126
+ durationsListThreshold;
127
+ constructor(timeout = RafBasedSTO.TimeOut) {
128
+ this.durations = [], this.timeout = timeout, this.lastDate = 0, this.durationsListThreshold = 30;
125
129
  }
126
130
  call(cb) {
127
131
  return this.lastDate = Date.now(), setTimeout((() => {
@@ -137,8 +141,6 @@ export class RafBasedSTO {
137
141
  }
138
142
  }
139
143
 
140
- RafBasedSTO.TimeOut = 1e3 / 60;
141
-
142
144
  export const rafBasedSto = new RafBasedSTO;
143
145
 
144
146
  export const calculateLineHeight = (lineHeight, fontSize) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK3G,MAAM,CAAN,IAAY,IAOX;AAPD,WAAY,IAAI;IACd,6BAAc,CAAA;IACd,iCAAgB,CAAA;IAChB,mCAAiB,CAAA;IACjB,+BAAe,CAAA;IAEf,8BAAc,CAAA;AAChB,CAAC,EAPW,IAAI,KAAJ,IAAI,QAOf;AAGD,MAAM,WAAW,GAA6E;IAC5F,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAMF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAA8B,EAI9B,EAAE;;IACF,IAAI,YAAY,GAAY,IAAI,CAAC;IAEjC,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,WAAW,CAAC,CAAC,CAAC,GAAG,MAAiB,CAAC;YACnC,YAAY,KAAZ,YAAY,GAAK,CAAC,CAAC,CAAC,MAAA,WAAW,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC,EAAC;SAC7C;QACD,YAAY,GAAG,MAAiB,CAAC;KAClC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,YAAY,KAAZ,YAAY,GAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC;SACnC;KACF;SAAM;QACL,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;KACxB;IAED,OAAO;QACL,YAAY;QACZ,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,YAAY,GAAqC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAMpE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,OAA2C,EACA,EAAE;IAC7C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,CAAC;SACV;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;SACnB;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,YAAY,CAAC;SACrB;QAED,OAAO,OAA2C,CAAC;KACpD;IAED,OAAO,OAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,OAAO,GAAqD;IAChE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACf,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAQ3C,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,QAAgB,EAAE,MAAc,EAAE,MAAe;IAGhG,OAAO,UAAU,IAAI,GAAG,EAAE;QACxB,UAAU,IAAI,GAAG,CAAC;KACnB;IACD,OAAO,UAAU,GAAG,CAAC,EAAE;QACrB,UAAU,IAAI,GAAG,CAAC;KACnB;IACD,OAAO,UAAU,GAAG,QAAQ,EAAE;QAC5B,QAAQ,IAAI,GAAG,CAAC;KACjB;IACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAGtB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAGvB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAIvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEhD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE,EAAE;QACrD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACvC,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,SAAS;aACV;iBAAM,IAAI,KAAK,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC3C,MAAM;aACP;YACD,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aACtB;SACF;KACF;AAiBH,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,OAAkC,EAAE,OAAkC;IAChG,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAEpD,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;YACrC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3E;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,OAAsB,CAAC,CAAC,GAAI,OAAsB,CAAC,CAAC,CAAC,EAAE;QAExE,OAAO,UAAU,CAAC,OAAqB,EAAE,OAAqB,CAAC,CAAC;KACjE;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAOD,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,MAAkB;IAC/D,OAAO,CACL,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;QACvB,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;QACvB,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAClC,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,MAAkB,EAAE,KAAa;IACtF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAQD,MAAM,UAAU,iCAAiC,CAC/C,MAAkB,EAClB,MAAkB,EAClB,KAAa,EACb,KAAiB;IAEjB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEpF,KAAK,CAAC,CAAC,GAAG,CAAW,CAAC;IACtB,KAAK,CAAC,CAAC,GAAG,CAAW,CAAC;IACtB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAQD,MAAM,UAAU,mBAAmB,CACjC,OAAkC,EAClC,OAAkC,EAClC,KAAa;IAEb,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;QACxB,OAAO,EAAE,CAAC;KACX;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,GAAiB,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;QAEnC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SAC/D;KACF;SAAM;QAEL,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SAC/D;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,SAAS;CACV,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;IAC5C,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,UAAU,+BAA+B,CAAC,IAAiD,EAAE,GAAW;IAC5G,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,GAAG,CAAC;QACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC,EAAE,EAAE;YACzD,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACpB;QACD,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,WAAW;IAOtB;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,EAAwB;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,UAAU,CACf,GAAG,EAAE;YACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,EAAE,CAAC,CAAC,CAAC,CAAC;QACR,CAAC,EACD,IAAI,CAAC,OAAO,EACZ,IAAI,CACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAS;QACb,YAAY,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,CAAS;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE;YACvD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,EACtF,IAAI,GAAG,EAAE,CACV,CAAC;IACJ,CAAC;;AAvCM,mBAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AA0C7B,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAA2B,EAAE,QAAgB,EAAU,EAAE;IAC3F,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACtF,OAAO,QAAQ,GAAG,KAAK,CAAC;KACzB;IACD,OAAO,UAAoB,CAAC;AAC9B,CAAC,CAAC","file":"utils.js","sourcesContent":["import type { IBounds, IPointLike } from '@visactor/vutils';\nimport { isBoolean, halfPi, pi, pi2, sin, cos, isArray, pointAt, Point, isString } from '@visactor/vutils';\nimport type { IGraphicAttribute, IStrokeStyle } from '../interface';\n\n// todo: 迁移到@visactor/vutils\n\nexport enum Edge {\n Top = 0b000001,\n Right = 0b000010,\n Bottom = 0b000100,\n Left = 0b001000,\n\n ALL = 0b001111\n}\n\n// 公共的stroke数组,避免大量数组生成\nconst _strokeVec4: [boolean | string, boolean | string, boolean | string, boolean | string] = [\n false,\n false,\n false,\n false\n];\n/**\n * 解析stroke配置\n * @param stroke\n * @returns\n */\nexport const parseStroke = (\n stroke: IStrokeStyle['stroke']\n): {\n isFullStroke: boolean;\n stroke: (boolean | string)[];\n} => {\n let isFullStroke: boolean = true;\n // 首先判断\n if (isBoolean(stroke, true)) {\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = stroke as boolean;\n isFullStroke &&= !!(_strokeVec4[i] ?? true);\n }\n isFullStroke = stroke as boolean;\n } else if (Array.isArray(stroke)) {\n // array\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = !!stroke[i];\n isFullStroke &&= !!_strokeVec4[i];\n }\n } else {\n _strokeVec4[0] = false;\n _strokeVec4[1] = false;\n _strokeVec4[2] = false;\n _strokeVec4[3] = false;\n }\n\n return {\n isFullStroke,\n stroke: _strokeVec4\n };\n};\n\n// 公共的padding数组,避免大量数组生成\nconst _paddingVec4: [number, number, number, number] = [0, 0, 0, 0];\n/**\n * 解析padding配置\n * @param padding\n * @returns\n */\nexport const parsePadding = (\n padding: IGraphicAttribute['boundsPadding']\n): number | [number, number, number, number] => {\n if (!padding) {\n return 0;\n }\n if (isArray(padding)) {\n if (padding.length === 0) {\n return 0;\n } else if (padding.length === 1) {\n return padding[0];\n } else if (padding.length === 2) {\n _paddingVec4[0] = padding[0];\n _paddingVec4[2] = padding[0];\n _paddingVec4[1] = padding[1];\n _paddingVec4[3] = padding[1];\n return _paddingVec4;\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return padding as [number, number, number, number];\n }\n\n return padding as number;\n};\n\nconst _coords: [IPointLike, IPointLike, IPointLike, IPointLike] = [\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n];\nconst indexList = [1, 2, 3, 0, 1, 2, 3, 0];\n/**\n * 计算circle一段弧线的bounds\n * @param startAngle 小于2pi\n * @param endAngle\n * @param radius\n * @param bounds\n */\nexport function circleBounds(startAngle: number, endAngle: number, radius: number, bounds: IBounds) {\n // startAngle小于2pi\n // endAngle - startAngle小于2pi\n while (startAngle >= pi2) {\n startAngle -= pi2;\n }\n while (startAngle < 0) {\n startAngle += pi2;\n }\n while (startAngle > endAngle) {\n endAngle += pi2;\n }\n _coords[0].x = radius;\n // _coords[0].y = 0;\n // _coords[1].x = 0;\n _coords[1].y = radius;\n _coords[2].x = -radius;\n // _coords[2].y = -radius;\n // _coords[3].x = 0;\n _coords[3].y = -radius;\n\n // (0,pi/2], (pi/2, pi], (pi, pi/2*3], (pi/2*3, 2pi]\n // 1, 2, 3, 0\n const startIdx = Math.ceil(startAngle / halfPi) % 4;\n const endIdx = Math.ceil(endAngle / halfPi) % 4;\n // console.log(startAngle, endAngle, cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle));\n bounds.add(cos(startAngle) * radius, sin(startAngle) * radius);\n bounds.add(cos(endAngle) * radius, sin(endAngle) * radius);\n if (startIdx !== endIdx || endAngle - startAngle > pi) {\n let match = false;\n for (let i = 0; i < indexList.length; i++) {\n if (!match && startIdx === indexList[i]) {\n match = true;\n const p = _coords[startIdx];\n bounds.add(p.x, p.y);\n continue;\n } else if (match && endIdx === indexList[i]) {\n break;\n }\n if (match) {\n const p = _coords[indexList[i]];\n bounds.add(p.x, p.y);\n }\n }\n }\n // const delta = Math.floor((endAngle - startAngle) / halfPi);\n // for (let i = 0; i < delta; i++) {\n // const p = _coords[(startIdx + i) % 4];\n // bounds.add(p.x, p.y);\n // }\n\n // // 计算y1, y2\n // const y2 = halfPi >= startAngle && halfPi <= endAngle ? radius : max(sin(startAngle), sin(endAngle)) * radius;\n // const y1 =\n // halfPi + pi >= startAngle && halfPi + pi <= endAngle ? -radius : min(sin(startAngle), sin(endAngle)) * radius;\n // const x2 = pi2 >= startAngle && pi2 <= endAngle ? radius : max(cos(startAngle), cos(endAngle)) * radius;\n // const x1 = pi >= startAngle && pi <= endAngle ? -radius : min(cos(startAngle), cos(endAngle)) * radius;\n\n // // bounds.set(x1, y1, x2, y2);\n // bounds.add(x1, y1);\n // bounds.add(x2, y2);\n}\n\n/**\n * 比较两个点数组是否相同\n * @param pointsA 数组A\n * @param pointsB 数组B\n */\nexport function pointsEqual(pointsA: IPointLike[] | IPointLike, pointsB: IPointLike[] | IPointLike): boolean {\n if (!pointsA || !pointsB) {\n return false;\n } // 需要传入pointsA和pointsB\n if (Array.isArray(pointsA) && Array.isArray(pointsB)) {\n // 如果pointsA和pointsB是数组\n if (pointsA.length !== pointsB.length) {\n return false;\n }\n return pointsA.every((point, index) => pointEqual(point, pointsB[index]));\n }\n if (!Number.isNaN((pointsA as IPointLike).x + (pointsA as IPointLike).y)) {\n // 如果pointA是IPoint(防止参数是undefined)\n return pointEqual(pointsA as IPointLike, pointsB as IPointLike);\n }\n return false;\n}\n\n/**\n * 比较两个点是否相同\n * @param pointA 点A\n * @param pointB 点B\n */\nexport function pointEqual(pointA: IPointLike, pointB: IPointLike): boolean {\n return (\n pointA.x === pointB.x &&\n pointA.y === pointB.y &&\n pointA.x1 === pointB.x1 &&\n pointA.y1 === pointB.y1 &&\n pointA.defined === pointB.defined\n );\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolation(pointA: IPointLike, pointB: IPointLike, ratio: number): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n const point = new Point(x as number, y as number, x1, y1);\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolationHighPerformance(\n pointA: IPointLike,\n pointB: IPointLike,\n ratio: number,\n point: IPointLike\n): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n // const point = new Point(x as number, y as number, x1, y1);\n point.x = x as number;\n point.y = y as number;\n point.x1 = x1;\n point.y1 = y1;\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 点数组插值\n * @param pointsA 点数组A\n * @param pointsB 点数组B\n * @param ratio 比例\n */\nexport function pointsInterpolation(\n pointsA: IPointLike[] | IPointLike,\n pointsB: IPointLike[] | IPointLike,\n ratio: number\n): IPointLike[] {\n if (!pointsA || !pointsB) {\n return [];\n } // 需要传入pointsA和pointsB\n if (!Array.isArray(pointsA)) {\n pointsA = [pointsA];\n }\n if (!Array.isArray(pointsB)) {\n pointsB = [pointsB];\n }\n\n let points: IPointLike[] = [];\n if (pointsA.length > pointsB.length) {\n // 如果变短了,那么后面点的直接clip\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsB.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n } else {\n // 如果变长了,加上后面的点\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsA.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n }\n return points;\n}\n\nexport const transformKeys = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'scrollX',\n 'scrollY'\n];\nexport const isTransformKey = (key: string) => {\n return transformKeys.includes(key);\n};\n\nexport function getAttributeFromDefaultAttrList(attr: Record<string, any> | Record<string, any>[], key: string) {\n if (isArray(attr)) {\n let val;\n for (let i = 0; i < attr.length && val === undefined; i++) {\n val = attr[i][key];\n }\n return val;\n }\n return attr[key];\n}\n\nexport class RafBasedSTO {\n static TimeOut = 1000 / 60;\n durations: number[];\n timeout: number;\n lastDate: number;\n durationsListThreshold: number;\n\n constructor() {\n this.durations = [];\n this.timeout = RafBasedSTO.TimeOut;\n this.lastDate = 0;\n this.durationsListThreshold = 30;\n }\n\n call(cb: FrameRequestCallback) {\n this.lastDate = Date.now();\n return setTimeout(\n () => {\n this.appendDuration(Date.now() - this.lastDate);\n cb(0);\n },\n this.timeout,\n true\n );\n }\n\n clear(h: number) {\n clearTimeout(h);\n }\n\n appendDuration(d: number) {\n this.durations.push(d);\n if (this.durations.length > this.durationsListThreshold) {\n this.durations.shift();\n }\n // 最多60fps, 最少30fps\n this.timeout = Math.min(\n Math.max(this.durations.reduce((a, b) => a + b, 0) / this.durations.length, 1000 / 60),\n 1000 / 30\n );\n }\n}\n\nexport const rafBasedSto = new RafBasedSTO();\n\nexport const calculateLineHeight = (lineHeight: string | number, fontSize: number): number => {\n if (isString(lineHeight) && lineHeight[lineHeight.length - 1] === '%') {\n const scale = Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100;\n return fontSize * scale;\n }\n return lineHeight as number;\n};\n"]}
1
+ {"version":3,"sources":["../src/common/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { IBounds, IPointLike } from '@visactor/vutils';\nimport { isBoolean, halfPi, pi, pi2, sin, cos, isArray, pointAt, Point, isString } from '@visactor/vutils';\nimport type { IGraphicAttribute, IStrokeStyle } from '../interface';\n\n// todo: 迁移到@visactor/vutils\n\nexport enum Edge {\n Top = 0b000001,\n Right = 0b000010,\n Bottom = 0b000100,\n Left = 0b001000,\n\n ALL = 0b001111\n}\n\n// 公共的stroke数组,避免大量数组生成\nconst _strokeVec4: [boolean | string, boolean | string, boolean | string, boolean | string] = [\n false,\n false,\n false,\n false\n];\n/**\n * 解析stroke配置\n * @param stroke\n * @returns\n */\nexport const parseStroke = (\n stroke: IStrokeStyle['stroke']\n): {\n isFullStroke: boolean;\n stroke: (boolean | string)[];\n} => {\n let isFullStroke: boolean = true;\n // 首先判断\n if (isBoolean(stroke, true)) {\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = stroke as boolean;\n isFullStroke &&= !!(_strokeVec4[i] ?? true);\n }\n isFullStroke = stroke as boolean;\n } else if (Array.isArray(stroke)) {\n // array\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = !!stroke[i];\n isFullStroke &&= !!_strokeVec4[i];\n }\n } else {\n _strokeVec4[0] = false;\n _strokeVec4[1] = false;\n _strokeVec4[2] = false;\n _strokeVec4[3] = false;\n }\n\n return {\n isFullStroke,\n stroke: _strokeVec4\n };\n};\n\n// 公共的padding数组,避免大量数组生成\nconst _paddingVec4: [number, number, number, number] = [0, 0, 0, 0];\n/**\n * 解析padding配置\n * @param padding\n * @returns\n */\nexport const parsePadding = (\n padding: IGraphicAttribute['boundsPadding']\n): number | [number, number, number, number] => {\n if (!padding) {\n return 0;\n }\n if (isArray(padding)) {\n if (padding.length === 0) {\n return 0;\n } else if (padding.length === 1) {\n return padding[0];\n } else if (padding.length === 2) {\n _paddingVec4[0] = padding[0];\n _paddingVec4[2] = padding[0];\n _paddingVec4[1] = padding[1];\n _paddingVec4[3] = padding[1];\n return _paddingVec4;\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return padding as [number, number, number, number];\n }\n\n return padding as number;\n};\n\nconst _coords: [IPointLike, IPointLike, IPointLike, IPointLike] = [\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n];\nconst indexList = [1, 2, 3, 0, 1, 2, 3, 0];\n/**\n * 计算circle一段弧线的bounds\n * @param startAngle 小于2pi\n * @param endAngle\n * @param radius\n * @param bounds\n */\nexport function circleBounds(startAngle: number, endAngle: number, radius: number, bounds: IBounds) {\n // startAngle小于2pi\n // endAngle - startAngle小于2pi\n while (startAngle >= pi2) {\n startAngle -= pi2;\n }\n while (startAngle < 0) {\n startAngle += pi2;\n }\n while (startAngle > endAngle) {\n endAngle += pi2;\n }\n _coords[0].x = radius;\n // _coords[0].y = 0;\n // _coords[1].x = 0;\n _coords[1].y = radius;\n _coords[2].x = -radius;\n // _coords[2].y = -radius;\n // _coords[3].x = 0;\n _coords[3].y = -radius;\n\n // (0,pi/2], (pi/2, pi], (pi, pi/2*3], (pi/2*3, 2pi]\n // 1, 2, 3, 0\n const startIdx = Math.ceil(startAngle / halfPi) % 4;\n const endIdx = Math.ceil(endAngle / halfPi) % 4;\n // console.log(startAngle, endAngle, cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle));\n bounds.add(cos(startAngle) * radius, sin(startAngle) * radius);\n bounds.add(cos(endAngle) * radius, sin(endAngle) * radius);\n if (startIdx !== endIdx || endAngle - startAngle > pi) {\n let match = false;\n for (let i = 0; i < indexList.length; i++) {\n if (!match && startIdx === indexList[i]) {\n match = true;\n const p = _coords[startIdx];\n bounds.add(p.x, p.y);\n continue;\n } else if (match && endIdx === indexList[i]) {\n break;\n }\n if (match) {\n const p = _coords[indexList[i]];\n bounds.add(p.x, p.y);\n }\n }\n }\n // const delta = Math.floor((endAngle - startAngle) / halfPi);\n // for (let i = 0; i < delta; i++) {\n // const p = _coords[(startIdx + i) % 4];\n // bounds.add(p.x, p.y);\n // }\n\n // // 计算y1, y2\n // const y2 = halfPi >= startAngle && halfPi <= endAngle ? radius : max(sin(startAngle), sin(endAngle)) * radius;\n // const y1 =\n // halfPi + pi >= startAngle && halfPi + pi <= endAngle ? -radius : min(sin(startAngle), sin(endAngle)) * radius;\n // const x2 = pi2 >= startAngle && pi2 <= endAngle ? radius : max(cos(startAngle), cos(endAngle)) * radius;\n // const x1 = pi >= startAngle && pi <= endAngle ? -radius : min(cos(startAngle), cos(endAngle)) * radius;\n\n // // bounds.set(x1, y1, x2, y2);\n // bounds.add(x1, y1);\n // bounds.add(x2, y2);\n}\n\n/**\n * 比较两个点数组是否相同\n * @param pointsA 数组A\n * @param pointsB 数组B\n */\nexport function pointsEqual(pointsA: IPointLike[] | IPointLike, pointsB: IPointLike[] | IPointLike): boolean {\n if (!pointsA || !pointsB) {\n return false;\n } // 需要传入pointsA和pointsB\n if (Array.isArray(pointsA) && Array.isArray(pointsB)) {\n // 如果pointsA和pointsB是数组\n if (pointsA.length !== pointsB.length) {\n return false;\n }\n return pointsA.every((point, index) => pointEqual(point, pointsB[index]));\n }\n if (!Number.isNaN((pointsA as IPointLike).x + (pointsA as IPointLike).y)) {\n // 如果pointA是IPoint(防止参数是undefined)\n return pointEqual(pointsA as IPointLike, pointsB as IPointLike);\n }\n return false;\n}\n\n/**\n * 比较两个点是否相同\n * @param pointA 点A\n * @param pointB 点B\n */\nexport function pointEqual(pointA: IPointLike, pointB: IPointLike): boolean {\n return (\n pointA.x === pointB.x &&\n pointA.y === pointB.y &&\n pointA.x1 === pointB.x1 &&\n pointA.y1 === pointB.y1 &&\n pointA.defined === pointB.defined\n );\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolation(pointA: IPointLike, pointB: IPointLike, ratio: number): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n const point = new Point(x as number, y as number, x1, y1);\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolationHighPerformance(\n pointA: IPointLike,\n pointB: IPointLike,\n ratio: number,\n point: IPointLike\n): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n // const point = new Point(x as number, y as number, x1, y1);\n point.x = x as number;\n point.y = y as number;\n point.x1 = x1;\n point.y1 = y1;\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 点数组插值\n * @param pointsA 点数组A\n * @param pointsB 点数组B\n * @param ratio 比例\n */\nexport function pointsInterpolation(\n pointsA: IPointLike[] | IPointLike,\n pointsB: IPointLike[] | IPointLike,\n ratio: number\n): IPointLike[] {\n if (!pointsA || !pointsB) {\n return [];\n } // 需要传入pointsA和pointsB\n if (!Array.isArray(pointsA)) {\n pointsA = [pointsA];\n }\n if (!Array.isArray(pointsB)) {\n pointsB = [pointsB];\n }\n\n let points: IPointLike[] = [];\n if (pointsA.length > pointsB.length) {\n // 如果变短了,那么后面点的直接clip\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsB.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n } else {\n // 如果变长了,加上后面的点\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsA.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n }\n return points;\n}\n\nexport const transformKeys = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'scrollX',\n 'scrollY'\n];\nexport const isTransformKey = (key: string) => {\n return transformKeys.includes(key);\n};\n\nexport function getAttributeFromDefaultAttrList(attr: Record<string, any> | Record<string, any>[], key: string) {\n if (isArray(attr)) {\n let val;\n for (let i = 0; i < attr.length && val === undefined; i++) {\n val = attr[i][key];\n }\n return val;\n }\n return attr[key];\n}\n\nexport class RafBasedSTO {\n static TimeOut = 1000 / 60;\n durations: number[];\n timeout: number;\n lastDate: number;\n durationsListThreshold: number;\n\n constructor(timeout: number = RafBasedSTO.TimeOut) {\n this.durations = [];\n this.timeout = timeout;\n this.lastDate = 0;\n this.durationsListThreshold = 30;\n }\n\n call(cb: FrameRequestCallback) {\n this.lastDate = Date.now();\n return setTimeout(\n () => {\n this.appendDuration(Date.now() - this.lastDate);\n cb(0);\n },\n this.timeout,\n true\n );\n }\n\n clear(h: number) {\n clearTimeout(h);\n }\n\n appendDuration(d: number) {\n this.durations.push(d);\n if (this.durations.length > this.durationsListThreshold) {\n this.durations.shift();\n }\n // 最多60fps, 最少30fps\n this.timeout = Math.min(\n Math.max(this.durations.reduce((a, b) => a + b, 0) / this.durations.length, 1000 / 60),\n 1000 / 30\n );\n }\n}\n\nexport const rafBasedSto = new RafBasedSTO();\n\nexport const calculateLineHeight = (lineHeight: string | number, fontSize: number): number => {\n if (isString(lineHeight) && lineHeight[lineHeight.length - 1] === '%') {\n const scale = Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100;\n return fontSize * scale;\n }\n return lineHeight as number;\n};\n"]}
@@ -3,6 +3,8 @@ import { OrderedObjParser } from "./OrderedObjParser";
3
3
  import { prettify } from "./node2json";
4
4
 
5
5
  export class XMLParser {
6
+ static defaultOptions={};
7
+ options;
6
8
  constructor(options) {
7
9
  this.options = Object.assign({}, XMLParser.defaultOptions, options);
8
10
  }
@@ -16,8 +18,6 @@ export class XMLParser {
16
18
  }
17
19
  }
18
20
 
19
- XMLParser.defaultOptions = {};
20
-
21
21
  export function isSvg(str) {
22
22
  return str.startsWith("<svg") || str.startsWith("<?xml");
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/xml/parser.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,OAAO,SAAS;IAIpB,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;;AAlBM,wBAAc,GAAwB,EAAE,CAAC;AAqBlD,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC","file":"parser.js","sourcesContent":["// 参考fast-xml-parser\n// https://github.com/NaturalIntelligence/fast-xml-parser\n/**\n * MIT License\n\nCopyright (c) 2017 Amit Kumar Gupta\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n */\n\nimport { OrderedObjParser } from './OrderedObjParser';\nimport { prettify } from './node2json';\nimport type { X2jOptions } from './type';\n\nexport class XMLParser {\n static defaultOptions: Partial<X2jOptions> = {};\n options: Partial<X2jOptions>;\n\n constructor(options?: Partial<X2jOptions>) {\n this.options = Object.assign({}, XMLParser.defaultOptions, options);\n }\n\n valid(xml: string) {\n return xml.startsWith('<');\n }\n\n parse(xmlData: string): any {\n if (!this.valid) {\n return false;\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n return prettify(orderedResult, this.options);\n }\n}\n\nexport function isSvg(str: string) {\n return str.startsWith('<svg') || str.startsWith('<?xml');\n}\n\nexport function isXML(str: string) {\n return str.startsWith('<');\n}\n"]}
1
+ {"version":3,"sources":["../src/common/xml/parser.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,cAAc,GAAwB,EAAE,CAAC;IAChD,OAAO,CAAsB;IAE7B,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;;AAGH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC","file":"parser.js","sourcesContent":["// 参考fast-xml-parser\n// https://github.com/NaturalIntelligence/fast-xml-parser\n/**\n * MIT License\n\nCopyright (c) 2017 Amit Kumar Gupta\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n */\n\nimport { OrderedObjParser } from './OrderedObjParser';\nimport { prettify } from './node2json';\nimport type { X2jOptions } from './type';\n\nexport class XMLParser {\n static defaultOptions: Partial<X2jOptions> = {};\n options: Partial<X2jOptions>;\n\n constructor(options?: Partial<X2jOptions>) {\n this.options = Object.assign({}, XMLParser.defaultOptions, options);\n }\n\n valid(xml: string) {\n return xml.startsWith('<');\n }\n\n parse(xmlData: string): any {\n if (!this.valid) {\n return false;\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n return prettify(orderedResult, this.options);\n }\n}\n\nexport function isSvg(str: string) {\n return str.startsWith('<svg') || str.startsWith('<?xml');\n}\n\nexport function isXML(str: string) {\n return str.startsWith('<');\n}\n"]}
package/es/core/camera.js CHANGED
@@ -3,12 +3,19 @@ import { mat4Allocate } from "../allocator/matrix-allocate";
3
3
  import { lookAt, multiply, ortho, transformMat4 } from "../common/matrix";
4
4
 
5
5
  export class OrthoCamera {
6
+ _params;
7
+ _projectionMatrixCached;
8
+ _viewMatrixCached;
9
+ _vp;
6
10
  set params(params) {
7
- this._params = Object.assign({}, params), this._projectionMatrixCached = this.forceGetProjectionMatrix(),
8
- this._viewMatrixCached = this.forceGetViewMatrix();
11
+ this._params = {
12
+ ...params
13
+ }, this._projectionMatrixCached = this.forceGetProjectionMatrix(), this._viewMatrixCached = this.forceGetViewMatrix();
9
14
  }
10
15
  get params() {
11
- return Object.assign({}, this._params);
16
+ return {
17
+ ...this._params
18
+ };
12
19
  }
13
20
  constructor(params) {
14
21
  this.params = params;
@@ -37,7 +44,7 @@ export class OrthoCamera {
37
44
  }
38
45
  getField() {
39
46
  const {fieldRatio: fieldRatio = .8, fieldDepth: fieldDepth, left: left, right: right} = this._params;
40
- return (null != fieldDepth ? fieldDepth : right - left) * fieldRatio;
47
+ return (fieldDepth ?? right - left) * fieldRatio;
41
48
  }
42
49
  getProjectionScale(z) {
43
50
  const field = this.getField();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/camera.ts"],"names":[],"mappings":"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","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { epsilon, IPoint } from '@visactor/vutils';\nimport { DefaultMat4Allocate } from '../allocator/matrix-allocate';\nimport type { ICamera, mat4, OrthoParameters, vec3 } from '../interface';\nimport { mat4Allocate } from '../allocator/matrix-allocate';\nimport { lookAt, multiply, ortho, transformMat4 } from '../common/matrix';\n\n/**\n * 部分代码参考 https://github.com/toji/gl-matrix\n * Copyright (c) 2015-2021, Brandon Jones, Colin MacKenzie IV.\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// * 代码来自gl-matrix https://github.com/toji/gl-matrix\n// * Generates a matrix that makes something look at something else.\n// *\n// * @param {mat4} out mat4 frustum matrix will be written into\n// * @param {ReadonlyVec3} eye Position of the viewer\n// * @param {ReadonlyVec3} center Point the viewer is looking at\n// * @param {ReadonlyVec3} up vec3 pointing up\n// * @returns {mat4} out\n// */\n\n// function targetTo(out: mat4, eye: vec3, target: vec3, up: vec3) {\n// const eyex = eye[0];\n// const eyey = eye[1];\n// const eyez = eye[2];\n// const upx = up[0];\n// const upy = up[1];\n// const upz = up[2];\n// let z0 = eyex - target[0];\n// let z1 = eyey - target[1];\n// let z2 = eyez - target[2];\n// let len = z0 * z0 + z1 * z1 + z2 * z2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// z0 *= len;\n// z1 *= len;\n// z2 *= len;\n// }\n\n// let x0 = upy * z2 - upz * z1;\n// let x1 = upz * z0 - upx * z2;\n// let x2 = upx * z1 - upy * z0;\n// len = x0 * x0 + x1 * x1 + x2 * x2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// x0 *= len;\n// x1 *= len;\n// x2 *= len;\n// }\n\n// out[0] = x0;\n// out[1] = x1;\n// out[2] = x2;\n// out[3] = 0;\n// out[4] = z1 * x2 - z2 * x1;\n// out[5] = z2 * x0 - z0 * x2;\n// out[6] = z0 * x1 - z1 * x0;\n// out[7] = 0;\n// out[8] = z0;\n// out[9] = z1;\n// out[10] = z2;\n// out[11] = 0;\n// out[12] = eyex;\n// out[13] = eyey;\n// out[14] = eyez;\n// out[15] = 1;\n// return out;\n// }\n\n/**\n * 正交投影摄像机\n */\nexport class OrthoCamera implements ICamera {\n private _params: OrthoParameters;\n\n /* cache */\n private _projectionMatrixCached: mat4;\n private _viewMatrixCached: mat4;\n private _vp: mat4;\n\n set params(params: OrthoParameters) {\n this._params = { ...params };\n this._projectionMatrixCached = this.forceGetProjectionMatrix();\n this._viewMatrixCached = this.forceGetViewMatrix();\n }\n get params(): OrthoParameters {\n return { ...this._params };\n }\n\n constructor(params: OrthoParameters) {\n this.params = params;\n }\n\n /**\n * 获取视图矩阵\n */\n getViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n return this._viewMatrixCached;\n }\n forceGetViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n const { pos, center, up } = this.params.viewParams;\n lookAt(this._viewMatrixCached, pos, center, up);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._viewMatrixCached;\n }\n\n /**\n * 获取projection矩阵\n */\n getProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n return this._projectionMatrixCached;\n }\n forceGetProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n const { left, top, right, bottom } = this._params;\n // 从0到2000000的Z轴范围,小于0的会被裁剪\n ortho(this._projectionMatrixCached, left, right, bottom, top, 0.0, -2000000.0);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._projectionMatrixCached;\n }\n\n getField() {\n const { fieldRatio = 0.8, fieldDepth, left, right } = this._params;\n return (fieldDepth ?? right - left) * fieldRatio;\n }\n\n getProjectionScale(z: number): number {\n const field = this.getField();\n return field / (field + z);\n }\n\n view(x: number, y: number, z: number): [number, number, number] {\n const outP: vec3 = [0, 0, 0];\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n return outP;\n }\n\n // 部分参考:https://www.mamboleoo.be/articles/how-to-render-3d-in-2d-canvas\n vp(x: number, y: number, z: number): IPointLike {\n const outP: vec3 = [0, 0, 0];\n const { pos } = this._params.viewParams;\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n x = outP[0];\n y = outP[1];\n z = outP[2];\n\n const sizeProjection = this.getProjectionScale(z);\n const xProject = x * sizeProjection + pos[0];\n const yProject = y * sizeProjection + pos[1];\n return {\n x: xProject,\n y: yProject\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/camera.ts"],"names":[],"mappings":"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","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { epsilon, IPoint } from '@visactor/vutils';\nimport { DefaultMat4Allocate } from '../allocator/matrix-allocate';\nimport type { ICamera, mat4, OrthoParameters, vec3 } from '../interface';\nimport { mat4Allocate } from '../allocator/matrix-allocate';\nimport { lookAt, multiply, ortho, transformMat4 } from '../common/matrix';\n\n/**\n * 部分代码参考 https://github.com/toji/gl-matrix\n * Copyright (c) 2015-2021, Brandon Jones, Colin MacKenzie IV.\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// * 代码来自gl-matrix https://github.com/toji/gl-matrix\n// * Generates a matrix that makes something look at something else.\n// *\n// * @param {mat4} out mat4 frustum matrix will be written into\n// * @param {ReadonlyVec3} eye Position of the viewer\n// * @param {ReadonlyVec3} center Point the viewer is looking at\n// * @param {ReadonlyVec3} up vec3 pointing up\n// * @returns {mat4} out\n// */\n\n// function targetTo(out: mat4, eye: vec3, target: vec3, up: vec3) {\n// const eyex = eye[0];\n// const eyey = eye[1];\n// const eyez = eye[2];\n// const upx = up[0];\n// const upy = up[1];\n// const upz = up[2];\n// let z0 = eyex - target[0];\n// let z1 = eyey - target[1];\n// let z2 = eyez - target[2];\n// let len = z0 * z0 + z1 * z1 + z2 * z2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// z0 *= len;\n// z1 *= len;\n// z2 *= len;\n// }\n\n// let x0 = upy * z2 - upz * z1;\n// let x1 = upz * z0 - upx * z2;\n// let x2 = upx * z1 - upy * z0;\n// len = x0 * x0 + x1 * x1 + x2 * x2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// x0 *= len;\n// x1 *= len;\n// x2 *= len;\n// }\n\n// out[0] = x0;\n// out[1] = x1;\n// out[2] = x2;\n// out[3] = 0;\n// out[4] = z1 * x2 - z2 * x1;\n// out[5] = z2 * x0 - z0 * x2;\n// out[6] = z0 * x1 - z1 * x0;\n// out[7] = 0;\n// out[8] = z0;\n// out[9] = z1;\n// out[10] = z2;\n// out[11] = 0;\n// out[12] = eyex;\n// out[13] = eyey;\n// out[14] = eyez;\n// out[15] = 1;\n// return out;\n// }\n\n/**\n * 正交投影摄像机\n */\nexport class OrthoCamera implements ICamera {\n private _params: OrthoParameters;\n\n /* cache */\n private _projectionMatrixCached: mat4;\n private _viewMatrixCached: mat4;\n private _vp: mat4;\n\n set params(params: OrthoParameters) {\n this._params = { ...params };\n this._projectionMatrixCached = this.forceGetProjectionMatrix();\n this._viewMatrixCached = this.forceGetViewMatrix();\n }\n get params(): OrthoParameters {\n return { ...this._params };\n }\n\n constructor(params: OrthoParameters) {\n this.params = params;\n }\n\n /**\n * 获取视图矩阵\n */\n getViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n return this._viewMatrixCached;\n }\n forceGetViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n const { pos, center, up } = this.params.viewParams;\n lookAt(this._viewMatrixCached, pos, center, up);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._viewMatrixCached;\n }\n\n /**\n * 获取projection矩阵\n */\n getProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n return this._projectionMatrixCached;\n }\n forceGetProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n const { left, top, right, bottom } = this._params;\n // 从0到2000000的Z轴范围,小于0的会被裁剪\n ortho(this._projectionMatrixCached, left, right, bottom, top, 0.0, -2000000.0);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._projectionMatrixCached;\n }\n\n getField() {\n const { fieldRatio = 0.8, fieldDepth, left, right } = this._params;\n return (fieldDepth ?? right - left) * fieldRatio;\n }\n\n getProjectionScale(z: number): number {\n const field = this.getField();\n return field / (field + z);\n }\n\n view(x: number, y: number, z: number): [number, number, number] {\n const outP: vec3 = [0, 0, 0];\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n return outP;\n }\n\n // 部分参考:https://www.mamboleoo.be/articles/how-to-render-3d-in-2d-canvas\n vp(x: number, y: number, z: number): IPointLike {\n const outP: vec3 = [0, 0, 0];\n const { pos } = this._params.viewParams;\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n x = outP[0];\n y = outP[1];\n z = outP[2];\n\n const sizeProjection = this.getProjectionScale(z);\n const xProject = x * sizeProjection + pos[0];\n const yProject = y * sizeProjection + pos[1];\n return {\n x: xProject,\n y: yProject\n };\n }\n}\n"]}
@@ -9,6 +9,12 @@ import { injectable } from "../../../common/inversify-lite";
9
9
  import { AABBBounds } from "@visactor/vutils";
10
10
 
11
11
  let BaseEnvContribution = class {
12
+ type;
13
+ supportsTouchEvents;
14
+ supportsPointerEvents;
15
+ supportsMouseEvents;
16
+ applyStyles;
17
+ supportEvent;
12
18
  configure(service, ...p) {
13
19
  service.env === this.type && service.setActiveEnvContribution(this);
14
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":"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","file":"base-contribution.js","sourcesContent":["import { injectable } from '../../../common/inversify-lite';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n CreateDOMParamsType\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\n\n@injectable()\nexport abstract class BaseEnvContribution implements IEnvContribution {\n type: EnvType;\n\n supportsTouchEvents: boolean;\n supportsPointerEvents: boolean;\n supportsMouseEvents: boolean;\n applyStyles: boolean;\n supportEvent: boolean;\n\n configure(service: IGlobal, ...p: any) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n }\n }\n\n getNativeAABBBounds(dom: any): IBoundsLike {\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n return false;\n }\n\n createDom(params: CreateDOMParamsType): any {\n return null;\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n return false;\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 999;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 999;\n }\n\n abstract loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n\n abstract releaseCanvas(canvas: ICanvasLike | string): void;\n\n abstract getDevicePixelRatio(): number;\n\n abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n abstract getCancelAnimationFrame(): (h: number) => void;\n\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract dispatchEvent(event: any): boolean;\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n abstract release(...params: any): void;\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json());\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer());\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadBlob(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }> {\n const blobPromise = fetch(url).then(data => data.blob());\n return blobPromise\n .then((blob: Blob) => {\n return {\n data: blob,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n getElementTop(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementLeft(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementTopLeft(dom: any, baseWindow?: boolean): { top: number; left: number } {\n return { top: 0, left: 0 };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":"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","file":"base-contribution.js","sourcesContent":["import { injectable } from '../../../common/inversify-lite';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n CreateDOMParamsType\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\n\n@injectable()\nexport abstract class BaseEnvContribution implements IEnvContribution {\n type: EnvType;\n\n supportsTouchEvents: boolean;\n supportsPointerEvents: boolean;\n supportsMouseEvents: boolean;\n applyStyles: boolean;\n supportEvent: boolean;\n\n configure(service: IGlobal, ...p: any) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n }\n }\n\n getNativeAABBBounds(dom: any): IBoundsLike {\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n return false;\n }\n\n createDom(params: CreateDOMParamsType): any {\n return null;\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n return false;\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 999;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 999;\n }\n\n abstract loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n\n abstract releaseCanvas(canvas: ICanvasLike | string): void;\n\n abstract getDevicePixelRatio(): number;\n\n abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n abstract getCancelAnimationFrame(): (h: number) => void;\n\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract dispatchEvent(event: any): boolean;\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n abstract release(...params: any): void;\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json());\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer());\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadBlob(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }> {\n const blobPromise = fetch(url).then(data => data.blob());\n return blobPromise\n .then((blob: Blob) => {\n return {\n data: blob,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n getElementTop(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementLeft(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementTopLeft(dom: any, baseWindow?: boolean): { top: number; left: number } {\n return { top: 0, left: 0 };\n }\n}\n"]}
@@ -13,8 +13,17 @@ import { wrapCanvas } from "../../../canvas/util";
13
13
  import { application } from "../../../application";
14
14
 
15
15
  let CanvasLayerHandlerContribution = class {
16
+ layer;
17
+ canvas;
18
+ context;
19
+ offscreen;
20
+ main;
21
+ window;
22
+ type="static";
23
+ global;
24
+ secondaryHandlers;
16
25
  constructor() {
17
- this.type = "static", this.offscreen = !1, this.global = application.global;
26
+ this.offscreen = !1, this.global = application.global;
18
27
  }
19
28
  setDpr(dpr) {
20
29
  this.canvas.dpr = dpr;
@@ -47,16 +56,17 @@ let CanvasLayerHandlerContribution = class {
47
56
  }
48
57
  resizeView(w, h) {}
49
58
  render(group, params, userParams) {
50
- var _a;
51
59
  if (!this.main) {
52
60
  const windowCanvas = this.window.getContext().getCanvas().nativeCanvas;
53
61
  !windowCanvas || this.canvas.x === windowCanvas.offsetLeft && this.canvas.y === windowCanvas.offsetTop || (this.canvas.x = windowCanvas.offsetLeft,
54
62
  this.canvas.y = windowCanvas.offsetTop, this.canvas.applyPosition());
55
63
  }
56
- params.renderService.render(group, Object.assign(Object.assign({
64
+ params.renderService.render(group, {
57
65
  context: this.context,
58
- clear: null !== (_a = params.background) && void 0 !== _a ? _a : "#ffffff"
59
- }, params), userParams));
66
+ clear: params.background ?? "#ffffff",
67
+ ...params,
68
+ ...userParams
69
+ });
60
70
  }
61
71
  merge(layerHandlers) {
62
72
  layerHandlers.forEach((l => {
@@ -66,13 +76,12 @@ let CanvasLayerHandlerContribution = class {
66
76
  }
67
77
  prepare(dirtyBounds, params) {}
68
78
  drawTo(target, group, params) {
69
- var _a;
70
79
  const context = target.getContext();
71
- params.renderService.render(group, Object.assign(Object.assign({
72
- context: context
73
- }, params), {
74
- clear: params.clear ? null !== (_a = params.background) && void 0 !== _a ? _a : "#fff" : void 0
75
- }));
80
+ params.renderService.render(group, {
81
+ context: context,
82
+ ...params,
83
+ clear: params.clear ? params.background ?? "#fff" : void 0
84
+ });
76
85
  }
77
86
  getContext() {
78
87
  return this.context;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/layerHandler/canvas2d-contribution.ts"],"names":[],"mappings":"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","file":"canvas2d-contribution.js","sourcesContent":["import { inject, injectable } from '../../../common/inversify-lite';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n IWindow,\n ILayerHandlerInitParams,\n ILayerHandlerDrawParams,\n IDrawContext,\n LayerMode\n} from '../../../interface';\nimport type { IBounds } from '@visactor/vutils';\nimport { application } from '../../../application';\n\n@injectable()\nexport class CanvasLayerHandlerContribution implements ILayerHandlerContribution {\n layer: ILayer;\n canvas: ICanvas;\n context: IContext2d;\n offscreen: boolean;\n main: boolean;\n window: IWindow;\n type: LayerMode = 'static';\n global: IGlobal;\n // 所绑定的副layer handler\n secondaryHandlers: ILayerHandlerContribution[];\n\n constructor() {\n this.offscreen = false;\n this.global = application.global;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n this.window = window;\n // 默认图层,那么直接拿window上的上下文和canvas即可\n if (params.main) {\n this.main = true;\n this.context = window.getContext();\n this.canvas = this.context.getCanvas();\n } else {\n this.main = false;\n let nativeCanvas: HTMLElement;\n if (params.canvasId) {\n nativeCanvas = this.global.getElementById(params.canvasId);\n }\n if (!nativeCanvas) {\n nativeCanvas = this.global.createCanvas({\n width: window.width,\n height: window.height\n });\n }\n // 不是main的话,就穿透点击事件\n if (nativeCanvas.style) {\n nativeCanvas.style['pointer-events'] = 'none';\n }\n const windowContext = window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n const canvas = wrapCanvas({\n nativeCanvas,\n width: window.width,\n height: window.height,\n dpr: window.dpr,\n id: params.canvasId,\n canvasControled: true,\n container: window.getContainer(),\n x: windowCanvas.offsetLeft,\n y: windowCanvas.offsetTop\n });\n canvas.applyPosition();\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>): void {\n // 调整位置\n if (!this.main) {\n const windowContext = this.window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n if (windowCanvas && (this.canvas.x !== windowCanvas.offsetLeft || this.canvas.y !== windowCanvas.offsetTop)) {\n this.canvas.x = windowCanvas.offsetLeft;\n this.canvas.y = windowCanvas.offsetTop;\n this.canvas.applyPosition();\n }\n }\n params.renderService.render(group, {\n context: this.context,\n clear: params.background ?? '#ffffff',\n ...params,\n ...userParams\n });\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n layerHandlers.forEach(l => {\n const ctx = l.getContext();\n const canvas = ctx.canvas.nativeCanvas;\n this.context.drawImage(canvas, 0, 0);\n });\n }\n\n prepare(dirtyBounds: IBounds, params: ILayerHandlerDrawParams) {\n return;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n params.renderService.render(group, {\n context,\n ...params,\n clear: params.clear ? params.background ?? '#fff' : undefined\n });\n return;\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n release() {\n this.canvas.release();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/canvas2d-contribution.ts"],"names":[],"mappings":"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","file":"canvas2d-contribution.js","sourcesContent":["import { inject, injectable } from '../../../common/inversify-lite';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n IWindow,\n ILayerHandlerInitParams,\n ILayerHandlerDrawParams,\n IDrawContext,\n LayerMode\n} from '../../../interface';\nimport type { IBounds } from '@visactor/vutils';\nimport { application } from '../../../application';\n\n@injectable()\nexport class CanvasLayerHandlerContribution implements ILayerHandlerContribution {\n layer: ILayer;\n canvas: ICanvas;\n context: IContext2d;\n offscreen: boolean;\n main: boolean;\n window: IWindow;\n type: LayerMode = 'static';\n global: IGlobal;\n // 所绑定的副layer handler\n secondaryHandlers: ILayerHandlerContribution[];\n\n constructor() {\n this.offscreen = false;\n this.global = application.global;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n this.window = window;\n // 默认图层,那么直接拿window上的上下文和canvas即可\n if (params.main) {\n this.main = true;\n this.context = window.getContext();\n this.canvas = this.context.getCanvas();\n } else {\n this.main = false;\n let nativeCanvas: HTMLElement;\n if (params.canvasId) {\n nativeCanvas = this.global.getElementById(params.canvasId);\n }\n if (!nativeCanvas) {\n nativeCanvas = this.global.createCanvas({\n width: window.width,\n height: window.height\n });\n }\n // 不是main的话,就穿透点击事件\n if (nativeCanvas.style) {\n nativeCanvas.style['pointer-events'] = 'none';\n }\n const windowContext = window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n const canvas = wrapCanvas({\n nativeCanvas,\n width: window.width,\n height: window.height,\n dpr: window.dpr,\n id: params.canvasId,\n canvasControled: true,\n container: window.getContainer(),\n x: windowCanvas.offsetLeft,\n y: windowCanvas.offsetTop\n });\n canvas.applyPosition();\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>): void {\n // 调整位置\n if (!this.main) {\n const windowContext = this.window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n if (windowCanvas && (this.canvas.x !== windowCanvas.offsetLeft || this.canvas.y !== windowCanvas.offsetTop)) {\n this.canvas.x = windowCanvas.offsetLeft;\n this.canvas.y = windowCanvas.offsetTop;\n this.canvas.applyPosition();\n }\n }\n params.renderService.render(group, {\n context: this.context,\n clear: params.background ?? '#ffffff',\n ...params,\n ...userParams\n });\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n layerHandlers.forEach(l => {\n const ctx = l.getContext();\n const canvas = ctx.canvas.nativeCanvas;\n this.context.drawImage(canvas, 0, 0);\n });\n }\n\n prepare(dirtyBounds: IBounds, params: ILayerHandlerDrawParams) {\n return;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n params.renderService.render(group, {\n context,\n ...params,\n clear: params.clear ? params.background ?? '#fff' : undefined\n });\n return;\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n release() {\n this.canvas.release();\n }\n}\n"]}
@@ -22,20 +22,20 @@ let EmptyLayerHandlerContribution = class {
22
22
  resize(w, h) {}
23
23
  resizeView(w, h) {}
24
24
  render(group, params, userParams) {
25
- this.mainHandler.render(group, params, Object.assign(Object.assign({}, userParams), {
25
+ this.mainHandler.render(group, params, {
26
+ ...userParams,
26
27
  clear: !1
27
- }));
28
+ });
28
29
  }
29
30
  merge(layerHandlers) {}
30
31
  prepare(dirtyBounds, params) {}
31
32
  drawTo(target, group, params) {
32
- var _a;
33
33
  const context = target.getContext();
34
- params.renderService.render(group, Object.assign(Object.assign({
35
- context: context
36
- }, params), {
37
- clear: params.clear ? null !== (_a = params.background) && void 0 !== _a ? _a : "#fff" : void 0
38
- }));
34
+ params.renderService.render(group, {
35
+ context: context,
36
+ ...params,
37
+ clear: params.clear ? params.background ?? "#fff" : void 0
38
+ });
39
39
  }
40
40
  getContext() {
41
41
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/layerHandler/empty-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAcpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG5C,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAYxC;QACE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,MAA+B;QAClE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,OAAO;IACT,CAAC;IACD,UAAU,CAAC,CAAS,EAAE,CAAS;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,KAAe,EAAE,MAA+B,EAAE,UAAkC;QACzF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,kCAAO,UAAU,KAAE,KAAK,EAAE,KAAK,IAAG,CAAC;QACxE,OAAO;IACT,CAAC;IAED,KAAK,CAAC,aAA0C;QAC9C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,WAAoB,EAAE,MAA+B;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAe,EAAE,KAAe,EAAE,MAA+C;;QACtF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,gCAC/B,OAAO,IACJ,MAAM,KACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,MAAM,CAAC,CAAC,CAAC,SAAS,IAC7D,CAAC;QACH,OAAO;IACT,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO;IACT,CAAC;CACF,CAAA;AAtEY,6BAA6B;IADzC,UAAU,EAAE;;GACA,6BAA6B,CAsEzC;SAtEY,6BAA6B","file":"empty-contribution.js","sourcesContent":["import { inject, injectable } from '../../../common/inversify-lite';\nimport type {\n IGlobal,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n IWindow,\n ILayerHandlerInitParams,\n ILayerHandlerDrawParams,\n IDrawContext,\n LayerMode\n} from '../../../interface';\nimport type { IBounds } from '@visactor/vutils';\nimport { application } from '../../../application';\n\n@injectable()\nexport class EmptyLayerHandlerContribution implements ILayerHandlerContribution {\n declare layer: ILayer;\n declare canvas: null;\n declare context: null;\n declare offscreen: boolean;\n declare main: boolean;\n declare window: IWindow;\n declare type: LayerMode;\n // 所依赖的主layer handler\n declare mainHandler: ILayerHandlerContribution;\n declare global: IGlobal;\n\n constructor() {\n this.offscreen = false;\n this.type = 'virtual';\n this.global = application.global;\n }\n\n setDpr(dpr: number) {\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n this.window = window;\n if (params.main) {\n throw new Error('virtual layer不能作为main layer');\n }\n this.main = false;\n this.canvas = null;\n this.context = null;\n }\n\n resize(w: number, h: number) {\n return;\n }\n resizeView(w: number, h: number) {\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>): void {\n this.mainHandler.render(group, params, { ...userParams, clear: false });\n return;\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n return;\n }\n\n prepare(dirtyBounds: IBounds, params: ILayerHandlerDrawParams) {\n return;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n params.renderService.render(group, {\n context,\n ...params,\n clear: params.clear ? params.background ?? '#fff' : undefined\n });\n return;\n }\n\n getContext(): null {\n return null;\n }\n\n release() {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/empty-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAcpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG5C,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAYxC;QACE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,MAA+B;QAClE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,OAAO;IACT,CAAC;IACD,UAAU,CAAC,CAAS,EAAE,CAAS;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,KAAe,EAAE,MAA+B,EAAE,UAAkC;QACzF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,KAAK,CAAC,aAA0C;QAC9C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,WAAoB,EAAE,MAA+B;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAe,EAAE,KAAe,EAAE,MAA+C;QACtF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE;YACjC,OAAO;YACP,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO;IACT,CAAC;CACF,CAAA;AAtEY,6BAA6B;IADzC,UAAU,EAAE;;GACA,6BAA6B,CAsEzC;SAtEY,6BAA6B","file":"empty-contribution.js","sourcesContent":["import { inject, injectable } from '../../../common/inversify-lite';\nimport type {\n IGlobal,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n IWindow,\n ILayerHandlerInitParams,\n ILayerHandlerDrawParams,\n IDrawContext,\n LayerMode\n} from '../../../interface';\nimport type { IBounds } from '@visactor/vutils';\nimport { application } from '../../../application';\n\n@injectable()\nexport class EmptyLayerHandlerContribution implements ILayerHandlerContribution {\n declare layer: ILayer;\n declare canvas: null;\n declare context: null;\n declare offscreen: boolean;\n declare main: boolean;\n declare window: IWindow;\n declare type: LayerMode;\n // 所依赖的主layer handler\n declare mainHandler: ILayerHandlerContribution;\n declare global: IGlobal;\n\n constructor() {\n this.offscreen = false;\n this.type = 'virtual';\n this.global = application.global;\n }\n\n setDpr(dpr: number) {\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n this.window = window;\n if (params.main) {\n throw new Error('virtual layer不能作为main layer');\n }\n this.main = false;\n this.canvas = null;\n this.context = null;\n }\n\n resize(w: number, h: number) {\n return;\n }\n resizeView(w: number, h: number) {\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>): void {\n this.mainHandler.render(group, params, { ...userParams, clear: false });\n return;\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n return;\n }\n\n prepare(dirtyBounds: IBounds, params: ILayerHandlerDrawParams) {\n return;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n params.renderService.render(group, {\n context,\n ...params,\n clear: params.clear ? params.background ?? '#fff' : undefined\n });\n return;\n }\n\n getContext(): null {\n return null;\n }\n\n release() {\n return;\n }\n}\n"]}
@@ -41,14 +41,13 @@ let OffscreenLayerHandlerContribution = class {
41
41
  this.canvas.resize(w, h);
42
42
  }
43
43
  render(group, params) {
44
- var _a;
45
- params.renderService.render(group, Object.assign(Object.assign({
44
+ params.renderService.render(group, {
46
45
  context: this.context,
47
46
  viewBox: params.stage.window.getViewBox(),
48
- transMatrix: params.stage.window.getViewBoxTransform()
49
- }, params), {
50
- clear: null !== (_a = params.background) && void 0 !== _a ? _a : "#ffffff"
51
- }));
47
+ transMatrix: params.stage.window.getViewBoxTransform(),
48
+ ...params,
49
+ clear: params.background ?? "#ffffff"
50
+ });
52
51
  }
53
52
  prepare(dirtyBounds, params) {}
54
53
  release() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/layerHandler/offscreen2d-contribution.ts"],"names":[],"mappings":"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","file":"offscreen2d-contribution.js","sourcesContent":["import { inject, injectable } from '../../../common/inversify-lite';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n ILayerHandlerInitParams,\n IWindow,\n ILayerHandlerDrawParams,\n LayerMode\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { application } from '../../../application';\n\n@injectable()\nexport class OffscreenLayerHandlerContribution implements ILayerHandlerContribution {\n declare layer: ILayer;\n declare canvas: ICanvas;\n declare context: IContext2d;\n declare offscreen: boolean;\n declare type: LayerMode;\n // 所绑定的副layer handler\n declare secondaryHandlers: ILayerHandlerContribution[];\n declare global: IGlobal;\n\n constructor() {\n this.offscreen = true;\n this.type = 'dynamic';\n this.global = application.global;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n const nativeCanvas = this.global.createOffscreenCanvas({\n width: params.width,\n height: params.height,\n dpr: window.dpr\n });\n const canvas = wrapCanvas({\n nativeCanvas,\n width: params.width,\n height: params.height,\n dpr: window.dpr,\n canvasControled: true\n });\n\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams): void {\n params.renderService.render(group, {\n context: this.context,\n viewBox: params.stage.window.getViewBox(),\n transMatrix: params.stage.window.getViewBoxTransform(),\n ...params,\n clear: params.background ?? '#ffffff'\n });\n }\n\n prepare(dirtyBounds: IBoundsLike, params: ILayerHandlerDrawParams) {\n return;\n }\n\n release() {\n this.canvas.release();\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n const targetDpr = target.dpr;\n\n const { viewBox } = params;\n const x = viewBox.x1;\n const y = viewBox.y1;\n const width = viewBox.width();\n const height = viewBox.height();\n // 这个context可能是外部的,不要使用内置的状态,直接用原生的context\n context.nativeContext.save();\n context.nativeContext.setTransform(targetDpr, 0, 0, targetDpr, 0, 0);\n if (params.clear) {\n context.clearRect(x, y, width, height);\n }\n context.drawImage(this.canvas.nativeCanvas, 0, 0, this.canvas.width, this.canvas.height, x, y, width, height);\n context.nativeContext.restore();\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/offscreen2d-contribution.ts"],"names":[],"mappings":"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","file":"offscreen2d-contribution.js","sourcesContent":["import { inject, injectable } from '../../../common/inversify-lite';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n ILayerHandlerInitParams,\n IWindow,\n ILayerHandlerDrawParams,\n LayerMode\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { application } from '../../../application';\n\n@injectable()\nexport class OffscreenLayerHandlerContribution implements ILayerHandlerContribution {\n declare layer: ILayer;\n declare canvas: ICanvas;\n declare context: IContext2d;\n declare offscreen: boolean;\n declare type: LayerMode;\n // 所绑定的副layer handler\n declare secondaryHandlers: ILayerHandlerContribution[];\n declare global: IGlobal;\n\n constructor() {\n this.offscreen = true;\n this.type = 'dynamic';\n this.global = application.global;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n const nativeCanvas = this.global.createOffscreenCanvas({\n width: params.width,\n height: params.height,\n dpr: window.dpr\n });\n const canvas = wrapCanvas({\n nativeCanvas,\n width: params.width,\n height: params.height,\n dpr: window.dpr,\n canvasControled: true\n });\n\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams): void {\n params.renderService.render(group, {\n context: this.context,\n viewBox: params.stage.window.getViewBox(),\n transMatrix: params.stage.window.getViewBoxTransform(),\n ...params,\n clear: params.background ?? '#ffffff'\n });\n }\n\n prepare(dirtyBounds: IBoundsLike, params: ILayerHandlerDrawParams) {\n return;\n }\n\n release() {\n this.canvas.release();\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n const targetDpr = target.dpr;\n\n const { viewBox } = params;\n const x = viewBox.x1;\n const y = viewBox.y1;\n const width = viewBox.width();\n const height = viewBox.height();\n // 这个context可能是外部的,不要使用内置的状态,直接用原生的context\n context.nativeContext.save();\n context.nativeContext.setTransform(targetDpr, 0, 0, targetDpr, 0, 0);\n if (params.clear) {\n context.clearRect(x, y, width, height);\n }\n context.drawImage(this.canvas.nativeCanvas, 0, 0, this.canvas.width, this.canvas.height, x, y, width, height);\n context.nativeContext.restore();\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n return;\n }\n}\n"]}
@@ -11,6 +11,9 @@ import { DefaultTextAttribute, DefaultTextStyle } from "../../../graphic/config"
11
11
  import { testLetter } from "../../../graphic/richtext/utils";
12
12
 
13
13
  let ATextMeasure = class {
14
+ release;
15
+ canvas;
16
+ context;
14
17
  configure(service, env) {
15
18
  this.canvas = service.canvas, this.context = service.context, service.bindTextMeasure(this);
16
19
  }
@@ -28,15 +31,13 @@ let ATextMeasure = class {
28
31
  };
29
32
  }
30
33
  measureTextPixelHeight(text, options) {
31
- var _a;
32
- if (!this.context) return null !== (_a = options.fontSize) && void 0 !== _a ? _a : DefaultTextStyle.fontSize;
34
+ if (!this.context) return options.fontSize ?? DefaultTextStyle.fontSize;
33
35
  this.context.setTextStyleWithoutAlignBaseline(options);
34
36
  const textMeasure = this.context.measureText(text);
35
37
  return Math.abs(textMeasure.actualBoundingBoxAscent - textMeasure.actualBoundingBoxDescent);
36
38
  }
37
39
  measureTextBoundHieght(text, options) {
38
- var _a;
39
- if (!this.context) return null !== (_a = options.fontSize) && void 0 !== _a ? _a : DefaultTextStyle.fontSize;
40
+ if (!this.context) return options.fontSize ?? DefaultTextStyle.fontSize;
40
41
  this.context.setTextStyleWithoutAlignBaseline(options);
41
42
  const textMeasure = this.context.measureText(text);
42
43
  return Math.abs(textMeasure.fontBoundingBoxAscent - textMeasure.fontBoundingBoxDescent);
@@ -71,10 +72,11 @@ let ATextMeasure = class {
71
72
  index -= length, index !== clipedData.str.length - 1 && (clipedData.str = clipedData.str.substring(0, index),
72
73
  clipedData.width = this.measureTextWidth(clipedData.str, options));
73
74
  }
74
- out.push(Object.assign(Object.assign({}, verticalList[i]), {
75
+ out.push({
76
+ ...verticalList[i],
75
77
  text: clipedData.str,
76
78
  width: clipedData.width
77
- })), length += clipedData.width;
79
+ }), length += clipedData.width;
78
80
  }
79
81
  return {
80
82
  verticalList: out,
@@ -230,9 +232,10 @@ let ATextMeasure = class {
230
232
  revertVerticalList(verticalList) {
231
233
  return verticalList.reverse().map((l => {
232
234
  const t = l.text.split("").reverse().join("");
233
- return Object.assign(Object.assign({}, l), {
235
+ return {
236
+ ...l,
234
237
  text: t
235
- });
238
+ };
236
239
  }));
237
240
  }
238
241
  clipTextWithSuffix(text, options, width, suffix, wordBreak, position, forceSuffix = !1) {