@visactor/vrender 0.15.0-alpha.2 → 0.15.0-alpha.21

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 (966) hide show
  1. package/cjs/allocator/allocator-modules.js.map +1 -1
  2. package/cjs/allocator/canvas-allocate.js.map +1 -1
  3. package/cjs/allocator/constants.js.map +1 -1
  4. package/cjs/allocator/graphic-allocate.js.map +1 -1
  5. package/cjs/allocator/matrix-allocate.js.map +1 -1
  6. package/cjs/allocator/point-allocate.js.map +1 -1
  7. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  8. package/cjs/animate/Ticker/index.js.map +1 -1
  9. package/cjs/animate/animate.d.ts +1 -0
  10. package/cjs/animate/animate.js +3 -0
  11. package/cjs/animate/animate.js.map +1 -1
  12. package/cjs/animate/config.js.map +1 -1
  13. package/cjs/animate/custom-animate.js.map +1 -1
  14. package/cjs/animate/default-ticker.js +1 -1
  15. package/cjs/animate/default-ticker.js.map +1 -1
  16. package/cjs/animate/easing.js.map +1 -1
  17. package/cjs/animate/index.js.map +1 -1
  18. package/cjs/animate/morphing.js.map +1 -1
  19. package/cjs/animate/timeline.d.ts +1 -1
  20. package/cjs/animate/timeline.js +2 -2
  21. package/cjs/animate/timeline.js.map +1 -1
  22. package/cjs/application.js.map +1 -1
  23. package/cjs/canvas/constants.js.map +1 -1
  24. package/cjs/canvas/contributions/browser/canvas.js +1 -1
  25. package/cjs/canvas/contributions/browser/canvas.js.map +1 -1
  26. package/cjs/canvas/contributions/browser/conical-gradient.js.map +1 -1
  27. package/cjs/canvas/contributions/browser/context.d.ts +1 -0
  28. package/cjs/canvas/contributions/browser/context.js.map +1 -1
  29. package/cjs/canvas/contributions/browser/index.js.map +1 -1
  30. package/cjs/canvas/contributions/browser/modules.js.map +1 -1
  31. package/cjs/canvas/contributions/feishu/canvas.js.map +1 -1
  32. package/cjs/canvas/contributions/feishu/context.js.map +1 -1
  33. package/cjs/canvas/contributions/feishu/index.js.map +1 -1
  34. package/cjs/canvas/contributions/feishu/modules.js.map +1 -1
  35. package/cjs/canvas/contributions/lynx/canvas.js.map +1 -1
  36. package/cjs/canvas/contributions/lynx/context.js.map +1 -1
  37. package/cjs/canvas/contributions/lynx/index.js.map +1 -1
  38. package/cjs/canvas/contributions/lynx/modules.js.map +1 -1
  39. package/cjs/canvas/contributions/modules.js.map +1 -1
  40. package/cjs/canvas/contributions/node/canvas.js.map +1 -1
  41. package/cjs/canvas/contributions/node/context.js.map +1 -1
  42. package/cjs/canvas/contributions/node/index.js.map +1 -1
  43. package/cjs/canvas/contributions/node/modules.js.map +1 -1
  44. package/cjs/canvas/contributions/taro/canvas.js.map +1 -1
  45. package/cjs/canvas/contributions/taro/context.js.map +1 -1
  46. package/cjs/canvas/contributions/taro/index.js.map +1 -1
  47. package/cjs/canvas/contributions/taro/modules.js.map +1 -1
  48. package/cjs/canvas/contributions/tt/canvas.js.map +1 -1
  49. package/cjs/canvas/contributions/tt/context.js.map +1 -1
  50. package/cjs/canvas/contributions/tt/index.js.map +1 -1
  51. package/cjs/canvas/contributions/tt/modules.js.map +1 -1
  52. package/cjs/canvas/contributions/wx/canvas.js.map +1 -1
  53. package/cjs/canvas/contributions/wx/context.js.map +1 -1
  54. package/cjs/canvas/contributions/wx/index.js.map +1 -1
  55. package/cjs/canvas/contributions/wx/modules.js.map +1 -1
  56. package/cjs/canvas/empty-context.js.map +1 -1
  57. package/cjs/canvas/index.js.map +1 -1
  58. package/cjs/canvas/util.js.map +1 -1
  59. package/cjs/color-string/colorName.js.map +1 -1
  60. package/cjs/color-string/index.js.map +1 -1
  61. package/cjs/color-string/interpolate.js.map +1 -1
  62. package/cjs/common/bezier-utils.js.map +1 -1
  63. package/cjs/common/bounds-context.js.map +1 -1
  64. package/cjs/common/canvas-utils.js.map +1 -1
  65. package/cjs/common/contribution-provider.d.ts +1 -0
  66. package/cjs/common/contribution-provider.js +7 -2
  67. package/cjs/common/contribution-provider.js.map +1 -1
  68. package/cjs/common/custom-path2d.js.map +1 -1
  69. package/cjs/common/enums.d.ts +4 -2
  70. package/cjs/common/enums.js +3 -2
  71. package/cjs/common/enums.js.map +1 -1
  72. package/cjs/common/generator.js.map +1 -1
  73. package/cjs/common/matrix.js.map +1 -1
  74. package/cjs/common/morphing-utils.js.map +1 -1
  75. package/cjs/common/path-svg.js.map +1 -1
  76. package/cjs/common/polygon.js.map +1 -1
  77. package/cjs/common/render-area.js.map +1 -1
  78. package/cjs/common/render-command-list.js.map +1 -1
  79. package/cjs/common/render-curve.js.map +1 -1
  80. package/cjs/common/seg-context.js.map +1 -1
  81. package/cjs/common/segment/basis.js.map +1 -1
  82. package/cjs/common/segment/common.js.map +1 -1
  83. package/cjs/common/segment/curve/arc.js.map +1 -1
  84. package/cjs/common/segment/curve/base.js.map +1 -1
  85. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  86. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  87. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  88. package/cjs/common/segment/curve/line.js.map +1 -1
  89. package/cjs/common/segment/curve/move.js.map +1 -1
  90. package/cjs/common/segment/curve/path.js.map +1 -1
  91. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  92. package/cjs/common/segment/index.js.map +1 -1
  93. package/cjs/common/segment/linear-closed.js.map +1 -1
  94. package/cjs/common/segment/linear.js.map +1 -1
  95. package/cjs/common/segment/monotone.js.map +1 -1
  96. package/cjs/common/segment/step.js.map +1 -1
  97. package/cjs/common/shape/arc.js.map +1 -1
  98. package/cjs/common/shape/rect.js.map +1 -1
  99. package/cjs/common/sort.js.map +1 -1
  100. package/cjs/common/split-path.js.map +1 -1
  101. package/cjs/common/store.js.map +1 -1
  102. package/cjs/common/text.js.map +1 -1
  103. package/cjs/common/utils.js.map +1 -1
  104. package/cjs/constants.js.map +1 -1
  105. package/cjs/container.js.map +1 -1
  106. package/cjs/core/application.js.map +1 -1
  107. package/cjs/core/camera.js.map +1 -1
  108. package/cjs/core/constants.js.map +1 -1
  109. package/cjs/core/contributions/env/base-contribution.d.ts +6 -0
  110. package/cjs/core/contributions/env/base-contribution.js +12 -0
  111. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  112. package/cjs/core/contributions/env/browser-contribution.d.ts +6 -0
  113. package/cjs/core/contributions/env/browser-contribution.js +19 -0
  114. package/cjs/core/contributions/env/browser-contribution.js.map +1 -1
  115. package/cjs/core/contributions/env/feishu-contribution.js.map +1 -1
  116. package/cjs/core/contributions/env/lynx-contribution.js.map +1 -1
  117. package/cjs/core/contributions/env/modules.js.map +1 -1
  118. package/cjs/core/contributions/env/node-contribution.js.map +1 -1
  119. package/cjs/core/contributions/env/taro-contribution.js.map +1 -1
  120. package/cjs/core/contributions/env/wx-contribution.d.ts +1 -0
  121. package/cjs/core/contributions/env/wx-contribution.js +5 -3
  122. package/cjs/core/contributions/env/wx-contribution.js.map +1 -1
  123. package/cjs/core/contributions/index.js.map +1 -1
  124. package/cjs/core/contributions/layerHandler/canvas2d-contribution.d.ts +1 -0
  125. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +3 -0
  126. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  127. package/cjs/core/contributions/layerHandler/modules.js.map +1 -1
  128. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.d.ts +1 -0
  129. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +3 -0
  130. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  131. package/cjs/core/contributions/modules.js.map +1 -1
  132. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  133. package/cjs/core/contributions/textMeasure/layout.js +1 -1
  134. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  135. package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
  136. package/cjs/core/contributions/textMeasure/textMeasure-contribution.js.map +1 -1
  137. package/cjs/core/contributions/window/base-contribution.d.ts +11 -5
  138. package/cjs/core/contributions/window/base-contribution.js +10 -0
  139. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  140. package/cjs/core/contributions/window/browser-contribution.d.ts +11 -0
  141. package/cjs/core/contributions/window/browser-contribution.js +33 -2
  142. package/cjs/core/contributions/window/browser-contribution.js.map +1 -1
  143. package/cjs/core/contributions/window/feishu-contribution.js.map +1 -1
  144. package/cjs/core/contributions/window/lynx-contribution.js.map +1 -1
  145. package/cjs/core/contributions/window/modules.js.map +1 -1
  146. package/cjs/core/contributions/window/native-contribution.js.map +1 -1
  147. package/cjs/core/contributions/window/node-contribution.js.map +1 -1
  148. package/cjs/core/contributions/window/taro-contribution.js.map +1 -1
  149. package/cjs/core/contributions/window/wx-contribution.js.map +1 -1
  150. package/cjs/core/core-modules.js.map +1 -1
  151. package/cjs/core/global-module.js.map +1 -1
  152. package/cjs/core/global.d.ts +6 -0
  153. package/cjs/core/global.js +9 -0
  154. package/cjs/core/global.js.map +1 -1
  155. package/cjs/core/graphic-utils.d.ts +2 -0
  156. package/cjs/core/graphic-utils.js +13 -0
  157. package/cjs/core/graphic-utils.js.map +1 -1
  158. package/cjs/core/index.js.map +1 -1
  159. package/cjs/core/layer-service.js.map +1 -1
  160. package/cjs/core/layer.js +1 -1
  161. package/cjs/core/layer.js.map +1 -1
  162. package/cjs/core/light.js.map +1 -1
  163. package/cjs/core/stage.d.ts +7 -2
  164. package/cjs/core/stage.js +27 -12
  165. package/cjs/core/stage.js.map +1 -1
  166. package/cjs/core/window.d.ts +6 -0
  167. package/cjs/core/window.js +10 -1
  168. package/cjs/core/window.js.map +1 -1
  169. package/cjs/create.js.map +1 -1
  170. package/cjs/event/constant.js.map +1 -1
  171. package/cjs/event/event-manager.js +13 -11
  172. package/cjs/event/event-manager.js.map +1 -1
  173. package/cjs/event/event-system.js.map +1 -1
  174. package/cjs/event/event-target.js.map +1 -1
  175. package/cjs/event/extension/drag.js.map +1 -1
  176. package/cjs/event/extension/gesture.js.map +1 -1
  177. package/cjs/event/extension/index.js.map +1 -1
  178. package/cjs/event/federated-event/base-event.js.map +1 -1
  179. package/cjs/event/federated-event/custom-event.js.map +1 -1
  180. package/cjs/event/federated-event/index.js.map +1 -1
  181. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  182. package/cjs/event/federated-event/pointer-event.d.ts +1 -0
  183. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  184. package/cjs/event/federated-event/wheel-event.js.map +1 -1
  185. package/cjs/event/index.js.map +1 -1
  186. package/cjs/event/util.js.map +1 -1
  187. package/cjs/export.js.map +1 -1
  188. package/cjs/graphic/arc.d.ts +7 -0
  189. package/cjs/graphic/arc.js +3 -1
  190. package/cjs/graphic/arc.js.map +1 -1
  191. package/cjs/graphic/arc3d.js.map +1 -1
  192. package/cjs/graphic/area.js.map +1 -1
  193. package/cjs/graphic/bounds.js.map +1 -1
  194. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  195. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  196. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  197. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  198. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  199. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  200. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  201. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  202. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  203. package/cjs/graphic/builtin-symbol/index.js.map +1 -1
  204. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  205. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  206. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  207. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  208. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  209. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  210. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  211. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  212. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  213. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  214. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  215. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  216. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  217. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  218. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  219. package/cjs/graphic/circle.js.map +1 -1
  220. package/cjs/graphic/config.js +9 -4
  221. package/cjs/graphic/config.js.map +1 -1
  222. package/cjs/graphic/constants.js.map +1 -1
  223. package/cjs/graphic/glyph.js.map +1 -1
  224. package/cjs/graphic/graphic-creator.js.map +1 -1
  225. package/cjs/graphic/graphic-service/arc-contribution.js.map +1 -1
  226. package/cjs/graphic/graphic-service/area-contribution.js.map +1 -1
  227. package/cjs/graphic/graphic-service/circle-contribution.js.map +1 -1
  228. package/cjs/graphic/graphic-service/common-contribution.js.map +1 -1
  229. package/cjs/graphic/graphic-service/default-theme.js.map +1 -1
  230. package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
  231. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  232. package/cjs/graphic/graphic-service/path-contribution.js.map +1 -1
  233. package/cjs/graphic/graphic-service/rect-contribution.js.map +1 -1
  234. package/cjs/graphic/graphic-service/symbol-contribution.js.map +1 -1
  235. package/cjs/graphic/graphic.d.ts +4 -1
  236. package/cjs/graphic/graphic.js +58 -23
  237. package/cjs/graphic/graphic.js.map +1 -1
  238. package/cjs/graphic/group.js +1 -1
  239. package/cjs/graphic/group.js.map +1 -1
  240. package/cjs/graphic/image.js.map +1 -1
  241. package/cjs/graphic/index.js.map +1 -1
  242. package/cjs/graphic/line.js.map +1 -1
  243. package/cjs/graphic/node-tree.js.map +1 -1
  244. package/cjs/graphic/path.js.map +1 -1
  245. package/cjs/graphic/polygon.js.map +1 -1
  246. package/cjs/graphic/pyramid3d.js.map +1 -1
  247. package/cjs/graphic/rect.js.map +1 -1
  248. package/cjs/graphic/rect3d.js.map +1 -1
  249. package/cjs/graphic/richtext/frame.js.map +1 -1
  250. package/cjs/graphic/richtext/icon.js.map +1 -1
  251. package/cjs/graphic/richtext/line.js.map +1 -1
  252. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  253. package/cjs/graphic/richtext/utils.js.map +1 -1
  254. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  255. package/cjs/graphic/richtext.js.map +1 -1
  256. package/cjs/graphic/shadow-root.js.map +1 -1
  257. package/cjs/graphic/symbol.js.map +1 -1
  258. package/cjs/graphic/text.js +35 -25
  259. package/cjs/graphic/text.js.map +1 -1
  260. package/cjs/graphic/theme.js.map +1 -1
  261. package/cjs/graphic/tools.js.map +1 -1
  262. package/cjs/graphic/wrap-text.js +16 -10
  263. package/cjs/graphic/wrap-text.js.map +1 -1
  264. package/cjs/index.d.ts +2 -1
  265. package/cjs/index.js +2 -2
  266. package/cjs/index.js.map +1 -1
  267. package/cjs/interface/allocator.js.map +1 -1
  268. package/cjs/interface/animate.d.ts +3 -1
  269. package/cjs/interface/animate.js.map +1 -1
  270. package/cjs/interface/camera.js.map +1 -1
  271. package/cjs/interface/canvas.js.map +1 -1
  272. package/cjs/interface/color.js.map +1 -1
  273. package/cjs/interface/common.js.map +1 -1
  274. package/cjs/interface/context.js.map +1 -1
  275. package/cjs/interface/contribution.js.map +1 -1
  276. package/cjs/interface/core.d.ts +1 -0
  277. package/cjs/interface/core.js.map +1 -1
  278. package/cjs/interface/creator.js.map +1 -1
  279. package/cjs/interface/curve.js.map +1 -1
  280. package/cjs/interface/event.js.map +1 -1
  281. package/cjs/interface/global.d.ts +12 -0
  282. package/cjs/interface/global.js.map +1 -1
  283. package/cjs/interface/graphic/arc.d.ts +2 -0
  284. package/cjs/interface/graphic/arc.js.map +1 -1
  285. package/cjs/interface/graphic/arc3d.js.map +1 -1
  286. package/cjs/interface/graphic/area.js.map +1 -1
  287. package/cjs/interface/graphic/bounds.js.map +1 -1
  288. package/cjs/interface/graphic/circle.js.map +1 -1
  289. package/cjs/interface/graphic/creator.js.map +1 -1
  290. package/cjs/interface/graphic/dynamic-path.js.map +1 -1
  291. package/cjs/interface/graphic/ellipse.js.map +1 -1
  292. package/cjs/interface/graphic/face3d.js.map +1 -1
  293. package/cjs/interface/graphic/glyph.js.map +1 -1
  294. package/cjs/interface/graphic/group.js.map +1 -1
  295. package/cjs/interface/graphic/image.d.ts +1 -0
  296. package/cjs/interface/graphic/image.js.map +1 -1
  297. package/cjs/interface/graphic/index.js.map +1 -1
  298. package/cjs/interface/graphic/isogon.js.map +1 -1
  299. package/cjs/interface/graphic/line.d.ts +1 -0
  300. package/cjs/interface/graphic/line.js.map +1 -1
  301. package/cjs/interface/graphic/path.js.map +1 -1
  302. package/cjs/interface/graphic/polygon.js.map +1 -1
  303. package/cjs/interface/graphic/polyline.js.map +1 -1
  304. package/cjs/interface/graphic/pyramid3d.js.map +1 -1
  305. package/cjs/interface/graphic/rect.js.map +1 -1
  306. package/cjs/interface/graphic/rect3d.js.map +1 -1
  307. package/cjs/interface/graphic/richText.js.map +1 -1
  308. package/cjs/interface/graphic/shadow-root.js.map +1 -1
  309. package/cjs/interface/graphic/svg.js.map +1 -1
  310. package/cjs/interface/graphic/symbol.js.map +1 -1
  311. package/cjs/interface/graphic/text.d.ts +1 -0
  312. package/cjs/interface/graphic/text.js.map +1 -1
  313. package/cjs/interface/graphic/theme.js.map +1 -1
  314. package/cjs/interface/graphic/util.js.map +1 -1
  315. package/cjs/interface/graphic-service.js.map +1 -1
  316. package/cjs/interface/graphic-utils.js.map +1 -1
  317. package/cjs/interface/graphic.d.ts +15 -3
  318. package/cjs/interface/graphic.js.map +1 -1
  319. package/cjs/interface/index.js.map +1 -1
  320. package/cjs/interface/layer.d.ts +1 -0
  321. package/cjs/interface/layer.js.map +1 -1
  322. package/cjs/interface/light.js.map +1 -1
  323. package/cjs/interface/loader.js.map +1 -1
  324. package/cjs/interface/matrix.js.map +1 -1
  325. package/cjs/interface/node-tree.js.map +1 -1
  326. package/cjs/interface/path.js.map +1 -1
  327. package/cjs/interface/picker.d.ts +9 -1
  328. package/cjs/interface/picker.js.map +1 -1
  329. package/cjs/interface/plugin.js.map +1 -1
  330. package/cjs/interface/render.js.map +1 -1
  331. package/cjs/interface/stage.d.ts +7 -2
  332. package/cjs/interface/stage.js.map +1 -1
  333. package/cjs/interface/sync-hook.js.map +1 -1
  334. package/cjs/interface/text.js.map +1 -1
  335. package/cjs/interface/theme-service.js.map +1 -1
  336. package/cjs/interface/util.js.map +1 -1
  337. package/cjs/interface/window.d.ts +12 -0
  338. package/cjs/interface/window.js.map +1 -1
  339. package/cjs/jsx/graphicType.d.ts +96 -60
  340. package/cjs/jsx/graphicType.js.map +1 -1
  341. package/cjs/jsx/index.js.map +1 -1
  342. package/cjs/jsx/jsx-classic.d.ts +2 -4
  343. package/cjs/jsx/jsx-classic.js +7 -18
  344. package/cjs/jsx/jsx-classic.js.map +1 -1
  345. package/cjs/kits/env.js.map +1 -1
  346. package/cjs/kits/index.js.map +1 -1
  347. package/cjs/modules.js.map +1 -1
  348. package/cjs/picker/canvas-picker-service.d.ts +2 -2
  349. package/cjs/picker/canvas-picker-service.js +20 -3
  350. package/cjs/picker/canvas-picker-service.js.map +1 -1
  351. package/cjs/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
  352. package/cjs/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
  353. package/cjs/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  354. package/cjs/picker/contributions/canvas-picker/base-picker.js.map +1 -1
  355. package/cjs/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
  356. package/cjs/picker/contributions/canvas-picker/glyph-picker.js +1 -1
  357. package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  358. package/cjs/picker/contributions/canvas-picker/group-picker.d.ts +7 -0
  359. package/cjs/picker/contributions/canvas-picker/group-picker.js +26 -0
  360. package/cjs/picker/contributions/canvas-picker/group-picker.js.map +1 -0
  361. package/cjs/picker/contributions/canvas-picker/image-picker.js.map +1 -1
  362. package/cjs/picker/contributions/canvas-picker/line-picker.js.map +1 -1
  363. package/cjs/picker/contributions/canvas-picker/module.js +3 -1
  364. package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
  365. package/cjs/picker/contributions/canvas-picker/path-picker.js.map +1 -1
  366. package/cjs/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
  367. package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
  368. package/cjs/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
  369. package/cjs/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
  370. package/cjs/picker/contributions/canvas-picker/richtext-picker.js.map +1 -1
  371. package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  372. package/cjs/picker/contributions/canvas-picker/text-picker.js.map +1 -1
  373. package/cjs/picker/contributions/constants.d.ts +1 -0
  374. package/cjs/picker/contributions/constants.js +9 -8
  375. package/cjs/picker/contributions/constants.js.map +1 -1
  376. package/cjs/picker/contributions/math-picker/arc-picker.js.map +1 -1
  377. package/cjs/picker/contributions/math-picker/area-picker.js.map +1 -1
  378. package/cjs/picker/contributions/math-picker/circle-picker.js.map +1 -1
  379. package/cjs/picker/contributions/math-picker/glyph-picker.js +1 -1
  380. package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  381. package/cjs/picker/contributions/math-picker/line-picker.js.map +1 -1
  382. package/cjs/picker/contributions/math-picker/module.js.map +1 -1
  383. package/cjs/picker/contributions/math-picker/path-picker.js.map +1 -1
  384. package/cjs/picker/contributions/math-picker/polygon-picker.js.map +1 -1
  385. package/cjs/picker/contributions/math-picker/rect-picker.js.map +1 -1
  386. package/cjs/picker/contributions/math-picker/symbol-picker.js.map +1 -1
  387. package/cjs/picker/contributions/math-picker/text-picker.js.map +1 -1
  388. package/cjs/picker/contributions/modules.js.map +1 -1
  389. package/cjs/picker/contributions/old/circle-picker.js.map +1 -1
  390. package/cjs/picker/contributions/old/rect-picker.js.map +1 -1
  391. package/cjs/picker/global-picker-service.d.ts +1 -1
  392. package/cjs/picker/global-picker-service.js +12 -5
  393. package/cjs/picker/global-picker-service.js.map +1 -1
  394. package/cjs/picker/index.js.map +1 -1
  395. package/cjs/picker/math-picker-service.d.ts +2 -2
  396. package/cjs/picker/math-picker-service.js +1 -1
  397. package/cjs/picker/math-picker-service.js.map +1 -1
  398. package/cjs/picker/pick-interceptor.d.ts +12 -0
  399. package/cjs/picker/pick-interceptor.js +30 -2
  400. package/cjs/picker/pick-interceptor.js.map +1 -1
  401. package/cjs/picker/pick-modules.js +2 -0
  402. package/cjs/picker/pick-modules.js.map +1 -1
  403. package/cjs/picker/picker-service.d.ts +1 -1
  404. package/cjs/picker/picker-service.js +15 -6
  405. package/cjs/picker/picker-service.js.map +1 -1
  406. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  407. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  408. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  409. package/cjs/plugins/builtin-plugin/flex-layout-plugin.d.ts +2 -0
  410. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +42 -21
  411. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  412. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +8 -4
  413. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  414. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  415. package/cjs/plugins/builtin-plugin/poptip-plugin.js.map +1 -1
  416. package/cjs/plugins/constants.js.map +1 -1
  417. package/cjs/plugins/plugin-modules.js +1 -1
  418. package/cjs/plugins/plugin-modules.js.map +1 -1
  419. package/cjs/plugins/plugin-service.js.map +1 -1
  420. package/cjs/render/contributions/modules.js.map +1 -1
  421. package/cjs/render/contributions/render/arc-render.js +9 -2
  422. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  423. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  424. package/cjs/render/contributions/render/area-render.js +32 -22
  425. package/cjs/render/contributions/render/area-render.js.map +1 -1
  426. package/cjs/render/contributions/render/base-render.js.map +1 -1
  427. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  428. package/cjs/render/contributions/render/clear-screen.js.map +1 -1
  429. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +9 -7
  430. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  431. package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  432. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  433. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +9 -7
  434. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  435. package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
  436. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  437. package/cjs/render/contributions/render/contributions/image-contribution-render.js +23 -1
  438. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  439. package/cjs/render/contributions/render/contributions/index.js.map +1 -1
  440. package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  441. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  442. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +9 -7
  443. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  444. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +24 -22
  445. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  446. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  447. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  448. package/cjs/render/contributions/render/draw-interceptor.d.ts +2 -0
  449. package/cjs/render/contributions/render/draw-interceptor.js +8 -0
  450. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  451. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  452. package/cjs/render/contributions/render/graphic-render.js.map +1 -1
  453. package/cjs/render/contributions/render/group-render.js.map +1 -1
  454. package/cjs/render/contributions/render/image-render.js +7 -3
  455. package/cjs/render/contributions/render/image-render.js.map +1 -1
  456. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  457. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  458. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  459. package/cjs/render/contributions/render/index.js.map +1 -1
  460. package/cjs/render/contributions/render/line-render.js +50 -23
  461. package/cjs/render/contributions/render/line-render.js.map +1 -1
  462. package/cjs/render/contributions/render/module.js.map +1 -1
  463. package/cjs/render/contributions/render/path-render.js.map +1 -1
  464. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  465. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  466. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  467. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  468. package/cjs/render/contributions/render/render-slector.js.map +1 -1
  469. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  470. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  471. package/cjs/render/contributions/render/symbol.js.map +1 -1
  472. package/cjs/render/contributions/render/text-render.js.map +1 -1
  473. package/cjs/render/contributions/render/utils.d.ts +2 -2
  474. package/cjs/render/contributions/render/utils.js.map +1 -1
  475. package/cjs/render/index.js.map +1 -1
  476. package/cjs/render/render-modules.js.map +1 -1
  477. package/cjs/render/render-service.js.map +1 -1
  478. package/cjs/resource-loader/loader.js.map +1 -1
  479. package/cjs/tapable/Hook.js.map +1 -1
  480. package/cjs/tapable/SyncHook.js.map +1 -1
  481. package/cjs/tapable/index.js.map +1 -1
  482. package/dist/index.js +1373 -933
  483. package/dist/index.min.js +1 -1
  484. package/es/allocator/allocator-modules.js.map +1 -1
  485. package/es/allocator/canvas-allocate.js.map +1 -1
  486. package/es/allocator/constants.js.map +1 -1
  487. package/es/allocator/graphic-allocate.js.map +1 -1
  488. package/es/allocator/matrix-allocate.js.map +1 -1
  489. package/es/allocator/point-allocate.js.map +1 -1
  490. package/es/animate/Ticker/default-ticker.js.map +1 -1
  491. package/es/animate/Ticker/index.js.map +1 -1
  492. package/es/animate/animate.d.ts +1 -0
  493. package/es/animate/animate.js +3 -0
  494. package/es/animate/animate.js.map +1 -1
  495. package/es/animate/config.js.map +1 -1
  496. package/es/animate/custom-animate.js.map +1 -1
  497. package/es/animate/default-ticker.js +1 -1
  498. package/es/animate/default-ticker.js.map +1 -1
  499. package/es/animate/easing.js.map +1 -1
  500. package/es/animate/index.js.map +1 -1
  501. package/es/animate/morphing.js.map +1 -1
  502. package/es/animate/timeline.d.ts +1 -1
  503. package/es/animate/timeline.js +2 -2
  504. package/es/animate/timeline.js.map +1 -1
  505. package/es/application.js.map +1 -1
  506. package/es/canvas/constants.js.map +1 -1
  507. package/es/canvas/contributions/browser/canvas.js +1 -1
  508. package/es/canvas/contributions/browser/canvas.js.map +1 -1
  509. package/es/canvas/contributions/browser/conical-gradient.js.map +1 -1
  510. package/es/canvas/contributions/browser/context.d.ts +1 -0
  511. package/es/canvas/contributions/browser/context.js.map +1 -1
  512. package/es/canvas/contributions/browser/index.js.map +1 -1
  513. package/es/canvas/contributions/browser/modules.js.map +1 -1
  514. package/es/canvas/contributions/feishu/canvas.js.map +1 -1
  515. package/es/canvas/contributions/feishu/context.js.map +1 -1
  516. package/es/canvas/contributions/feishu/index.js.map +1 -1
  517. package/es/canvas/contributions/feishu/modules.js.map +1 -1
  518. package/es/canvas/contributions/lynx/canvas.js.map +1 -1
  519. package/es/canvas/contributions/lynx/context.js.map +1 -1
  520. package/es/canvas/contributions/lynx/index.js.map +1 -1
  521. package/es/canvas/contributions/lynx/modules.js.map +1 -1
  522. package/es/canvas/contributions/modules.js.map +1 -1
  523. package/es/canvas/contributions/node/canvas.js.map +1 -1
  524. package/es/canvas/contributions/node/context.js.map +1 -1
  525. package/es/canvas/contributions/node/index.js.map +1 -1
  526. package/es/canvas/contributions/node/modules.js.map +1 -1
  527. package/es/canvas/contributions/taro/canvas.js.map +1 -1
  528. package/es/canvas/contributions/taro/context.js.map +1 -1
  529. package/es/canvas/contributions/taro/index.js.map +1 -1
  530. package/es/canvas/contributions/taro/modules.js.map +1 -1
  531. package/es/canvas/contributions/tt/canvas.js.map +1 -1
  532. package/es/canvas/contributions/tt/context.js.map +1 -1
  533. package/es/canvas/contributions/tt/index.js.map +1 -1
  534. package/es/canvas/contributions/tt/modules.js.map +1 -1
  535. package/es/canvas/contributions/wx/canvas.js.map +1 -1
  536. package/es/canvas/contributions/wx/context.js.map +1 -1
  537. package/es/canvas/contributions/wx/index.js.map +1 -1
  538. package/es/canvas/contributions/wx/modules.js.map +1 -1
  539. package/es/canvas/empty-context.js.map +1 -1
  540. package/es/canvas/index.js.map +1 -1
  541. package/es/canvas/util.js.map +1 -1
  542. package/es/color-string/colorName.js.map +1 -1
  543. package/es/color-string/index.js.map +1 -1
  544. package/es/color-string/interpolate.js.map +1 -1
  545. package/es/common/bezier-utils.js.map +1 -1
  546. package/es/common/bounds-context.js.map +1 -1
  547. package/es/common/canvas-utils.js.map +1 -1
  548. package/es/common/contribution-provider.d.ts +1 -0
  549. package/es/common/contribution-provider.js +4 -0
  550. package/es/common/contribution-provider.js.map +1 -1
  551. package/es/common/custom-path2d.js.map +1 -1
  552. package/es/common/enums.d.ts +4 -2
  553. package/es/common/enums.js +3 -2
  554. package/es/common/enums.js.map +1 -1
  555. package/es/common/generator.js.map +1 -1
  556. package/es/common/matrix.js.map +1 -1
  557. package/es/common/morphing-utils.js.map +1 -1
  558. package/es/common/path-svg.js.map +1 -1
  559. package/es/common/polygon.js.map +1 -1
  560. package/es/common/render-area.js.map +1 -1
  561. package/es/common/render-command-list.js.map +1 -1
  562. package/es/common/render-curve.js.map +1 -1
  563. package/es/common/seg-context.js.map +1 -1
  564. package/es/common/segment/basis.js.map +1 -1
  565. package/es/common/segment/common.js.map +1 -1
  566. package/es/common/segment/curve/arc.js.map +1 -1
  567. package/es/common/segment/curve/base.js.map +1 -1
  568. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  569. package/es/common/segment/curve/curve-context.js.map +1 -1
  570. package/es/common/segment/curve/ellipse.js.map +1 -1
  571. package/es/common/segment/curve/line.js.map +1 -1
  572. package/es/common/segment/curve/move.js.map +1 -1
  573. package/es/common/segment/curve/path.js.map +1 -1
  574. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  575. package/es/common/segment/index.js.map +1 -1
  576. package/es/common/segment/linear-closed.js.map +1 -1
  577. package/es/common/segment/linear.js.map +1 -1
  578. package/es/common/segment/monotone.js.map +1 -1
  579. package/es/common/segment/step.js.map +1 -1
  580. package/es/common/shape/arc.js.map +1 -1
  581. package/es/common/shape/rect.js.map +1 -1
  582. package/es/common/sort.js.map +1 -1
  583. package/es/common/split-path.js.map +1 -1
  584. package/es/common/store.js.map +1 -1
  585. package/es/common/text.js.map +1 -1
  586. package/es/common/utils.js.map +1 -1
  587. package/es/constants.js.map +1 -1
  588. package/es/container.js.map +1 -1
  589. package/es/core/application.js.map +1 -1
  590. package/es/core/camera.js.map +1 -1
  591. package/es/core/constants.js.map +1 -1
  592. package/es/core/contributions/env/base-contribution.d.ts +6 -0
  593. package/es/core/contributions/env/base-contribution.js +12 -0
  594. package/es/core/contributions/env/base-contribution.js.map +1 -1
  595. package/es/core/contributions/env/browser-contribution.d.ts +6 -0
  596. package/es/core/contributions/env/browser-contribution.js +19 -0
  597. package/es/core/contributions/env/browser-contribution.js.map +1 -1
  598. package/es/core/contributions/env/feishu-contribution.js.map +1 -1
  599. package/es/core/contributions/env/lynx-contribution.js.map +1 -1
  600. package/es/core/contributions/env/modules.js.map +1 -1
  601. package/es/core/contributions/env/node-contribution.js.map +1 -1
  602. package/es/core/contributions/env/taro-contribution.js.map +1 -1
  603. package/es/core/contributions/env/wx-contribution.d.ts +1 -0
  604. package/es/core/contributions/env/wx-contribution.js +5 -3
  605. package/es/core/contributions/env/wx-contribution.js.map +1 -1
  606. package/es/core/contributions/index.js.map +1 -1
  607. package/es/core/contributions/layerHandler/canvas2d-contribution.d.ts +1 -0
  608. package/es/core/contributions/layerHandler/canvas2d-contribution.js +3 -0
  609. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  610. package/es/core/contributions/layerHandler/modules.js.map +1 -1
  611. package/es/core/contributions/layerHandler/offscreen2d-contribution.d.ts +1 -0
  612. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +3 -0
  613. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  614. package/es/core/contributions/modules.js.map +1 -1
  615. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  616. package/es/core/contributions/textMeasure/layout.js +1 -1
  617. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  618. package/es/core/contributions/textMeasure/modules.js.map +1 -1
  619. package/es/core/contributions/textMeasure/textMeasure-contribution.js.map +1 -1
  620. package/es/core/contributions/window/base-contribution.d.ts +11 -5
  621. package/es/core/contributions/window/base-contribution.js +10 -0
  622. package/es/core/contributions/window/base-contribution.js.map +1 -1
  623. package/es/core/contributions/window/browser-contribution.d.ts +11 -0
  624. package/es/core/contributions/window/browser-contribution.js +33 -2
  625. package/es/core/contributions/window/browser-contribution.js.map +1 -1
  626. package/es/core/contributions/window/feishu-contribution.js.map +1 -1
  627. package/es/core/contributions/window/lynx-contribution.js.map +1 -1
  628. package/es/core/contributions/window/modules.js.map +1 -1
  629. package/es/core/contributions/window/native-contribution.js.map +1 -1
  630. package/es/core/contributions/window/node-contribution.js.map +1 -1
  631. package/es/core/contributions/window/taro-contribution.js.map +1 -1
  632. package/es/core/contributions/window/wx-contribution.js.map +1 -1
  633. package/es/core/core-modules.js.map +1 -1
  634. package/es/core/global-module.js.map +1 -1
  635. package/es/core/global.d.ts +6 -0
  636. package/es/core/global.js +9 -0
  637. package/es/core/global.js.map +1 -1
  638. package/es/core/graphic-utils.d.ts +2 -0
  639. package/es/core/graphic-utils.js +13 -0
  640. package/es/core/graphic-utils.js.map +1 -1
  641. package/es/core/index.js.map +1 -1
  642. package/es/core/layer-service.js.map +1 -1
  643. package/es/core/layer.js +1 -1
  644. package/es/core/layer.js.map +1 -1
  645. package/es/core/light.js.map +1 -1
  646. package/es/core/stage.d.ts +7 -2
  647. package/es/core/stage.js +28 -11
  648. package/es/core/stage.js.map +1 -1
  649. package/es/core/window.d.ts +6 -0
  650. package/es/core/window.js +10 -1
  651. package/es/core/window.js.map +1 -1
  652. package/es/create.js.map +1 -1
  653. package/es/event/constant.js.map +1 -1
  654. package/es/event/event-manager.js +13 -11
  655. package/es/event/event-manager.js.map +1 -1
  656. package/es/event/event-system.js.map +1 -1
  657. package/es/event/event-target.js.map +1 -1
  658. package/es/event/extension/drag.js.map +1 -1
  659. package/es/event/extension/gesture.js.map +1 -1
  660. package/es/event/extension/index.js.map +1 -1
  661. package/es/event/federated-event/base-event.js.map +1 -1
  662. package/es/event/federated-event/custom-event.js.map +1 -1
  663. package/es/event/federated-event/index.js.map +1 -1
  664. package/es/event/federated-event/mouse-event.js.map +1 -1
  665. package/es/event/federated-event/pointer-event.d.ts +1 -0
  666. package/es/event/federated-event/pointer-event.js.map +1 -1
  667. package/es/event/federated-event/wheel-event.js.map +1 -1
  668. package/es/event/index.js.map +1 -1
  669. package/es/event/util.js.map +1 -1
  670. package/es/export.js.map +1 -1
  671. package/es/graphic/arc.d.ts +7 -0
  672. package/es/graphic/arc.js +3 -1
  673. package/es/graphic/arc.js.map +1 -1
  674. package/es/graphic/arc3d.js.map +1 -1
  675. package/es/graphic/area.js.map +1 -1
  676. package/es/graphic/bounds.js.map +1 -1
  677. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  678. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  679. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  680. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  681. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  682. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  683. package/es/graphic/builtin-symbol/close.js.map +1 -1
  684. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  685. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  686. package/es/graphic/builtin-symbol/index.js.map +1 -1
  687. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  688. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  689. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  690. package/es/graphic/builtin-symbol/square.js.map +1 -1
  691. package/es/graphic/builtin-symbol/star.js.map +1 -1
  692. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  693. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  694. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  695. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  696. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  697. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  698. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  699. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  700. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  701. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  702. package/es/graphic/circle.js.map +1 -1
  703. package/es/graphic/config.js +9 -4
  704. package/es/graphic/config.js.map +1 -1
  705. package/es/graphic/constants.js.map +1 -1
  706. package/es/graphic/glyph.js.map +1 -1
  707. package/es/graphic/graphic-creator.js.map +1 -1
  708. package/es/graphic/graphic-service/arc-contribution.js.map +1 -1
  709. package/es/graphic/graphic-service/area-contribution.js.map +1 -1
  710. package/es/graphic/graphic-service/circle-contribution.js.map +1 -1
  711. package/es/graphic/graphic-service/common-contribution.js.map +1 -1
  712. package/es/graphic/graphic-service/default-theme.js.map +1 -1
  713. package/es/graphic/graphic-service/graphic-module.js.map +1 -1
  714. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  715. package/es/graphic/graphic-service/path-contribution.js.map +1 -1
  716. package/es/graphic/graphic-service/rect-contribution.js.map +1 -1
  717. package/es/graphic/graphic-service/symbol-contribution.js.map +1 -1
  718. package/es/graphic/graphic.d.ts +4 -1
  719. package/es/graphic/graphic.js +57 -23
  720. package/es/graphic/graphic.js.map +1 -1
  721. package/es/graphic/group.js +1 -1
  722. package/es/graphic/group.js.map +1 -1
  723. package/es/graphic/image.js.map +1 -1
  724. package/es/graphic/index.js.map +1 -1
  725. package/es/graphic/line.js.map +1 -1
  726. package/es/graphic/node-tree.js.map +1 -1
  727. package/es/graphic/path.js.map +1 -1
  728. package/es/graphic/polygon.js.map +1 -1
  729. package/es/graphic/pyramid3d.js.map +1 -1
  730. package/es/graphic/rect.js.map +1 -1
  731. package/es/graphic/rect3d.js.map +1 -1
  732. package/es/graphic/richtext/frame.js.map +1 -1
  733. package/es/graphic/richtext/icon.js.map +1 -1
  734. package/es/graphic/richtext/line.js.map +1 -1
  735. package/es/graphic/richtext/paragraph.js.map +1 -1
  736. package/es/graphic/richtext/utils.js.map +1 -1
  737. package/es/graphic/richtext/wrapper.js.map +1 -1
  738. package/es/graphic/richtext.js.map +1 -1
  739. package/es/graphic/shadow-root.js.map +1 -1
  740. package/es/graphic/symbol.js.map +1 -1
  741. package/es/graphic/text.js +34 -26
  742. package/es/graphic/text.js.map +1 -1
  743. package/es/graphic/theme.js.map +1 -1
  744. package/es/graphic/tools.js.map +1 -1
  745. package/es/graphic/wrap-text.js +16 -10
  746. package/es/graphic/wrap-text.js.map +1 -1
  747. package/es/index.d.ts +2 -1
  748. package/es/index.js +3 -1
  749. package/es/index.js.map +1 -1
  750. package/es/interface/allocator.js.map +1 -1
  751. package/es/interface/animate.d.ts +3 -1
  752. package/es/interface/animate.js.map +1 -1
  753. package/es/interface/camera.js.map +1 -1
  754. package/es/interface/canvas.js.map +1 -1
  755. package/es/interface/color.js.map +1 -1
  756. package/es/interface/common.js.map +1 -1
  757. package/es/interface/context.js.map +1 -1
  758. package/es/interface/contribution.js.map +1 -1
  759. package/es/interface/core.d.ts +1 -0
  760. package/es/interface/core.js.map +1 -1
  761. package/es/interface/creator.js.map +1 -1
  762. package/es/interface/curve.js.map +1 -1
  763. package/es/interface/event.js.map +1 -1
  764. package/es/interface/global.d.ts +12 -0
  765. package/es/interface/global.js.map +1 -1
  766. package/es/interface/graphic/arc.d.ts +2 -0
  767. package/es/interface/graphic/arc.js.map +1 -1
  768. package/es/interface/graphic/arc3d.js.map +1 -1
  769. package/es/interface/graphic/area.js.map +1 -1
  770. package/es/interface/graphic/bounds.js.map +1 -1
  771. package/es/interface/graphic/circle.js.map +1 -1
  772. package/es/interface/graphic/creator.js.map +1 -1
  773. package/es/interface/graphic/dynamic-path.js.map +1 -1
  774. package/es/interface/graphic/ellipse.js.map +1 -1
  775. package/es/interface/graphic/face3d.js.map +1 -1
  776. package/es/interface/graphic/glyph.js.map +1 -1
  777. package/es/interface/graphic/group.js.map +1 -1
  778. package/es/interface/graphic/image.d.ts +1 -0
  779. package/es/interface/graphic/image.js.map +1 -1
  780. package/es/interface/graphic/index.js.map +1 -1
  781. package/es/interface/graphic/isogon.js.map +1 -1
  782. package/es/interface/graphic/line.d.ts +1 -0
  783. package/es/interface/graphic/line.js.map +1 -1
  784. package/es/interface/graphic/path.js.map +1 -1
  785. package/es/interface/graphic/polygon.js.map +1 -1
  786. package/es/interface/graphic/polyline.js.map +1 -1
  787. package/es/interface/graphic/pyramid3d.js.map +1 -1
  788. package/es/interface/graphic/rect.js.map +1 -1
  789. package/es/interface/graphic/rect3d.js.map +1 -1
  790. package/es/interface/graphic/richText.js.map +1 -1
  791. package/es/interface/graphic/shadow-root.js.map +1 -1
  792. package/es/interface/graphic/svg.js.map +1 -1
  793. package/es/interface/graphic/symbol.js.map +1 -1
  794. package/es/interface/graphic/text.d.ts +1 -0
  795. package/es/interface/graphic/text.js.map +1 -1
  796. package/es/interface/graphic/theme.js.map +1 -1
  797. package/es/interface/graphic/util.js.map +1 -1
  798. package/es/interface/graphic-service.js.map +1 -1
  799. package/es/interface/graphic-utils.js.map +1 -1
  800. package/es/interface/graphic.d.ts +15 -3
  801. package/es/interface/graphic.js.map +1 -1
  802. package/es/interface/index.js.map +1 -1
  803. package/es/interface/layer.d.ts +1 -0
  804. package/es/interface/layer.js.map +1 -1
  805. package/es/interface/light.js.map +1 -1
  806. package/es/interface/loader.js.map +1 -1
  807. package/es/interface/matrix.js.map +1 -1
  808. package/es/interface/node-tree.js.map +1 -1
  809. package/es/interface/path.js.map +1 -1
  810. package/es/interface/picker.d.ts +9 -1
  811. package/es/interface/picker.js.map +1 -1
  812. package/es/interface/plugin.js.map +1 -1
  813. package/es/interface/render.js.map +1 -1
  814. package/es/interface/stage.d.ts +7 -2
  815. package/es/interface/stage.js.map +1 -1
  816. package/es/interface/sync-hook.js.map +1 -1
  817. package/es/interface/text.js.map +1 -1
  818. package/es/interface/theme-service.js.map +1 -1
  819. package/es/interface/util.js.map +1 -1
  820. package/es/interface/window.d.ts +12 -0
  821. package/es/interface/window.js.map +1 -1
  822. package/es/jsx/graphicType.d.ts +96 -60
  823. package/es/jsx/graphicType.js.map +1 -1
  824. package/es/jsx/index.js.map +1 -1
  825. package/es/jsx/jsx-classic.d.ts +2 -4
  826. package/es/jsx/jsx-classic.js +8 -15
  827. package/es/jsx/jsx-classic.js.map +1 -1
  828. package/es/kits/env.js.map +1 -1
  829. package/es/kits/index.js.map +1 -1
  830. package/es/modules.js.map +1 -1
  831. package/es/picker/canvas-picker-service.d.ts +2 -2
  832. package/es/picker/canvas-picker-service.js +20 -3
  833. package/es/picker/canvas-picker-service.js.map +1 -1
  834. package/es/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
  835. package/es/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
  836. package/es/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  837. package/es/picker/contributions/canvas-picker/base-picker.js.map +1 -1
  838. package/es/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
  839. package/es/picker/contributions/canvas-picker/glyph-picker.js +1 -1
  840. package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  841. package/es/picker/contributions/canvas-picker/group-picker.d.ts +7 -0
  842. package/es/picker/contributions/canvas-picker/group-picker.js +23 -0
  843. package/es/picker/contributions/canvas-picker/group-picker.js.map +1 -0
  844. package/es/picker/contributions/canvas-picker/image-picker.js.map +1 -1
  845. package/es/picker/contributions/canvas-picker/line-picker.js.map +1 -1
  846. package/es/picker/contributions/canvas-picker/module.js +6 -2
  847. package/es/picker/contributions/canvas-picker/module.js.map +1 -1
  848. package/es/picker/contributions/canvas-picker/path-picker.js.map +1 -1
  849. package/es/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
  850. package/es/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
  851. package/es/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
  852. package/es/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
  853. package/es/picker/contributions/canvas-picker/richtext-picker.js.map +1 -1
  854. package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  855. package/es/picker/contributions/canvas-picker/text-picker.js.map +1 -1
  856. package/es/picker/contributions/constants.d.ts +1 -0
  857. package/es/picker/contributions/constants.js +2 -0
  858. package/es/picker/contributions/constants.js.map +1 -1
  859. package/es/picker/contributions/math-picker/arc-picker.js.map +1 -1
  860. package/es/picker/contributions/math-picker/area-picker.js.map +1 -1
  861. package/es/picker/contributions/math-picker/circle-picker.js.map +1 -1
  862. package/es/picker/contributions/math-picker/glyph-picker.js +1 -1
  863. package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  864. package/es/picker/contributions/math-picker/line-picker.js.map +1 -1
  865. package/es/picker/contributions/math-picker/module.js.map +1 -1
  866. package/es/picker/contributions/math-picker/path-picker.js.map +1 -1
  867. package/es/picker/contributions/math-picker/polygon-picker.js.map +1 -1
  868. package/es/picker/contributions/math-picker/rect-picker.js.map +1 -1
  869. package/es/picker/contributions/math-picker/symbol-picker.js.map +1 -1
  870. package/es/picker/contributions/math-picker/text-picker.js.map +1 -1
  871. package/es/picker/contributions/modules.js.map +1 -1
  872. package/es/picker/contributions/old/circle-picker.js.map +1 -1
  873. package/es/picker/contributions/old/rect-picker.js.map +1 -1
  874. package/es/picker/global-picker-service.d.ts +1 -1
  875. package/es/picker/global-picker-service.js +12 -5
  876. package/es/picker/global-picker-service.js.map +1 -1
  877. package/es/picker/index.js.map +1 -1
  878. package/es/picker/math-picker-service.d.ts +2 -2
  879. package/es/picker/math-picker-service.js +1 -1
  880. package/es/picker/math-picker-service.js.map +1 -1
  881. package/es/picker/pick-interceptor.d.ts +12 -0
  882. package/es/picker/pick-interceptor.js +32 -1
  883. package/es/picker/pick-interceptor.js.map +1 -1
  884. package/es/picker/pick-modules.js +4 -2
  885. package/es/picker/pick-modules.js.map +1 -1
  886. package/es/picker/picker-service.d.ts +1 -1
  887. package/es/picker/picker-service.js +15 -6
  888. package/es/picker/picker-service.js.map +1 -1
  889. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  890. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  891. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  892. package/es/plugins/builtin-plugin/flex-layout-plugin.d.ts +2 -0
  893. package/es/plugins/builtin-plugin/flex-layout-plugin.js +47 -20
  894. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  895. package/es/plugins/builtin-plugin/html-attribute-plugin.js +8 -4
  896. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  897. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  898. package/es/plugins/builtin-plugin/poptip-plugin.js.map +1 -1
  899. package/es/plugins/constants.js.map +1 -1
  900. package/es/plugins/plugin-modules.js +2 -2
  901. package/es/plugins/plugin-modules.js.map +1 -1
  902. package/es/plugins/plugin-service.js.map +1 -1
  903. package/es/render/contributions/modules.js.map +1 -1
  904. package/es/render/contributions/render/arc-render.js +10 -3
  905. package/es/render/contributions/render/arc-render.js.map +1 -1
  906. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  907. package/es/render/contributions/render/area-render.js +31 -21
  908. package/es/render/contributions/render/area-render.js.map +1 -1
  909. package/es/render/contributions/render/base-render.js.map +1 -1
  910. package/es/render/contributions/render/circle-render.js.map +1 -1
  911. package/es/render/contributions/render/clear-screen.js.map +1 -1
  912. package/es/render/contributions/render/contributions/arc-contribution-render.js +9 -7
  913. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  914. package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  915. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  916. package/es/render/contributions/render/contributions/circle-contribution-render.js +9 -7
  917. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  918. package/es/render/contributions/render/contributions/constants.js.map +1 -1
  919. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  920. package/es/render/contributions/render/contributions/image-contribution-render.js +27 -0
  921. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  922. package/es/render/contributions/render/contributions/index.js.map +1 -1
  923. package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  924. package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  925. package/es/render/contributions/render/contributions/rect-contribution-render.js +9 -7
  926. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  927. package/es/render/contributions/render/contributions/symbol-contribution-render.js +22 -20
  928. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  929. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  930. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  931. package/es/render/contributions/render/draw-interceptor.d.ts +2 -0
  932. package/es/render/contributions/render/draw-interceptor.js +8 -0
  933. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  934. package/es/render/contributions/render/glyph-render.js.map +1 -1
  935. package/es/render/contributions/render/graphic-render.js.map +1 -1
  936. package/es/render/contributions/render/group-render.js.map +1 -1
  937. package/es/render/contributions/render/image-render.js +10 -2
  938. package/es/render/contributions/render/image-render.js.map +1 -1
  939. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  940. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  941. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  942. package/es/render/contributions/render/index.js.map +1 -1
  943. package/es/render/contributions/render/line-render.js +49 -22
  944. package/es/render/contributions/render/line-render.js.map +1 -1
  945. package/es/render/contributions/render/module.js.map +1 -1
  946. package/es/render/contributions/render/path-render.js.map +1 -1
  947. package/es/render/contributions/render/polygon-render.js.map +1 -1
  948. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  949. package/es/render/contributions/render/rect-render.js.map +1 -1
  950. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  951. package/es/render/contributions/render/render-slector.js.map +1 -1
  952. package/es/render/contributions/render/richtext-render.js.map +1 -1
  953. package/es/render/contributions/render/symbol-render.js.map +1 -1
  954. package/es/render/contributions/render/symbol.js.map +1 -1
  955. package/es/render/contributions/render/text-render.js.map +1 -1
  956. package/es/render/contributions/render/utils.d.ts +2 -2
  957. package/es/render/contributions/render/utils.js.map +1 -1
  958. package/es/render/index.js.map +1 -1
  959. package/es/render/render-modules.js.map +1 -1
  960. package/es/render/render-service.js.map +1 -1
  961. package/es/resource-loader/loader.js.map +1 -1
  962. package/es/tapable/Hook.js.map +1 -1
  963. package/es/tapable/SyncHook.js.map +1 -1
  964. package/es/tapable/index.js.map +1 -1
  965. package/package.json +7 -7
  966. package/es/tsconfig.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/graphic/tools.ts"],"names":[],"mappings":"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","file":"tools.js","sourcesContent":["import { application } from '../application';\nimport type { IGraphic, IGroup, ILayer, IRichTextCharacter, IRichTextImageCharacter, IStage } from '../interface';\nimport { isArray, type IAABBBounds } from '@visactor/vutils';\nimport { XMLValidator, XMLParser } from 'fast-xml-parser';\n\n// 不触发外部的render\nexport function incrementalAddTo(group: IGroup, graphic: IGraphic) {\n group.incrementalAppendChild(graphic);\n // if (group.layer && group.layer.subLayers) {\n // // const subLayer = group.layer.subLayers.get(group._uid);\n // }\n}\n\nexport async function waitForAllSubLayers(stage: IStage) {\n const promiseList: Promise<any>[] = [];\n const layers = stage.getChildren() as ILayer[];\n await new Promise(resolve => {\n application.global.getRequestAnimationFrame()(() => {\n resolve(null);\n });\n });\n layers.forEach(l => {\n if (l.subLayers.size) {\n l.subLayers.forEach(sl => {\n if (sl.drawContribution && sl.drawContribution.hooks && sl.drawContribution.rendering) {\n promiseList.push(\n new Promise(resolve => {\n sl.drawContribution!.hooks!.completeDraw.tap('outWait', () => {\n sl.drawContribution!.hooks!.completeDraw.taps = sl.drawContribution!.hooks!.completeDraw.taps.filter(\n i => {\n return i.name !== 'outWait';\n }\n );\n resolve(null);\n });\n })\n );\n }\n });\n }\n });\n await Promise.all(promiseList);\n}\n\nexport function boundStroke(bounds: IAABBBounds, halfW: number, miter: boolean, pad = 0) {\n bounds.expand(halfW + (pad / 2 + (miter ? miterAdjustment(miter, halfW) : 0)));\n return bounds;\n}\n\nfunction miterAdjustment(miter: boolean, strokeWidth: number) {\n return miter ? strokeWidth : 0;\n}\n\n// function attachShadow(graphic: Graphic) {\n// graphic.shadowRoot = createShadowRoot(graphic);\n// graphic.addUpdateBoundTag();\n// return graphic.shadowRoot;\n// }\n\n// function detachShadow(graphic: Graphic) {\n// if (graphic.shadowRoot) {\n// graphic.addUpdateBoundTag();\n// graphic.shadowRoot = null;\n// }\n// }\n\nlet NUMBER_TYPE: number = 0;\nexport function genNumberType() {\n return NUMBER_TYPE++;\n}\n\nexport enum TextDirection {\n HORIZONTAL = 0,\n VERTICAL = 1\n}\nexport function verticalLayout(text: string) {\n const nextCharacter: { text: string; direction: TextDirection }[] = [];\n let flag = 0; // 0: 竖排,1: 旋转\n let currStr = '';\n for (let i = 0; i < text.length; i++) {\n if (rotateText(text[i])) {\n if (flag) {\n currStr += text[i];\n } else {\n flag = 1;\n currStr = text[i];\n }\n } else {\n if (flag) {\n nextCharacter.push({\n text: currStr,\n direction: TextDirection.VERTICAL\n });\n currStr = '';\n flag = 0;\n }\n nextCharacter.push({\n text: text[i],\n direction: TextDirection.HORIZONTAL\n });\n }\n }\n\n if (currStr) {\n nextCharacter.push({\n text: currStr,\n direction: TextDirection.VERTICAL\n });\n }\n return nextCharacter;\n}\n\n// ——, ……, (, )\nconst rotateCharList = ['…', '(', ')', '—', '【', '】', '「', '」', '《', '》'];\nconst rotateCharMap = new Map();\nrotateCharList.forEach(c => rotateCharMap.set(c, true));\nconst noRotateCharList = [''];\nconst noRotateCharMap = new Map();\nnoRotateCharList.forEach(c => noRotateCharMap.set(c, true));\n\nfunction rotateText(c: string) {\n if (rotateCharMap.has(c)) {\n return true;\n }\n if (noRotateCharMap.has(c)) {\n return false;\n }\n const cp = c.codePointAt(0);\n let rotate = false;\n // 默认ascii码就旋转\n if (cp < 256) {\n rotate = true;\n }\n return rotate;\n}\n\nexport function xul(str: string | string[]): IRichTextCharacter[] {\n const xmlStr = isArray(str) ? str[0] : str;\n const config: IRichTextCharacter[] = [];\n if (!xmlStr) {\n return config;\n }\n const isXML = XMLValidator.validate(xmlStr, {\n allowBooleanAttributes: true\n });\n if (isXML === true) {\n const parser = new XMLParser({ ignoreAttributes: false });\n const data = parser.parse(xmlStr);\n data.tc &&\n Object.keys(data.tc).forEach(k => {\n if (k === 'text') {\n config.push(parseRTTextXML(data.tc[k]));\n } else {\n config.push(parseRTImageXML(data.tc[k]));\n }\n });\n }\n return config;\n}\n\nfunction parseRTTextXML(str: string): IRichTextCharacter {\n const output: IRichTextCharacter = { text: '' };\n parseCommonXML(str, output);\n const inlineText = str['#text'];\n if (inlineText) {\n output.text = inlineText;\n }\n\n return output;\n}\n\nfunction parseCommonXML(str: string, output: IRichTextCharacter) {\n const attr = str['@_attribute'];\n if (attr) {\n const attrList = attr.split(';');\n attrList.forEach((attrItem: string) => {\n if (!attrItem) {\n return;\n }\n const kv = attrItem.split(':');\n\n if (kv.length === 2) {\n const val = parseFloat(kv[1]);\n output[kv[0].trim()] = isFinite(val) ? val : kv[1].trim();\n } else {\n let val = '';\n for (let i = 1; i < kv.length; i++) {\n if (i > 1) {\n val += ':';\n }\n val += kv[i].trim();\n }\n output[kv[0].trim()] = val;\n }\n });\n }\n}\n\nfunction parseRTImageXML(str: string): IRichTextCharacter {\n const output: IRichTextImageCharacter = { image: '', width: 0, height: 0 };\n parseCommonXML(str, output);\n const image = output.image as string;\n if (image) {\n output.image = (image as any).replaceAll('&quot', '\"').replaceAll('&lt', '<').replaceAll('&gt', '>');\n }\n return output;\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/tools.ts"],"names":[],"mappings":"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","file":"tools.js","sourcesContent":["import { application } from '../application';\nimport type { IGraphic, IGroup, ILayer, IRichTextCharacter, IRichTextImageCharacter, IStage } from '../interface';\nimport { isArray, type IAABBBounds } from '@visactor/vutils';\nimport { XMLValidator, XMLParser } from 'fast-xml-parser';\n\n// 不触发外部的render\nexport function incrementalAddTo(group: IGroup, graphic: IGraphic) {\n group.incrementalAppendChild(graphic);\n // if (group.layer && group.layer.subLayers) {\n // // const subLayer = group.layer.subLayers.get(group._uid);\n // }\n}\n\nexport async function waitForAllSubLayers(stage: IStage) {\n const promiseList: Promise<any>[] = [];\n const layers = stage.getChildren() as ILayer[];\n await new Promise(resolve => {\n application.global.getRequestAnimationFrame()(() => {\n resolve(null);\n });\n });\n layers.forEach(l => {\n if (l.subLayers.size) {\n l.subLayers.forEach(sl => {\n if (sl.drawContribution && sl.drawContribution.hooks && sl.drawContribution.rendering) {\n promiseList.push(\n new Promise(resolve => {\n sl.drawContribution!.hooks!.completeDraw.tap('outWait', () => {\n sl.drawContribution!.hooks!.completeDraw.taps = sl.drawContribution!.hooks!.completeDraw.taps.filter(\n i => {\n return i.name !== 'outWait';\n }\n );\n resolve(null);\n });\n })\n );\n }\n });\n }\n });\n await Promise.all(promiseList);\n}\n\nexport function boundStroke(bounds: IAABBBounds, halfW: number, miter: boolean, pad = 0) {\n bounds.expand(halfW + (pad / 2 + (miter ? miterAdjustment(miter, halfW) : 0)));\n return bounds;\n}\n\nfunction miterAdjustment(miter: boolean, strokeWidth: number) {\n return miter ? strokeWidth : 0;\n}\n\n// function attachShadow(graphic: Graphic) {\n// graphic.shadowRoot = createShadowRoot(graphic);\n// graphic.addUpdateBoundTag();\n// return graphic.shadowRoot;\n// }\n\n// function detachShadow(graphic: Graphic) {\n// if (graphic.shadowRoot) {\n// graphic.addUpdateBoundTag();\n// graphic.shadowRoot = null;\n// }\n// }\n\nlet NUMBER_TYPE: number = 0;\nexport function genNumberType() {\n return NUMBER_TYPE++;\n}\n\nexport enum TextDirection {\n HORIZONTAL = 0,\n VERTICAL = 1\n}\nexport function verticalLayout(text: string) {\n const nextCharacter: { text: string; direction: TextDirection }[] = [];\n let flag = 0; // 0: 竖排,1: 旋转\n let currStr = '';\n for (let i = 0; i < text.length; i++) {\n if (rotateText(text[i])) {\n if (flag) {\n currStr += text[i];\n } else {\n flag = 1;\n currStr = text[i];\n }\n } else {\n if (flag) {\n nextCharacter.push({\n text: currStr,\n direction: TextDirection.VERTICAL\n });\n currStr = '';\n flag = 0;\n }\n nextCharacter.push({\n text: text[i],\n direction: TextDirection.HORIZONTAL\n });\n }\n }\n\n if (currStr) {\n nextCharacter.push({\n text: currStr,\n direction: TextDirection.VERTICAL\n });\n }\n return nextCharacter;\n}\n\n// ——, ……, (, )\nconst rotateCharList = ['…', '(', ')', '—', '【', '】', '「', '」', '《', '》'];\nconst rotateCharMap = new Map();\nrotateCharList.forEach(c => rotateCharMap.set(c, true));\nconst noRotateCharList = [''];\nconst noRotateCharMap = new Map();\nnoRotateCharList.forEach(c => noRotateCharMap.set(c, true));\n\nfunction rotateText(c: string) {\n if (rotateCharMap.has(c)) {\n return true;\n }\n if (noRotateCharMap.has(c)) {\n return false;\n }\n const cp = c.codePointAt(0);\n let rotate = false;\n // 默认ascii码就旋转\n if (cp < 256) {\n rotate = true;\n }\n return rotate;\n}\n\nexport function xul(str: string | string[]): IRichTextCharacter[] {\n const xmlStr = isArray(str) ? str[0] : str;\n const config: IRichTextCharacter[] = [];\n if (!xmlStr) {\n return config;\n }\n const isXML = XMLValidator.validate(xmlStr, {\n allowBooleanAttributes: true\n });\n if (isXML === true) {\n const parser = new XMLParser({ ignoreAttributes: false });\n const data = parser.parse(xmlStr);\n data.tc &&\n Object.keys(data.tc).forEach(k => {\n if (k === 'text') {\n config.push(parseRTTextXML(data.tc[k]));\n } else {\n config.push(parseRTImageXML(data.tc[k]));\n }\n });\n }\n return config;\n}\n\nfunction parseRTTextXML(str: string): IRichTextCharacter {\n const output: IRichTextCharacter = { text: '' };\n parseCommonXML(str, output);\n const inlineText = str['#text'];\n if (inlineText) {\n output.text = inlineText;\n }\n\n return output;\n}\n\nfunction parseCommonXML(str: string, output: IRichTextCharacter) {\n const attr = str['@_attribute'];\n if (attr) {\n const attrList = attr.split(';');\n attrList.forEach((attrItem: string) => {\n if (!attrItem) {\n return;\n }\n const kv = attrItem.split(':');\n\n if (kv.length === 2) {\n const val = parseFloat(kv[1]);\n output[kv[0].trim()] = isFinite(val) ? val : kv[1].trim();\n } else {\n let val = '';\n for (let i = 1; i < kv.length; i++) {\n if (i > 1) {\n val += ':';\n }\n val += kv[i].trim();\n }\n output[kv[0].trim()] = val;\n }\n });\n }\n}\n\nfunction parseRTImageXML(str: string): IRichTextCharacter {\n const output: IRichTextImageCharacter = { image: '', width: 0, height: 0 };\n parseCommonXML(str, output);\n const image = output.image as string;\n if (image) {\n output.image = (image as any).replaceAll('&quot', '\"').replaceAll('&lt', '<').replaceAll('&gt', '>');\n }\n return output;\n}\n"]}
