@visactor/vrender 0.14.6 → 0.14.7

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 (758) 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.js.map +1 -1
  10. package/cjs/animate/config.js.map +1 -1
  11. package/cjs/animate/custom-animate.js.map +1 -1
  12. package/cjs/animate/default-ticker.js.map +1 -1
  13. package/cjs/animate/easing.js.map +1 -1
  14. package/cjs/animate/index.js.map +1 -1
  15. package/cjs/animate/morphing.js.map +1 -1
  16. package/cjs/animate/timeline.js.map +1 -1
  17. package/cjs/application.js.map +1 -1
  18. package/cjs/canvas/constants.js.map +1 -1
  19. package/cjs/canvas/contributions/browser/canvas.js.map +1 -1
  20. package/cjs/canvas/contributions/browser/conical-gradient.js.map +1 -1
  21. package/cjs/canvas/contributions/browser/context.js.map +1 -1
  22. package/cjs/canvas/contributions/browser/index.js.map +1 -1
  23. package/cjs/canvas/contributions/browser/modules.js.map +1 -1
  24. package/cjs/canvas/contributions/feishu/canvas.js.map +1 -1
  25. package/cjs/canvas/contributions/feishu/context.js.map +1 -1
  26. package/cjs/canvas/contributions/feishu/index.js.map +1 -1
  27. package/cjs/canvas/contributions/feishu/modules.js.map +1 -1
  28. package/cjs/canvas/contributions/lynx/canvas.js.map +1 -1
  29. package/cjs/canvas/contributions/lynx/context.js.map +1 -1
  30. package/cjs/canvas/contributions/lynx/index.js.map +1 -1
  31. package/cjs/canvas/contributions/lynx/modules.js.map +1 -1
  32. package/cjs/canvas/contributions/modules.js.map +1 -1
  33. package/cjs/canvas/contributions/node/canvas.js.map +1 -1
  34. package/cjs/canvas/contributions/node/context.js.map +1 -1
  35. package/cjs/canvas/contributions/node/index.js.map +1 -1
  36. package/cjs/canvas/contributions/node/modules.js.map +1 -1
  37. package/cjs/canvas/contributions/taro/canvas.js.map +1 -1
  38. package/cjs/canvas/contributions/taro/context.js.map +1 -1
  39. package/cjs/canvas/contributions/taro/index.js.map +1 -1
  40. package/cjs/canvas/contributions/taro/modules.js.map +1 -1
  41. package/cjs/canvas/contributions/tt/canvas.js.map +1 -1
  42. package/cjs/canvas/contributions/tt/context.js.map +1 -1
  43. package/cjs/canvas/contributions/tt/index.js.map +1 -1
  44. package/cjs/canvas/contributions/tt/modules.js.map +1 -1
  45. package/cjs/canvas/contributions/wx/canvas.js.map +1 -1
  46. package/cjs/canvas/contributions/wx/context.js.map +1 -1
  47. package/cjs/canvas/contributions/wx/index.js.map +1 -1
  48. package/cjs/canvas/contributions/wx/modules.js.map +1 -1
  49. package/cjs/canvas/empty-context.js.map +1 -1
  50. package/cjs/canvas/index.js.map +1 -1
  51. package/cjs/canvas/util.js.map +1 -1
  52. package/cjs/color-string/colorName.js.map +1 -1
  53. package/cjs/color-string/index.js.map +1 -1
  54. package/cjs/color-string/interpolate.js.map +1 -1
  55. package/cjs/common/bezier-utils.js.map +1 -1
  56. package/cjs/common/bounds-context.js.map +1 -1
  57. package/cjs/common/canvas-utils.js.map +1 -1
  58. package/cjs/common/contribution-provider.js.map +1 -1
  59. package/cjs/common/custom-path2d.js.map +1 -1
  60. package/cjs/common/enums.js.map +1 -1
  61. package/cjs/common/generator.js.map +1 -1
  62. package/cjs/common/matrix.js.map +1 -1
  63. package/cjs/common/morphing-utils.js.map +1 -1
  64. package/cjs/common/path-svg.js.map +1 -1
  65. package/cjs/common/polygon.js.map +1 -1
  66. package/cjs/common/render-area.js.map +1 -1
  67. package/cjs/common/render-command-list.js.map +1 -1
  68. package/cjs/common/render-curve.js.map +1 -1
  69. package/cjs/common/seg-context.js.map +1 -1
  70. package/cjs/common/segment/basis.js.map +1 -1
  71. package/cjs/common/segment/common.js.map +1 -1
  72. package/cjs/common/segment/curve/arc.js.map +1 -1
  73. package/cjs/common/segment/curve/base.js.map +1 -1
  74. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  75. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  76. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  77. package/cjs/common/segment/curve/line.js.map +1 -1
  78. package/cjs/common/segment/curve/move.js.map +1 -1
  79. package/cjs/common/segment/curve/path.js.map +1 -1
  80. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  81. package/cjs/common/segment/index.js.map +1 -1
  82. package/cjs/common/segment/linear-closed.js.map +1 -1
  83. package/cjs/common/segment/linear.js.map +1 -1
  84. package/cjs/common/segment/monotone.js.map +1 -1
  85. package/cjs/common/segment/step.js.map +1 -1
  86. package/cjs/common/shape/arc.js.map +1 -1
  87. package/cjs/common/shape/rect.js.map +1 -1
  88. package/cjs/common/sort.js.map +1 -1
  89. package/cjs/common/split-path.js.map +1 -1
  90. package/cjs/common/store.js.map +1 -1
  91. package/cjs/common/text.js.map +1 -1
  92. package/cjs/common/utils.js.map +1 -1
  93. package/cjs/constants.js.map +1 -1
  94. package/cjs/container.js.map +1 -1
  95. package/cjs/core/application.js.map +1 -1
  96. package/cjs/core/camera.js.map +1 -1
  97. package/cjs/core/constants.js.map +1 -1
  98. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  99. package/cjs/core/contributions/env/browser-contribution.js.map +1 -1
  100. package/cjs/core/contributions/env/feishu-contribution.js.map +1 -1
  101. package/cjs/core/contributions/env/lynx-contribution.js.map +1 -1
  102. package/cjs/core/contributions/env/modules.js.map +1 -1
  103. package/cjs/core/contributions/env/node-contribution.js.map +1 -1
  104. package/cjs/core/contributions/env/taro-contribution.js.map +1 -1
  105. package/cjs/core/contributions/env/wx-contribution.js.map +1 -1
  106. package/cjs/core/contributions/index.js.map +1 -1
  107. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  108. package/cjs/core/contributions/layerHandler/modules.js.map +1 -1
  109. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  110. package/cjs/core/contributions/modules.js.map +1 -1
  111. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  112. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  113. package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
  114. package/cjs/core/contributions/textMeasure/textMeasure-contribution.js.map +1 -1
  115. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  116. package/cjs/core/contributions/window/browser-contribution.js.map +1 -1
  117. package/cjs/core/contributions/window/feishu-contribution.js.map +1 -1
  118. package/cjs/core/contributions/window/lynx-contribution.js.map +1 -1
  119. package/cjs/core/contributions/window/modules.js.map +1 -1
  120. package/cjs/core/contributions/window/native-contribution.js.map +1 -1
  121. package/cjs/core/contributions/window/node-contribution.js.map +1 -1
  122. package/cjs/core/contributions/window/taro-contribution.js.map +1 -1
  123. package/cjs/core/contributions/window/wx-contribution.js.map +1 -1
  124. package/cjs/core/core-modules.js.map +1 -1
  125. package/cjs/core/global-module.js.map +1 -1
  126. package/cjs/core/global.js.map +1 -1
  127. package/cjs/core/graphic-utils.js.map +1 -1
  128. package/cjs/core/index.js.map +1 -1
  129. package/cjs/core/layer-service.js.map +1 -1
  130. package/cjs/core/layer.js.map +1 -1
  131. package/cjs/core/light.js.map +1 -1
  132. package/cjs/core/stage.js.map +1 -1
  133. package/cjs/core/window.js.map +1 -1
  134. package/cjs/create.js.map +1 -1
  135. package/cjs/event/constant.js.map +1 -1
  136. package/cjs/event/event-manager.js.map +1 -1
  137. package/cjs/event/event-system.js.map +1 -1
  138. package/cjs/event/event-target.js.map +1 -1
  139. package/cjs/event/extension/drag.js.map +1 -1
  140. package/cjs/event/extension/gesture.js.map +1 -1
  141. package/cjs/event/extension/index.js.map +1 -1
  142. package/cjs/event/federated-event/base-event.js.map +1 -1
  143. package/cjs/event/federated-event/custom-event.js.map +1 -1
  144. package/cjs/event/federated-event/index.js.map +1 -1
  145. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  146. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  147. package/cjs/event/federated-event/wheel-event.js.map +1 -1
  148. package/cjs/event/index.js.map +1 -1
  149. package/cjs/event/util.js.map +1 -1
  150. package/cjs/export.js.map +1 -1
  151. package/cjs/graphic/arc.js.map +1 -1
  152. package/cjs/graphic/arc3d.js.map +1 -1
  153. package/cjs/graphic/area.js.map +1 -1
  154. package/cjs/graphic/bounds.js.map +1 -1
  155. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  156. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  157. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  158. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  159. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  160. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  161. package/cjs/graphic/builtin-symbol/index.js.map +1 -1
  162. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  163. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  164. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  165. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  166. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  167. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  168. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  169. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  170. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  171. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  172. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  173. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  174. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  175. package/cjs/graphic/circle.js.map +1 -1
  176. package/cjs/graphic/config.js.map +1 -1
  177. package/cjs/graphic/constants.js.map +1 -1
  178. package/cjs/graphic/glyph.js.map +1 -1
  179. package/cjs/graphic/graphic-creator.js.map +1 -1
  180. package/cjs/graphic/graphic-service/arc-contribution.js.map +1 -1
  181. package/cjs/graphic/graphic-service/area-contribution.js.map +1 -1
  182. package/cjs/graphic/graphic-service/circle-contribution.js.map +1 -1
  183. package/cjs/graphic/graphic-service/common-contribution.js.map +1 -1
  184. package/cjs/graphic/graphic-service/default-theme.js.map +1 -1
  185. package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
  186. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  187. package/cjs/graphic/graphic-service/path-contribution.js.map +1 -1
  188. package/cjs/graphic/graphic-service/rect-contribution.js.map +1 -1
  189. package/cjs/graphic/graphic-service/symbol-contribution.js.map +1 -1
  190. package/cjs/graphic/graphic.js.map +1 -1
  191. package/cjs/graphic/group.js.map +1 -1
  192. package/cjs/graphic/image.js.map +1 -1
  193. package/cjs/graphic/index.js.map +1 -1
  194. package/cjs/graphic/line.js.map +1 -1
  195. package/cjs/graphic/node-tree.js.map +1 -1
  196. package/cjs/graphic/path.js.map +1 -1
  197. package/cjs/graphic/polygon.js.map +1 -1
  198. package/cjs/graphic/pyramid3d.js.map +1 -1
  199. package/cjs/graphic/rect.js.map +1 -1
  200. package/cjs/graphic/rect3d.js.map +1 -1
  201. package/cjs/graphic/richtext/frame.js.map +1 -1
  202. package/cjs/graphic/richtext/icon.js.map +1 -1
  203. package/cjs/graphic/richtext/line.js.map +1 -1
  204. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  205. package/cjs/graphic/richtext/utils.js.map +1 -1
  206. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  207. package/cjs/graphic/richtext.js.map +1 -1
  208. package/cjs/graphic/shadow-root.js.map +1 -1
  209. package/cjs/graphic/symbol.js.map +1 -1
  210. package/cjs/graphic/text.js.map +1 -1
  211. package/cjs/graphic/theme.js.map +1 -1
  212. package/cjs/graphic/tools.js.map +1 -1
  213. package/cjs/graphic/wrap-text.js.map +1 -1
  214. package/cjs/index.d.ts +1 -1
  215. package/cjs/index.js +1 -1
  216. package/cjs/index.js.map +1 -1
  217. package/cjs/interface/allocator.js.map +1 -1
  218. package/cjs/interface/animate.js.map +1 -1
  219. package/cjs/interface/camera.js.map +1 -1
  220. package/cjs/interface/canvas.js.map +1 -1
  221. package/cjs/interface/color.js.map +1 -1
  222. package/cjs/interface/common.js.map +1 -1
  223. package/cjs/interface/context.js.map +1 -1
  224. package/cjs/interface/contribution.js.map +1 -1
  225. package/cjs/interface/core.js.map +1 -1
  226. package/cjs/interface/creator.js.map +1 -1
  227. package/cjs/interface/curve.js.map +1 -1
  228. package/cjs/interface/event.js.map +1 -1
  229. package/cjs/interface/global.js.map +1 -1
  230. package/cjs/interface/graphic/arc.js.map +1 -1
  231. package/cjs/interface/graphic/arc3d.js.map +1 -1
  232. package/cjs/interface/graphic/area.js.map +1 -1
  233. package/cjs/interface/graphic/bounds.js.map +1 -1
  234. package/cjs/interface/graphic/circle.js.map +1 -1
  235. package/cjs/interface/graphic/creator.js.map +1 -1
  236. package/cjs/interface/graphic/dynamic-path.js.map +1 -1
  237. package/cjs/interface/graphic/ellipse.js.map +1 -1
  238. package/cjs/interface/graphic/face3d.js.map +1 -1
  239. package/cjs/interface/graphic/glyph.js.map +1 -1
  240. package/cjs/interface/graphic/group.js.map +1 -1
  241. package/cjs/interface/graphic/image.js.map +1 -1
  242. package/cjs/interface/graphic/index.js.map +1 -1
  243. package/cjs/interface/graphic/isogon.js.map +1 -1
  244. package/cjs/interface/graphic/line.js.map +1 -1
  245. package/cjs/interface/graphic/path.js.map +1 -1
  246. package/cjs/interface/graphic/polygon.js.map +1 -1
  247. package/cjs/interface/graphic/polyline.js.map +1 -1
  248. package/cjs/interface/graphic/pyramid3d.js.map +1 -1
  249. package/cjs/interface/graphic/rect.js.map +1 -1
  250. package/cjs/interface/graphic/rect3d.js.map +1 -1
  251. package/cjs/interface/graphic/richText.js.map +1 -1
  252. package/cjs/interface/graphic/shadow-root.js.map +1 -1
  253. package/cjs/interface/graphic/svg.js.map +1 -1
  254. package/cjs/interface/graphic/symbol.js.map +1 -1
  255. package/cjs/interface/graphic/text.js.map +1 -1
  256. package/cjs/interface/graphic/theme.js.map +1 -1
  257. package/cjs/interface/graphic/util.js.map +1 -1
  258. package/cjs/interface/graphic-service.js.map +1 -1
  259. package/cjs/interface/graphic-utils.js.map +1 -1
  260. package/cjs/interface/graphic.js.map +1 -1
  261. package/cjs/interface/index.js.map +1 -1
  262. package/cjs/interface/layer.js.map +1 -1
  263. package/cjs/interface/light.js.map +1 -1
  264. package/cjs/interface/loader.js.map +1 -1
  265. package/cjs/interface/matrix.js.map +1 -1
  266. package/cjs/interface/node-tree.js.map +1 -1
  267. package/cjs/interface/path.js.map +1 -1
  268. package/cjs/interface/picker.js.map +1 -1
  269. package/cjs/interface/plugin.js.map +1 -1
  270. package/cjs/interface/render.js.map +1 -1
  271. package/cjs/interface/stage.js.map +1 -1
  272. package/cjs/interface/sync-hook.js.map +1 -1
  273. package/cjs/interface/text.js.map +1 -1
  274. package/cjs/interface/theme-service.js.map +1 -1
  275. package/cjs/interface/util.js.map +1 -1
  276. package/cjs/interface/window.js.map +1 -1
  277. package/cjs/kits/env.js.map +1 -1
  278. package/cjs/kits/index.js.map +1 -1
  279. package/cjs/modules.js.map +1 -1
  280. package/cjs/picker/canvas-picker-service.js.map +1 -1
  281. package/cjs/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
  282. package/cjs/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
  283. package/cjs/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  284. package/cjs/picker/contributions/canvas-picker/base-picker.js.map +1 -1
  285. package/cjs/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
  286. package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  287. package/cjs/picker/contributions/canvas-picker/image-picker.js.map +1 -1
  288. package/cjs/picker/contributions/canvas-picker/line-picker.js.map +1 -1
  289. package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
  290. package/cjs/picker/contributions/canvas-picker/path-picker.js.map +1 -1
  291. package/cjs/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
  292. package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
  293. package/cjs/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
  294. package/cjs/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
  295. package/cjs/picker/contributions/canvas-picker/richtext-picker.js.map +1 -1
  296. package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  297. package/cjs/picker/contributions/canvas-picker/text-picker.js.map +1 -1
  298. package/cjs/picker/contributions/constants.js.map +1 -1
  299. package/cjs/picker/contributions/math-picker/arc-picker.js.map +1 -1
  300. package/cjs/picker/contributions/math-picker/area-picker.js.map +1 -1
  301. package/cjs/picker/contributions/math-picker/circle-picker.js.map +1 -1
  302. package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  303. package/cjs/picker/contributions/math-picker/line-picker.js.map +1 -1
  304. package/cjs/picker/contributions/math-picker/module.js.map +1 -1
  305. package/cjs/picker/contributions/math-picker/path-picker.js.map +1 -1
  306. package/cjs/picker/contributions/math-picker/polygon-picker.js.map +1 -1
  307. package/cjs/picker/contributions/math-picker/rect-picker.js.map +1 -1
  308. package/cjs/picker/contributions/math-picker/symbol-picker.js.map +1 -1
  309. package/cjs/picker/contributions/math-picker/text-picker.js.map +1 -1
  310. package/cjs/picker/contributions/modules.js.map +1 -1
  311. package/cjs/picker/contributions/old/circle-picker.js.map +1 -1
  312. package/cjs/picker/contributions/old/rect-picker.js.map +1 -1
  313. package/cjs/picker/global-picker-service.js.map +1 -1
  314. package/cjs/picker/index.js.map +1 -1
  315. package/cjs/picker/math-picker-service.js.map +1 -1
  316. package/cjs/picker/pick-interceptor.js.map +1 -1
  317. package/cjs/picker/pick-modules.js.map +1 -1
  318. package/cjs/picker/picker-service.js.map +1 -1
  319. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  320. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  321. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  322. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  323. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  324. package/cjs/plugins/builtin-plugin/poptip-plugin.js.map +1 -1
  325. package/cjs/plugins/constants.js.map +1 -1
  326. package/cjs/plugins/plugin-modules.js.map +1 -1
  327. package/cjs/plugins/plugin-service.js.map +1 -1
  328. package/cjs/render/contributions/modules.js.map +1 -1
  329. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  330. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  331. package/cjs/render/contributions/render/area-render.js.map +1 -1
  332. package/cjs/render/contributions/render/base-render.js.map +1 -1
  333. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  334. package/cjs/render/contributions/render/clear-screen.js.map +1 -1
  335. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  336. package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  337. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  338. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  339. package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
  340. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  341. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  342. package/cjs/render/contributions/render/contributions/index.js.map +1 -1
  343. package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  344. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  345. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  346. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  347. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  348. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  349. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  350. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  351. package/cjs/render/contributions/render/graphic-render.js.map +1 -1
  352. package/cjs/render/contributions/render/group-render.js.map +1 -1
  353. package/cjs/render/contributions/render/image-render.js.map +1 -1
  354. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  355. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  356. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  357. package/cjs/render/contributions/render/index.js.map +1 -1
  358. package/cjs/render/contributions/render/line-render.js.map +1 -1
  359. package/cjs/render/contributions/render/module.js.map +1 -1
  360. package/cjs/render/contributions/render/path-render.js.map +1 -1
  361. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  362. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  363. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  364. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  365. package/cjs/render/contributions/render/render-slector.js.map +1 -1
  366. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  367. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  368. package/cjs/render/contributions/render/symbol.js.map +1 -1
  369. package/cjs/render/contributions/render/text-render.js.map +1 -1
  370. package/cjs/render/contributions/render/utils.js.map +1 -1
  371. package/cjs/render/index.js.map +1 -1
  372. package/cjs/render/render-modules.js.map +1 -1
  373. package/cjs/render/render-service.js.map +1 -1
  374. package/cjs/resource-loader/loader.js.map +1 -1
  375. package/cjs/tapable/Hook.js.map +1 -1
  376. package/cjs/tapable/SyncHook.js.map +1 -1
  377. package/cjs/tapable/index.js.map +1 -1
  378. package/dist/index.js +1 -1
  379. package/dist/index.min.js +1 -1
  380. package/es/allocator/allocator-modules.js.map +1 -1
  381. package/es/allocator/canvas-allocate.js.map +1 -1
  382. package/es/allocator/constants.js.map +1 -1
  383. package/es/allocator/graphic-allocate.js.map +1 -1
  384. package/es/allocator/matrix-allocate.js.map +1 -1
  385. package/es/allocator/point-allocate.js.map +1 -1
  386. package/es/animate/Ticker/default-ticker.js.map +1 -1
  387. package/es/animate/Ticker/index.js.map +1 -1
  388. package/es/animate/animate.js.map +1 -1
  389. package/es/animate/config.js.map +1 -1
  390. package/es/animate/custom-animate.js.map +1 -1
  391. package/es/animate/default-ticker.js.map +1 -1
  392. package/es/animate/easing.js.map +1 -1
  393. package/es/animate/index.js.map +1 -1
  394. package/es/animate/morphing.js.map +1 -1
  395. package/es/animate/timeline.js.map +1 -1
  396. package/es/application.js.map +1 -1
  397. package/es/canvas/constants.js.map +1 -1
  398. package/es/canvas/contributions/browser/canvas.js.map +1 -1
  399. package/es/canvas/contributions/browser/conical-gradient.js.map +1 -1
  400. package/es/canvas/contributions/browser/context.js.map +1 -1
  401. package/es/canvas/contributions/browser/index.js.map +1 -1
  402. package/es/canvas/contributions/browser/modules.js.map +1 -1
  403. package/es/canvas/contributions/feishu/canvas.js.map +1 -1
  404. package/es/canvas/contributions/feishu/context.js.map +1 -1
  405. package/es/canvas/contributions/feishu/index.js.map +1 -1
  406. package/es/canvas/contributions/feishu/modules.js.map +1 -1
  407. package/es/canvas/contributions/lynx/canvas.js.map +1 -1
  408. package/es/canvas/contributions/lynx/context.js.map +1 -1
  409. package/es/canvas/contributions/lynx/index.js.map +1 -1
  410. package/es/canvas/contributions/lynx/modules.js.map +1 -1
  411. package/es/canvas/contributions/modules.js.map +1 -1
  412. package/es/canvas/contributions/node/canvas.js.map +1 -1
  413. package/es/canvas/contributions/node/context.js.map +1 -1
  414. package/es/canvas/contributions/node/index.js.map +1 -1
  415. package/es/canvas/contributions/node/modules.js.map +1 -1
  416. package/es/canvas/contributions/taro/canvas.js.map +1 -1
  417. package/es/canvas/contributions/taro/context.js.map +1 -1
  418. package/es/canvas/contributions/taro/index.js.map +1 -1
  419. package/es/canvas/contributions/taro/modules.js.map +1 -1
  420. package/es/canvas/contributions/tt/canvas.js.map +1 -1
  421. package/es/canvas/contributions/tt/context.js.map +1 -1
  422. package/es/canvas/contributions/tt/index.js.map +1 -1
  423. package/es/canvas/contributions/tt/modules.js.map +1 -1
  424. package/es/canvas/contributions/wx/canvas.js.map +1 -1
  425. package/es/canvas/contributions/wx/context.js.map +1 -1
  426. package/es/canvas/contributions/wx/index.js.map +1 -1
  427. package/es/canvas/contributions/wx/modules.js.map +1 -1
  428. package/es/canvas/empty-context.js.map +1 -1
  429. package/es/canvas/index.js.map +1 -1
  430. package/es/canvas/util.js.map +1 -1
  431. package/es/color-string/colorName.js.map +1 -1
  432. package/es/color-string/index.js.map +1 -1
  433. package/es/color-string/interpolate.js.map +1 -1
  434. package/es/common/bezier-utils.js.map +1 -1
  435. package/es/common/bounds-context.js.map +1 -1
  436. package/es/common/canvas-utils.js.map +1 -1
  437. package/es/common/contribution-provider.js.map +1 -1
  438. package/es/common/custom-path2d.js.map +1 -1
  439. package/es/common/enums.js.map +1 -1
  440. package/es/common/generator.js.map +1 -1
  441. package/es/common/matrix.js.map +1 -1
  442. package/es/common/morphing-utils.js.map +1 -1
  443. package/es/common/path-svg.js.map +1 -1
  444. package/es/common/polygon.js.map +1 -1
  445. package/es/common/render-area.js.map +1 -1
  446. package/es/common/render-command-list.js.map +1 -1
  447. package/es/common/render-curve.js.map +1 -1
  448. package/es/common/seg-context.js.map +1 -1
  449. package/es/common/segment/basis.js.map +1 -1
  450. package/es/common/segment/common.js.map +1 -1
  451. package/es/common/segment/curve/arc.js.map +1 -1
  452. package/es/common/segment/curve/base.js.map +1 -1
  453. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  454. package/es/common/segment/curve/curve-context.js.map +1 -1
  455. package/es/common/segment/curve/ellipse.js.map +1 -1
  456. package/es/common/segment/curve/line.js.map +1 -1
  457. package/es/common/segment/curve/move.js.map +1 -1
  458. package/es/common/segment/curve/path.js.map +1 -1
  459. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  460. package/es/common/segment/index.js.map +1 -1
  461. package/es/common/segment/linear-closed.js.map +1 -1
  462. package/es/common/segment/linear.js.map +1 -1
  463. package/es/common/segment/monotone.js.map +1 -1
  464. package/es/common/segment/step.js.map +1 -1
  465. package/es/common/shape/arc.js.map +1 -1
  466. package/es/common/shape/rect.js.map +1 -1
  467. package/es/common/sort.js.map +1 -1
  468. package/es/common/split-path.js.map +1 -1
  469. package/es/common/store.js.map +1 -1
  470. package/es/common/text.js.map +1 -1
  471. package/es/common/utils.js.map +1 -1
  472. package/es/constants.js.map +1 -1
  473. package/es/container.js.map +1 -1
  474. package/es/core/application.js.map +1 -1
  475. package/es/core/camera.js.map +1 -1
  476. package/es/core/constants.js.map +1 -1
  477. package/es/core/contributions/env/base-contribution.js.map +1 -1
  478. package/es/core/contributions/env/browser-contribution.js.map +1 -1
  479. package/es/core/contributions/env/feishu-contribution.js.map +1 -1
  480. package/es/core/contributions/env/lynx-contribution.js.map +1 -1
  481. package/es/core/contributions/env/modules.js.map +1 -1
  482. package/es/core/contributions/env/node-contribution.js.map +1 -1
  483. package/es/core/contributions/env/taro-contribution.js.map +1 -1
  484. package/es/core/contributions/env/wx-contribution.js.map +1 -1
  485. package/es/core/contributions/index.js.map +1 -1
  486. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  487. package/es/core/contributions/layerHandler/modules.js.map +1 -1
  488. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  489. package/es/core/contributions/modules.js.map +1 -1
  490. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  491. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  492. package/es/core/contributions/textMeasure/modules.js.map +1 -1
  493. package/es/core/contributions/textMeasure/textMeasure-contribution.js.map +1 -1
  494. package/es/core/contributions/window/base-contribution.js.map +1 -1
  495. package/es/core/contributions/window/browser-contribution.js.map +1 -1
  496. package/es/core/contributions/window/feishu-contribution.js.map +1 -1
  497. package/es/core/contributions/window/lynx-contribution.js.map +1 -1
  498. package/es/core/contributions/window/modules.js.map +1 -1
  499. package/es/core/contributions/window/native-contribution.js.map +1 -1
  500. package/es/core/contributions/window/node-contribution.js.map +1 -1
  501. package/es/core/contributions/window/taro-contribution.js.map +1 -1
  502. package/es/core/contributions/window/wx-contribution.js.map +1 -1
  503. package/es/core/core-modules.js.map +1 -1
  504. package/es/core/global-module.js.map +1 -1
  505. package/es/core/global.js.map +1 -1
  506. package/es/core/graphic-utils.js.map +1 -1
  507. package/es/core/index.js.map +1 -1
  508. package/es/core/layer-service.js.map +1 -1
  509. package/es/core/layer.js.map +1 -1
  510. package/es/core/light.js.map +1 -1
  511. package/es/core/stage.js.map +1 -1
  512. package/es/core/window.js.map +1 -1
  513. package/es/create.js.map +1 -1
  514. package/es/event/constant.js.map +1 -1
  515. package/es/event/event-manager.js.map +1 -1
  516. package/es/event/event-system.js.map +1 -1
  517. package/es/event/event-target.js.map +1 -1
  518. package/es/event/extension/drag.js.map +1 -1
  519. package/es/event/extension/gesture.js.map +1 -1
  520. package/es/event/extension/index.js.map +1 -1
  521. package/es/event/federated-event/base-event.js.map +1 -1
  522. package/es/event/federated-event/custom-event.js.map +1 -1
  523. package/es/event/federated-event/index.js.map +1 -1
  524. package/es/event/federated-event/mouse-event.js.map +1 -1
  525. package/es/event/federated-event/pointer-event.js.map +1 -1
  526. package/es/event/federated-event/wheel-event.js.map +1 -1
  527. package/es/event/index.js.map +1 -1
  528. package/es/event/util.js.map +1 -1
  529. package/es/export.js.map +1 -1
  530. package/es/graphic/arc.js.map +1 -1
  531. package/es/graphic/arc3d.js.map +1 -1
  532. package/es/graphic/area.js.map +1 -1
  533. package/es/graphic/bounds.js.map +1 -1
  534. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  535. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  536. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  537. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  538. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  539. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  540. package/es/graphic/builtin-symbol/index.js.map +1 -1
  541. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  542. package/es/graphic/builtin-symbol/square.js.map +1 -1
  543. package/es/graphic/builtin-symbol/star.js.map +1 -1
  544. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  545. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  546. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  547. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  548. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  549. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  550. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  551. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  552. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  553. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  554. package/es/graphic/circle.js.map +1 -1
  555. package/es/graphic/config.js.map +1 -1
  556. package/es/graphic/constants.js.map +1 -1
  557. package/es/graphic/glyph.js.map +1 -1
  558. package/es/graphic/graphic-creator.js.map +1 -1
  559. package/es/graphic/graphic-service/arc-contribution.js.map +1 -1
  560. package/es/graphic/graphic-service/area-contribution.js.map +1 -1
  561. package/es/graphic/graphic-service/circle-contribution.js.map +1 -1
  562. package/es/graphic/graphic-service/common-contribution.js.map +1 -1
  563. package/es/graphic/graphic-service/default-theme.js.map +1 -1
  564. package/es/graphic/graphic-service/graphic-module.js.map +1 -1
  565. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  566. package/es/graphic/graphic-service/path-contribution.js.map +1 -1
  567. package/es/graphic/graphic-service/rect-contribution.js.map +1 -1
  568. package/es/graphic/graphic-service/symbol-contribution.js.map +1 -1
  569. package/es/graphic/graphic.js.map +1 -1
  570. package/es/graphic/group.js.map +1 -1
  571. package/es/graphic/image.js.map +1 -1
  572. package/es/graphic/index.js.map +1 -1
  573. package/es/graphic/line.js.map +1 -1
  574. package/es/graphic/node-tree.js.map +1 -1
  575. package/es/graphic/path.js.map +1 -1
  576. package/es/graphic/polygon.js.map +1 -1
  577. package/es/graphic/pyramid3d.js.map +1 -1
  578. package/es/graphic/rect.js.map +1 -1
  579. package/es/graphic/rect3d.js.map +1 -1
  580. package/es/graphic/richtext/frame.js.map +1 -1
  581. package/es/graphic/richtext/icon.js.map +1 -1
  582. package/es/graphic/richtext/line.js.map +1 -1
  583. package/es/graphic/richtext/paragraph.js.map +1 -1
  584. package/es/graphic/richtext/utils.js.map +1 -1
  585. package/es/graphic/richtext/wrapper.js.map +1 -1
  586. package/es/graphic/richtext.js.map +1 -1
  587. package/es/graphic/shadow-root.js.map +1 -1
  588. package/es/graphic/symbol.js.map +1 -1
  589. package/es/graphic/text.js.map +1 -1
  590. package/es/graphic/theme.js.map +1 -1
  591. package/es/graphic/tools.js.map +1 -1
  592. package/es/graphic/wrap-text.js.map +1 -1
  593. package/es/index.d.ts +1 -1
  594. package/es/index.js +1 -1
  595. package/es/index.js.map +1 -1
  596. package/es/interface/allocator.js.map +1 -1
  597. package/es/interface/animate.js.map +1 -1
  598. package/es/interface/camera.js.map +1 -1
  599. package/es/interface/canvas.js.map +1 -1
  600. package/es/interface/color.js.map +1 -1
  601. package/es/interface/common.js.map +1 -1
  602. package/es/interface/context.js.map +1 -1
  603. package/es/interface/contribution.js.map +1 -1
  604. package/es/interface/core.js.map +1 -1
  605. package/es/interface/creator.js.map +1 -1
  606. package/es/interface/curve.js.map +1 -1
  607. package/es/interface/event.js.map +1 -1
  608. package/es/interface/global.js.map +1 -1
  609. package/es/interface/graphic/arc.js.map +1 -1
  610. package/es/interface/graphic/arc3d.js.map +1 -1
  611. package/es/interface/graphic/area.js.map +1 -1
  612. package/es/interface/graphic/bounds.js.map +1 -1
  613. package/es/interface/graphic/circle.js.map +1 -1
  614. package/es/interface/graphic/creator.js.map +1 -1
  615. package/es/interface/graphic/dynamic-path.js.map +1 -1
  616. package/es/interface/graphic/ellipse.js.map +1 -1
  617. package/es/interface/graphic/face3d.js.map +1 -1
  618. package/es/interface/graphic/glyph.js.map +1 -1
  619. package/es/interface/graphic/group.js.map +1 -1
  620. package/es/interface/graphic/image.js.map +1 -1
  621. package/es/interface/graphic/index.js.map +1 -1
  622. package/es/interface/graphic/isogon.js.map +1 -1
  623. package/es/interface/graphic/line.js.map +1 -1
  624. package/es/interface/graphic/path.js.map +1 -1
  625. package/es/interface/graphic/polygon.js.map +1 -1
  626. package/es/interface/graphic/polyline.js.map +1 -1
  627. package/es/interface/graphic/pyramid3d.js.map +1 -1
  628. package/es/interface/graphic/rect.js.map +1 -1
  629. package/es/interface/graphic/rect3d.js.map +1 -1
  630. package/es/interface/graphic/richText.js.map +1 -1
  631. package/es/interface/graphic/shadow-root.js.map +1 -1
  632. package/es/interface/graphic/svg.js.map +1 -1
  633. package/es/interface/graphic/symbol.js.map +1 -1
  634. package/es/interface/graphic/text.js.map +1 -1
  635. package/es/interface/graphic/theme.js.map +1 -1
  636. package/es/interface/graphic/util.js.map +1 -1
  637. package/es/interface/graphic-service.js.map +1 -1
  638. package/es/interface/graphic-utils.js.map +1 -1
  639. package/es/interface/graphic.js.map +1 -1
  640. package/es/interface/index.js.map +1 -1
  641. package/es/interface/layer.js.map +1 -1
  642. package/es/interface/light.js.map +1 -1
  643. package/es/interface/loader.js.map +1 -1
  644. package/es/interface/matrix.js.map +1 -1
  645. package/es/interface/node-tree.js.map +1 -1
  646. package/es/interface/path.js.map +1 -1
  647. package/es/interface/picker.js.map +1 -1
  648. package/es/interface/plugin.js.map +1 -1
  649. package/es/interface/render.js.map +1 -1
  650. package/es/interface/stage.js.map +1 -1
  651. package/es/interface/sync-hook.js.map +1 -1
  652. package/es/interface/text.js.map +1 -1
  653. package/es/interface/theme-service.js.map +1 -1
  654. package/es/interface/util.js.map +1 -1
  655. package/es/interface/window.js.map +1 -1
  656. package/es/kits/env.js.map +1 -1
  657. package/es/kits/index.js.map +1 -1
  658. package/es/modules.js.map +1 -1
  659. package/es/picker/canvas-picker-service.js.map +1 -1
  660. package/es/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
  661. package/es/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
  662. package/es/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  663. package/es/picker/contributions/canvas-picker/base-picker.js.map +1 -1
  664. package/es/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
  665. package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  666. package/es/picker/contributions/canvas-picker/image-picker.js.map +1 -1
  667. package/es/picker/contributions/canvas-picker/line-picker.js.map +1 -1
  668. package/es/picker/contributions/canvas-picker/module.js.map +1 -1
  669. package/es/picker/contributions/canvas-picker/path-picker.js.map +1 -1
  670. package/es/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
  671. package/es/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
  672. package/es/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
  673. package/es/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
  674. package/es/picker/contributions/canvas-picker/richtext-picker.js.map +1 -1
  675. package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  676. package/es/picker/contributions/canvas-picker/text-picker.js.map +1 -1
  677. package/es/picker/contributions/constants.js.map +1 -1
  678. package/es/picker/contributions/math-picker/arc-picker.js.map +1 -1
  679. package/es/picker/contributions/math-picker/area-picker.js.map +1 -1
  680. package/es/picker/contributions/math-picker/circle-picker.js.map +1 -1
  681. package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  682. package/es/picker/contributions/math-picker/line-picker.js.map +1 -1
  683. package/es/picker/contributions/math-picker/module.js.map +1 -1
  684. package/es/picker/contributions/math-picker/path-picker.js.map +1 -1
  685. package/es/picker/contributions/math-picker/polygon-picker.js.map +1 -1
  686. package/es/picker/contributions/math-picker/rect-picker.js.map +1 -1
  687. package/es/picker/contributions/math-picker/symbol-picker.js.map +1 -1
  688. package/es/picker/contributions/math-picker/text-picker.js.map +1 -1
  689. package/es/picker/contributions/modules.js.map +1 -1
  690. package/es/picker/contributions/old/circle-picker.js.map +1 -1
  691. package/es/picker/contributions/old/rect-picker.js.map +1 -1
  692. package/es/picker/global-picker-service.js.map +1 -1
  693. package/es/picker/index.js.map +1 -1
  694. package/es/picker/math-picker-service.js.map +1 -1
  695. package/es/picker/pick-interceptor.js.map +1 -1
  696. package/es/picker/pick-modules.js.map +1 -1
  697. package/es/picker/picker-service.js.map +1 -1
  698. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  699. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  700. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  701. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  702. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  703. package/es/plugins/builtin-plugin/poptip-plugin.js.map +1 -1
  704. package/es/plugins/constants.js.map +1 -1
  705. package/es/plugins/plugin-modules.js.map +1 -1
  706. package/es/plugins/plugin-service.js.map +1 -1
  707. package/es/render/contributions/modules.js.map +1 -1
  708. package/es/render/contributions/render/arc-render.js.map +1 -1
  709. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  710. package/es/render/contributions/render/area-render.js.map +1 -1
  711. package/es/render/contributions/render/base-render.js.map +1 -1
  712. package/es/render/contributions/render/circle-render.js.map +1 -1
  713. package/es/render/contributions/render/clear-screen.js.map +1 -1
  714. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  715. package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  716. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  717. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  718. package/es/render/contributions/render/contributions/constants.js.map +1 -1
  719. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  720. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  721. package/es/render/contributions/render/contributions/index.js.map +1 -1
  722. package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  723. package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  724. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  725. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  726. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  727. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  728. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  729. package/es/render/contributions/render/glyph-render.js.map +1 -1
  730. package/es/render/contributions/render/graphic-render.js.map +1 -1
  731. package/es/render/contributions/render/group-render.js.map +1 -1
  732. package/es/render/contributions/render/image-render.js.map +1 -1
  733. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  734. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  735. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  736. package/es/render/contributions/render/index.js.map +1 -1
  737. package/es/render/contributions/render/line-render.js.map +1 -1
  738. package/es/render/contributions/render/module.js.map +1 -1
  739. package/es/render/contributions/render/path-render.js.map +1 -1
  740. package/es/render/contributions/render/polygon-render.js.map +1 -1
  741. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  742. package/es/render/contributions/render/rect-render.js.map +1 -1
  743. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  744. package/es/render/contributions/render/render-slector.js.map +1 -1
  745. package/es/render/contributions/render/richtext-render.js.map +1 -1
  746. package/es/render/contributions/render/symbol-render.js.map +1 -1
  747. package/es/render/contributions/render/symbol.js.map +1 -1
  748. package/es/render/contributions/render/text-render.js.map +1 -1
  749. package/es/render/contributions/render/utils.js.map +1 -1
  750. package/es/render/index.js.map +1 -1
  751. package/es/render/render-modules.js.map +1 -1
  752. package/es/render/render-service.js.map +1 -1
  753. package/es/resource-loader/loader.js.map +1 -1
  754. package/es/tapable/Hook.js.map +1 -1
  755. package/es/tapable/SyncHook.js.map +1 -1
  756. package/es/tapable/index.js.map +1 -1
  757. package/package.json +1 -1
  758. package/es/tsconfig.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/lynx-contribution.ts"],"names":[],"mappings":"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","file":"lynx-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ILynxCanvas\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { rafBasedSto } from '../../../common/utils';\n\ndeclare const lynx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvas: (id: string) => any;\n createCanvasNG: (id: string) => any;\n createImage: (id: string) => any;\n};\ndeclare const SystemInfo: {\n pixelRatio: number;\n};\n\nlet ng = false;\ntry {\n ng = !!lynx.createCanvasNG;\n} catch (err) {\n // do nothing\n}\n\n// 飞书小程序canvas的wrap\nfunction makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ILynxCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ILynxCanvas[]\n) {\n const dpr = SystemInfo.pixelRatio;\n\n canvasIdLists.forEach((id, i) => {\n const _canvas = ng ? lynx.createCanvasNG(id) : lynx.createCanvas(id);\n _canvas.width = domref.width * dpr;\n _canvas.height = domref.height * dpr;\n ng && _canvas.attachToCanvasView(id);\n\n const ctx = _canvas.getContext('2d');\n ctx.draw = (a: any, b: any) => {\n b();\n };\n // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n const canvas = {\n width: domref.width * dpr,\n height: domref.height * dpr,\n offsetWidth: domref.width,\n offsetHeight: domref.height,\n id: id ?? '',\n getContext: () => ctx,\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => ({\n height: domref.height,\n width: domref.width\n })\n };\n\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n });\n}\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n const img = lynx.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\n@injectable()\nexport class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'lynx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ILynxCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number }) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList);\n\n loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return SystemInfo.pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/lynx-contribution.ts"],"names":[],"mappings":"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","file":"lynx-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ILynxCanvas\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { rafBasedSto } from '../../../common/utils';\n\ndeclare const lynx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvas: (id: string) => any;\n createCanvasNG: (id: string) => any;\n createImage: (id: string) => any;\n};\ndeclare const SystemInfo: {\n pixelRatio: number;\n};\n\nlet ng = false;\ntry {\n ng = !!lynx.createCanvasNG;\n} catch (err) {\n // do nothing\n}\n\n// 飞书小程序canvas的wrap\nfunction makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ILynxCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ILynxCanvas[]\n) {\n const dpr = SystemInfo.pixelRatio;\n\n canvasIdLists.forEach((id, i) => {\n const _canvas = ng ? lynx.createCanvasNG(id) : lynx.createCanvas(id);\n _canvas.width = domref.width * dpr;\n _canvas.height = domref.height * dpr;\n ng && _canvas.attachToCanvasView(id);\n\n const ctx = _canvas.getContext('2d');\n ctx.draw = (a: any, b: any) => {\n b();\n };\n // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n const canvas = {\n width: domref.width * dpr,\n height: domref.height * dpr,\n offsetWidth: domref.width,\n offsetHeight: domref.height,\n id: id ?? '',\n getContext: () => ctx,\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => ({\n height: domref.height,\n width: domref.width\n })\n };\n\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n });\n}\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n const img = lynx.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\n@injectable()\nexport class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'lynx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ILynxCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number }) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList);\n\n loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return SystemInfo.pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,iFAAiF;AACjF,kDAAqD;AACrD,iEAAgE;AAChE,+DAA8D;AAC9D,2DAA0D;AAC1D,2DAA0D;AAC1D,2DAA0D;AAC1D,uDAAsD;AAEtD,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IAExC,IAAI,CAAC,6CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,6CAAsB,CAAC,CAAC;IAGxD,IAAI,CAAC,2CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,2CAAqB,CAAC,CAAC;IAGvD,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;IAGrD,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;IAGrD,IAAI,CAAC,mCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,mCAAiB,CAAC,CAAC;IAGnD,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;IAErD,IAAA,gDAAwB,EAAC,IAAI,EAAE,2BAAe,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { bindContributionProvider } from '../../../common/contribution-provider';\nimport { EnvContribution } from '../../../constants';\nimport { BrowserEnvContribution } from './browser-contribution';\nimport { FeishuEnvContribution } from './feishu-contribution';\nimport { TaroEnvContribution } from './taro-contribution';\nimport { LynxEnvContribution } from './lynx-contribution';\nimport { NodeEnvContribution } from './node-contribution';\nimport { WxEnvContribution } from './wx-contribution';\n\nexport default new ContainerModule(bind => {\n // browser\n bind(BrowserEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(BrowserEnvContribution);\n\n // feishu\n bind(FeishuEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(FeishuEnvContribution);\n\n // taro\n bind(TaroEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(TaroEnvContribution);\n\n // lynx\n bind(LynxEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(LynxEnvContribution);\n\n // wx\n bind(WxEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(WxEnvContribution);\n\n // node\n bind(NodeEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(NodeEnvContribution);\n\n bindContributionProvider(bind, EnvContribution);\n});\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,iFAAiF;AACjF,kDAAqD;AACrD,iEAAgE;AAChE,+DAA8D;AAC9D,2DAA0D;AAC1D,2DAA0D;AAC1D,2DAA0D;AAC1D,uDAAsD;AAEtD,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IAExC,IAAI,CAAC,6CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,6CAAsB,CAAC,CAAC;IAGxD,IAAI,CAAC,2CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,2CAAqB,CAAC,CAAC;IAGvD,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;IAGrD,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;IAGrD,IAAI,CAAC,mCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,mCAAiB,CAAC,CAAC;IAGnD,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,2BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;IAErD,IAAA,gDAAwB,EAAC,IAAI,EAAE,2BAAe,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { bindContributionProvider } from '../../../common/contribution-provider';\nimport { EnvContribution } from '../../../constants';\nimport { BrowserEnvContribution } from './browser-contribution';\nimport { FeishuEnvContribution } from './feishu-contribution';\nimport { TaroEnvContribution } from './taro-contribution';\nimport { LynxEnvContribution } from './lynx-contribution';\nimport { NodeEnvContribution } from './node-contribution';\nimport { WxEnvContribution } from './wx-contribution';\n\nexport default new ContainerModule(bind => {\n // browser\n bind(BrowserEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(BrowserEnvContribution);\n\n // feishu\n bind(FeishuEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(FeishuEnvContribution);\n\n // taro\n bind(TaroEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(TaroEnvContribution);\n\n // lynx\n bind(LynxEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(LynxEnvContribution);\n\n // wx\n bind(WxEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(WxEnvContribution);\n\n // node\n bind(NodeEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(NodeEnvContribution);\n\n bindContributionProvider(bind, EnvContribution);\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/node-contribution.ts"],"names":[],"mappings":"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","file":"node-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadTaroContributions } from '../../../kits';\nimport type { EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';\nimport { ICanvasLike } from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { createImageElement } from './browser-contribution';\nimport { rafBasedSto } from '../../../common/utils';\n\ntype Canvas = any;\n\ntype NodePkg = {\n createCanvas: (width: number, height: number, type?: 'pdf' | 'svg') => Canvas;\n createImageData: (data: Uint8ClampedArray, width: number, height?: number) => ImageData;\n loadImage: (src: string | any, options?: any) => Promise<any>;\n Resvg?: any;\n};\n\n// let last = 0;\n// function nodeRequestAnimationFrame(callback: FrameRequestCallback) {\n// const now = Date.now();\n// const timeLeft = Math.max(0, 16 - (now - last));\n// const id = setTimeout(function () {\n// callback(now + timeLeft);\n// }, timeLeft);\n// last = now + timeLeft;\n// return id;\n// }\n\n@injectable()\nexport class NodeEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'node';\n pkg: NodePkg;\n _lastTime: number = 0;\n supportEvent: boolean = false;\n\n configure(service: IGlobal, pkg: NodePkg) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.pkg = pkg;\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 0;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 1;\n }\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json()) as Promise<any>; // ignore_security_alert\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer()); // ignore_security_alert\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n const { loadImage } = this.pkg;\n if (loadImage) {\n return loadImage(url)\n .then((image: any) => {\n const loadState: 'success' | 'fail' = image ? 'success' : 'fail';\n return {\n loadState,\n data: image as HTMLImageElement\n };\n })\n .catch(() => {\n return {\n loadState: 'fail',\n data: null\n } as any;\n });\n }\n return Promise.reject(new Error('node-canvas loadImage could not be found!'));\n }\n\n // 此处的\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n // // eslint-disable-next-line @typescript-eslint/no-var-requires\n // const { Resvg } = require('@resvg/resvg-js');\n const Resvg = this.pkg.Resvg;\n if (!Resvg) {\n return Promise.reject(new Error('@resvg/resvg-js svgParser could not be found!'));\n }\n const resvg = new Resvg(svgStr);\n const pngData = resvg.render().asPng();\n return this.loadImage(pngData as unknown as string);\n }\n\n createCanvas(params: any): Canvas {\n const canvas = this.pkg.createCanvas(params.width, params.height);\n return canvas;\n }\n\n releaseCanvas(canvas: Canvas | any) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return 1;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n getElementById(str: string): HTMLElement | null {\n return null;\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return;\n }\n\n release(...params: any): void {\n return;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/node-contribution.ts"],"names":[],"mappings":"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","file":"node-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadTaroContributions } from '../../../kits';\nimport type { EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';\nimport { ICanvasLike } from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { createImageElement } from './browser-contribution';\nimport { rafBasedSto } from '../../../common/utils';\n\ntype Canvas = any;\n\ntype NodePkg = {\n createCanvas: (width: number, height: number, type?: 'pdf' | 'svg') => Canvas;\n createImageData: (data: Uint8ClampedArray, width: number, height?: number) => ImageData;\n loadImage: (src: string | any, options?: any) => Promise<any>;\n Resvg?: any;\n};\n\n// let last = 0;\n// function nodeRequestAnimationFrame(callback: FrameRequestCallback) {\n// const now = Date.now();\n// const timeLeft = Math.max(0, 16 - (now - last));\n// const id = setTimeout(function () {\n// callback(now + timeLeft);\n// }, timeLeft);\n// last = now + timeLeft;\n// return id;\n// }\n\n@injectable()\nexport class NodeEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'node';\n pkg: NodePkg;\n _lastTime: number = 0;\n supportEvent: boolean = false;\n\n configure(service: IGlobal, pkg: NodePkg) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.pkg = pkg;\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 0;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 1;\n }\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json()) as Promise<any>; // ignore_security_alert\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer()); // ignore_security_alert\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n const { loadImage } = this.pkg;\n if (loadImage) {\n return loadImage(url)\n .then((image: any) => {\n const loadState: 'success' | 'fail' = image ? 'success' : 'fail';\n return {\n loadState,\n data: image as HTMLImageElement\n };\n })\n .catch(() => {\n return {\n loadState: 'fail',\n data: null\n } as any;\n });\n }\n return Promise.reject(new Error('node-canvas loadImage could not be found!'));\n }\n\n // 此处的\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n // // eslint-disable-next-line @typescript-eslint/no-var-requires\n // const { Resvg } = require('@resvg/resvg-js');\n const Resvg = this.pkg.Resvg;\n if (!Resvg) {\n return Promise.reject(new Error('@resvg/resvg-js svgParser could not be found!'));\n }\n const resvg = new Resvg(svgStr);\n const pngData = resvg.render().asPng();\n return this.loadImage(pngData as unknown as string);\n }\n\n createCanvas(params: any): Canvas {\n const canvas = this.pkg.createCanvas(params.width, params.height);\n return canvas;\n }\n\n releaseCanvas(canvas: Canvas | any) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return 1;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n getElementById(str: string): HTMLElement | null {\n return null;\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return;\n }\n\n release(...params: any): void {\n return;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/taro-contribution.ts"],"names":[],"mappings":"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","file":"taro-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadTaroContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n IDomRef,\n ITTCanvas\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { createImageElement } from './browser-contribution';\n\ninterface ITaro {\n createCanvasContext: (id: string) => any;\n canvasGetImageData: (data: {\n canvasId: string;\n x: number;\n y: number;\n width: number;\n height: number;\n success: (res: any) => void;\n }) => any;\n}\n\nfunction makeUpCanvas(\n domref: IDomRef,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n taro: ITaro,\n dpr: number\n) {\n canvasIdLists.forEach((id, i) => {\n const ctx: any = taro.createCanvasContext(id);\n // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n ctx.canvas = {\n width: domref.width * dpr,\n height: domref.height * dpr\n };\n\n // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n if (!ctx.createRadialGradient) {\n ctx.createRadialGradient = (...cc: any) => ctx.createCircularGradient(...cc);\n }\n\n // HACK: 小程序端draw、getImage方法为异步回调, 在此统一封装 getImageData 为 promise\n if (!ctx.getImageData && taro.canvasGetImageData) {\n ctx.getImageData = (x: number, y: number, width: number, height: number) =>\n new Promise((resolve, reject) => {\n try {\n taro.canvasGetImageData({\n canvasId: id,\n x,\n y,\n width,\n height,\n success(res) {\n resolve(res);\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n }\n\n const canvas = {\n id: id,\n width: domref.width * dpr,\n height: domref.height * dpr,\n offsetWidth: domref.width,\n offsetHeight: domref.height,\n getContext: () => ctx,\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => ({\n height: domref.height,\n width: domref.width\n })\n };\n\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n\n return canvas;\n });\n}\n\ninterface IConfigureParams {\n domref: any;\n canvasIdLists: string[];\n freeCanvasIdx: number;\n taro: ITaro;\n pixelRatio: number; // taro需要小程序自己处理pixelRatio\n}\n\n@injectable()\nexport class TaroEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'taro';\n supportEvent: boolean = true;\n canvasMap: Map<string, ITTCanvas> = new Map();\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n taro: ITaro;\n pixelRatio: number;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: IConfigureParams) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.taro,\n params.pixelRatio\n );\n this.taro = params.taro;\n this.pixelRatio = params.pixelRatio;\n\n loadTaroContributions();\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const _window = window || globalThis;\n if (_window.DOMParser) {\n const parser = new _window.DOMParser();\n const svg = parser.parseFromString(svgStr, 'image/svg+xml').children[0];\n const data = new XMLSerializer().serializeToString(svg);\n const url = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(data)}`; //svg转base64\n\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n } else if (_window.Blob) {\n const data = new _window.Blob([svgStr], { type: 'image/svg+xml' });\n const url = _window.URL.createObjectURL(data);\n\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n // 目前移动端上小程序不支持DOMParser和Blob,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n // params不生效\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return this.pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return cancelAnimationFrame;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/taro-contribution.ts"],"names":[],"mappings":"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","file":"taro-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadTaroContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n IDomRef,\n ITTCanvas\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { createImageElement } from './browser-contribution';\n\ninterface ITaro {\n createCanvasContext: (id: string) => any;\n canvasGetImageData: (data: {\n canvasId: string;\n x: number;\n y: number;\n width: number;\n height: number;\n success: (res: any) => void;\n }) => any;\n}\n\nfunction makeUpCanvas(\n domref: IDomRef,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n taro: ITaro,\n dpr: number\n) {\n canvasIdLists.forEach((id, i) => {\n const ctx: any = taro.createCanvasContext(id);\n // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n ctx.canvas = {\n width: domref.width * dpr,\n height: domref.height * dpr\n };\n\n // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n if (!ctx.createRadialGradient) {\n ctx.createRadialGradient = (...cc: any) => ctx.createCircularGradient(...cc);\n }\n\n // HACK: 小程序端draw、getImage方法为异步回调, 在此统一封装 getImageData 为 promise\n if (!ctx.getImageData && taro.canvasGetImageData) {\n ctx.getImageData = (x: number, y: number, width: number, height: number) =>\n new Promise((resolve, reject) => {\n try {\n taro.canvasGetImageData({\n canvasId: id,\n x,\n y,\n width,\n height,\n success(res) {\n resolve(res);\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n }\n\n const canvas = {\n id: id,\n width: domref.width * dpr,\n height: domref.height * dpr,\n offsetWidth: domref.width,\n offsetHeight: domref.height,\n getContext: () => ctx,\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect: () => ({\n height: domref.height,\n width: domref.width\n })\n };\n\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n\n return canvas;\n });\n}\n\ninterface IConfigureParams {\n domref: any;\n canvasIdLists: string[];\n freeCanvasIdx: number;\n taro: ITaro;\n pixelRatio: number; // taro需要小程序自己处理pixelRatio\n}\n\n@injectable()\nexport class TaroEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'taro';\n supportEvent: boolean = true;\n canvasMap: Map<string, ITTCanvas> = new Map();\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n taro: ITaro;\n pixelRatio: number;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: IConfigureParams) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.taro,\n params.pixelRatio\n );\n this.taro = params.taro;\n this.pixelRatio = params.pixelRatio;\n\n loadTaroContributions();\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const _window = window || globalThis;\n if (_window.DOMParser) {\n const parser = new _window.DOMParser();\n const svg = parser.parseFromString(svgStr, 'image/svg+xml').children[0];\n const data = new XMLSerializer().serializeToString(svg);\n const url = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(data)}`; //svg转base64\n\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n } else if (_window.Blob) {\n const data = new _window.Blob([svgStr], { type: 'image/svg+xml' });\n const url = _window.URL.createObjectURL(data);\n\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n // 目前移动端上小程序不支持DOMParser和Blob,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n // params不生效\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return this.pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return cancelAnimationFrame;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/wx-contribution.ts"],"names":[],"mappings":"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","file":"wx-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { rafBasedSto } from '../../../common/utils';\n\ndeclare const wx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvasContext: (id: string) => any;\n createSelectorQuery: () => any;\n};\n\n// 飞书小程序canvas的wrap\nasync function makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n compoient: any\n) {\n const dpr = wx.getSystemInfoSync().pixelRatio;\n\n for (let i = 0; i < canvasIdLists.length; i++) {\n const id = canvasIdLists[i];\n await new Promise(resolve => {\n let data = wx.createSelectorQuery();\n if (compoient) {\n data = data.in(compoient);\n }\n // @ts-ignore\n data\n .select(`#${id}`) // 在 WXML 中填入的 id\n .fields({ node: true, size: true })\n .exec((res: any) => {\n if (!res[0]) {\n return;\n }\n const canvas = res[0].node;\n const width = res[0].width;\n const height = res[0].height;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n resolve(null);\n });\n });\n }\n\n // canvasIdLists.forEach((id, i) => {\n // const ctx = wx.createCanvasContext(id);\n // // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n // // 放到内容里\n // // // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n // // ctx.createRadialGradient = (...cc) => ctx.createCircularGradient(...cc);\n\n // // // 封装 getImageData 为 promise\n // // ctx.getImageData = (x, y, width, height) =>\n // // new Promise((resolve, reject) => {\n // // try {\n // // tt.canvasGetImageData({\n // // canvasId: item.id,\n // // x,\n // // y,\n // // width,\n // // height,\n // // success(res) {\n // // resolve(res);\n // // },\n // // });\n // // } catch (err) {\n // // reject(err);\n // // }\n // // });\n\n // const canvas = {\n // width: domref.width,\n // height: domref.height,\n // offsetWidth: domref.width,\n // offsetHeight: domref.height,\n // id: id ?? '',\n // getContext: () => ctx,\n // // 构造 getBoundingClientRect 方法\n // getBoundingClientRect: () => ({\n // height: domref.height,\n // width: domref.width\n // })\n // };\n\n // canvasMap.set(id, canvas);\n // if (i >= freeCanvasIdx) {\n // freeCanvasList.push(canvas);\n // }\n // });\n}\n\n@injectable()\nexport class WxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'wx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; compoient: any }) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n return makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.compoient\n ).then(() => {\n loadFeishuContributions();\n });\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return wx.getSystemInfoSync().pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/wx-contribution.ts"],"names":[],"mappings":"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","file":"wx-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { rafBasedSto } from '../../../common/utils';\n\ndeclare const wx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvasContext: (id: string) => any;\n createSelectorQuery: () => any;\n};\n\n// 飞书小程序canvas的wrap\nasync function makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n compoient: any\n) {\n const dpr = wx.getSystemInfoSync().pixelRatio;\n\n for (let i = 0; i < canvasIdLists.length; i++) {\n const id = canvasIdLists[i];\n await new Promise(resolve => {\n let data = wx.createSelectorQuery();\n if (compoient) {\n data = data.in(compoient);\n }\n // @ts-ignore\n data\n .select(`#${id}`) // 在 WXML 中填入的 id\n .fields({ node: true, size: true })\n .exec((res: any) => {\n if (!res[0]) {\n return;\n }\n const canvas = res[0].node;\n const width = res[0].width;\n const height = res[0].height;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n resolve(null);\n });\n });\n }\n\n // canvasIdLists.forEach((id, i) => {\n // const ctx = wx.createCanvasContext(id);\n // // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n // // 放到内容里\n // // // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n // // ctx.createRadialGradient = (...cc) => ctx.createCircularGradient(...cc);\n\n // // // 封装 getImageData 为 promise\n // // ctx.getImageData = (x, y, width, height) =>\n // // new Promise((resolve, reject) => {\n // // try {\n // // tt.canvasGetImageData({\n // // canvasId: item.id,\n // // x,\n // // y,\n // // width,\n // // height,\n // // success(res) {\n // // resolve(res);\n // // },\n // // });\n // // } catch (err) {\n // // reject(err);\n // // }\n // // });\n\n // const canvas = {\n // width: domref.width,\n // height: domref.height,\n // offsetWidth: domref.width,\n // offsetHeight: domref.height,\n // id: id ?? '',\n // getContext: () => ctx,\n // // 构造 getBoundingClientRect 方法\n // getBoundingClientRect: () => ({\n // height: domref.height,\n // width: domref.width\n // })\n // };\n\n // canvasMap.set(id, canvas);\n // if (i >= freeCanvasIdx) {\n // freeCanvasList.push(canvas);\n // }\n // });\n}\n\n@injectable()\nexport class WxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'wx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; compoient: any }) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n return makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.compoient\n ).then(() => {\n loadFeishuContributions();\n });\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return wx.getSystemInfoSync().pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return null;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,6DAA2C;AAE3C,+CAAwD;AAA/C,0GAAA,gBAAgB,OAAA","file":"index.js","sourcesContent":["export * from './env/base-contribution';\nexport * from './window/base-contribution';\n// 对外暴露文字布局测试相关工具,供外部调用\nexport { CanvasTextLayout } from './textMeasure/layout';\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,6DAA2C;AAE3C,+CAAwD;AAA/C,0GAAA,gBAAgB,OAAA","file":"index.js","sourcesContent":["export * from './env/base-contribution';\nexport * from './window/base-contribution';\n// 对外暴露文字布局测试相关工具,供外部调用\nexport { CanvasTextLayout } from './textMeasure/layout';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/layerHandler/canvas2d-contribution.ts"],"names":[],"mappings":"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","file":"canvas2d-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n IWindow,\n ILayerHandlerInitParams,\n ILayerHandlerDrawParams,\n IDrawContext\n} from '../../../interface';\nimport type { IBounds } from '@visactor/vutils';\nimport { VGlobal } from '../../../constants';\n\n@injectable()\nexport class CanvasLayerHandlerContribution implements ILayerHandlerContribution {\n layer: ILayer;\n canvas: ICanvas;\n context: IContext2d;\n offscreen: boolean;\n main: boolean;\n window: IWindow;\n\n constructor(@inject(VGlobal) public readonly global: IGlobal) {\n this.offscreen = false;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n this.window = window;\n // 默认图层,那么直接拿window上的上下文和canvas即可\n if (params.main) {\n this.main = true;\n this.context = window.getContext();\n this.canvas = this.context.getCanvas();\n } else {\n this.main = false;\n let nativeCanvas: HTMLElement;\n if (params.canvasId) {\n nativeCanvas = this.global.getElementById(params.canvasId);\n } else {\n nativeCanvas = this.global.createCanvas({\n width: window.width,\n height: window.height\n });\n }\n // 不是main的话,就穿透点击事件\n if (nativeCanvas.style) {\n nativeCanvas.style['pointer-events'] = 'none';\n }\n const windowContext = window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n const canvas = wrapCanvas({\n nativeCanvas,\n width: window.width,\n height: window.height,\n dpr: window.dpr,\n canvasControled: true,\n container: window.getContainer(),\n x: windowCanvas.offsetLeft,\n y: windowCanvas.offsetTop\n });\n canvas.applyPosition();\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>): void {\n // 调整位置\n if (!this.main) {\n const windowContext = this.window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n if (windowCanvas && (this.canvas.x !== windowCanvas.offsetLeft || this.canvas.y !== windowCanvas.offsetTop)) {\n this.canvas.x = windowCanvas.offsetLeft;\n this.canvas.y = windowCanvas.offsetTop;\n this.canvas.applyPosition();\n }\n }\n params.renderService.render(group, {\n context: this.context,\n clear: params.background ?? '#ffffff',\n ...params,\n ...userParams\n });\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n layerHandlers.forEach(l => {\n const ctx = l.getContext();\n const canvas = ctx.canvas.nativeCanvas;\n this.context.drawImage(canvas, 0, 0);\n });\n }\n\n prepare(dirtyBounds: IBounds, params: ILayerHandlerDrawParams) {\n return;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n params.renderService.render(group, {\n context,\n ...params,\n clear: params.clear ? params.background ?? '#fff' : undefined\n });\n return;\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n release() {\n this.canvas.release();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/canvas2d-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA+C;AAC/C,+CAAkD;AAelD,kDAA6C;AAGtC,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAQzC,YAA6C,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;QAC1D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACtB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,MAA+B;QAClE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,YAAyB,CAAC;YAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACnB,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC5D;iBAAM;gBACL,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBACtC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;aACJ;YAED,IAAI,YAAY,CAAC,KAAK,EAAE;gBACtB,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;aAC/C;YACD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC;gBACxB,YAAY;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE;gBAChC,CAAC,EAAE,YAAY,CAAC,UAAU;gBAC1B,CAAC,EAAE,YAAY,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;SACpC;IACH,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,UAAU,CAAC,CAAS,EAAE,CAAS;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,KAAe,EAAE,MAA+B,EAAE,UAAkC;;QAEzF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC;YAC5D,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,YAAY,CAAC,SAAS,CAAC,EAAE;gBAC3G,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;aAC7B;SACF;QACD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,gCAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,SAAS,IAClC,MAAM,GACN,UAAU,EACb,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAA0C;QAC9C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,WAAoB,EAAE,MAA+B;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAe,EAAE,KAAe,EAAE,MAA+C;;QACtF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,gCAC/B,OAAO,IACJ,MAAM,KACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,MAAM,CAAC,CAAC,CAAC,SAAS,IAC7D,CAAC;QACH,OAAO;IACT,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF,CAAA;AAlHY,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;IASE,WAAA,IAAA,kBAAM,EAAC,mBAAO,CAAC,CAAA;;GARjB,8BAA8B,CAkH1C;AAlHY,wEAA8B","file":"canvas2d-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n IWindow,\n ILayerHandlerInitParams,\n ILayerHandlerDrawParams,\n IDrawContext\n} from '../../../interface';\nimport type { IBounds } from '@visactor/vutils';\nimport { VGlobal } from '../../../constants';\n\n@injectable()\nexport class CanvasLayerHandlerContribution implements ILayerHandlerContribution {\n layer: ILayer;\n canvas: ICanvas;\n context: IContext2d;\n offscreen: boolean;\n main: boolean;\n window: IWindow;\n\n constructor(@inject(VGlobal) public readonly global: IGlobal) {\n this.offscreen = false;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n this.window = window;\n // 默认图层,那么直接拿window上的上下文和canvas即可\n if (params.main) {\n this.main = true;\n this.context = window.getContext();\n this.canvas = this.context.getCanvas();\n } else {\n this.main = false;\n let nativeCanvas: HTMLElement;\n if (params.canvasId) {\n nativeCanvas = this.global.getElementById(params.canvasId);\n } else {\n nativeCanvas = this.global.createCanvas({\n width: window.width,\n height: window.height\n });\n }\n // 不是main的话,就穿透点击事件\n if (nativeCanvas.style) {\n nativeCanvas.style['pointer-events'] = 'none';\n }\n const windowContext = window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n const canvas = wrapCanvas({\n nativeCanvas,\n width: window.width,\n height: window.height,\n dpr: window.dpr,\n canvasControled: true,\n container: window.getContainer(),\n x: windowCanvas.offsetLeft,\n y: windowCanvas.offsetTop\n });\n canvas.applyPosition();\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>): void {\n // 调整位置\n if (!this.main) {\n const windowContext = this.window.getContext();\n const windowCanvas = windowContext.getCanvas().nativeCanvas;\n if (windowCanvas && (this.canvas.x !== windowCanvas.offsetLeft || this.canvas.y !== windowCanvas.offsetTop)) {\n this.canvas.x = windowCanvas.offsetLeft;\n this.canvas.y = windowCanvas.offsetTop;\n this.canvas.applyPosition();\n }\n }\n params.renderService.render(group, {\n context: this.context,\n clear: params.background ?? '#ffffff',\n ...params,\n ...userParams\n });\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n layerHandlers.forEach(l => {\n const ctx = l.getContext();\n const canvas = ctx.canvas.nativeCanvas;\n this.context.drawImage(canvas, 0, 0);\n });\n }\n\n prepare(dirtyBounds: IBounds, params: ILayerHandlerDrawParams) {\n return;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n params.renderService.render(group, {\n context,\n ...params,\n clear: params.clear ? params.background ?? '#fff' : undefined\n });\n return;\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n release() {\n this.canvas.release();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/layerHandler/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,uCAAuD;AACvD,mEAAyE;AACzE,yEAA+E;AAE/E,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,sDAA8B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,IAAI,CAAC,4DAAiC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,IAAI,CAAC,gCAAwB,CAAC,CAAC,SAAS,CAAC,sDAA8B,CAAC,CAAC;AAQ3E,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { LayerHandlerContribution } from '../../layer';\nimport { CanvasLayerHandlerContribution } from './canvas2d-contribution';\nimport { OffscreenLayerHandlerContribution } from './offscreen2d-contribution';\n\nexport default new ContainerModule(bind => {\n bind(CanvasLayerHandlerContribution).toSelf();\n bind(OffscreenLayerHandlerContribution).toSelf();\n bind(LayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // try {\n // if (typeof OffscreenCanvas === 'function') {\n // bind(LayerHandlerContribution).toService(OffscreenLayerHandlerContribution);\n // }\n // } catch (err) {\n // bind(LayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // }\n});\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,uCAAuD;AACvD,mEAAyE;AACzE,yEAA+E;AAE/E,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,sDAA8B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,IAAI,CAAC,4DAAiC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,IAAI,CAAC,gCAAwB,CAAC,CAAC,SAAS,CAAC,sDAA8B,CAAC,CAAC;AAQ3E,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { LayerHandlerContribution } from '../../layer';\nimport { CanvasLayerHandlerContribution } from './canvas2d-contribution';\nimport { OffscreenLayerHandlerContribution } from './offscreen2d-contribution';\n\nexport default new ContainerModule(bind => {\n bind(CanvasLayerHandlerContribution).toSelf();\n bind(OffscreenLayerHandlerContribution).toSelf();\n bind(LayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // try {\n // if (typeof OffscreenCanvas === 'function') {\n // bind(LayerHandlerContribution).toService(OffscreenLayerHandlerContribution);\n // }\n // } catch (err) {\n // bind(LayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // }\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/layerHandler/offscreen2d-contribution.ts"],"names":[],"mappings":"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","file":"offscreen2d-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n ILayerHandlerInitParams,\n IWindow,\n ILayerHandlerDrawParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { VGlobal } from '../../../constants';\n\n@injectable()\nexport class OffscreenLayerHandlerContribution implements ILayerHandlerContribution {\n layer: ILayer;\n canvas: ICanvas;\n context: IContext2d;\n offscreen: boolean;\n\n constructor(@inject(VGlobal) public readonly global: IGlobal) {\n this.offscreen = true;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n const nativeCanvas = this.global.createOffscreenCanvas({\n width: params.width,\n height: params.height,\n dpr: window.dpr\n });\n const canvas = wrapCanvas({\n nativeCanvas,\n width: params.width,\n height: params.height,\n dpr: window.dpr,\n canvasControled: true\n });\n\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams): void {\n params.renderService.render(group, {\n context: this.context,\n ...params,\n x: 0,\n y: 0,\n clear: params.background ?? '#ffffff'\n });\n }\n\n prepare(dirtyBounds: IBoundsLike, params: ILayerHandlerDrawParams) {\n return;\n }\n\n release() {\n this.canvas.release();\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n const targetDpr = target.dpr;\n\n const { x = 0, y = 0, width = this.layer.viewWidth, height = this.layer.viewHeight } = params;\n // 这个context可能是外部的,不要使用内置的状态,直接用原生的context\n context.nativeContext.save();\n context.nativeContext.setTransform(targetDpr, 0, 0, targetDpr, 0, 0);\n if (params.clear) {\n context.clearRect(x, y, width, height);\n }\n context.drawImage(this.canvas.nativeCanvas, 0, 0, this.canvas.width, this.canvas.height, x, y, width, height);\n context.nativeContext.restore();\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/offscreen2d-contribution.ts"],"names":[],"mappings":"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","file":"offscreen2d-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { wrapCanvas } from '../../../canvas/util';\nimport type {\n IGlobal,\n ICanvas,\n IContext2d,\n IDrawToParams,\n IGroup,\n ILayer,\n ILayerHandlerContribution,\n ILayerHandlerInitParams,\n IWindow,\n ILayerHandlerDrawParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { VGlobal } from '../../../constants';\n\n@injectable()\nexport class OffscreenLayerHandlerContribution implements ILayerHandlerContribution {\n layer: ILayer;\n canvas: ICanvas;\n context: IContext2d;\n offscreen: boolean;\n\n constructor(@inject(VGlobal) public readonly global: IGlobal) {\n this.offscreen = true;\n }\n\n setDpr(dpr: number) {\n this.canvas.dpr = dpr;\n return;\n }\n\n init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void {\n this.layer = layer;\n const nativeCanvas = this.global.createOffscreenCanvas({\n width: params.width,\n height: params.height,\n dpr: window.dpr\n });\n const canvas = wrapCanvas({\n nativeCanvas,\n width: params.width,\n height: params.height,\n dpr: window.dpr,\n canvasControled: true\n });\n\n this.canvas = canvas;\n this.context = canvas.getContext();\n }\n\n resize(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n resizeView(w: number, h: number) {\n this.canvas.resize(w, h);\n return;\n }\n\n render(group: IGroup[], params: ILayerHandlerDrawParams): void {\n params.renderService.render(group, {\n context: this.context,\n ...params,\n x: 0,\n y: 0,\n clear: params.background ?? '#ffffff'\n });\n }\n\n prepare(dirtyBounds: IBoundsLike, params: ILayerHandlerDrawParams) {\n return;\n }\n\n release() {\n this.canvas.release();\n }\n\n getContext(): IContext2d {\n return this.context;\n }\n\n drawTo(target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) {\n const context = target.getContext();\n const targetDpr = target.dpr;\n\n const { x = 0, y = 0, width = this.layer.viewWidth, height = this.layer.viewHeight } = params;\n // 这个context可能是外部的,不要使用内置的状态,直接用原生的context\n context.nativeContext.save();\n context.nativeContext.setTransform(targetDpr, 0, 0, targetDpr, 0, 0);\n if (params.clear) {\n context.clearRect(x, y, width, height);\n }\n context.drawImage(this.canvas.nativeCanvas, 0, 0, this.canvas.width, this.canvas.height, x, y, width, height);\n context.nativeContext.restore();\n }\n\n merge(layerHandlers: ILayerHandlerContribution[]) {\n return;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/modules.ts"],"names":[],"mappings":";;;;;AACA,4DAAuC;AACvC,+DAA6C;AAC7C,oEAAuD;AACvD,qEAAyD;AAEzD,SAAwB,IAAI,CAAC,SAAoB;IAC/C,SAAS,CAAC,IAAI,CAAC,iBAAU,CAAC,CAAC;IAC3B,SAAS,CAAC,IAAI,CAAC,iBAAa,CAAC,CAAC;IAC9B,SAAS,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC;IACnC,SAAS,CAAC,IAAI,CAAC,iBAAmB,CAAC,CAAC;AACtC,CAAC;AALD,uBAKC","file":"modules.js","sourcesContent":["import type { Container } from 'inversify';\nimport envModules from './env/modules';\nimport windowModules from './window/modules';\nimport textMeasureModules from './textMeasure/modules';\nimport layerHandlerModules from './layerHandler/modules';\n\nexport default function load(container: Container) {\n container.load(envModules);\n container.load(windowModules);\n container.load(textMeasureModules);\n container.load(layerHandlerModules);\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/modules.ts"],"names":[],"mappings":";;;;;AACA,4DAAuC;AACvC,+DAA6C;AAC7C,oEAAuD;AACvD,qEAAyD;AAEzD,SAAwB,IAAI,CAAC,SAAoB;IAC/C,SAAS,CAAC,IAAI,CAAC,iBAAU,CAAC,CAAC;IAC3B,SAAS,CAAC,IAAI,CAAC,iBAAa,CAAC,CAAC;IAC9B,SAAS,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC;IACnC,SAAS,CAAC,IAAI,CAAC,iBAAmB,CAAC,CAAC;AACtC,CAAC;AALD,uBAKC","file":"modules.js","sourcesContent":["import type { Container } from 'inversify';\nimport envModules from './env/modules';\nimport windowModules from './window/modules';\nimport textMeasureModules from './textMeasure/modules';\nimport layerHandlerModules from './layerHandler/modules';\n\nexport default function load(container: Container) {\n container.load(envModules);\n container.load(windowModules);\n container.load(textMeasureModules);\n container.load(layerHandlerModules);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/textMeasure/AtextMeasure.ts"],"names":[],"mappings":"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","file":"AtextMeasure.js","sourcesContent":["import { injectable } from 'inversify';\nimport type { IGraphicUtil } from '../../../interface/core';\nimport type { ICanvas, IContext2d, EnvType } from '../../../interface';\nimport type { TextOptionsType, ITextMeasure } from '../../../interface/text';\nimport { DefaultTextAttribute, DefaultTextStyle } from '../../../graphic/config';\nimport { testLetter } from '../../../graphic/richtext/utils';\n\n@injectable()\nexport class ATextMeasure implements ITextMeasure {\n release: (...params: any) => void;\n protected canvas?: ICanvas;\n protected context?: IContext2d | null;\n\n configure(service: IGraphicUtil, env: EnvType): void {\n this.canvas = service.canvas;\n this.context = service.context;\n service.bindTextMeasure(this);\n }\n\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureTextWidth(text: string, options: TextOptionsType): number {\n if (!this.context) {\n return this.estimate(text, options).width;\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n const textMeasure = this.context.measureText(text);\n return textMeasure.width;\n }\n\n // 估算文字长度\n estimate(\n text: string,\n { fontSize = DefaultTextAttribute.fontSize }: TextOptionsType\n ): { width: number; height: number } {\n // 假设只有英文和中文字符\n let eCharLen = 0; // 英文字符\n let cCharLen = 0; // 中文字符\n // 判断ascii码,如果是\n for (let i = 0; i < text.length; i++) {\n text.charCodeAt(i) < 128 ? eCharLen++ : cCharLen++;\n }\n return {\n width: ~~(0.8 * eCharLen * fontSize + cCharLen * fontSize),\n height: fontSize\n };\n }\n\n /**\n * 获取text像素高度,基于actualBoundingBoxAscent和actualBoundingBoxDescent\n * @param text\n * @param options\n */\n measureTextPixelHeight(text: string, options: TextOptionsType): number {\n if (!this.context) {\n return options.fontSize ?? DefaultTextStyle.fontSize;\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n const textMeasure = this.context.measureText(text);\n return Math.abs((textMeasure as any).actualBoundingBoxAscent - (textMeasure as any).actualBoundingBoxDescent);\n }\n\n /**\n * 获取text包围盒的高度,基于fontBoundingBoxAscent和fontBoundingBoxDescent\n * @param text\n * @param options\n */\n measureTextBoundHieght(text: string, options: TextOptionsType): number {\n if (!this.context) {\n return options.fontSize ?? DefaultTextStyle.fontSize;\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n const textMeasure = this.context.measureText(text);\n return Math.abs((textMeasure as any).fontBoundingBoxAscent - (textMeasure as any).fontBoundingBoxDescent);\n }\n\n /**\n * 获取text测量对象\n * @param text\n * @param options\n */\n measureText(text: string, options: TextOptionsType): TextMetrics | { width: number } {\n if (!this.context) {\n return this.estimate(text, options);\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n return this.context.measureText(text);\n }\n\n clipTextVertical(\n verticalList: { text: string; width?: number; direction: number }[],\n options: TextOptionsType,\n width: number,\n wordBreak: boolean\n ): {\n verticalList: { text: string; width?: number; direction: number }[];\n width: number;\n } {\n if (verticalList.length === 0) {\n return { verticalList, width: 0 };\n }\n const { fontSize = 12 } = options;\n // 计算每一个区域的width\n verticalList.forEach(item => {\n item.width = item.direction === 0 ? fontSize : this.measureTextWidth(item.text, options);\n });\n const out: { text: string; width?: number; direction: number }[] = [];\n let length = 0;\n let i = 0;\n for (; i < verticalList.length; i++) {\n if (length + verticalList[i].width < width) {\n length += verticalList[i].width;\n out.push(verticalList[i]);\n } else {\n break;\n }\n }\n if (verticalList[i] && verticalList[i].text.length > 1) {\n const clipedData = this._clipText(\n verticalList[i].text,\n options,\n width - length,\n 0,\n verticalList[i].text.length - 1\n );\n if (wordBreak && clipedData.str !== verticalList[i].text) {\n let text = '';\n let length = 0;\n for (let j = 0; j < i; j++) {\n const item = verticalList[j];\n text += item.text;\n length += item.text.length;\n }\n text += verticalList[i].text;\n const totalLength = length + clipedData.str.length;\n let index = testLetter(text, totalLength);\n index = index - length;\n if (index !== clipedData.str.length - 1) {\n clipedData.str = clipedData.str.substring(0, index);\n clipedData.width = this.measureTextWidth(clipedData.str, options);\n }\n }\n out.push({ ...verticalList[i], text: clipedData.str, width: clipedData.width });\n length += clipedData.width;\n }\n\n return {\n verticalList: out,\n width: length\n };\n }\n\n /**\n * 将文本裁剪到width宽\n * @param text\n * @param options\n * @param width\n */\n clipText(\n text: string,\n options: TextOptionsType,\n width: number,\n wordBreak: boolean\n ): {\n str: string;\n width: number;\n } {\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n let length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n length = this.measureTextWidth(text[0], options);\n if (length > width) {\n return { str: '', width: 0 };\n }\n const data = this._clipText(text, options, width, 0, text.length - 1);\n // 如果需要文字截断\n if (wordBreak && data.str !== text) {\n const index = testLetter(text, data.str.length);\n if (index !== data.str.length) {\n data.str = text.substring(0, index);\n data.width = this.measureTextWidth(data.str, options);\n }\n }\n return data;\n }\n\n // 二分法找到最佳宽\n private _clipText(\n text: string,\n options: TextOptionsType,\n width: number,\n leftIdx: number,\n rightIdx: number\n ): { str: string; width: number } {\n const middleIdx = Math.floor((leftIdx + rightIdx) / 2);\n const subText = text.substring(0, middleIdx + 1);\n const strWidth = this.measureTextWidth(subText, options);\n let length: number;\n if (strWidth > width) {\n // 如果字符串的宽度大于限制宽度\n if (subText.length <= 1) {\n return { str: '', width: 0 };\n } // 如果子字符串长度小于1,而且大于给定宽的话,返回空字符串\n // 先判断是不是左侧的那个字符\n const str = text.substring(0, middleIdx);\n // 如果到左侧的字符小于或等于width,那么说明就是左侧的字符\n length = this.measureTextWidth(str, options);\n if (length <= width) {\n return { str, width: length };\n }\n // 返回leftIdx到middleIdx\n return this._clipText(text, options, width, leftIdx, middleIdx);\n } else if (strWidth < width) {\n // 如果字符串的宽度小于限制宽度\n if (middleIdx >= text.length - 1) {\n return { str: text, width: this.measureTextWidth(text, options) };\n } // 如果已经到结尾了,返回text\n // 先判断是不是右侧的那个字符\n const str = text.substring(0, middleIdx + 2);\n // 如果到右侧的字符大于或等于width,那么说明就是这个字符串\n length = this.measureTextWidth(str, options);\n if (length >= width) {\n return { str: subText, width: strWidth };\n }\n // 返回middleIdx到rightIdx\n return this._clipText(text, options, width, middleIdx, rightIdx);\n }\n // 如果相同,那么就找到text\n return { str: subText, width: strWidth };\n }\n\n clipTextWithSuffixVertical(\n verticalList: { text: string; width?: number; direction: number }[],\n options: TextOptionsType,\n width: number,\n suffix: string,\n wordBreak: boolean\n ): {\n verticalList: { text: string; width?: number; direction: number }[];\n width: number;\n } {\n if (suffix === '') {\n return this.clipTextVertical(verticalList, options, width, wordBreak);\n }\n if (verticalList.length === 0) {\n return { verticalList, width: 0 };\n }\n\n const output = this.clipTextVertical(verticalList, options, width, wordBreak);\n if (\n output.verticalList.length === verticalList.length &&\n output.verticalList[output.verticalList.length - 1].width === verticalList[verticalList.length - 1].width\n ) {\n return output;\n }\n\n const suffixWidth = this.measureTextWidth(suffix, options);\n if (suffixWidth > width) {\n return output;\n }\n\n width -= suffixWidth;\n\n const out = this.clipTextVertical(verticalList, options, width, wordBreak);\n out.width += suffixWidth;\n out.verticalList.push({\n text: suffix,\n direction: 1,\n width: suffixWidth\n });\n return out;\n }\n clipTextWithSuffix(\n text: string,\n options: TextOptionsType,\n width: number,\n suffix: string,\n wordBreak: boolean\n ): {\n str: string;\n width: number;\n } {\n if (suffix === '') {\n return this.clipText(text, options, width, wordBreak);\n }\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n const length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n const suffixWidth = this.measureTextWidth(suffix, options);\n if (suffixWidth > width) {\n return { str: '', width: 0 };\n }\n width -= suffixWidth;\n const data = this._clipText(text, options, width, 0, text.length - 1);\n\n // 如果需要文字截断\n if (wordBreak && data.str !== text) {\n const index = testLetter(text, data.str.length);\n if (index !== data.str.length) {\n data.str = text.substring(0, index);\n data.width = this.measureTextWidth(data.str, options);\n }\n }\n data.str += suffix;\n data.width += suffixWidth;\n return data;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/textMeasure/AtextMeasure.ts"],"names":[],"mappings":"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","file":"AtextMeasure.js","sourcesContent":["import { injectable } from 'inversify';\nimport type { IGraphicUtil } from '../../../interface/core';\nimport type { ICanvas, IContext2d, EnvType } from '../../../interface';\nimport type { TextOptionsType, ITextMeasure } from '../../../interface/text';\nimport { DefaultTextAttribute, DefaultTextStyle } from '../../../graphic/config';\nimport { testLetter } from '../../../graphic/richtext/utils';\n\n@injectable()\nexport class ATextMeasure implements ITextMeasure {\n release: (...params: any) => void;\n protected canvas?: ICanvas;\n protected context?: IContext2d | null;\n\n configure(service: IGraphicUtil, env: EnvType): void {\n this.canvas = service.canvas;\n this.context = service.context;\n service.bindTextMeasure(this);\n }\n\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureTextWidth(text: string, options: TextOptionsType): number {\n if (!this.context) {\n return this.estimate(text, options).width;\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n const textMeasure = this.context.measureText(text);\n return textMeasure.width;\n }\n\n // 估算文字长度\n estimate(\n text: string,\n { fontSize = DefaultTextAttribute.fontSize }: TextOptionsType\n ): { width: number; height: number } {\n // 假设只有英文和中文字符\n let eCharLen = 0; // 英文字符\n let cCharLen = 0; // 中文字符\n // 判断ascii码,如果是\n for (let i = 0; i < text.length; i++) {\n text.charCodeAt(i) < 128 ? eCharLen++ : cCharLen++;\n }\n return {\n width: ~~(0.8 * eCharLen * fontSize + cCharLen * fontSize),\n height: fontSize\n };\n }\n\n /**\n * 获取text像素高度,基于actualBoundingBoxAscent和actualBoundingBoxDescent\n * @param text\n * @param options\n */\n measureTextPixelHeight(text: string, options: TextOptionsType): number {\n if (!this.context) {\n return options.fontSize ?? DefaultTextStyle.fontSize;\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n const textMeasure = this.context.measureText(text);\n return Math.abs((textMeasure as any).actualBoundingBoxAscent - (textMeasure as any).actualBoundingBoxDescent);\n }\n\n /**\n * 获取text包围盒的高度,基于fontBoundingBoxAscent和fontBoundingBoxDescent\n * @param text\n * @param options\n */\n measureTextBoundHieght(text: string, options: TextOptionsType): number {\n if (!this.context) {\n return options.fontSize ?? DefaultTextStyle.fontSize;\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n const textMeasure = this.context.measureText(text);\n return Math.abs((textMeasure as any).fontBoundingBoxAscent - (textMeasure as any).fontBoundingBoxDescent);\n }\n\n /**\n * 获取text测量对象\n * @param text\n * @param options\n */\n measureText(text: string, options: TextOptionsType): TextMetrics | { width: number } {\n if (!this.context) {\n return this.estimate(text, options);\n }\n this.context.setTextStyleWithoutAlignBaseline(options);\n return this.context.measureText(text);\n }\n\n clipTextVertical(\n verticalList: { text: string; width?: number; direction: number }[],\n options: TextOptionsType,\n width: number,\n wordBreak: boolean\n ): {\n verticalList: { text: string; width?: number; direction: number }[];\n width: number;\n } {\n if (verticalList.length === 0) {\n return { verticalList, width: 0 };\n }\n const { fontSize = 12 } = options;\n // 计算每一个区域的width\n verticalList.forEach(item => {\n item.width = item.direction === 0 ? fontSize : this.measureTextWidth(item.text, options);\n });\n const out: { text: string; width?: number; direction: number }[] = [];\n let length = 0;\n let i = 0;\n for (; i < verticalList.length; i++) {\n if (length + verticalList[i].width < width) {\n length += verticalList[i].width;\n out.push(verticalList[i]);\n } else {\n break;\n }\n }\n if (verticalList[i] && verticalList[i].text.length > 1) {\n const clipedData = this._clipText(\n verticalList[i].text,\n options,\n width - length,\n 0,\n verticalList[i].text.length - 1\n );\n if (wordBreak && clipedData.str !== verticalList[i].text) {\n let text = '';\n let length = 0;\n for (let j = 0; j < i; j++) {\n const item = verticalList[j];\n text += item.text;\n length += item.text.length;\n }\n text += verticalList[i].text;\n const totalLength = length + clipedData.str.length;\n let index = testLetter(text, totalLength);\n index = index - length;\n if (index !== clipedData.str.length - 1) {\n clipedData.str = clipedData.str.substring(0, index);\n clipedData.width = this.measureTextWidth(clipedData.str, options);\n }\n }\n out.push({ ...verticalList[i], text: clipedData.str, width: clipedData.width });\n length += clipedData.width;\n }\n\n return {\n verticalList: out,\n width: length\n };\n }\n\n /**\n * 将文本裁剪到width宽\n * @param text\n * @param options\n * @param width\n */\n clipText(\n text: string,\n options: TextOptionsType,\n width: number,\n wordBreak: boolean\n ): {\n str: string;\n width: number;\n } {\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n let length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n length = this.measureTextWidth(text[0], options);\n if (length > width) {\n return { str: '', width: 0 };\n }\n const data = this._clipText(text, options, width, 0, text.length - 1);\n // 如果需要文字截断\n if (wordBreak && data.str !== text) {\n const index = testLetter(text, data.str.length);\n if (index !== data.str.length) {\n data.str = text.substring(0, index);\n data.width = this.measureTextWidth(data.str, options);\n }\n }\n return data;\n }\n\n // 二分法找到最佳宽\n private _clipText(\n text: string,\n options: TextOptionsType,\n width: number,\n leftIdx: number,\n rightIdx: number\n ): { str: string; width: number } {\n const middleIdx = Math.floor((leftIdx + rightIdx) / 2);\n const subText = text.substring(0, middleIdx + 1);\n const strWidth = this.measureTextWidth(subText, options);\n let length: number;\n if (strWidth > width) {\n // 如果字符串的宽度大于限制宽度\n if (subText.length <= 1) {\n return { str: '', width: 0 };\n } // 如果子字符串长度小于1,而且大于给定宽的话,返回空字符串\n // 先判断是不是左侧的那个字符\n const str = text.substring(0, middleIdx);\n // 如果到左侧的字符小于或等于width,那么说明就是左侧的字符\n length = this.measureTextWidth(str, options);\n if (length <= width) {\n return { str, width: length };\n }\n // 返回leftIdx到middleIdx\n return this._clipText(text, options, width, leftIdx, middleIdx);\n } else if (strWidth < width) {\n // 如果字符串的宽度小于限制宽度\n if (middleIdx >= text.length - 1) {\n return { str: text, width: this.measureTextWidth(text, options) };\n } // 如果已经到结尾了,返回text\n // 先判断是不是右侧的那个字符\n const str = text.substring(0, middleIdx + 2);\n // 如果到右侧的字符大于或等于width,那么说明就是这个字符串\n length = this.measureTextWidth(str, options);\n if (length >= width) {\n return { str: subText, width: strWidth };\n }\n // 返回middleIdx到rightIdx\n return this._clipText(text, options, width, middleIdx, rightIdx);\n }\n // 如果相同,那么就找到text\n return { str: subText, width: strWidth };\n }\n\n clipTextWithSuffixVertical(\n verticalList: { text: string; width?: number; direction: number }[],\n options: TextOptionsType,\n width: number,\n suffix: string,\n wordBreak: boolean\n ): {\n verticalList: { text: string; width?: number; direction: number }[];\n width: number;\n } {\n if (suffix === '') {\n return this.clipTextVertical(verticalList, options, width, wordBreak);\n }\n if (verticalList.length === 0) {\n return { verticalList, width: 0 };\n }\n\n const output = this.clipTextVertical(verticalList, options, width, wordBreak);\n if (\n output.verticalList.length === verticalList.length &&\n output.verticalList[output.verticalList.length - 1].width === verticalList[verticalList.length - 1].width\n ) {\n return output;\n }\n\n const suffixWidth = this.measureTextWidth(suffix, options);\n if (suffixWidth > width) {\n return output;\n }\n\n width -= suffixWidth;\n\n const out = this.clipTextVertical(verticalList, options, width, wordBreak);\n out.width += suffixWidth;\n out.verticalList.push({\n text: suffix,\n direction: 1,\n width: suffixWidth\n });\n return out;\n }\n clipTextWithSuffix(\n text: string,\n options: TextOptionsType,\n width: number,\n suffix: string,\n wordBreak: boolean\n ): {\n str: string;\n width: number;\n } {\n if (suffix === '') {\n return this.clipText(text, options, width, wordBreak);\n }\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n const length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n const suffixWidth = this.measureTextWidth(suffix, options);\n if (suffixWidth > width) {\n return { str: '', width: 0 };\n }\n width -= suffixWidth;\n const data = this._clipText(text, options, width, 0, text.length - 1);\n\n // 如果需要文字截断\n if (wordBreak && data.str !== text) {\n const index = testLetter(text, data.str.length);\n if (index !== data.str.length) {\n data.str = text.substring(0, index);\n data.width = this.measureTextWidth(data.str, options);\n }\n }\n data.str += suffix;\n data.width += suffixWidth;\n return data;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/textMeasure/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { vec2 } from '@visactor/vutils';\nimport type { ITextMeasure, TextOptionsType } from '../../../interface/text';\nimport type { TextLayoutBBox, LayoutItemType, LayoutType, TextAlignType, TextBaselineType } from '../../../interface';\n\nexport class CanvasTextLayout {\n private fontFamily: string;\n private textOptions: TextOptionsType;\n private textMeasure: ITextMeasure;\n\n constructor(fontFamily: string, options: TextOptionsType, textMeasure: ITextMeasure) {\n this.fontFamily = fontFamily;\n this.textOptions = options;\n this.textMeasure = textMeasure;\n }\n\n LayoutBBox(bbox: TextLayoutBBox, textAlign: TextAlignType, textBaseline: TextBaselineType): TextLayoutBBox {\n if (textAlign === 'left' || textAlign === 'start') {\n bbox.xOffset = 0;\n } else if (textAlign === 'center') {\n bbox.xOffset = bbox.width / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bbox.xOffset = -bbox.width;\n } else {\n throw new Error('非法的textAlign');\n }\n\n if (textBaseline === 'top') {\n bbox.yOffset = 0;\n } else if (textBaseline === 'middle') {\n bbox.yOffset = bbox.height / -2;\n } else if (textBaseline === 'alphabetic') {\n bbox.yOffset = bbox.height * -0.79;\n } else {\n bbox.yOffset = -bbox.height;\n }\n\n return bbox;\n }\n\n GetLayout(\n str: string,\n width: number,\n height: number,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string,\n wordBreak: boolean,\n miniApp: boolean\n ): LayoutType {\n // 拆分str\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [width, height];\n const bboxOffset: vec2 = [0, 0];\n\n while (str.length > 0) {\n const { str: clipText } = this.textMeasure.clipTextWithSuffix(str, this.textOptions, width, suffix, wordBreak);\n linesLayout.push({\n str: clipText,\n width: this.textMeasure.measureTextWidth(clipText, this.textOptions)\n });\n str = str.substring(clipText.length);\n }\n\n if (textAlign === 'left' || textAlign === 'start') {\n // origin[0] = 0;\n } else if (textAlign === 'center') {\n bboxOffset[0] = bboxWH[0] / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bboxOffset[0] = -bboxWH[0];\n }\n\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n bboxOffset[1] = bboxWH[1] / -2;\n } else if (textBaseline === 'bottom') {\n bboxOffset[1] = -bboxWH[1];\n }\n\n const bbox: TextLayoutBBox = {\n xOffset: bboxOffset[0],\n yOffset: bboxOffset[1],\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n /**\n * 给定拆分好的每行字符串进行布局,如果传入lineWidth,那么后面的字符就拆分\n * @param lines\n * @param lineWidth\n */\n GetLayoutByLines(\n lines: (string | number)[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string = '',\n wordBreak: boolean,\n lineWidth?: number\n ): LayoutType {\n lines = lines.map(l => l.toString()) as string[];\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [0, 0];\n if (typeof lineWidth === 'number' && lineWidth !== Infinity) {\n // 直接使用lineWidth,并拆分字符串\n let width: number;\n for (let i = 0, len = lines.length; i < len; i++) {\n width = Math.min(this.textMeasure.measureTextWidth(lines[i] as string, this.textOptions), lineWidth);\n linesLayout.push({\n str: this.textMeasure.clipTextWithSuffix(lines[i] as string, this.textOptions, width, suffix, wordBreak).str,\n width\n });\n }\n bboxWH[0] = lineWidth;\n } else {\n // 使用所有行中最长的作为lineWidth\n lineWidth = 0;\n let width: number;\n let text: string;\n for (let i = 0, len = lines.length; i < len; i++) {\n text = lines[i] as string;\n width = this.textMeasure.measureTextWidth(text, this.textOptions);\n lineWidth = Math.max(lineWidth, width);\n linesLayout.push({ str: text, width });\n }\n bboxWH[0] = lineWidth;\n }\n bboxWH[1] = linesLayout.length * lineHeight;\n\n const bbox: TextLayoutBBox = {\n xOffset: 0,\n yOffset: 0,\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n this.LayoutBBox(bbox, textAlign, textBaseline);\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n layoutWithBBox(\n bbox: TextLayoutBBox,\n lines: LayoutItemType[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number\n ): LayoutType {\n const origin: vec2 = [0, 0];\n const totalLineHeight = lines.length * lineHeight; // 总高度\n // origin在y方向需要初始化,然后递增即可\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n origin[1] = (bbox.height - totalLineHeight) / 2;\n } else if (textBaseline === 'bottom') {\n origin[1] = bbox.height - totalLineHeight;\n }\n\n for (let i = 0; i < lines.length; i++) {\n this.lineOffset(bbox, lines[i], textAlign, textBaseline, lineHeight, origin);\n }\n\n return {\n bbox,\n lines,\n fontFamily: this.fontFamily,\n fontSize: this.textOptions.fontSize,\n fontWeight: this.textOptions.fontWeight,\n lineHeight,\n textAlign,\n textBaseline\n };\n }\n\n /**\n * 计算line在bbox中的位置,需要配合layoutWithBBox使用\n * @param bbox\n * @param line\n * @param textAlign\n * @param textBaseline\n * @param lineHeight\n * @param origin 这个line的左上角位置,会复用并修改\n */\n private lineOffset(\n bbox: TextLayoutBBox,\n line: LayoutItemType,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n origin: vec2\n ): LayoutItemType {\n if (textAlign === 'left' || textAlign === 'start') {\n line.leftOffset = 0;\n } else if (textAlign === 'center') {\n line.leftOffset = (bbox.width - line.width) / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n line.leftOffset = bbox.width - line.width;\n }\n\n // line.topOffset = lineHeight * 0.79 + origin[1]; // 渲染默认使用alphabetic\n line.topOffset = (lineHeight - this.textOptions.fontSize) / 2 + this.textOptions.fontSize * 0.79 + origin[1];\n origin[1] += lineHeight;\n\n return line;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/textMeasure/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { vec2 } from '@visactor/vutils';\nimport type { ITextMeasure, TextOptionsType } from '../../../interface/text';\nimport type { TextLayoutBBox, LayoutItemType, LayoutType, TextAlignType, TextBaselineType } from '../../../interface';\n\nexport class CanvasTextLayout {\n private fontFamily: string;\n private textOptions: TextOptionsType;\n private textMeasure: ITextMeasure;\n\n constructor(fontFamily: string, options: TextOptionsType, textMeasure: ITextMeasure) {\n this.fontFamily = fontFamily;\n this.textOptions = options;\n this.textMeasure = textMeasure;\n }\n\n LayoutBBox(bbox: TextLayoutBBox, textAlign: TextAlignType, textBaseline: TextBaselineType): TextLayoutBBox {\n if (textAlign === 'left' || textAlign === 'start') {\n bbox.xOffset = 0;\n } else if (textAlign === 'center') {\n bbox.xOffset = bbox.width / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bbox.xOffset = -bbox.width;\n } else {\n throw new Error('非法的textAlign');\n }\n\n if (textBaseline === 'top') {\n bbox.yOffset = 0;\n } else if (textBaseline === 'middle') {\n bbox.yOffset = bbox.height / -2;\n } else if (textBaseline === 'alphabetic') {\n bbox.yOffset = bbox.height * -0.79;\n } else {\n bbox.yOffset = -bbox.height;\n }\n\n return bbox;\n }\n\n GetLayout(\n str: string,\n width: number,\n height: number,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string,\n wordBreak: boolean,\n miniApp: boolean\n ): LayoutType {\n // 拆分str\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [width, height];\n const bboxOffset: vec2 = [0, 0];\n\n while (str.length > 0) {\n const { str: clipText } = this.textMeasure.clipTextWithSuffix(str, this.textOptions, width, suffix, wordBreak);\n linesLayout.push({\n str: clipText,\n width: this.textMeasure.measureTextWidth(clipText, this.textOptions)\n });\n str = str.substring(clipText.length);\n }\n\n if (textAlign === 'left' || textAlign === 'start') {\n // origin[0] = 0;\n } else if (textAlign === 'center') {\n bboxOffset[0] = bboxWH[0] / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bboxOffset[0] = -bboxWH[0];\n }\n\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n bboxOffset[1] = bboxWH[1] / -2;\n } else if (textBaseline === 'bottom') {\n bboxOffset[1] = -bboxWH[1];\n }\n\n const bbox: TextLayoutBBox = {\n xOffset: bboxOffset[0],\n yOffset: bboxOffset[1],\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n /**\n * 给定拆分好的每行字符串进行布局,如果传入lineWidth,那么后面的字符就拆分\n * @param lines\n * @param lineWidth\n */\n GetLayoutByLines(\n lines: (string | number)[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string = '',\n wordBreak: boolean,\n lineWidth?: number\n ): LayoutType {\n lines = lines.map(l => l.toString()) as string[];\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [0, 0];\n if (typeof lineWidth === 'number' && lineWidth !== Infinity) {\n // 直接使用lineWidth,并拆分字符串\n let width: number;\n for (let i = 0, len = lines.length; i < len; i++) {\n width = Math.min(this.textMeasure.measureTextWidth(lines[i] as string, this.textOptions), lineWidth);\n linesLayout.push({\n str: this.textMeasure.clipTextWithSuffix(lines[i] as string, this.textOptions, width, suffix, wordBreak).str,\n width\n });\n }\n bboxWH[0] = lineWidth;\n } else {\n // 使用所有行中最长的作为lineWidth\n lineWidth = 0;\n let width: number;\n let text: string;\n for (let i = 0, len = lines.length; i < len; i++) {\n text = lines[i] as string;\n width = this.textMeasure.measureTextWidth(text, this.textOptions);\n lineWidth = Math.max(lineWidth, width);\n linesLayout.push({ str: text, width });\n }\n bboxWH[0] = lineWidth;\n }\n bboxWH[1] = linesLayout.length * lineHeight;\n\n const bbox: TextLayoutBBox = {\n xOffset: 0,\n yOffset: 0,\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n this.LayoutBBox(bbox, textAlign, textBaseline);\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n layoutWithBBox(\n bbox: TextLayoutBBox,\n lines: LayoutItemType[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number\n ): LayoutType {\n const origin: vec2 = [0, 0];\n const totalLineHeight = lines.length * lineHeight; // 总高度\n // origin在y方向需要初始化,然后递增即可\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n origin[1] = (bbox.height - totalLineHeight) / 2;\n } else if (textBaseline === 'bottom') {\n origin[1] = bbox.height - totalLineHeight;\n }\n\n for (let i = 0; i < lines.length; i++) {\n this.lineOffset(bbox, lines[i], textAlign, textBaseline, lineHeight, origin);\n }\n\n return {\n bbox,\n lines,\n fontFamily: this.fontFamily,\n fontSize: this.textOptions.fontSize,\n fontWeight: this.textOptions.fontWeight,\n lineHeight,\n textAlign,\n textBaseline\n };\n }\n\n /**\n * 计算line在bbox中的位置,需要配合layoutWithBBox使用\n * @param bbox\n * @param line\n * @param textAlign\n * @param textBaseline\n * @param lineHeight\n * @param origin 这个line的左上角位置,会复用并修改\n */\n private lineOffset(\n bbox: TextLayoutBBox,\n line: LayoutItemType,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n origin: vec2\n ): LayoutItemType {\n if (textAlign === 'left' || textAlign === 'start') {\n line.leftOffset = 0;\n } else if (textAlign === 'center') {\n line.leftOffset = (bbox.width - line.width) / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n line.leftOffset = bbox.width - line.width;\n }\n\n // line.topOffset = lineHeight * 0.79 + origin[1]; // 渲染默认使用alphabetic\n line.topOffset = (lineHeight - this.textOptions.fontSize) / 2 + this.textOptions.fontSize * 0.79 + origin[1];\n origin[1] += lineHeight;\n\n return line;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/textMeasure/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,iFAAiF;AACjF,yEAAqG;AAErG,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,yDAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,kDAAuB,CAAC,CAAC,SAAS,CAAC,yDAA8B,CAAC,CAAC;IACxE,IAAA,gDAAwB,EAAC,IAAI,EAAE,kDAAuB,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { bindContributionProvider } from '../../../common/contribution-provider';\nimport { DefaultTextMeasureContribution, TextMeasureContribution } from './textMeasure-contribution';\n\nexport default new ContainerModule(bind => {\n bind(DefaultTextMeasureContribution).toSelf().inSingletonScope();\n bind(TextMeasureContribution).toService(DefaultTextMeasureContribution);\n bindContributionProvider(bind, TextMeasureContribution);\n});\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/textMeasure/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,iFAAiF;AACjF,yEAAqG;AAErG,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,yDAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,kDAAuB,CAAC,CAAC,SAAS,CAAC,yDAA8B,CAAC,CAAC;IACxE,IAAA,gDAAwB,EAAC,IAAI,EAAE,kDAAuB,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { bindContributionProvider } from '../../../common/contribution-provider';\nimport { DefaultTextMeasureContribution, TextMeasureContribution } from './textMeasure-contribution';\n\nexport default new ContainerModule(bind => {\n bind(DefaultTextMeasureContribution).toSelf().inSingletonScope();\n bind(TextMeasureContribution).toService(DefaultTextMeasureContribution);\n bindContributionProvider(bind, TextMeasureContribution);\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/textMeasure/textMeasure-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AACvC,iDAA8C;AAEjC,QAAA,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAGtE,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,2BAAY;CAAG,CAAA;AAAtD,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;GACA,8BAA8B,CAAwB;AAAtD,wEAA8B","file":"textMeasure-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { ATextMeasure } from './AtextMeasure';\n\nexport const TextMeasureContribution = Symbol.for('TextMeasureContribution');\n\n@injectable()\nexport class DefaultTextMeasureContribution extends ATextMeasure {}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/textMeasure/textMeasure-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AACvC,iDAA8C;AAEjC,QAAA,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAGtE,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,2BAAY;CAAG,CAAA;AAAtD,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;GACA,8BAA8B,CAAwB;AAAtD,wEAA8B","file":"textMeasure-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { ATextMeasure } from './AtextMeasure';\n\nexport const TextMeasureContribution = Symbol.for('TextMeasureContribution');\n\n@injectable()\nexport class DefaultTextMeasureContribution extends ATextMeasure {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/window/base-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,yDAAsD;AAgB/C,IAAe,6BAA6B,GAA5C,MAAe,6BAA6B;IAKjD;QACE,IAAI,CAAC,IAAI,GAAG,qBAAS,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IAID,QAAQ,CAAC,EAAkB;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,MAAe;QACxC,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;CAqCF,CAAA;AA3DqB,6BAA6B;IADlD,IAAA,sBAAU,GAAE;;GACS,6BAA6B,CA2DlD;AA3DqB,sEAA6B","file":"base-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { Generator } from '../../../common/generator';\nimport type {\n ICanvas,\n IContext2d,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindow,\n IWindowParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\n\ntype OnchangeCbType = (params: { x: number; y: number; width: number; height: number }) => void;\n\n@injectable()\nexport abstract class BaseWindowHandlerContribution implements IWindowHandlerContribution {\n declare type: EnvType;\n\n declare _uid: number;\n\n constructor() {\n this._uid = Generator.GenAutoIncrementId();\n }\n\n protected declare _onChangeCb?: OnchangeCbType;\n\n onChange(cb: OnchangeCbType) {\n this._onChangeCb = cb;\n }\n\n configure(window: IWindow, global: IGlobal) {\n if (global.env === this.type) {\n window.setWindowHandler(this);\n }\n }\n release(...params: any) {\n this.releaseWindow();\n }\n abstract createWindow(params: IWindowParams): void;\n abstract releaseWindow(): void;\n abstract setDpr(dpr: number): void;\n abstract resizeWindow(width: number, height: number): void;\n abstract getContext(): IContext2d;\n abstract getWH(): { width: number; height: number };\n abstract getTitle(): string;\n abstract getXY(): { x: number; y: number };\n abstract getNativeHandler(): ICanvas | any;\n abstract getDpr(): number;\n abstract clearViewBox(vb: IBoundsLike, color?: string): void;\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n abstract dispatchEvent(event: any): boolean;\n\n abstract getStyle(): CSSStyleDeclaration | Record<string, any>;\n abstract setStyle(style: CSSStyleDeclaration | Record<string, any>): void;\n abstract getBoundingClientRect(): IDomRectLike;\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/window/base-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,yDAAsD;AAgB/C,IAAe,6BAA6B,GAA5C,MAAe,6BAA6B;IAKjD;QACE,IAAI,CAAC,IAAI,GAAG,qBAAS,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IAID,QAAQ,CAAC,EAAkB;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,MAAe;QACxC,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;CAqCF,CAAA;AA3DqB,6BAA6B;IADlD,IAAA,sBAAU,GAAE;;GACS,6BAA6B,CA2DlD;AA3DqB,sEAA6B","file":"base-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { Generator } from '../../../common/generator';\nimport type {\n ICanvas,\n IContext2d,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindow,\n IWindowParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\n\ntype OnchangeCbType = (params: { x: number; y: number; width: number; height: number }) => void;\n\n@injectable()\nexport abstract class BaseWindowHandlerContribution implements IWindowHandlerContribution {\n declare type: EnvType;\n\n declare _uid: number;\n\n constructor() {\n this._uid = Generator.GenAutoIncrementId();\n }\n\n protected declare _onChangeCb?: OnchangeCbType;\n\n onChange(cb: OnchangeCbType) {\n this._onChangeCb = cb;\n }\n\n configure(window: IWindow, global: IGlobal) {\n if (global.env === this.type) {\n window.setWindowHandler(this);\n }\n }\n release(...params: any) {\n this.releaseWindow();\n }\n abstract createWindow(params: IWindowParams): void;\n abstract releaseWindow(): void;\n abstract setDpr(dpr: number): void;\n abstract resizeWindow(width: number, height: number): void;\n abstract getContext(): IContext2d;\n abstract getWH(): { width: number; height: number };\n abstract getTitle(): string;\n abstract getXY(): { x: number; y: number };\n abstract getNativeHandler(): ICanvas | any;\n abstract getDpr(): number;\n abstract clearViewBox(vb: IBoundsLike, color?: string): void;\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n abstract dispatchEvent(event: any): boolean;\n\n abstract getStyle(): CSSStyleDeclaration | Record<string, any>;\n abstract setStyle(style: CSSStyleDeclaration | Record<string, any>): void;\n abstract getBoundingClientRect(): IDomRectLike;\n}\n"]}