@@ -13,22 +13,25 @@ class WrapText extends text_1.Text {
13
13
  }
14
14
  updateMultilineAABBBounds(text) {
15
15
  var _a, _b, _c;
16
- const textTheme = (0, theme_1.getTheme)(this).text, {fontFamily: fontFamily = textTheme.fontFamily, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontSize: fontSize = textTheme.fontSize, lineHeight: lineHeight = this.attribute.lineHeight || this.attribute.fontSize || textTheme.fontSize, ellipsis: ellipsis = textTheme.ellipsis, maxLineWidth: maxLineWidth, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, wordBreak: wordBreak = textTheme.wordBreak, heightLimit: heightLimit = 0, lineClamp: lineClamp} = this.attribute;
16
+ const textTheme = (0, theme_1.getTheme)(this).text, {fontFamily: fontFamily = textTheme.fontFamily, textAlign: textAlign = textTheme.textAlign, textBaseline: textBaseline = textTheme.textBaseline, fontSize: fontSize = textTheme.fontSize, lineHeight: lineHeight = this.attribute.lineHeight || this.attribute.fontSize || textTheme.fontSize, ellipsis: ellipsis = textTheme.ellipsis, maxLineWidth: maxLineWidth, stroke: stroke = textTheme.stroke, lineWidth: lineWidth = textTheme.lineWidth, wordBreak: wordBreak = textTheme.wordBreak, fontWeight: fontWeight = textTheme.fontWeight, ignoreBuf: ignoreBuf = textTheme.ignoreBuf, heightLimit: heightLimit = 0, lineClamp: lineClamp} = this.attribute, buf = ignoreBuf ? 0 : 2;
17
17
  if (!this.shouldUpdateShape() && (null === (_a = this.cache) || void 0 === _a ? void 0 : _a.layoutData)) {
18
18
  const bbox = this.cache.layoutData.bbox;
19
19
  return this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height),
20
20
  stroke && this._AABBBounds.expand(lineWidth / 2), this._AABBBounds;
21
21
  }
22
22
  const textMeasure = application_1.application.graphicUtil.textMeasure, layoutObj = new layout_1.CanvasTextLayout(fontFamily, {
23
- fontSize: fontSize
23
+ fontSize: fontSize,
24
+ fontWeight: fontWeight,
25
+ fontFamily: fontFamily
24
26
  }, textMeasure), lines = text.map((l => l.toString())), linesLayout = [], bboxWH = [ 0, 0 ];
25
27
  let lineCountLimit = 1 / 0;
26
28
  if (heightLimit > 0 && (lineCountLimit = Math.max(Math.floor(heightLimit / lineHeight), 1)),
27
29
  lineClamp && (lineCountLimit = Math.min(lineCountLimit, lineClamp)), "number" == typeof maxLineWidth && maxLineWidth !== 1 / 0) {
28
30
  if (maxLineWidth > 0) for (let i = 0; i < lines.length; i++) {
29
31
  const str = lines[i];
32
+ let needCut = !0;
30
33
  if (i === lineCountLimit - 1) {
31
- const clip = layoutObj.textMeasure.clipTextWithSuffix(str, layoutObj.textOptions, maxLineWidth, ellipsis, "break-word" === wordBreak);
34
+ const clip = layoutObj.textMeasure.clipTextWithSuffix(str, layoutObj.textOptions, maxLineWidth, ellipsis, !1);
32
35
  linesLayout.push({
33
36
  str: clip.str,
34
37
  width: clip.width
@@ -36,14 +39,17 @@ class WrapText extends text_1.Text {
36
39
  break;
37
40
  }
38
41
  const clip = layoutObj.textMeasure.clipText(str, layoutObj.textOptions, maxLineWidth, "break-word" === wordBreak);
39
- if ("" !== str && "" === clip.str) if (ellipsis) {
40
- const clipEllipsis = layoutObj.textMeasure.clipTextWithSuffix(str, layoutObj.textOptions, maxLineWidth, ellipsis, "break-word" === wordBreak);
41
- clip.str = null !== (_b = clipEllipsis.str) && void 0 !== _b ? _b : "", clip.width = null !== (_c = clipEllipsis.width) && void 0 !== _c ? _c : 0;
42
- } else clip.str = "", clip.width = 0;
42
+ if ("" !== str && "" === clip.str) {
43
+ if (ellipsis) {
44
+ const clipEllipsis = layoutObj.textMeasure.clipTextWithSuffix(str, layoutObj.textOptions, maxLineWidth, ellipsis, !1);
45
+ clip.str = null !== (_b = clipEllipsis.str) && void 0 !== _b ? _b : "", clip.width = null !== (_c = clipEllipsis.width) && void 0 !== _c ? _c : 0;
46
+ } else clip.str = "", clip.width = 0;
47
+ needCut = !1;
48
+ }
43
49
  if (linesLayout.push({
44
50
  str: clip.str,
45
51
  width: clip.width
46
- }), clip.str.length === str.length) ; else {
52
+ }), clip.str.length === str.length) ; else if (needCut) {
47
53
  const newStr = str.substring(clip.str.length);
48
54
  lines.splice(i + 1, 0, newStr);
49
55
  }
@@ -56,7 +62,7 @@ class WrapText extends text_1.Text {
56
62
  let width, text, lineWidth = 0;
57
63
  for (let i = 0, len = lines.length; i < len; i++) {
58
64
  if (i === lineCountLimit - 1) {
59
- const clip = layoutObj.textMeasure.clipTextWithSuffix(lines[i], layoutObj.textOptions, maxLineWidth, ellipsis, "break-word" === wordBreak);
65
+ const clip = layoutObj.textMeasure.clipTextWithSuffix(lines[i], layoutObj.textOptions, maxLineWidth, ellipsis, !1);
60
66
  linesLayout.push({
61
67
  str: clip.str,
62
68
  width: clip.width
@@ -71,7 +77,7 @@ class WrapText extends text_1.Text {
71
77
  }
72
78
  bboxWH[0] = lineWidth;
73
79
  }
74
- bboxWH[1] = linesLayout.length * (lineHeight + 2);
80
+ bboxWH[1] = linesLayout.length * (lineHeight + buf);
75
81
  const bbox = {
76
82
  xOffset: 0,
77
83
  yOffset: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/graphic/wrap-text.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,qEAA4E;AAE5E,gDAA6C;AAC7C,iCAA8B;AAC9B,mCAAmC;AAEnC,MAAM,wBAAwB,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAO9D,MAAa,QAAS,SAAQ,WAAI;IAGtB,QAAQ;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE;YACjB,OAAO,CAAE,IAAc,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACrC,CAAC;IAOD,yBAAyB,CAAC,IAAyB;;QACjD,MAAM,SAAS,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,MAAM,EACJ,UAAU,GAAG,SAAS,CAAC,UAAU,EACjC,SAAS,GAAG,SAAS,CAAC,SAAS,EAC/B,YAAY,GAAG,SAAS,CAAC,YAAY,EACrC,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAC7B,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EACvF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAC7B,YAAY,EACZ,MAAM,GAAG,SAAS,CAAC,MAAM,EACzB,SAAS,GAAG,SAAS,CAAC,SAAS,EAC/B,SAAS,GAAG,SAAS,CAAC,SAAS,EAE/B,WAAW,GAAG,CAAC,EACf,SAAS,EACV,GAAG,IAAI,CAAC,SAAS,CAAC;QACnB,MAAM,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU,CAAA,EAAE;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACxG,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;aACxC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QAED,MAAM,WAAW,GAAG,yBAAW,CAAC,WAAW,CAAC,WAAW,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,yBAAgB,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAkB,CAAQ,CAAC;QAG5F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAa,CAAC;QACtD,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,IAAI,cAAc,GAAG,QAAQ,CAAC;QAC9B,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;SACpE;QACD,IAAI,SAAS,EAAE;YAEb,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;SACtD;QAED,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ,EAAE;YAEjE,IAAI,YAAY,GAAG,CAAC,EAAE;gBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;oBAQ/B,IAAI,CAAC,KAAK,cAAc,GAAG,CAAC,EAAE;wBAE5B,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACnD,GAAG,EACH,SAAS,CAAC,WAAW,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,KAAK,YAAY,CAC3B,CAAC;wBACF,WAAW,CAAC,IAAI,CAAC;4BACf,GAAG,EAAE,IAAI,CAAC,GAAG;4BACb,KAAK,EAAE,IAAI,CAAC,KAAK;yBAClB,CAAC,CAAC;wBACH,MAAM;qBACP;oBAGD,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CACzC,GAAG,EACH,SAAS,CAAC,WAAW,EACrB,YAAY,EACZ,SAAS,KAAK,YAAY,CAC3B,CAAC;oBACF,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,EAAE;wBACjC,IAAI,QAAQ,EAAE;4BACZ,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAC3D,GAAG,EACH,SAAS,CAAC,WAAW,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,KAAK,YAAY,CAC3B,CAAC;4BACF,IAAI,CAAC,GAAG,GAAG,MAAA,YAAY,CAAC,GAAG,mCAAI,EAAE,CAAC;4BAClC,IAAI,CAAC,KAAK,GAAG,MAAA,YAAY,CAAC,KAAK,mCAAI,CAAC,CAAC;yBACtC;6BAAM;4BAEL,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;4BACd,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;yBAChB;qBACF;oBAED,WAAW,CAAC,IAAI,CAAC;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB,CAAC,CAAC;oBACH,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;qBAEnC;yBAAM;wBACL,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC9C,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;qBAChC;iBACF;aACF;YAED,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC3B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SACtB;aAAM;YAEL,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,KAAa,CAAC;YAClB,IAAI,IAAY,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAEhD,IAAI,CAAC,KAAK,cAAc,GAAG,CAAC,EAAE;oBAE5B,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACnD,KAAK,CAAC,CAAC,CAAC,EACR,SAAS,CAAC,WAAW,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,KAAK,YAAY,CAC3B,CAAC;oBACF,WAAW,CAAC,IAAI,CAAC;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB,CAAC,CAAC;oBACH,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC5C,MAAM;iBACP;gBAED,IAAI,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;gBAC1B,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,KAAK,YAAY,CAAC,CAAC;gBACxG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACvC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;aACxC;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;SACvB;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;SAClB,CAAC;QAEF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,YAAmB,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,YAAmB,EAAE,UAAU,CAAC,CAAC;QAW3G,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAExG,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,cAAc,CAAC,IAAc;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,OAAO,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,OAAO,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;CACF;AAtND,4BAsNC","file":"wrap-text.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport { CanvasTextLayout } from '../core/contributions/textMeasure/layout';\nimport type { IWrapTextGraphicAttribute, LayoutItemType } from '../interface';\nimport { application } from '../application';\nimport { Text } from './text';\nimport { getTheme } from './theme';\n\nconst WRAP_TEXT_UPDATE_TAG_KEY = ['heightLimit', 'lineClamp'];\n\n/* WrapText功能\n * 1. 按照宽度限制自动折行或显示省略号(maxLineWidth)\n * 2. 高度限制控制显示内容及省略号(heightLimit)\n * 3. 按照行数限制显示内容及省略号(lineClamp)\n */\nexport class WrapText extends Text {\n declare attribute: IWrapTextGraphicAttribute;\n\n protected _isValid(): boolean {\n const { text } = this.attribute;\n if (isArray(text)) {\n return !(text as any[]).every((t: any) => t == null || t === '');\n }\n return text != null && text !== '';\n }\n\n /**\n * 计算多行文字的bounds,缓存每行文字的布局位置\n * 自动折行params.text是数组,因此只重新updateMultilineAABBBounds\n * @param text\n */\n updateMultilineAABBBounds(text: (number | string)[]) {\n const textTheme = getTheme(this).text;\n const {\n fontFamily = textTheme.fontFamily,\n textAlign = textTheme.textAlign,\n textBaseline = textTheme.textBaseline,\n fontSize = textTheme.fontSize,\n lineHeight = this.attribute.lineHeight || this.attribute.fontSize || textTheme.fontSize,\n ellipsis = textTheme.ellipsis,\n maxLineWidth,\n stroke = textTheme.stroke,\n lineWidth = textTheme.lineWidth,\n wordBreak = textTheme.wordBreak,\n // widthLimit,\n heightLimit = 0,\n lineClamp\n } = this.attribute;\n const buf = 2;\n if (!this.shouldUpdateShape() && this.cache?.layoutData) {\n const bbox = this.cache.layoutData.bbox;\n this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height);\n if (stroke) {\n this._AABBBounds.expand(lineWidth / 2);\n }\n return this._AABBBounds;\n }\n\n const textMeasure = application.graphicUtil.textMeasure;\n const layoutObj = new CanvasTextLayout(fontFamily, { fontSize }, textMeasure as any) as any;\n\n // layoutObj内逻辑\n const lines = text.map(l => l.toString()) as string[];\n const linesLayout: LayoutItemType[] = [];\n const bboxWH: [number, number] = [0, 0];\n\n let lineCountLimit = Infinity;\n if (heightLimit > 0) {\n lineCountLimit = Math.max(Math.floor(heightLimit / lineHeight), 1);\n }\n if (lineClamp) {\n // 处理行数限制\n lineCountLimit = Math.min(lineCountLimit, lineClamp);\n }\n\n if (typeof maxLineWidth === 'number' && maxLineWidth !== Infinity) {\n // widthLimit > 0\n if (maxLineWidth > 0) {\n for (let i = 0; i < lines.length; i++) {\n const str = lines[i] as string;\n // // 测量当前行宽度\n // width = Math.min(\n // layoutObj.textMeasure.measureTextWidth(str, layoutObj.textOptions),\n // maxLineWidth\n // );\n\n // 判断是否超过高度限制\n if (i === lineCountLimit - 1) {\n // 当前行为最后一行\n const clip = layoutObj.textMeasure.clipTextWithSuffix(\n str,\n layoutObj.textOptions,\n maxLineWidth,\n ellipsis,\n wordBreak === 'break-word'\n );\n linesLayout.push({\n str: clip.str,\n width: clip.width\n });\n break; // 不处理后续行\n }\n\n // 测量截断位置\n const clip = layoutObj.textMeasure.clipText(\n str,\n layoutObj.textOptions,\n maxLineWidth,\n wordBreak === 'break-word'\n );\n if (str !== '' && clip.str === '') {\n if (ellipsis) {\n const clipEllipsis = layoutObj.textMeasure.clipTextWithSuffix(\n str,\n layoutObj.textOptions,\n maxLineWidth,\n ellipsis,\n wordBreak === 'break-word'\n );\n clip.str = clipEllipsis.str ?? '';\n clip.width = clipEllipsis.width ?? 0;\n } else {\n // 宽度限制不足一个字符,不显示\n clip.str = '';\n clip.width = 0;\n }\n }\n\n linesLayout.push({\n str: clip.str,\n width: clip.width\n });\n if (clip.str.length === str.length) {\n // 不需要截断\n } else {\n const newStr = str.substring(clip.str.length);\n lines.splice(i + 1, 0, newStr);\n }\n }\n }\n // bboxWH[0] = maxLineWidth;\n let maxWidth = 0;\n linesLayout.forEach(layout => {\n maxWidth = Math.max(maxWidth, layout.width);\n });\n bboxWH[0] = maxWidth;\n } else {\n // 使用所有行中最长的作为lineWidth\n let lineWidth = 0;\n let width: number;\n let text: string;\n for (let i = 0, len = lines.length; i < len; i++) {\n // 判断是否超过高度限制\n if (i === lineCountLimit - 1) {\n // 当前行为最后一行\n const clip = layoutObj.textMeasure.clipTextWithSuffix(\n lines[i],\n layoutObj.textOptions,\n maxLineWidth,\n ellipsis,\n wordBreak === 'break-word'\n );\n linesLayout.push({\n str: clip.str,\n width: clip.width\n });\n lineWidth = Math.max(lineWidth, clip.width);\n break; // 不处理后续行\n }\n\n text = lines[i] as string;\n width = layoutObj.textMeasure.measureTextWidth(text, layoutObj.textOptions, wordBreak === 'break-word');\n lineWidth = Math.max(lineWidth, width);\n linesLayout.push({ str: text, width });\n }\n bboxWH[0] = lineWidth;\n }\n bboxWH[1] = linesLayout.length * (lineHeight + buf);\n\n const bbox = {\n xOffset: 0,\n yOffset: 0,\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n layoutObj.LayoutBBox(bbox, textAlign, textBaseline as any);\n\n const layoutData = layoutObj.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline as any, lineHeight);\n\n // const layoutData = layoutObj.GetLayoutByLines(\n // text,\n // textAlign,\n // textBaseline as any,\n // lineHeight,\n // ellipsis === true ? (DefaultTextAttribute.ellipsis as string) : ellipsis || undefined,\n // maxLineWidth\n // );\n // const { bbox } = layoutData;\n this.cache.layoutData = layoutData;\n this.clearUpdateShapeTag();\n this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height);\n\n if (stroke) {\n this._AABBBounds.expand(lineWidth / 2);\n }\n\n return this._AABBBounds;\n }\n\n needUpdateTags(keys: string[]): boolean {\n for (let i = 0; i < WRAP_TEXT_UPDATE_TAG_KEY.length; i++) {\n const attrKey = WRAP_TEXT_UPDATE_TAG_KEY[i];\n if (keys.indexOf(attrKey) !== -1) {\n return true;\n }\n }\n return super.needUpdateTags(keys);\n }\n\n needUpdateTag(key: string): boolean {\n for (let i = 0; i < WRAP_TEXT_UPDATE_TAG_KEY.length; i++) {\n const attrKey = WRAP_TEXT_UPDATE_TAG_KEY[i];\n if (key === attrKey) {\n return true;\n }\n }\n return super.needUpdateTag(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/wrap-text.ts"],"names":[],"mappings":"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","file":"wrap-text.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport { CanvasTextLayout } from '../core/contributions/textMeasure/layout';\nimport type { IWrapTextGraphicAttribute, LayoutItemType } from '../interface';\nimport { application } from '../application';\nimport { Text } from './text';\nimport { getTheme } from './theme';\n\nconst WRAP_TEXT_UPDATE_TAG_KEY = ['heightLimit', 'lineClamp'];\n\n/* WrapText功能\n * 1. 按照宽度限制自动折行或显示省略号(maxLineWidth)\n * 2. 高度限制控制显示内容及省略号(heightLimit)\n * 3. 按照行数限制显示内容及省略号(lineClamp)\n */\nexport class WrapText extends Text {\n declare attribute: IWrapTextGraphicAttribute;\n\n protected _isValid(): boolean {\n const { text } = this.attribute;\n if (isArray(text)) {\n return !(text as any[]).every((t: any) => t == null || t === '');\n }\n return text != null && text !== '';\n }\n\n /**\n * 计算多行文字的bounds,缓存每行文字的布局位置\n * 自动折行params.text是数组,因此只重新updateMultilineAABBBounds\n * @param text\n */\n updateMultilineAABBBounds(text: (number | string)[]) {\n const textTheme = getTheme(this).text;\n const {\n fontFamily = textTheme.fontFamily,\n textAlign = textTheme.textAlign,\n textBaseline = textTheme.textBaseline,\n fontSize = textTheme.fontSize,\n lineHeight = this.attribute.lineHeight || this.attribute.fontSize || textTheme.fontSize,\n ellipsis = textTheme.ellipsis,\n maxLineWidth,\n stroke = textTheme.stroke,\n lineWidth = textTheme.lineWidth,\n wordBreak = textTheme.wordBreak,\n fontWeight = textTheme.fontWeight,\n // widthLimit,\n ignoreBuf = textTheme.ignoreBuf,\n heightLimit = 0,\n lineClamp\n } = this.attribute;\n const buf = ignoreBuf ? 0 : 2;\n if (!this.shouldUpdateShape() && this.cache?.layoutData) {\n const bbox = this.cache.layoutData.bbox;\n this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height);\n if (stroke) {\n this._AABBBounds.expand(lineWidth / 2);\n }\n return this._AABBBounds;\n }\n\n const textMeasure = application.graphicUtil.textMeasure;\n const layoutObj = new CanvasTextLayout(fontFamily, { fontSize, fontWeight, fontFamily }, textMeasure as any) as any;\n\n // layoutObj内逻辑\n const lines = text.map(l => l.toString()) as string[];\n const linesLayout: LayoutItemType[] = [];\n const bboxWH: [number, number] = [0, 0];\n\n let lineCountLimit = Infinity;\n if (heightLimit > 0) {\n lineCountLimit = Math.max(Math.floor(heightLimit / lineHeight), 1);\n }\n if (lineClamp) {\n // 处理行数限制\n lineCountLimit = Math.min(lineCountLimit, lineClamp);\n }\n\n if (typeof maxLineWidth === 'number' && maxLineWidth !== Infinity) {\n // widthLimit > 0\n if (maxLineWidth > 0) {\n for (let i = 0; i < lines.length; i++) {\n const str = lines[i] as string;\n let needCut = true;\n // // 测量当前行宽度\n // width = Math.min(\n // layoutObj.textMeasure.measureTextWidth(str, layoutObj.textOptions),\n // maxLineWidth\n // );\n\n // 判断是否超过高度限制\n if (i === lineCountLimit - 1) {\n // 当前行为最后一行\n const clip = layoutObj.textMeasure.clipTextWithSuffix(\n str,\n layoutObj.textOptions,\n maxLineWidth,\n ellipsis,\n false\n );\n linesLayout.push({\n str: clip.str,\n width: clip.width\n });\n break; // 不处理后续行\n }\n\n // 测量截断位置\n const clip = layoutObj.textMeasure.clipText(\n str,\n layoutObj.textOptions,\n maxLineWidth,\n wordBreak === 'break-word'\n );\n if (str !== '' && clip.str === '') {\n if (ellipsis) {\n const clipEllipsis = layoutObj.textMeasure.clipTextWithSuffix(\n str,\n layoutObj.textOptions,\n maxLineWidth,\n ellipsis,\n false\n );\n clip.str = clipEllipsis.str ?? '';\n clip.width = clipEllipsis.width ?? 0;\n } else {\n // 宽度限制不足一个字符,不显示\n clip.str = '';\n clip.width = 0;\n }\n needCut = false;\n }\n\n linesLayout.push({\n str: clip.str,\n width: clip.width\n });\n if (clip.str.length === str.length) {\n // 不需要截断\n } else if (needCut) {\n const newStr = str.substring(clip.str.length);\n lines.splice(i + 1, 0, newStr);\n }\n }\n }\n // bboxWH[0] = maxLineWidth;\n let maxWidth = 0;\n linesLayout.forEach(layout => {\n maxWidth = Math.max(maxWidth, layout.width);\n });\n bboxWH[0] = maxWidth;\n } else {\n // 使用所有行中最长的作为lineWidth\n let lineWidth = 0;\n let width: number;\n let text: string;\n for (let i = 0, len = lines.length; i < len; i++) {\n // 判断是否超过高度限制\n if (i === lineCountLimit - 1) {\n // 当前行为最后一行\n const clip = layoutObj.textMeasure.clipTextWithSuffix(\n lines[i],\n layoutObj.textOptions,\n maxLineWidth,\n ellipsis,\n false\n );\n linesLayout.push({\n str: clip.str,\n width: clip.width\n });\n lineWidth = Math.max(lineWidth, clip.width);\n break; // 不处理后续行\n }\n\n text = lines[i] as string;\n width = layoutObj.textMeasure.measureTextWidth(text, layoutObj.textOptions, wordBreak === 'break-word');\n lineWidth = Math.max(lineWidth, width);\n linesLayout.push({ str: text, width });\n }\n bboxWH[0] = lineWidth;\n }\n bboxWH[1] = linesLayout.length * (lineHeight + buf);\n\n const bbox = {\n xOffset: 0,\n yOffset: 0,\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n layoutObj.LayoutBBox(bbox, textAlign, textBaseline as any);\n\n const layoutData = layoutObj.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline as any, lineHeight);\n\n // const layoutData = layoutObj.GetLayoutByLines(\n // text,\n // textAlign,\n // textBaseline as any,\n // lineHeight,\n // ellipsis === true ? (DefaultTextAttribute.ellipsis as string) : ellipsis || undefined,\n // maxLineWidth\n // );\n // const { bbox } = layoutData;\n this.cache.layoutData = layoutData;\n this.clearUpdateShapeTag();\n this._AABBBounds.set(bbox.xOffset, bbox.yOffset, bbox.xOffset + bbox.width, bbox.yOffset + bbox.height);\n\n if (stroke) {\n this._AABBBounds.expand(lineWidth / 2);\n }\n\n return this._AABBBounds;\n }\n\n needUpdateTags(keys: string[]): boolean {\n for (let i = 0; i < WRAP_TEXT_UPDATE_TAG_KEY.length; i++) {\n const attrKey = WRAP_TEXT_UPDATE_TAG_KEY[i];\n if (keys.indexOf(attrKey) !== -1) {\n return true;\n }\n }\n return super.needUpdateTags(keys);\n }\n\n needUpdateTag(key: string): boolean {\n for (let i = 0; i < WRAP_TEXT_UPDATE_TAG_KEY.length; i++) {\n const attrKey = WRAP_TEXT_UPDATE_TAG_KEY[i];\n if (key === attrKey) {\n return true;\n }\n }\n return super.needUpdateTag(key);\n }\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import 'core-js/proposals/reflect-metadata';
2
2
  import './modules';
3
- export declare const version = "0.15.0-alpha.2";
3
+ export declare const version = "0.15.0-alpha.21";
4
4
  export * from './container';
5
5
  export * from './core/global';
6
6
  export * from './graphic';
@@ -38,6 +38,7 @@ export * from './common/split-path';
38
38
  export * from './common/enums';
39
39
  export * from './common/generator';
40
40
  export * from './plugins/constants';
41
+ export * from './allocator/matrix-allocate';
41
42
  export * from './animate/default-ticker';
42
43
  export { wrapCanvas, wrapContext } from './canvas/util';
43
44
  export * from './jsx';
package/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.wrapContext = exports.wrapCanvas = exports.version = void 0, require("core-js/proposals/reflect-metadata"),
21
- require("./modules"), exports.version = "0.15.0-alpha.2", __exportStar(require("./container"), exports),
21
+ require("./modules"), exports.version = "0.15.0-alpha.21", __exportStar(require("./container"), exports),
22
22
  __exportStar(require("./core/global"), exports), __exportStar(require("./graphic"), exports),
23
23
  __exportStar(require("./modules"), exports), __exportStar(require("./create"), exports),
24
24
  __exportStar(require("./event"), exports), __exportStar(require("./interface"), exports),
@@ -37,7 +37,7 @@ __exportStar(require("./common/render-area"), exports), __exportStar(require("./
37
37
  __exportStar(require("./common/sort"), exports), __exportStar(require("./common/morphing-utils"), exports),
38
38
  __exportStar(require("./common/split-path"), exports), __exportStar(require("./common/enums"), exports),
39
39
  __exportStar(require("./common/generator"), exports), __exportStar(require("./plugins/constants"), exports),
40
- __exportStar(require("./animate/default-ticker"), exports);
40
+ __exportStar(require("./allocator/matrix-allocate"), exports), __exportStar(require("./animate/default-ticker"), exports);
41
41
 
42
42
  var util_1 = require("./canvas/util");
43
43
 
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4C;AAC5C,qBAAmB;AAGN,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAExC,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,4EAA0D;AAC1D,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,4CAA0B;AAC1B,2DAAyC;AAGzC,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AAEpC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AAEpC,2DAAyC;AACzC,sCAAwD;AAA/C,kGAAA,UAAU,OAAA;AAAE,mGAAA,WAAW,OAAA;AAChC,wCAAsB","file":"index.js","sourcesContent":["import 'core-js/proposals/reflect-metadata';\nimport './modules';\n\n// 导出版本号\nexport const version = \"0.15.0-alpha.2\";\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './render/contributions/render/base-render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './kits';\nexport * from './animate';\nexport * from './resource-loader/loader';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\nexport * from './common/generator';\nexport * from './plugins/constants';\n\nexport * from './animate/default-ticker';\nexport { wrapCanvas, wrapContext } from './canvas/util';\nexport * from './jsx';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4C;AAC5C,qBAAmB;AAGN,QAAA,OAAO,GAAG,iBAAiB,CAAC;AAEzC,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,4EAA0D;AAC1D,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,4CAA0B;AAC1B,2DAAyC;AAGzC,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AAEpC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,8DAA4C;AAE5C,2DAAyC;AACzC,sCAAwD;AAA/C,kGAAA,UAAU,OAAA;AAAE,mGAAA,WAAW,OAAA;AAChC,wCAAsB","file":"index.js","sourcesContent":["import 'core-js/proposals/reflect-metadata';\nimport './modules';\n\n// 导出版本号\nexport const version = \"0.15.0-alpha.21\";\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './render/contributions/render/base-render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './kits';\nexport * from './animate';\nexport * from './resource-loader/loader';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\nexport * from './common/generator';\nexport * from './plugins/constants';\nexport * from './allocator/matrix-allocate';\n\nexport * from './animate/default-ticker';\nexport { wrapCanvas, wrapContext } from './canvas/util';\nexport * from './jsx';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/allocator.ts"],"names":[],"mappings":"","file":"allocator.js","sourcesContent":["import type { IMatrix, mat4 } from '@visactor/vutils';\nimport type { ICanvas } from './canvas';\nimport type { IRect } from './graphic/rect';\nimport type { IArc } from './graphic/arc';\nimport type { IArea } from './graphic/area';\nimport type { ICircle } from './graphic/circle';\nimport type { ILine } from './graphic/line';\nimport type { IPath } from './graphic/path';\nimport type { ISymbol } from './graphic/symbol';\nimport type { IText } from './graphic/text';\n\nexport interface IAllocate<T> {\n allocate: (...d: any) => T;\n allocateByObj: (obj: T) => T;\n free: (d: T) => void;\n length: number;\n}\n\nexport type ICanvasAllocate = IAllocate<ICanvas>;\nexport type IRectAllocate = IAllocate<IRect>;\nexport type IArcAllocate = IAllocate<IArc>;\nexport type IAreaAllocate = IAllocate<IArea>;\nexport type ICircleAllocate = IAllocate<ICircle>;\nexport type ILineAllocate = IAllocate<ILine>;\nexport type IPathAllocate = IAllocate<IPath>;\nexport type ISymbolAllocate = IAllocate<ISymbol>;\nexport type ITextAllocate = IAllocate<IText>;\n\nexport type IMatrixAllocate = IAllocate<IMatrix>;\nexport type IMat4Allocate = IAllocate<mat4>;\n"]}
1
+ {"version":3,"sources":["../src/interface/allocator.ts"],"names":[],"mappings":"","file":"allocator.js","sourcesContent":["import type { IMatrix, mat4 } from '@visactor/vutils';\nimport type { ICanvas } from './canvas';\nimport type { IRect } from './graphic/rect';\nimport type { IArc } from './graphic/arc';\nimport type { IArea } from './graphic/area';\nimport type { ICircle } from './graphic/circle';\nimport type { ILine } from './graphic/line';\nimport type { IPath } from './graphic/path';\nimport type { ISymbol } from './graphic/symbol';\nimport type { IText } from './graphic/text';\n\nexport interface IAllocate<T> {\n allocate: (...d: any) => T;\n allocateByObj: (obj: T) => T;\n free: (d: T) => void;\n length: number;\n}\n\nexport type ICanvasAllocate = IAllocate<ICanvas>;\nexport type IRectAllocate = IAllocate<IRect>;\nexport type IArcAllocate = IAllocate<IArc>;\nexport type IAreaAllocate = IAllocate<IArea>;\nexport type ICircleAllocate = IAllocate<ICircle>;\nexport type ILineAllocate = IAllocate<ILine>;\nexport type IPathAllocate = IAllocate<IPath>;\nexport type ISymbolAllocate = IAllocate<ISymbol>;\nexport type ITextAllocate = IAllocate<IText>;\n\nexport type IMatrixAllocate = IAllocate<IMatrix>;\nexport type IMat4Allocate = IAllocate<mat4>;\n"]}
@@ -101,6 +101,7 @@ export interface IAnimate {
101
101
  _onRemove?: (() => void)[];
102
102
  getStartProps: () => Record<string, any>;
103
103
  getEndProps: () => Record<string, any>;
104
+ setTimeline: (timeline: ITimeline) => void;
104
105
  bind: (target: IAnimateTarget) => this;
105
106
  to: (props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) => this;
106
107
  from: (props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) => this;
@@ -157,7 +158,7 @@ export interface ITimeline {
157
158
  id: number;
158
159
  animateCount: number;
159
160
  addAnimate: (animate: IAnimate) => void;
160
- removeAnimate: (animate: IAnimate) => void;
161
+ removeAnimate: (animate: IAnimate, release?: boolean) => void;
161
162
  tick: (delta: number) => void;
162
163
  clear: () => void;
163
164
  pause: () => void;
@@ -186,4 +187,5 @@ export interface ITicker {
186
187
  resume: () => boolean;
187
188
  start: (force?: boolean) => boolean;
188
189
  stop: () => void;
190
+ addTimeline: (timeline: ITimeline) => void;
189
191
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/animate.ts"],"names":[],"mappings":"","file":"animate.js","sourcesContent":["import type { AnimateMode, AnimateStatus, AnimateStepType } from '../common/enums';\nimport type { Releaseable } from './common';\nimport type { IGraphic } from './graphic';\n\n// export type EasingType = (...args: any) => any;\n\nexport declare class Easing {\n static linear(t: number): number;\n static none(): typeof Easing.linear;\n /**\n * 获取缓动函数,amount指示这个缓动函数的插值方式\n * @param amount\n * @returns\n */\n static get(amount: number): (t: number) => number;\n static getPowIn(pow: number): (t: number) => number;\n static getPowOut(pow: number): (t: number) => number;\n static getPowInOut(pow: number): (t: number) => number;\n static quadIn: (t: number) => number;\n static quadOut: (t: number) => number;\n static quadInOut: (t: number) => number;\n static cubicIn: (t: number) => number;\n static cubicOut: (t: number) => number;\n static cubicInOut: (t: number) => number;\n static quartIn: (t: number) => number;\n static quartOut: (t: number) => number;\n static quartInOut: (t: number) => number;\n static quintIn: (t: number) => number;\n static quintOut: (t: number) => number;\n static quintInOut: (t: number) => number;\n static getBackIn(amount: number): (t: number) => number;\n static getBackOut(amount: number): (t: number) => number;\n static getBackInOut(amount: number): (t: number) => number;\n static backIn: (t: number) => number;\n static backOut: (t: number) => number;\n static backInOut: (t: number) => number;\n static circIn(t: number): number;\n static circOut(t: number): number;\n static circInOut(t: number): number;\n static bounceOut(t: number): number;\n static bounceIn(t: number): number;\n static bounceInOut(t: number): number;\n static getElasticIn(amplitude: number, period: number): (t: number) => number;\n static getElasticOut(amplitude: number, period: number): (t: number) => number;\n static getElasticInOut(amplitude: number, period: number): (t: number) => number;\n static elasticIn: (t: number) => number;\n static elasticOut: (t: number) => number;\n static elasticInOut: (t: number) => number;\n}\n\n// timeline管理一堆的animate,多个timeline互不影响\n// timeline主要作用是基于layer层面的整体管理\n// 每个layer默认带有一个timeline\nexport interface Timeline {\n AnimateList: IAnimate[];\n}\n\ntype IStopType = 'end' | 'start' | 'current';\n\n// TODO: 提供options配置可序列化\ninterface AnimateSpecItem {\n type: 'to' | 'delay' | 'stop' | 'any';\n params: any[];\n}\n\nexport type EasingTypeStr =\n | 'linear'\n | 'quadIn'\n | 'quadOut'\n | 'quadInOut'\n | 'quadInOut'\n | 'cubicIn'\n | 'cubicOut'\n | 'cubicInOut'\n | 'quartIn'\n | 'quartOut'\n | 'quartInOut'\n | 'quintIn'\n | 'quintOut'\n | 'quintInOut'\n | 'backIn'\n | 'backOut'\n | 'backInOut'\n | 'circIn'\n | 'circOut'\n | 'circInOut'\n | 'bounceOut'\n | 'bounceIn'\n | 'bounceInOut'\n | 'elasticIn'\n | 'elasticOut'\n | 'elasticInOut'\n | 'sineIn'\n | 'sineOut'\n | 'sineInOut'\n | 'expoIn'\n | 'expoOut'\n | 'expoInOut'\n | '';\nexport type EasingTypeFunc = (t: number) => number;\n\nexport type EasingType = EasingTypeStr | EasingTypeFunc;\n\nexport type IAnimateStepType = keyof typeof AnimateStepType;\n\nexport interface IStep {\n type: IAnimateStepType;\n prev?: IStep;\n // 持续时间\n duration: number;\n // 在animate中的位置\n position: number;\n next?: IStep;\n props?: any;\n parsedProps?: any;\n propKeys?: string[];\n easing?: EasingTypeFunc;\n customAnimate?: ICustomAnimate;\n\n append: (step: IStep) => void;\n getLastProps: () => any;\n}\n\nexport interface IStepConfig {\n tempProps?: boolean; // props为临时props,可以直接使用不用拷贝\n noPreventAttrs?: boolean;\n}\n\nexport interface IAnimateTarget {\n onAnimateBind?: (animte: IAnimate | ISubAnimate) => void;\n // 添加动画step的时候调用\n onAddStep?: (step: IStep) => void;\n // step时调用\n onStep: (subAnimate: ISubAnimate, animate: IAnimate, step: IStep, ratio: number, end: boolean) => void;\n // 插值函数\n stepInterpolate: (\n subAnimate: ISubAnimate,\n animate: IAnimate,\n nextAttributes: Record<string, any>,\n step: IStep,\n ratio: number,\n end: boolean,\n nextProps: Record<string, any>,\n lastProps?: Record<string, any>,\n nextParsedProps?: any,\n propKeys?: string[]\n ) => void;\n // 获取属性\n getComputedAttribute: (name: string) => any;\n // 获取默认属性\n getDefaultAttribute: (name: string) => any;\n onStop: (props?: Record<string, any>) => void;\n animates: Map<string | number, IAnimate>;\n [key: string]: any;\n}\n\nexport interface ICustomAnimate {\n duration: number;\n easing: EasingType;\n step?: IStep;\n mode?: AnimateMode;\n\n bind: (target: IAnimateTarget, subAni: ISubAnimate) => void;\n // 在第一次调用的时候触发\n onBind: () => void;\n // 第一次执行的时候调用\n onFirstRun: () => void;\n // 开始执行的时候调用(如果有循环,那每个周期都会调用)\n onStart: () => void;\n // 结束执行的时候调用(如果有循环,那每个周期都会调用)\n onEnd: () => void;\n onUpdate: (end: boolean, ratio: number, out: Record<string, any>) => void;\n update: (end: boolean, ratio: number, out: Record<string, any>) => void;\n getEndProps: () => Record<string, any> | void;\n getFromProps: () => Record<string, any> | void;\n getMergedEndProps: () => Record<string, any> | void;\n}\n\n// 每一个animate绑定一个graphic,用于描述这个graphic的动画内容\n// 在timeline层面,animate相当于是一段timeslice\nexport interface IAnimate {\n readonly id: string | number;\n status: AnimateStatus;\n\n interpolateFunc: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n\n _onStart?: (() => void)[];\n _onFrame?: ((step: IStep, ratio: number) => void)[];\n _onEnd?: (() => void)[];\n _onRemove?: (() => void)[];\n\n getStartProps: () => Record<string, any>;\n getEndProps: () => Record<string, any>;\n\n bind: (target: IAnimateTarget) => this;\n to: (props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) => this;\n from: (props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) => this;\n pause: () => void;\n resume: () => void;\n onStart: (cb: () => void) => void;\n onEnd: (cb: () => void) => void;\n onFrame: (cb: (step: IStep, ratio: number) => void) => void;\n // 屏蔽属性\n preventAttr: (key: string) => void;\n // 屏蔽属性\n preventAttrs: (key: string[]) => void;\n // 属性是否合法\n validAttr: (key: string) => boolean;\n\n runCb: (cb: (a: IAnimate, step: IStep) => void) => IAnimate;\n\n // 自定义插值,返回false表示没有匹配上\n customInterpolate: (\n key: string,\n ratio: number,\n from: any,\n to: any,\n target: IAnimateTarget,\n ret: Record<string, any>\n ) => boolean;\n //\n play: (customAnimate: ICustomAnimate) => this;\n\n // 获取该属性的上一个值\n // getLastPropByName: (name: string, step: IStep) => any;\n // delay: (duration: number) => IAnimate;\n stop: (type?: 'start' | 'end' | Record<string, any>) => void;\n /** 打上END标志,下一帧被删除 */\n release: () => void;\n // 获取持续的时长\n getDuration: () => number;\n // 获取动画开始时间(注意并不是子动画的startAt)\n getStartTime: () => number;\n // done: (cb: (_: any) => any) => IAnimate;\n // pause: () => IAnimate;\n // spec: (spec: AnimateSpecItem[]) => IAnimate;\n // start: () => void; // 有start方法,避免动画提前开始(VGrammar需要时间处理数据)\n wait: (delay: number) => this;\n\n // // 编排\n afterAll: (list: IAnimate[]) => this;\n after: (animate: IAnimate) => this;\n parallel: (animate: IAnimate) => this;\n\n // // timislice (getter)\n // startTime: number;\n // endTime: number;\n // startTimes: number[];\n // endTimes: number[];\n\n // // 高级参数,frame到frameEnd之间可以进行reverse,loop,bounce效果\n // frame: () => IAnimate;\n // frameEnd: () => IAnimate;\n reversed: (r: boolean) => IAnimate;\n loop: (n: number) => IAnimate;\n bounce: (b: boolean) => IAnimate;\n\n nextAnimate?: IAnimate;\n prevAnimate?: IAnimate;\n\n advance: (delta: number) => void;\n\n startAt: (t: number) => IAnimate;\n\n // // 语法糖\n // create: (duration: number) => IAnimate;\n // fadeIn: (duration: number) => IAnimate;\n}\n\nexport interface ISubAnimate {\n getLastStep: () => IStep;\n animate: IAnimate;\n // 获取该属性的上一个值\n getLastPropByName: (name: string, step: IStep) => any;\n}\n\n// rect.animate().abc().to({}, 1000).delay(1000).frame().to().delay().to().frameEnd().loop().bounce()\n\nexport interface BaseAnimateConfig {\n id?: number | string;\n interpolate?: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n onStart?: () => void;\n onFrame?: (step: IStep, ratio: number) => void;\n onEnd?: () => void;\n onRemove?: () => void;\n}\n\n// VGrammar和 vrender命名不一致,好尴尬\nexport interface MorphingAnimateConfig extends Omit<BaseAnimateConfig, 'interpolate'> {\n duration?: number;\n easing?: EasingType; // 统一到easing\n delay?: number;\n}\n\nexport interface MultiMorphingAnimateConfig extends MorphingAnimateConfig {\n splitPath?: 'clone' | ((graphic: IGraphic, count: number, needAppend?: boolean) => IGraphic[]);\n individualDelay?: (index: number, count: number, fromGraphic: IGraphic, toGraphic: IGraphic) => number;\n}\n\nexport interface ITimeline {\n id: number;\n animateCount: number;\n addAnimate: (animate: IAnimate) => void;\n removeAnimate: (animate: IAnimate) => void;\n tick: (delta: number) => void;\n clear: () => void;\n pause: () => void;\n resume: () => void;\n}\n\nexport interface ITickHandler extends Releaseable {\n avaliable: () => boolean;\n /**\n * 开始执行tick\n * @param interval 延时 ms\n * @param cb 执行的回调\n */\n tick: (interval: number, cb: (handler: ITickHandler) => void) => void; // 开始\n tickTo?: (t: number, cb: (handler: ITickHandler, params?: { once: boolean }) => void) => void;\n getTime: () => number; // 获取时间\n}\n\nexport interface ITickerHandlerStatic {\n Avaliable: () => boolean;\n new (): ITickHandler;\n}\n\nexport interface ITicker {\n setFPS?: (fps: number) => void;\n setInterval?: (interval: number) => void;\n getFPS?: () => number;\n getInterval?: () => number;\n tick: (interval: number) => void;\n tickAt?: (time: number) => void;\n pause: () => boolean;\n resume: () => boolean;\n /**\n * 开启tick,force为true强制开启,否则如果timeline为空则不开启\n */\n start: (force?: boolean) => boolean;\n stop: () => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/animate.ts"],"names":[],"mappings":"","file":"animate.js","sourcesContent":["import type { AnimateMode, AnimateStatus, AnimateStepType } from '../common/enums';\nimport type { Releaseable } from './common';\nimport type { IGraphic } from './graphic';\n\n// export type EasingType = (...args: any) => any;\n\nexport declare class Easing {\n static linear(t: number): number;\n static none(): typeof Easing.linear;\n /**\n * 获取缓动函数,amount指示这个缓动函数的插值方式\n * @param amount\n * @returns\n */\n static get(amount: number): (t: number) => number;\n static getPowIn(pow: number): (t: number) => number;\n static getPowOut(pow: number): (t: number) => number;\n static getPowInOut(pow: number): (t: number) => number;\n static quadIn: (t: number) => number;\n static quadOut: (t: number) => number;\n static quadInOut: (t: number) => number;\n static cubicIn: (t: number) => number;\n static cubicOut: (t: number) => number;\n static cubicInOut: (t: number) => number;\n static quartIn: (t: number) => number;\n static quartOut: (t: number) => number;\n static quartInOut: (t: number) => number;\n static quintIn: (t: number) => number;\n static quintOut: (t: number) => number;\n static quintInOut: (t: number) => number;\n static getBackIn(amount: number): (t: number) => number;\n static getBackOut(amount: number): (t: number) => number;\n static getBackInOut(amount: number): (t: number) => number;\n static backIn: (t: number) => number;\n static backOut: (t: number) => number;\n static backInOut: (t: number) => number;\n static circIn(t: number): number;\n static circOut(t: number): number;\n static circInOut(t: number): number;\n static bounceOut(t: number): number;\n static bounceIn(t: number): number;\n static bounceInOut(t: number): number;\n static getElasticIn(amplitude: number, period: number): (t: number) => number;\n static getElasticOut(amplitude: number, period: number): (t: number) => number;\n static getElasticInOut(amplitude: number, period: number): (t: number) => number;\n static elasticIn: (t: number) => number;\n static elasticOut: (t: number) => number;\n static elasticInOut: (t: number) => number;\n}\n\n// timeline管理一堆的animate,多个timeline互不影响\n// timeline主要作用是基于layer层面的整体管理\n// 每个layer默认带有一个timeline\nexport interface Timeline {\n AnimateList: IAnimate[];\n}\n\ntype IStopType = 'end' | 'start' | 'current';\n\n// TODO: 提供options配置可序列化\ninterface AnimateSpecItem {\n type: 'to' | 'delay' | 'stop' | 'any';\n params: any[];\n}\n\nexport type EasingTypeStr =\n | 'linear'\n | 'quadIn'\n | 'quadOut'\n | 'quadInOut'\n | 'quadInOut'\n | 'cubicIn'\n | 'cubicOut'\n | 'cubicInOut'\n | 'quartIn'\n | 'quartOut'\n | 'quartInOut'\n | 'quintIn'\n | 'quintOut'\n | 'quintInOut'\n | 'backIn'\n | 'backOut'\n | 'backInOut'\n | 'circIn'\n | 'circOut'\n | 'circInOut'\n | 'bounceOut'\n | 'bounceIn'\n | 'bounceInOut'\n | 'elasticIn'\n | 'elasticOut'\n | 'elasticInOut'\n | 'sineIn'\n | 'sineOut'\n | 'sineInOut'\n | 'expoIn'\n | 'expoOut'\n | 'expoInOut'\n | '';\nexport type EasingTypeFunc = (t: number) => number;\n\nexport type EasingType = EasingTypeStr | EasingTypeFunc;\n\nexport type IAnimateStepType = keyof typeof AnimateStepType;\n\nexport interface IStep {\n type: IAnimateStepType;\n prev?: IStep;\n // 持续时间\n duration: number;\n // 在animate中的位置\n position: number;\n next?: IStep;\n props?: any;\n parsedProps?: any;\n propKeys?: string[];\n easing?: EasingTypeFunc;\n customAnimate?: ICustomAnimate;\n\n append: (step: IStep) => void;\n getLastProps: () => any;\n}\n\nexport interface IStepConfig {\n tempProps?: boolean; // props为临时props,可以直接使用不用拷贝\n noPreventAttrs?: boolean;\n}\n\nexport interface IAnimateTarget {\n onAnimateBind?: (animte: IAnimate | ISubAnimate) => void;\n // 添加动画step的时候调用\n onAddStep?: (step: IStep) => void;\n // step时调用\n onStep: (subAnimate: ISubAnimate, animate: IAnimate, step: IStep, ratio: number, end: boolean) => void;\n // 插值函数\n stepInterpolate: (\n subAnimate: ISubAnimate,\n animate: IAnimate,\n nextAttributes: Record<string, any>,\n step: IStep,\n ratio: number,\n end: boolean,\n nextProps: Record<string, any>,\n lastProps?: Record<string, any>,\n nextParsedProps?: any,\n propKeys?: string[]\n ) => void;\n // 获取属性\n getComputedAttribute: (name: string) => any;\n // 获取默认属性\n getDefaultAttribute: (name: string) => any;\n onStop: (props?: Record<string, any>) => void;\n animates: Map<string | number, IAnimate>;\n [key: string]: any;\n}\n\nexport interface ICustomAnimate {\n duration: number;\n easing: EasingType;\n step?: IStep;\n mode?: AnimateMode;\n\n bind: (target: IAnimateTarget, subAni: ISubAnimate) => void;\n // 在第一次调用的时候触发\n onBind: () => void;\n // 第一次执行的时候调用\n onFirstRun: () => void;\n // 开始执行的时候调用(如果有循环,那每个周期都会调用)\n onStart: () => void;\n // 结束执行的时候调用(如果有循环,那每个周期都会调用)\n onEnd: () => void;\n onUpdate: (end: boolean, ratio: number, out: Record<string, any>) => void;\n update: (end: boolean, ratio: number, out: Record<string, any>) => void;\n getEndProps: () => Record<string, any> | void;\n getFromProps: () => Record<string, any> | void;\n getMergedEndProps: () => Record<string, any> | void;\n}\n\n// 每一个animate绑定一个graphic,用于描述这个graphic的动画内容\n// 在timeline层面,animate相当于是一段timeslice\nexport interface IAnimate {\n readonly id: string | number;\n status: AnimateStatus;\n\n interpolateFunc: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n\n _onStart?: (() => void)[];\n _onFrame?: ((step: IStep, ratio: number) => void)[];\n _onEnd?: (() => void)[];\n _onRemove?: (() => void)[];\n\n getStartProps: () => Record<string, any>;\n getEndProps: () => Record<string, any>;\n\n setTimeline: (timeline: ITimeline) => void;\n\n bind: (target: IAnimateTarget) => this;\n to: (props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) => this;\n from: (props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) => this;\n pause: () => void;\n resume: () => void;\n onStart: (cb: () => void) => void;\n onEnd: (cb: () => void) => void;\n onFrame: (cb: (step: IStep, ratio: number) => void) => void;\n // 屏蔽属性\n preventAttr: (key: string) => void;\n // 屏蔽属性\n preventAttrs: (key: string[]) => void;\n // 属性是否合法\n validAttr: (key: string) => boolean;\n\n runCb: (cb: (a: IAnimate, step: IStep) => void) => IAnimate;\n\n // 自定义插值,返回false表示没有匹配上\n customInterpolate: (\n key: string,\n ratio: number,\n from: any,\n to: any,\n target: IAnimateTarget,\n ret: Record<string, any>\n ) => boolean;\n //\n play: (customAnimate: ICustomAnimate) => this;\n\n // 获取该属性的上一个值\n // getLastPropByName: (name: string, step: IStep) => any;\n // delay: (duration: number) => IAnimate;\n stop: (type?: 'start' | 'end' | Record<string, any>) => void;\n /** 打上END标志,下一帧被删除 */\n release: () => void;\n // 获取持续的时长\n getDuration: () => number;\n // 获取动画开始时间(注意并不是子动画的startAt)\n getStartTime: () => number;\n // done: (cb: (_: any) => any) => IAnimate;\n // pause: () => IAnimate;\n // spec: (spec: AnimateSpecItem[]) => IAnimate;\n // start: () => void; // 有start方法,避免动画提前开始(VGrammar需要时间处理数据)\n wait: (delay: number) => this;\n\n // // 编排\n afterAll: (list: IAnimate[]) => this;\n after: (animate: IAnimate) => this;\n parallel: (animate: IAnimate) => this;\n\n // // timislice (getter)\n // startTime: number;\n // endTime: number;\n // startTimes: number[];\n // endTimes: number[];\n\n // // 高级参数,frame到frameEnd之间可以进行reverse,loop,bounce效果\n // frame: () => IAnimate;\n // frameEnd: () => IAnimate;\n reversed: (r: boolean) => IAnimate;\n loop: (n: number) => IAnimate;\n bounce: (b: boolean) => IAnimate;\n\n nextAnimate?: IAnimate;\n prevAnimate?: IAnimate;\n\n advance: (delta: number) => void;\n\n startAt: (t: number) => IAnimate;\n\n // // 语法糖\n // create: (duration: number) => IAnimate;\n // fadeIn: (duration: number) => IAnimate;\n}\n\nexport interface ISubAnimate {\n getLastStep: () => IStep;\n animate: IAnimate;\n // 获取该属性的上一个值\n getLastPropByName: (name: string, step: IStep) => any;\n}\n\n// rect.animate().abc().to({}, 1000).delay(1000).frame().to().delay().to().frameEnd().loop().bounce()\n\nexport interface BaseAnimateConfig {\n id?: number | string;\n interpolate?: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n onStart?: () => void;\n onFrame?: (step: IStep, ratio: number) => void;\n onEnd?: () => void;\n onRemove?: () => void;\n}\n\n// VGrammar和 vrender命名不一致,好尴尬\nexport interface MorphingAnimateConfig extends Omit<BaseAnimateConfig, 'interpolate'> {\n duration?: number;\n easing?: EasingType; // 统一到easing\n delay?: number;\n}\n\nexport interface MultiMorphingAnimateConfig extends MorphingAnimateConfig {\n splitPath?: 'clone' | ((graphic: IGraphic, count: number, needAppend?: boolean) => IGraphic[]);\n individualDelay?: (index: number, count: number, fromGraphic: IGraphic, toGraphic: IGraphic) => number;\n}\n\nexport interface ITimeline {\n id: number;\n animateCount: number;\n addAnimate: (animate: IAnimate) => void;\n removeAnimate: (animate: IAnimate, release?: boolean) => void;\n tick: (delta: number) => void;\n clear: () => void;\n pause: () => void;\n resume: () => void;\n}\n\nexport interface ITickHandler extends Releaseable {\n avaliable: () => boolean;\n /**\n * 开始执行tick\n * @param interval 延时 ms\n * @param cb 执行的回调\n */\n tick: (interval: number, cb: (handler: ITickHandler) => void) => void; // 开始\n tickTo?: (t: number, cb: (handler: ITickHandler, params?: { once: boolean }) => void) => void;\n getTime: () => number; // 获取时间\n}\n\nexport interface ITickerHandlerStatic {\n Avaliable: () => boolean;\n new (): ITickHandler;\n}\n\nexport interface ITicker {\n setFPS?: (fps: number) => void;\n setInterval?: (interval: number) => void;\n getFPS?: () => number;\n getInterval?: () => number;\n tick: (interval: number) => void;\n tickAt?: (time: number) => void;\n pause: () => boolean;\n resume: () => boolean;\n /**\n * 开启tick,force为true强制开启,否则如果timeline为空则不开启\n */\n start: (force?: boolean) => boolean;\n stop: () => void;\n addTimeline: (timeline: ITimeline) => void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/camera.ts"],"names":[],"mappings":"","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { mat4, vec3 } from './matrix';\n\nexport type ViewParameters = {\n pos: vec3;\n center: vec3;\n up: vec3;\n};\n\nexport type OrthoParameters = {\n left: number;\n right: number;\n top: number;\n bottom: number;\n fieldRatio: number;\n viewParams: ViewParameters;\n fieldDepth?: number;\n};\n\nexport interface ICamera {\n params: OrthoParameters;\n getViewMatrix: () => mat4;\n getProjectionMatrix: () => mat4;\n\n vp: (x: number, y: number, z: number) => IPointLike;\n view: (x: number, y: number, z: number) => [number, number, number];\n\n getProjectionScale: (z: number) => number;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/camera.ts"],"names":[],"mappings":"","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { mat4, vec3 } from './matrix';\n\nexport type ViewParameters = {\n pos: vec3;\n center: vec3;\n up: vec3;\n};\n\nexport type OrthoParameters = {\n left: number;\n right: number;\n top: number;\n bottom: number;\n fieldRatio: number;\n viewParams: ViewParameters;\n fieldDepth?: number;\n};\n\nexport interface ICamera {\n params: OrthoParameters;\n getViewMatrix: () => mat4;\n getProjectionMatrix: () => mat4;\n\n vp: (x: number, y: number, z: number) => IPointLike;\n view: (x: number, y: number, z: number) => [number, number, number];\n\n getProjectionScale: (z: number) => number;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/canvas.ts"],"names":[],"mappings":"","file":"canvas.js","sourcesContent":["/**\n * 提供ICanvas和ICanvasLike封装\n */\nimport type { Releaseable } from './common';\nimport type { IContextLike, IContext2d } from './context';\n\nexport type CanvasConfigType = {\n width?: number;\n height?: number;\n dpr?: number;\n x?: number;\n y?: number;\n container?: HTMLElement | string;\n visiable?: boolean;\n nativeCanvas: HTMLCanvasElement | any;\n canvasControled?: boolean;\n id?: string;\n};\n\nexport interface ICanvas extends Releaseable {\n width: number;\n height: number;\n id: number | string;\n x: number;\n y: number;\n visiable: boolean;\n nativeCanvas: HTMLCanvasElement | any;\n displayWidth: number;\n displayHeight: number;\n dpr: number;\n\n getContext: (contextId?: '2d', contextAttributes?: CanvasRenderingContext2DSettings) => IContext2d | null;\n\n getNativeCanvas: () => HTMLCanvasElement | any;\n\n // getContext(\n // contextId: 'bitmaprenderer',\n // contextAttributes?: WebGLContextAttributes,\n // ): ImageBitmapRenderingContext | null;\n\n // getContext(contextId: 'webgl', contextAttributes?: WebGLContextAttributes): WebGLRenderingContext | null;\n\n // getContext(contextId: 'webgl2', contextAttributes?: WebGLContextAttributes): WebGL2RenderingContext | null;\n\n convertToBlob: (options?: { type?: string | undefined; quality?: number | undefined }) => Promise<Blob>;\n\n transferToImageBitmap: () => ImageBitmap;\n\n resetStyle: (params: Partial<CanvasConfigType>) => void;\n applyPosition: () => void;\n\n hide: () => void;\n show: () => void;\n\n resize: (width: number, height: number) => void;\n\n toDataURL: (() => string) &\n ((mimeType: 'image/png') => string) &\n ((mimeType: 'image/jpeg', quality: number) => string);\n\n readPixels: (x: number, y: number, w: number, h: number) => ImageData | Promise<ImageData>;\n\n release: () => void;\n}\n\nexport interface ICanvasLike {\n width: number;\n height: number;\n\n /** _Non standard._ The type of the canvas. */\n readonly type?: 'image' | 'pdf' | 'svg';\n\n /** _Non standard._ Getter. The stride used by the canvas. */\n readonly stride?: number;\n\n /** Constant used in PNG encoding methods. */\n readonly PNG_NO_FILTERS?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_ALL_FILTERS?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_NONE?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_SUB?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_UP?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_AVG?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_PAETH?: number;\n\n getContext: (contextId: string) => IContextLike;\n}\n\nexport interface ICanvasFactory extends Function {\n (...params: any): ICanvas;\n}\n\nexport interface IContext2dFactory extends Function {\n (...params: any): IContext2d;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/canvas.ts"],"names":[],"mappings":"","file":"canvas.js","sourcesContent":["/**\n * 提供ICanvas和ICanvasLike封装\n */\nimport type { Releaseable } from './common';\nimport type { IContextLike, IContext2d } from './context';\n\nexport type CanvasConfigType = {\n width?: number;\n height?: number;\n dpr?: number;\n x?: number;\n y?: number;\n container?: HTMLElement | string;\n visiable?: boolean;\n nativeCanvas: HTMLCanvasElement | any;\n canvasControled?: boolean;\n id?: string;\n};\n\nexport interface ICanvas extends Releaseable {\n width: number;\n height: number;\n id: number | string;\n x: number;\n y: number;\n visiable: boolean;\n nativeCanvas: HTMLCanvasElement | any;\n displayWidth: number;\n displayHeight: number;\n dpr: number;\n\n getContext: (contextId?: '2d', contextAttributes?: CanvasRenderingContext2DSettings) => IContext2d | null;\n\n getNativeCanvas: () => HTMLCanvasElement | any;\n\n // getContext(\n // contextId: 'bitmaprenderer',\n // contextAttributes?: WebGLContextAttributes,\n // ): ImageBitmapRenderingContext | null;\n\n // getContext(contextId: 'webgl', contextAttributes?: WebGLContextAttributes): WebGLRenderingContext | null;\n\n // getContext(contextId: 'webgl2', contextAttributes?: WebGLContextAttributes): WebGL2RenderingContext | null;\n\n convertToBlob: (options?: { type?: string | undefined; quality?: number | undefined }) => Promise<Blob>;\n\n transferToImageBitmap: () => ImageBitmap;\n\n resetStyle: (params: Partial<CanvasConfigType>) => void;\n applyPosition: () => void;\n\n hide: () => void;\n show: () => void;\n\n resize: (width: number, height: number) => void;\n\n toDataURL: (() => string) &\n ((mimeType: 'image/png') => string) &\n ((mimeType: 'image/jpeg', quality: number) => string);\n\n readPixels: (x: number, y: number, w: number, h: number) => ImageData | Promise<ImageData>;\n\n release: () => void;\n}\n\nexport interface ICanvasLike {\n width: number;\n height: number;\n\n /** _Non standard._ The type of the canvas. */\n readonly type?: 'image' | 'pdf' | 'svg';\n\n /** _Non standard._ Getter. The stride used by the canvas. */\n readonly stride?: number;\n\n /** Constant used in PNG encoding methods. */\n readonly PNG_NO_FILTERS?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_ALL_FILTERS?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_NONE?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_SUB?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_UP?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_AVG?: number;\n /** Constant used in PNG encoding methods. */\n readonly PNG_FILTER_PAETH?: number;\n\n getContext: (contextId: string) => IContextLike;\n}\n\nexport interface ICanvasFactory extends Function {\n (...params: any): ICanvas;\n}\n\nexport interface IContext2dFactory extends Function {\n (...params: any): IContext2d;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/color.ts"],"names":[],"mappings":"","file":"color.js","sourcesContent":["interface IGradientStop {\n offset: number;\n color: string;\n}\n\nexport type IGradientColor = ILinearGradient | IRadialGradient | IConicalGradient;\n\nexport interface ILinearGradient {\n gradient: 'linear';\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n stops: IGradientStop[];\n}\n\nexport interface IRadialGradient {\n gradient: 'radial';\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n r0?: number;\n r1?: number;\n stops: IGradientStop[];\n}\n\nexport interface IConicalGradient {\n gradient: 'conical';\n startAngle?: number;\n endAngle?: number;\n x?: number;\n y?: number;\n stops: IGradientStop[];\n}\n\nexport interface IColorStop {\n offset: number;\n color: string;\n}\n\nexport type IColor = string | ILinearGradient | IRadialGradient | IConicalGradient;\n"]}
1
+ {"version":3,"sources":["../src/interface/color.ts"],"names":[],"mappings":"","file":"color.js","sourcesContent":["interface IGradientStop {\n offset: number;\n color: string;\n}\n\nexport type IGradientColor = ILinearGradient | IRadialGradient | IConicalGradient;\n\nexport interface ILinearGradient {\n gradient: 'linear';\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n stops: IGradientStop[];\n}\n\nexport interface IRadialGradient {\n gradient: 'radial';\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n r0?: number;\n r1?: number;\n stops: IGradientStop[];\n}\n\nexport interface IConicalGradient {\n gradient: 'conical';\n startAngle?: number;\n endAngle?: number;\n x?: number;\n y?: number;\n stops: IGradientStop[];\n}\n\nexport interface IColorStop {\n offset: number;\n color: string;\n}\n\nexport type IColor = string | ILinearGradient | IRadialGradient | IConicalGradient;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["export type ICurveType =\n | 'basis'\n | 'basisClosed'\n | 'basisOpen'\n | 'bundle'\n | 'cardinal'\n | 'cardinalClosed'\n | 'cardinalOpen'\n | 'stepBefore'\n | 'stepAfter'\n | 'catmullRom'\n | 'catmullRomClosed'\n | 'catmullRomOpen'\n | 'linear'\n | 'linearClosed'\n | 'monotoneX'\n | 'monotoneY'\n | 'natural'\n | 'radial'\n | 'step';\n\nexport type MaybePromise<T> = T | PromiseLike<T>;\n\n// 所有的接口都应当继承这个,避免内存没有释放\nexport interface Releaseable {\n release: (...params: any) => void;\n}\n\nexport interface IEventElement {\n // event接口\n addEventListener: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n on: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n once: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n removeEventListener: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n off: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n removeAllListeners: (<K extends keyof DocumentEventMap>(type: K) => void) & ((type: string) => void);\n dispatchEvent: (event: any) => boolean;\n emit: (event: any, ...args: any) => boolean;\n}\n\nexport interface IDomRectLike {\n bottom: number;\n left: number;\n right: number;\n top: number;\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\nexport type IDirection = 1 | 2;\n\nexport type AsArray<T> = T extends any[] ? T : [T];\n"]}
1
+ {"version":3,"sources":["../src/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["export type ICurveType =\n | 'basis'\n | 'basisClosed'\n | 'basisOpen'\n | 'bundle'\n | 'cardinal'\n | 'cardinalClosed'\n | 'cardinalOpen'\n | 'stepBefore'\n | 'stepAfter'\n | 'catmullRom'\n | 'catmullRomClosed'\n | 'catmullRomOpen'\n | 'linear'\n | 'linearClosed'\n | 'monotoneX'\n | 'monotoneY'\n | 'natural'\n | 'radial'\n | 'step';\n\nexport type MaybePromise<T> = T | PromiseLike<T>;\n\n// 所有的接口都应当继承这个,避免内存没有释放\nexport interface Releaseable {\n release: (...params: any) => void;\n}\n\nexport interface IEventElement {\n // event接口\n addEventListener: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n on: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n once: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n removeEventListener: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n off: (<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) => void) &\n ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);\n removeAllListeners: (<K extends keyof DocumentEventMap>(type: K) => void) & ((type: string) => void);\n dispatchEvent: (event: any) => boolean;\n emit: (event: any, ...args: any) => boolean;\n}\n\nexport interface IDomRectLike {\n bottom: number;\n left: number;\n right: number;\n top: number;\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\nexport type IDirection = 1 | 2;\n\nexport type AsArray<T> = T extends any[] ? T : [T];\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/context.ts"],"names":[],"mappings":"","file":"context.js","sourcesContent":["import type { Matrix, IMatrix, IBoundsLike, IPointLike } from '@visactor/vutils';\nimport type { ICamera } from './camera';\nimport type { ICanvas } from './canvas';\nimport type { Releaseable } from './common';\nimport type { mat4, vec3 } from './matrix';\nimport type { IFillType, IStrokeType, ITransform } from './graphic';\n\nexport interface IConicalGradientData {\n addColorStop: (pos: number, color: string) => void;\n readonly stops: [number, string][];\n GetPattern: (minW: number, minH: number, deltaAngle?: number) => CanvasPattern | null;\n}\n\n// 用于commonStyle函数的参数\nexport interface ICommonStyleParams {\n fill?: IFillType;\n fillOpacity?: number;\n shadowBlur?: number;\n shadowColor?: string;\n shadowOffsetX?: number;\n shadowOffsetY?: number;\n opacity?: number;\n blur?: number;\n}\n\nexport interface IStrokeStyleParams {\n stroke?: IStrokeType | IStrokeType[];\n strokeOpacity?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n lineWidth?: number;\n lineCap?: CanvasLineCap;\n lineJoin?: CanvasLineJoin;\n miterLimit?: number;\n opacity?: number;\n}\nexport interface ITextStyleParams {\n font?: string;\n fontSize: number;\n fontFamily?: string;\n fontWeight?: string | number;\n textAlign?: CanvasTextAlign;\n textBaseline?: CanvasTextBaseline;\n scaleIn3d?: boolean;\n}\n\nexport interface ISetCommonStyleParams {\n attribute: Partial<ICommonStyleParams & ITransform>;\n AABBBounds: IBoundsLike;\n}\n\nexport interface ISetStrokeStyleParams {\n attribute: Partial<IStrokeStyleParams & ITransform>;\n AABBBounds: IBoundsLike;\n}\nexport interface IContext2d extends Releaseable {\n stack: IMatrix[];\n inuse?: boolean;\n camera?: ICamera;\n modelMatrix?: mat4;\n drawPromise?: Promise<any>;\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n disableFill?: boolean;\n disableStroke?: boolean;\n disableBeginPath?: boolean;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n canvas: ICanvas;\n [key: string]: any; //类型没有索引签名\n\n getCanvas: () => ICanvas;\n\n getContext: () => any;\n\n /**\n * 设置当前ctx 的transform信息\n */\n setTransformForCurrent: (force?: boolean) => void;\n /**\n * 获取当前矩阵信息\n */\n currentMatrix: IMatrix;\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n highPerformanceRestore: () => void;\n\n /**\n *\n * @param angle 弧度数\n */\n rotate: (angle: number, setTransform?: boolean) => void;\n\n save: () => void;\n highPerformanceSave: () => void;\n\n project?: (x: number, y: number, z?: number) => IPointLike;\n view?: (x: number, y: number, z?: number) => vec3;\n\n scale: (x: number, y: number, setTransform?: boolean) => void;\n\n scalePoint: (sx: number, sy: number, px: number, py: number, setTransform?: boolean) => void;\n transform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean\n ) => void;\n transformFromMatrix: (matrix: Matrix, setTransform?: boolean) => void;\n setTransform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean,\n dpr?: number\n ) => void;\n setTransformFromMatrix: (matrix: Matrix, setTransform?: boolean, dpr?: number) => void;\n\n resetTransform: (setTransform?: boolean, dpr?: number) => void;\n\n translate: (x: number, y: number, setTransform?: boolean) => void;\n /**\n * 旋转角度,自动转换为弧度\n * @param deg 角度数\n */\n rotateDegrees: (deg: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param rad 弧度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateAbout: (rad: number, x: number, y: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param deg 旋转角度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateDegreesAbout: (deg: number, x: number, y: number, setTransform?: boolean) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean,\n z?: number\n ) => void;\n\n arcTo: (x1: number, y1: number, x2: number, y2: number, radius: number) => void;\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number, z?: number) => void;\n\n moveTo: (x: number, y: number, z?: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number, z?: number) => void;\n\n rect: (x: number, y: number, w: number, h: number, z?: number) => void;\n\n createImageData: (imageDataOrSw: number | ImageData, sh?: number) => ImageData;\n\n createLinearGradient: (x0: number, y0: number, x1: number, y1: number) => CanvasGradient;\n\n createPattern: (\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ICanvas | any,\n repetition: string\n ) => CanvasPattern | null;\n\n createRadialGradient: (x0: number, y0: number, r0: number, x1: number, y1: number, r1: number) => CanvasGradient;\n\n createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradientData | null;\n\n // createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradient | null;\n\n // fill(fillRule?: CanvasFillRule): void;\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, z?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (imagedata: ImageData, dx: number, dy: number) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, z?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n setCommonStyle: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setShadowStyle?: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setStrokeStyle: (\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: Required<IStrokeStyleParams> | Partial<IStrokeStyleParams>[]\n ) => void;\n\n setTextStyle: (params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams, z?: number) => void;\n setTextStyleWithoutAlignBaseline: (\n params: Partial<ITextStyleParams>,\n defaultParams?: ITextStyleParams,\n z?: number\n ) => void;\n\n draw: (...params: any) => void;\n\n clearMatrix: (setTransform?: boolean, dpr?: number) => void;\n onlyTranslate: (dpr?: number) => boolean;\n}\n\nexport interface IContextLike {\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n [key: string]: any; //类型没有索引签名\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n\n save: () => void;\n\n // transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;\n\n translate: (x: number, y: number) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) => void;\n\n arcTo: ((x1: number, y1: number, x2: number, y2: number, radius: number) => void) &\n ((x1: number, y1: number, x2: number, y2: number, radiusX: number, radiusY: number, rotation: number) => void);\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number) => void;\n\n moveTo: (x: number, y: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void;\n\n rect: (x: number, y: number, w: number, h: number) => void;\n\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (\n imagedata: ImageData,\n dx: number,\n dy: number,\n dirtyX?: number,\n dirtyY?: number,\n dirtyWidth?: number,\n dirtyHeight?: number\n ) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n clearMatrix: () => void;\n onlyTranslate: () => boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/context.ts"],"names":[],"mappings":"","file":"context.js","sourcesContent":["import type { Matrix, IMatrix, IBoundsLike, IPointLike } from '@visactor/vutils';\nimport type { ICamera } from './camera';\nimport type { ICanvas } from './canvas';\nimport type { Releaseable } from './common';\nimport type { mat4, vec3 } from './matrix';\nimport type { IFillType, IStrokeType, ITransform } from './graphic';\n\nexport interface IConicalGradientData {\n addColorStop: (pos: number, color: string) => void;\n readonly stops: [number, string][];\n GetPattern: (minW: number, minH: number, deltaAngle?: number) => CanvasPattern | null;\n}\n\n// 用于commonStyle函数的参数\nexport interface ICommonStyleParams {\n fill?: IFillType;\n fillOpacity?: number;\n shadowBlur?: number;\n shadowColor?: string;\n shadowOffsetX?: number;\n shadowOffsetY?: number;\n opacity?: number;\n blur?: number;\n}\n\nexport interface IStrokeStyleParams {\n stroke?: IStrokeType | IStrokeType[];\n strokeOpacity?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n lineWidth?: number;\n lineCap?: CanvasLineCap;\n lineJoin?: CanvasLineJoin;\n miterLimit?: number;\n opacity?: number;\n}\nexport interface ITextStyleParams {\n font?: string;\n fontSize: number;\n fontFamily?: string;\n fontWeight?: string | number;\n textAlign?: CanvasTextAlign;\n textBaseline?: CanvasTextBaseline;\n scaleIn3d?: boolean;\n}\n\nexport interface ISetCommonStyleParams {\n attribute: Partial<ICommonStyleParams & ITransform>;\n AABBBounds: IBoundsLike;\n}\n\nexport interface ISetStrokeStyleParams {\n attribute: Partial<IStrokeStyleParams & ITransform>;\n AABBBounds: IBoundsLike;\n}\nexport interface IContext2d extends Releaseable {\n stack: IMatrix[];\n inuse?: boolean;\n camera?: ICamera;\n modelMatrix?: mat4;\n drawPromise?: Promise<any>;\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n disableFill?: boolean;\n disableStroke?: boolean;\n disableBeginPath?: boolean;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n canvas: ICanvas;\n [key: string]: any; //类型没有索引签名\n\n getCanvas: () => ICanvas;\n\n getContext: () => any;\n\n /**\n * 设置当前ctx 的transform信息\n */\n setTransformForCurrent: (force?: boolean) => void;\n /**\n * 获取当前矩阵信息\n */\n currentMatrix: IMatrix;\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n highPerformanceRestore: () => void;\n\n /**\n *\n * @param angle 弧度数\n */\n rotate: (angle: number, setTransform?: boolean) => void;\n\n save: () => void;\n highPerformanceSave: () => void;\n\n project?: (x: number, y: number, z?: number) => IPointLike;\n view?: (x: number, y: number, z?: number) => vec3;\n\n scale: (x: number, y: number, setTransform?: boolean) => void;\n\n scalePoint: (sx: number, sy: number, px: number, py: number, setTransform?: boolean) => void;\n transform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean\n ) => void;\n transformFromMatrix: (matrix: Matrix, setTransform?: boolean) => void;\n setTransform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean,\n dpr?: number\n ) => void;\n setTransformFromMatrix: (matrix: Matrix, setTransform?: boolean, dpr?: number) => void;\n\n resetTransform: (setTransform?: boolean, dpr?: number) => void;\n\n translate: (x: number, y: number, setTransform?: boolean) => void;\n /**\n * 旋转角度,自动转换为弧度\n * @param deg 角度数\n */\n rotateDegrees: (deg: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param rad 弧度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateAbout: (rad: number, x: number, y: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param deg 旋转角度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateDegreesAbout: (deg: number, x: number, y: number, setTransform?: boolean) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean,\n z?: number\n ) => void;\n\n arcTo: (x1: number, y1: number, x2: number, y2: number, radius: number) => void;\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number, z?: number) => void;\n\n moveTo: (x: number, y: number, z?: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number, z?: number) => void;\n\n rect: (x: number, y: number, w: number, h: number, z?: number) => void;\n\n createImageData: (imageDataOrSw: number | ImageData, sh?: number) => ImageData;\n\n createLinearGradient: (x0: number, y0: number, x1: number, y1: number) => CanvasGradient;\n\n createPattern: (\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ICanvas | any,\n repetition: string\n ) => CanvasPattern | null;\n\n createRadialGradient: (x0: number, y0: number, r0: number, x1: number, y1: number, r1: number) => CanvasGradient;\n\n createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradientData | null;\n\n // createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradient | null;\n\n // fill(fillRule?: CanvasFillRule): void;\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, z?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (imagedata: ImageData, dx: number, dy: number) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, z?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n setCommonStyle: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setShadowStyle?: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setStrokeStyle: (\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: Required<IStrokeStyleParams> | Partial<IStrokeStyleParams>[]\n ) => void;\n\n setTextStyle: (params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams, z?: number) => void;\n setTextStyleWithoutAlignBaseline: (\n params: Partial<ITextStyleParams>,\n defaultParams?: ITextStyleParams,\n z?: number\n ) => void;\n\n draw: (...params: any) => void;\n\n clearMatrix: (setTransform?: boolean, dpr?: number) => void;\n onlyTranslate: (dpr?: number) => boolean;\n}\n\nexport interface IContextLike {\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n [key: string]: any; //类型没有索引签名\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n\n save: () => void;\n\n // transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;\n\n translate: (x: number, y: number) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) => void;\n\n arcTo: ((x1: number, y1: number, x2: number, y2: number, radius: number) => void) &\n ((x1: number, y1: number, x2: number, y2: number, radiusX: number, radiusY: number, rotation: number) => void);\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number) => void;\n\n moveTo: (x: number, y: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void;\n\n rect: (x: number, y: number, w: number, h: number) => void;\n\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (\n imagedata: ImageData,\n dx: number,\n dy: number,\n dirtyX?: number,\n dirtyY?: number,\n dirtyWidth?: number,\n dirtyHeight?: number\n ) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n clearMatrix: () => void;\n onlyTranslate: () => boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/contribution.ts"],"names":[],"mappings":"","file":"contribution.js","sourcesContent":["import type { MaybePromise, Releaseable } from './common';\nimport type { IContext2d } from './context';\nimport type { IThemeAttribute, IMarkAttribute } from './graphic/creator';\nimport type { IGraphicAttribute } from './graphic';\nimport type { ISymbol, ISymbolGraphicAttribute } from './graphic/symbol';\nimport type { BaseRenderContributionTime } from '../common/enums';\nimport type { IArc, IArcGraphicAttribute } from './graphic/arc';\nimport type { IArea, IAreaGraphicAttribute } from './graphic/area';\nimport type { IText, ITextGraphicAttribute } from './graphic/text';\nimport type { ICircle, ICircleGraphicAttribute } from './graphic/circle';\nimport type { IGroup, IGroupGraphicAttribute } from './graphic/group';\nimport type { IImage, IImageGraphicAttribute } from './graphic/image';\nimport type { IPath, IPathGraphicAttribute } from './graphic/path';\nimport type { IPolygon, IPolygonGraphicAttribute } from './graphic/polygon';\nimport type { IRect, IRectGraphicAttribute } from './graphic/rect';\nimport type { IStage } from './stage';\nimport type { ICanvasLike } from './canvas';\nimport type { IDrawContext } from './render';\n\nexport interface IContribution<T> extends Releaseable {\n configure: (service: T, ...data: any) => void;\n}\n\nexport interface IBaseRenderContribution<GraphicType, AttributeType> {\n time: BaseRenderContributionTime;\n useStyle: boolean;\n order: number;\n\n drawShape: (\n graphic: GraphicType,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n graphicAttribute: Required<AttributeType>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n params?: any\n ) => void;\n}\n\nexport type ISymbolRenderContribution = IBaseRenderContribution<ISymbol, ISymbolGraphicAttribute>;\n\nexport type IArcRenderContribution = IBaseRenderContribution<IArc, IArcGraphicAttribute>;\n\nexport type ITextRenderContribution = IBaseRenderContribution<IText, ITextGraphicAttribute>;\n\nexport type IAreaRenderContribution = IBaseRenderContribution<IArea, IAreaGraphicAttribute>;\n\nexport type ICircleRenderContribution = IBaseRenderContribution<ICircle, ICircleGraphicAttribute>;\n\nexport type IGroupRenderContribution = IBaseRenderContribution<IGroup, IGroupGraphicAttribute>;\n\nexport type IImageRenderContribution = IBaseRenderContribution<IImage, IImageGraphicAttribute>;\n\nexport type IPathRenderContribution = IBaseRenderContribution<IPath, IPathGraphicAttribute>;\n\nexport type IPolygonRenderContribution = IBaseRenderContribution<IPolygon, IPolygonGraphicAttribute>;\n\nexport type IRectRenderContribution = IBaseRenderContribution<IRect, IRectGraphicAttribute>;\n\nexport interface IContributionProvider<T> {\n getContributions: () => T[];\n}\n\nexport interface IApplicationContribution {\n // 调用初始化函数\n initialize?: () => void;\n\n configure?: (stage: IStage) => MaybePromise<void>;\n\n onDestroy?: (stage: IStage) => MaybePromise<void>;\n}\n\nexport interface ITTCanvas extends ICanvasLike {\n width: number;\n height: number;\n offsetWidth: number;\n offsetHeight: number;\n getContext: () => any;\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => { width: number; height: number };\n id: string;\n}\n\nexport interface ILynxCanvas extends ICanvasLike {\n width: number;\n height: number;\n offsetWidth: number;\n offsetHeight: number;\n getContext: () => any;\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => { width: number; height: number };\n id: string;\n}\n\nexport interface IDomRef {\n id: string;\n width: number;\n height: number;\n left: number;\n top: number;\n right: number;\n bottom: number;\n x: number;\n y: number;\n\n requestAnimationFrame?: any;\n cancelAnimationFrame?: any;\n getBoundingClientRect?: () => { height: number; width: number };\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/contribution.ts"],"names":[],"mappings":"","file":"contribution.js","sourcesContent":["import type { MaybePromise, Releaseable } from './common';\nimport type { IContext2d } from './context';\nimport type { IThemeAttribute, IMarkAttribute } from './graphic/creator';\nimport type { IGraphicAttribute } from './graphic';\nimport type { ISymbol, ISymbolGraphicAttribute } from './graphic/symbol';\nimport type { BaseRenderContributionTime } from '../common/enums';\nimport type { IArc, IArcGraphicAttribute } from './graphic/arc';\nimport type { IArea, IAreaGraphicAttribute } from './graphic/area';\nimport type { IText, ITextGraphicAttribute } from './graphic/text';\nimport type { ICircle, ICircleGraphicAttribute } from './graphic/circle';\nimport type { IGroup, IGroupGraphicAttribute } from './graphic/group';\nimport type { IImage, IImageGraphicAttribute } from './graphic/image';\nimport type { IPath, IPathGraphicAttribute } from './graphic/path';\nimport type { IPolygon, IPolygonGraphicAttribute } from './graphic/polygon';\nimport type { IRect, IRectGraphicAttribute } from './graphic/rect';\nimport type { IStage } from './stage';\nimport type { ICanvasLike } from './canvas';\nimport type { IDrawContext } from './render';\n\nexport interface IContribution<T> extends Releaseable {\n configure: (service: T, ...data: any) => void;\n}\n\nexport interface IBaseRenderContribution<GraphicType, AttributeType> {\n time: BaseRenderContributionTime;\n useStyle: boolean;\n order: number;\n\n drawShape: (\n graphic: GraphicType,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n graphicAttribute: Required<AttributeType>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n params?: any\n ) => void;\n}\n\nexport type ISymbolRenderContribution = IBaseRenderContribution<ISymbol, ISymbolGraphicAttribute>;\n\nexport type IArcRenderContribution = IBaseRenderContribution<IArc, IArcGraphicAttribute>;\n\nexport type ITextRenderContribution = IBaseRenderContribution<IText, ITextGraphicAttribute>;\n\nexport type IAreaRenderContribution = IBaseRenderContribution<IArea, IAreaGraphicAttribute>;\n\nexport type ICircleRenderContribution = IBaseRenderContribution<ICircle, ICircleGraphicAttribute>;\n\nexport type IGroupRenderContribution = IBaseRenderContribution<IGroup, IGroupGraphicAttribute>;\n\nexport type IImageRenderContribution = IBaseRenderContribution<IImage, IImageGraphicAttribute>;\n\nexport type IPathRenderContribution = IBaseRenderContribution<IPath, IPathGraphicAttribute>;\n\nexport type IPolygonRenderContribution = IBaseRenderContribution<IPolygon, IPolygonGraphicAttribute>;\n\nexport type IRectRenderContribution = IBaseRenderContribution<IRect, IRectGraphicAttribute>;\n\nexport interface IContributionProvider<T> {\n getContributions: () => T[];\n}\n\nexport interface IApplicationContribution {\n // 调用初始化函数\n initialize?: () => void;\n\n configure?: (stage: IStage) => MaybePromise<void>;\n\n onDestroy?: (stage: IStage) => MaybePromise<void>;\n}\n\nexport interface ITTCanvas extends ICanvasLike {\n width: number;\n height: number;\n offsetWidth: number;\n offsetHeight: number;\n getContext: () => any;\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => { width: number; height: number };\n id: string;\n}\n\nexport interface ILynxCanvas extends ICanvasLike {\n width: number;\n height: number;\n offsetWidth: number;\n offsetHeight: number;\n getContext: () => any;\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => { width: number; height: number };\n id: string;\n}\n\nexport interface IDomRef {\n id: string;\n width: number;\n height: number;\n left: number;\n top: number;\n right: number;\n bottom: number;\n x: number;\n y: number;\n\n requestAnimationFrame?: any;\n cancelAnimationFrame?: any;\n getBoundingClientRect?: () => { height: number; width: number };\n}\n"]}
@@ -24,6 +24,7 @@ export interface ITransformUtil {
24
24
  init: (origin: TransformType) => ITransformUtil;
25
25
  fromMatrix: (source: IMatrix, target: IMatrix) => ITransformUtil;
26
26
  scale: (sx: number, sy: number, center?: IPointLike) => ITransformUtil;
27
+ rotate: (angle: number, center?: IPointLike) => ITransformUtil;
27
28
  translate: (dx: number, dy: number) => ITransformUtil;
28
29
  }
29
30
  export interface ILayerService {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/core.ts"],"names":[],"mappings":"","file":"core.js","sourcesContent":["import type { ICanvas } from './canvas';\nimport type { IContext2d } from './context';\nimport type { IGraphicAttribute } from './graphic';\nimport type { ITextAttribute } from './graphic/text';\nimport type { ILayer, ILayerParams } from './layer';\nimport type { IStage } from './stage';\nimport type { ITextMeasure, TextOptionsType } from './text';\nimport type { IMatrix, IPointLike, ITextMeasureOption, TextMeasure } from '@visactor/vutils';\n\nexport interface IGraphicUtil {\n canvas?: ICanvas;\n context?: IContext2d | null;\n textMeasure: ITextMeasure;\n measureText: (text: string, tc: TextOptionsType) => { width: number; height: number };\n bindTextMeasure: (tm: ITextMeasure) => void;\n createTextMeasureInstance: (\n textSpec?: Partial<ITextAttribute>,\n option?: Partial<ITextMeasureOption>,\n getCanvasForMeasure?: () => any\n ) => TextMeasure<ITextAttribute>;\n}\n\nexport type TransformType = Pick<IGraphicAttribute, 'x' | 'y' | 'scaleX' | 'scaleY' | 'angle' | 'dx' | 'dy'> & {\n anchor?: IGraphicAttribute['anchor'];\n};\nexport interface ITransformUtil {\n init: (origin: TransformType) => ITransformUtil;\n fromMatrix: (source: IMatrix, target: IMatrix) => ITransformUtil;\n scale: (sx: number, sy: number, center?: IPointLike) => ITransformUtil;\n translate: (dx: number, dy: number) => ITransformUtil;\n}\n\nexport interface ILayerService {\n createLayer: (stage: IStage, options?: ILayerParams) => ILayer;\n releaseLayer: (stage: IStage, layer: ILayer) => void;\n restLayerCount: (stage: IStage) => number;\n getStageLayer: (stage: IStage) => ILayer[];\n layerCount: (stage: IStage) => number;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/core.ts"],"names":[],"mappings":"","file":"core.js","sourcesContent":["import type { ICanvas } from './canvas';\nimport type { IContext2d } from './context';\nimport type { IGraphicAttribute } from './graphic';\nimport type { ITextAttribute } from './graphic/text';\nimport type { ILayer, ILayerParams } from './layer';\nimport type { IStage } from './stage';\nimport type { ITextMeasure, TextOptionsType } from './text';\nimport type { IMatrix, IPointLike, ITextMeasureOption, TextMeasure } from '@visactor/vutils';\n\nexport interface IGraphicUtil {\n canvas?: ICanvas;\n context?: IContext2d | null;\n textMeasure: ITextMeasure;\n measureText: (text: string, tc: TextOptionsType) => { width: number; height: number };\n bindTextMeasure: (tm: ITextMeasure) => void;\n createTextMeasureInstance: (\n textSpec?: Partial<ITextAttribute>,\n option?: Partial<ITextMeasureOption>,\n getCanvasForMeasure?: () => any\n ) => TextMeasure<ITextAttribute>;\n}\n\nexport type TransformType = Pick<IGraphicAttribute, 'x' | 'y' | 'scaleX' | 'scaleY' | 'angle' | 'dx' | 'dy'> & {\n anchor?: IGraphicAttribute['anchor'];\n};\nexport interface ITransformUtil {\n init: (origin: TransformType) => ITransformUtil;\n fromMatrix: (source: IMatrix, target: IMatrix) => ITransformUtil;\n scale: (sx: number, sy: number, center?: IPointLike) => ITransformUtil;\n rotate: (angle: number, center?: IPointLike) => ITransformUtil;\n translate: (dx: number, dy: number) => ITransformUtil;\n}\n\nexport interface ILayerService {\n createLayer: (stage: IStage, options?: ILayerParams) => ILayer;\n releaseLayer: (stage: IStage, layer: ILayer) => void;\n restLayerCount: (stage: IStage) => number;\n getStageLayer: (stage: IStage) => ILayer[];\n layerCount: (stage: IStage) => number;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/creator.ts"],"names":[],"mappings":"","file":"creator.js","sourcesContent":["import type { ILayer } from './layer';\nimport type { IStage } from './stage';\n\nexport declare function createLayer(canvasId?: string): ILayer;\nexport declare function createStage(w: number, h: number): IStage;\n"]}
1
+ {"version":3,"sources":["../src/interface/creator.ts"],"names":[],"mappings":"","file":"creator.js","sourcesContent":["import type { ILayer } from './layer';\nimport type { IStage } from './stage';\n\nexport declare function createLayer(canvasId?: string): ILayer;\nexport declare function createStage(w: number, h: number): IStage;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/curve.ts"],"names":[],"mappings":"","file":"curve.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { ICurvePath } from './path';\nimport type { ICurveType, IDirection } from './common';\n\n/**\n * 用于segment的path2d接口,参数比普通的path多,部分path的方法不支持。\n */\nexport interface ISegPath2D extends ICurvePath<IPoint> {\n direction: IDirection;\n curveType: ICurveType;\n\n endX: number;\n endY: number;\n\n tryUpdateLength: (direction?: IDirection) => number;\n bezierCurveTo: (\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p?: IPointLike // 保存原始点\n ) => void;\n closePath: () => void;\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n counterclockwise?: boolean\n ) => void;\n lineTo: (x: number, y: number, defined: boolean, p?: IPointLike) => void;\n moveTo: (x: number, y: number, p?: IPointLike) => void;\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void;\n}\n\nexport interface IGenSegmentParams {\n direction?: IDirection;\n startPoint?: IPointLike;\n}\n\nexport interface IBaseSegment {\n context: ISegPath2D;\n lineStart: () => void;\n lineEnd: () => void;\n areaStart: () => void;\n areaEnd: () => void;\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n}\n\nexport interface ILinearSegment extends IBaseSegment {\n point: (point: IPointLike) => void;\n tryUpdateLength: () => number;\n}\n\nexport interface ICurvedSegment extends IBaseSegment {\n point: (point: IPointLike) => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/curve.ts"],"names":[],"mappings":"","file":"curve.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { ICurvePath } from './path';\nimport type { ICurveType, IDirection } from './common';\n\n/**\n * 用于segment的path2d接口,参数比普通的path多,部分path的方法不支持。\n */\nexport interface ISegPath2D extends ICurvePath<IPoint> {\n direction: IDirection;\n curveType: ICurveType;\n\n endX: number;\n endY: number;\n\n tryUpdateLength: (direction?: IDirection) => number;\n bezierCurveTo: (\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p?: IPointLike // 保存原始点\n ) => void;\n closePath: () => void;\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n counterclockwise?: boolean\n ) => void;\n lineTo: (x: number, y: number, defined: boolean, p?: IPointLike) => void;\n moveTo: (x: number, y: number, p?: IPointLike) => void;\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void;\n}\n\nexport interface IGenSegmentParams {\n direction?: IDirection;\n startPoint?: IPointLike;\n}\n\nexport interface IBaseSegment {\n context: ISegPath2D;\n lineStart: () => void;\n lineEnd: () => void;\n areaStart: () => void;\n areaEnd: () => void;\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n}\n\nexport interface ILinearSegment extends IBaseSegment {\n point: (point: IPointLike) => void;\n tryUpdateLength: () => number;\n}\n\nexport interface ICurvedSegment extends IBaseSegment {\n point: (point: IPointLike) => void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/event.ts"],"names":[],"mappings":"","file":"event.js","sourcesContent":["import type { INode } from './node-tree';\nimport type { Dict, IBounds, IPointLike } from '@visactor/vutils';\nimport type { Cursor, IGraphicAttribute } from './graphic';\nimport type { IDomRectLike, IEventElement } from './common';\nimport type { ICanvas } from './canvas';\nimport type { IGlobal } from './global';\n\nexport interface IEventManager {\n rootTarget: IEventTarget;\n dispatch: any;\n cursor: Cursor | string;\n addEventMapping: (type: string, fn: (e: IFederatedEvent, target: IEventTarget) => void) => void;\n dispatchEvent: (e: IFederatedEvent, type?: string) => void;\n mapEvent: (e: IFederatedEvent) => void;\n propagate: (e: IFederatedEvent, type?: string) => void;\n propagationPath: (target: IEventTarget) => IEventTarget[];\n copyWheelData: (from: IFederatedWheelEvent, to: IFederatedWheelEvent) => void;\n copyPointerData: (from: IFederatedEvent, to: IFederatedEvent) => void;\n copyMouseData: (from: IFederatedEvent, to: IFederatedEvent) => void;\n copyData: (from: IFederatedEvent, to: IFederatedEvent) => void;\n}\n\nexport interface IFederatedEvent<N = Event> {\n bubbles: boolean;\n cancelBubble: boolean;\n cancelable: boolean;\n composed: boolean;\n currentTarget: IEventTarget | null;\n defaultPrevented: boolean;\n eventPhase: number;\n isTrusted: boolean;\n returnValue: boolean;\n srcElement: IEventTarget;\n target: IEventTarget | null;\n timeStamp: number;\n type: string;\n nativeEvent: N;\n originalEvent: IFederatedEvent<N> | null;\n propagationStopped: boolean;\n propagationImmediatelyStopped: boolean;\n path: IEventTarget[];\n manager?: IEventManager;\n detail: any;\n view: any;\n layer: IPointLike;\n get layerX(): number;\n get layerY(): number;\n page: IPointLike;\n get pageX(): number;\n get pageY(): number;\n canvas: IPointLike;\n get x(): number;\n get y(): number;\n get canvasX(): number;\n get canvasY(): number;\n viewport: IPointLike;\n get viewX(): number;\n get viewY(): number;\n composedPath: () => IEventTarget[];\n preventDefault: () => void;\n stopImmediatePropagation: () => void;\n stopPropagation: () => void;\n initEvent: () => void;\n initUIEvent: () => void;\n clone: () => void;\n which: number;\n}\n\nexport interface IFederatedMouseEvent extends IFederatedEvent {\n altKey: boolean;\n button: number;\n buttons: number;\n ctrlKey: boolean;\n metaKey: boolean;\n relatedTarget: EventTarget | null;\n shiftKey: boolean;\n client: IPointLike;\n get clientX(): number;\n get clientY(): number;\n detail: number;\n movement: IPointLike;\n get movementX(): number;\n get movementY(): number;\n offset: IPointLike;\n get offsetX(): number;\n get offsetY(): number;\n global: IPointLike;\n get globalX(): number;\n get globalY(): number;\n screen: IPointLike;\n get screenX(): number;\n get screenY(): number;\n getModifierState: (key: string) => boolean;\n initMouseEvent: (\n _typeArg: string,\n _canBubbleArg: boolean,\n _cancelableArg: boolean,\n _viewArg: Window,\n _detailArg: number,\n _screenXArg: number,\n _screenYArg: number,\n _clientXArg: number,\n _clientYArg: number,\n _ctrlKeyArg: boolean,\n _altKeyArg: boolean,\n _shiftKeyArg: boolean,\n _metaKeyArg: boolean,\n _buttonArg: number,\n _relatedTargetArg: EventTarget\n ) => void;\n}\n\nexport interface IFederatedWheelEvent extends IFederatedMouseEvent {\n deltaMode: number;\n deltaX: number;\n deltaY: number;\n deltaZ: number;\n clone: () => IFederatedWheelEvent;\n}\n\nexport interface IFederatedPointerEvent extends IFederatedMouseEvent {\n pointerId: number;\n width: number;\n height: number;\n isPrimary: boolean;\n pointerType: string;\n pressure: number;\n tangentialPressure: number;\n tiltX: number;\n tiltY: number;\n twist: number;\n detail: number;\n getCoalescedEvents: () => PointerEvent[];\n getPredictedEvents: () => PointerEvent[];\n clone: () => IFederatedPointerEvent;\n}\n\n/**\n * 代码参考自 https://github.com/pixijs/pixijs\n * The MIT License\n\n Copyright (c) 2013-2023 Mathew Groves, Chad Engler\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\nexport interface IEventTarget extends INode {\n /** Whether this event target should fire UI events. */\n pickable: boolean;\n /** The parent of this event target. */\n parent: IEventTarget | null;\n /** Whether this event target should be visible. */\n visible: boolean;\n\n /** The children of this event target. */\n children?: IEventTarget[];\n\n /** Whether this event target has any children that need UI events. This can be used optimize event propagation. */\n childrenPickable?: boolean;\n\n attribute?: Partial<IGraphicAttribute>;\n\n emit: (eventName: any, data: Dict<any>) => boolean;\n\n getCursor: () => string;\n setCursor: (c?: string) => void;\n}\n\nexport interface IRender {\n visualCanvas: {\n getCanvas: () => HTMLElement;\n };\n pickEvent: (position: [number, number], children: IEventTarget[], geoPick?: boolean) => IEventTarget | null;\n [key: string]: any;\n}\n\n// 事件系统扩展接口\nexport interface IEventExtension {\n /**\n * bind events\n */\n initEvents: () => void;\n /**\n * unbind events\n */\n removeEvents: () => void;\n /**\n * release\n */\n release: () => void;\n}\n\nexport type GestureDirection = 'none' | 'left' | 'right' | 'down' | 'up';\n\nexport interface GestureEvent extends IFederatedPointerEvent {\n points: IPointLike[];\n direction: GestureDirection;\n deltaX: number;\n deltaY: number;\n scale: number;\n center: IPointLike;\n velocity: number;\n}\n\nexport interface GestureConfig {\n press?: {\n /**\n * @default 251\n * Minimal press time in ms.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n time?: number;\n /**\n * @default 10\n * Minimal movement that is allowed while pressing.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n threshold?: number;\n };\n swipe?: {\n /**\n * Minimal distance required before recognizing.\n * @default 10\n * @see https://hammerjs.github.io/recognizer-swipe/\n */\n threshold?: number;\n /**\n * Minimal velocity required before recognizing, unit is in px per ms.\n * @default 0.3\n * @see http://hammerjs.github.io/recognizer-swipe/\n */\n velocity?: number;\n };\n}\n\nexport interface DefaultGestureConfig {\n press: {\n time: number;\n threshold: number;\n };\n swipe: {\n threshold: number;\n velocity: number;\n };\n}\n\nexport interface EmitEventObject {\n type: string;\n ev: GestureEvent;\n}\n\nexport type LooseFunction = (...args: any[]) => any;\n\nexport type IElementLike = Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> & {\n style: CSSStyleDeclaration | Record<string, any>;\n getNativeHandler?: () => ICanvas;\n getBoundingClientRect: () => IDomRectLike;\n};\n\nexport type RenderConfig = {\n /**\n * 事件绑定的 canvas 元素\n */\n targetElement: IElementLike;\n /**\n * 环境分辨率\n */\n resolution: number;\n /**\n * 场景树根节点\n */\n rootNode: IEventTarget;\n global: IGlobal;\n /** 是否自动阻止事件 */\n autoPreventDefault?: boolean;\n /** 绘图视口 */\n viewport: {\n x: number;\n y: number;\n width: number;\n height: number;\n viewBox?: IBounds;\n };\n};\n\nexport type NativeEvent = MouseEvent | PointerEvent | TouchEvent;\n"]}
1
+ {"version":3,"sources":["../src/interface/event.ts"],"names":[],"mappings":"","file":"event.js","sourcesContent":["import type { INode } from './node-tree';\nimport type { Dict, IBounds, IPointLike } from '@visactor/vutils';\nimport type { Cursor, IGraphicAttribute } from './graphic';\nimport type { IDomRectLike, IEventElement } from './common';\nimport type { ICanvas } from './canvas';\nimport type { IGlobal } from './global';\n\nexport interface IEventManager {\n rootTarget: IEventTarget;\n dispatch: any;\n cursor: Cursor | string;\n addEventMapping: (type: string, fn: (e: IFederatedEvent, target: IEventTarget) => void) => void;\n dispatchEvent: (e: IFederatedEvent, type?: string) => void;\n mapEvent: (e: IFederatedEvent) => void;\n propagate: (e: IFederatedEvent, type?: string) => void;\n propagationPath: (target: IEventTarget) => IEventTarget[];\n copyWheelData: (from: IFederatedWheelEvent, to: IFederatedWheelEvent) => void;\n copyPointerData: (from: IFederatedEvent, to: IFederatedEvent) => void;\n copyMouseData: (from: IFederatedEvent, to: IFederatedEvent) => void;\n copyData: (from: IFederatedEvent, to: IFederatedEvent) => void;\n}\n\nexport interface IFederatedEvent<N = Event> {\n bubbles: boolean;\n cancelBubble: boolean;\n cancelable: boolean;\n composed: boolean;\n currentTarget: IEventTarget | null;\n defaultPrevented: boolean;\n eventPhase: number;\n isTrusted: boolean;\n returnValue: boolean;\n srcElement: IEventTarget;\n target: IEventTarget | null;\n timeStamp: number;\n type: string;\n nativeEvent: N;\n originalEvent: IFederatedEvent<N> | null;\n propagationStopped: boolean;\n propagationImmediatelyStopped: boolean;\n path: IEventTarget[];\n manager?: IEventManager;\n detail: any;\n view: any;\n layer: IPointLike;\n get layerX(): number;\n get layerY(): number;\n page: IPointLike;\n get pageX(): number;\n get pageY(): number;\n canvas: IPointLike;\n get x(): number;\n get y(): number;\n get canvasX(): number;\n get canvasY(): number;\n viewport: IPointLike;\n get viewX(): number;\n get viewY(): number;\n composedPath: () => IEventTarget[];\n preventDefault: () => void;\n stopImmediatePropagation: () => void;\n stopPropagation: () => void;\n initEvent: () => void;\n initUIEvent: () => void;\n clone: () => void;\n which: number;\n}\n\nexport interface IFederatedMouseEvent extends IFederatedEvent {\n altKey: boolean;\n button: number;\n buttons: number;\n ctrlKey: boolean;\n metaKey: boolean;\n relatedTarget: EventTarget | null;\n shiftKey: boolean;\n client: IPointLike;\n get clientX(): number;\n get clientY(): number;\n detail: number;\n movement: IPointLike;\n get movementX(): number;\n get movementY(): number;\n offset: IPointLike;\n get offsetX(): number;\n get offsetY(): number;\n global: IPointLike;\n get globalX(): number;\n get globalY(): number;\n screen: IPointLike;\n get screenX(): number;\n get screenY(): number;\n getModifierState: (key: string) => boolean;\n initMouseEvent: (\n _typeArg: string,\n _canBubbleArg: boolean,\n _cancelableArg: boolean,\n _viewArg: Window,\n _detailArg: number,\n _screenXArg: number,\n _screenYArg: number,\n _clientXArg: number,\n _clientYArg: number,\n _ctrlKeyArg: boolean,\n _altKeyArg: boolean,\n _shiftKeyArg: boolean,\n _metaKeyArg: boolean,\n _buttonArg: number,\n _relatedTargetArg: EventTarget\n ) => void;\n}\n\nexport interface IFederatedWheelEvent extends IFederatedMouseEvent {\n deltaMode: number;\n deltaX: number;\n deltaY: number;\n deltaZ: number;\n clone: () => IFederatedWheelEvent;\n}\n\nexport interface IFederatedPointerEvent extends IFederatedMouseEvent {\n pointerId: number;\n width: number;\n height: number;\n isPrimary: boolean;\n pointerType: string;\n pressure: number;\n tangentialPressure: number;\n tiltX: number;\n tiltY: number;\n twist: number;\n detail: number;\n getCoalescedEvents: () => PointerEvent[];\n getPredictedEvents: () => PointerEvent[];\n clone: () => IFederatedPointerEvent;\n}\n\n/**\n * 代码参考自 https://github.com/pixijs/pixijs\n * The MIT License\n\n Copyright (c) 2013-2023 Mathew Groves, Chad Engler\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\nexport interface IEventTarget extends INode {\n /** Whether this event target should fire UI events. */\n pickable: boolean;\n /** The parent of this event target. */\n parent: IEventTarget | null;\n /** Whether this event target should be visible. */\n visible: boolean;\n\n /** The children of this event target. */\n children?: IEventTarget[];\n\n /** Whether this event target has any children that need UI events. This can be used optimize event propagation. */\n childrenPickable?: boolean;\n\n attribute?: Partial<IGraphicAttribute>;\n\n emit: (eventName: any, data: Dict<any>) => boolean;\n\n getCursor: () => string;\n setCursor: (c?: string) => void;\n}\n\nexport interface IRender {\n visualCanvas: {\n getCanvas: () => HTMLElement;\n };\n pickEvent: (position: [number, number], children: IEventTarget[], geoPick?: boolean) => IEventTarget | null;\n [key: string]: any;\n}\n\n// 事件系统扩展接口\nexport interface IEventExtension {\n /**\n * bind events\n */\n initEvents: () => void;\n /**\n * unbind events\n */\n removeEvents: () => void;\n /**\n * release\n */\n release: () => void;\n}\n\nexport type GestureDirection = 'none' | 'left' | 'right' | 'down' | 'up';\n\nexport interface GestureEvent extends IFederatedPointerEvent {\n points: IPointLike[];\n direction: GestureDirection;\n deltaX: number;\n deltaY: number;\n scale: number;\n center: IPointLike;\n velocity: number;\n}\n\nexport interface GestureConfig {\n press?: {\n /**\n * @default 251\n * Minimal press time in ms.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n time?: number;\n /**\n * @default 10\n * Minimal movement that is allowed while pressing.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n threshold?: number;\n };\n swipe?: {\n /**\n * Minimal distance required before recognizing.\n * @default 10\n * @see https://hammerjs.github.io/recognizer-swipe/\n */\n threshold?: number;\n /**\n * Minimal velocity required before recognizing, unit is in px per ms.\n * @default 0.3\n * @see http://hammerjs.github.io/recognizer-swipe/\n */\n velocity?: number;\n };\n}\n\nexport interface DefaultGestureConfig {\n press: {\n time: number;\n threshold: number;\n };\n swipe: {\n threshold: number;\n velocity: number;\n };\n}\n\nexport interface EmitEventObject {\n type: string;\n ev: GestureEvent;\n}\n\nexport type LooseFunction = (...args: any[]) => any;\n\nexport type IElementLike = Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> & {\n style: CSSStyleDeclaration | Record<string, any>;\n getNativeHandler?: () => ICanvas;\n getBoundingClientRect: () => IDomRectLike;\n};\n\nexport type RenderConfig = {\n /**\n * 事件绑定的 canvas 元素\n */\n targetElement: IElementLike;\n /**\n * 环境分辨率\n */\n resolution: number;\n /**\n * 场景树根节点\n */\n rootNode: IEventTarget;\n global: IGlobal;\n /** 是否自动阻止事件 */\n autoPreventDefault?: boolean;\n /** 绘图视口 */\n viewport: {\n x: number;\n y: number;\n width: number;\n height: number;\n viewBox?: IBounds;\n };\n};\n\nexport type NativeEvent = MouseEvent | PointerEvent | TouchEvent;\n"]}