@visactor/vrender 0.12.2 → 0.13.0-alpha.0

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 (354) hide show
  1. package/cjs/canvas/contributions/browser/conical-gradient.d.ts +2 -2
  2. package/cjs/canvas/contributions/browser/conical-gradient.js +1 -1
  3. package/cjs/canvas/contributions/browser/conical-gradient.js.map +1 -1
  4. package/cjs/canvas/contributions/feishu/context.d.ts +2 -1
  5. package/cjs/canvas/contributions/feishu/context.js +3 -0
  6. package/cjs/canvas/contributions/feishu/context.js.map +1 -1
  7. package/cjs/canvas/contributions/lynx/context.d.ts +1 -0
  8. package/cjs/canvas/contributions/lynx/context.js +3 -0
  9. package/cjs/canvas/contributions/lynx/context.js.map +1 -1
  10. package/cjs/canvas/contributions/modules.d.ts +1 -1
  11. package/cjs/canvas/contributions/modules.js +2 -2
  12. package/cjs/canvas/contributions/modules.js.map +1 -1
  13. package/cjs/canvas/contributions/taro/context.d.ts +2 -1
  14. package/cjs/canvas/contributions/taro/context.js +3 -0
  15. package/cjs/canvas/contributions/taro/context.js.map +1 -1
  16. package/cjs/canvas/contributions/tt/context.d.ts +2 -1
  17. package/cjs/canvas/contributions/tt/context.js +3 -0
  18. package/cjs/canvas/contributions/tt/context.js.map +1 -1
  19. package/cjs/canvas/contributions/wx/canvas.d.ts +48 -0
  20. package/cjs/canvas/contributions/wx/canvas.js +102 -0
  21. package/cjs/canvas/contributions/wx/canvas.js.map +1 -0
  22. package/cjs/canvas/contributions/wx/context.d.ts +7 -0
  23. package/cjs/canvas/contributions/wx/context.js +24 -0
  24. package/cjs/canvas/contributions/wx/context.js.map +1 -0
  25. package/cjs/canvas/contributions/wx/index.d.ts +2 -0
  26. package/cjs/canvas/contributions/wx/index.js +21 -0
  27. package/cjs/canvas/contributions/wx/index.js.map +1 -0
  28. package/cjs/canvas/contributions/wx/modules.d.ts +3 -0
  29. package/cjs/canvas/contributions/wx/modules.js +13 -0
  30. package/cjs/canvas/contributions/wx/modules.js.map +1 -0
  31. package/cjs/common/contribution-provider.js +1 -1
  32. package/cjs/common/contribution-provider.js.map +1 -1
  33. package/cjs/common/render-area.d.ts +1 -1
  34. package/cjs/common/render-area.js +1 -0
  35. package/cjs/common/render-area.js.map +1 -1
  36. package/cjs/core/contributions/env/base-contribution.d.ts +3 -1
  37. package/cjs/core/contributions/env/base-contribution.js +6 -0
  38. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  39. package/cjs/core/contributions/env/feishu-contribution.d.ts +2 -0
  40. package/cjs/core/contributions/env/feishu-contribution.js +8 -2
  41. package/cjs/core/contributions/env/feishu-contribution.js.map +1 -1
  42. package/cjs/core/contributions/env/lynx-contribution.d.ts +2 -0
  43. package/cjs/core/contributions/env/lynx-contribution.js +18 -4
  44. package/cjs/core/contributions/env/lynx-contribution.js.map +1 -1
  45. package/cjs/core/contributions/env/modules.js +2 -1
  46. package/cjs/core/contributions/env/modules.js.map +1 -1
  47. package/cjs/core/contributions/env/node-contribution.d.ts +3 -1
  48. package/cjs/core/contributions/env/node-contribution.js +6 -0
  49. package/cjs/core/contributions/env/node-contribution.js.map +1 -1
  50. package/cjs/core/contributions/env/taro-contribution.d.ts +2 -0
  51. package/cjs/core/contributions/env/taro-contribution.js +8 -2
  52. package/cjs/core/contributions/env/taro-contribution.js.map +1 -1
  53. package/cjs/core/contributions/env/wx-contribution.d.ts +39 -0
  54. package/cjs/core/contributions/env/wx-contribution.js +131 -0
  55. package/cjs/core/contributions/env/wx-contribution.js.map +1 -0
  56. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +1 -1
  57. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  58. package/cjs/core/contributions/window/modules.js +2 -1
  59. package/cjs/core/contributions/window/modules.js.map +1 -1
  60. package/cjs/core/contributions/window/wx-contribution.d.ts +46 -0
  61. package/cjs/core/contributions/window/wx-contribution.js +159 -0
  62. package/cjs/core/contributions/window/wx-contribution.js.map +1 -0
  63. package/cjs/core/global.d.ts +5 -3
  64. package/cjs/core/global.js +19 -6
  65. package/cjs/core/global.js.map +1 -1
  66. package/cjs/core/layer-service.d.ts +4 -2
  67. package/cjs/core/layer-service.js +10 -6
  68. package/cjs/core/layer-service.js.map +1 -1
  69. package/cjs/core/layer.d.ts +3 -6
  70. package/cjs/core/layer.js +6 -6
  71. package/cjs/core/layer.js.map +1 -1
  72. package/cjs/core/stage.d.ts +7 -3
  73. package/cjs/core/stage.js +20 -8
  74. package/cjs/core/stage.js.map +1 -1
  75. package/cjs/graphic/bounds.d.ts +3 -1
  76. package/cjs/graphic/bounds.js +9 -1
  77. package/cjs/graphic/bounds.js.map +1 -1
  78. package/cjs/graphic/graphic.d.ts +2 -0
  79. package/cjs/graphic/graphic.js +11 -0
  80. package/cjs/graphic/graphic.js.map +1 -1
  81. package/cjs/graphic/node-tree.d.ts +2 -1
  82. package/cjs/graphic/node-tree.js +6 -3
  83. package/cjs/graphic/node-tree.js.map +1 -1
  84. package/cjs/graphic/text.js +1 -1
  85. package/cjs/graphic/text.js.map +1 -1
  86. package/cjs/index.d.ts +3 -1
  87. package/cjs/index.js +19 -18
  88. package/cjs/index.js.map +1 -1
  89. package/cjs/interface/contribution.d.ts +15 -37
  90. package/cjs/interface/contribution.js.map +1 -1
  91. package/cjs/interface/core.d.ts +2 -2
  92. package/cjs/interface/core.js.map +1 -1
  93. package/cjs/interface/global.d.ts +6 -1
  94. package/cjs/interface/global.js.map +1 -1
  95. package/cjs/interface/graphic.d.ts +1 -0
  96. package/cjs/interface/graphic.js.map +1 -1
  97. package/cjs/interface/layer.d.ts +7 -0
  98. package/cjs/interface/layer.js.map +1 -1
  99. package/cjs/interface/stage.d.ts +7 -2
  100. package/cjs/interface/stage.js.map +1 -1
  101. package/cjs/plugins/builtin-plugin/poptip-plugin.d.ts +1 -0
  102. package/cjs/plugins/builtin-plugin/poptip-plugin.js +3 -0
  103. package/cjs/plugins/builtin-plugin/poptip-plugin.js.map +1 -0
  104. package/cjs/plugins/constants.d.ts +2 -0
  105. package/cjs/plugins/constants.js +7 -0
  106. package/cjs/plugins/constants.js.map +1 -0
  107. package/cjs/plugins/plugin-modules.js +3 -2
  108. package/cjs/plugins/plugin-modules.js.map +1 -1
  109. package/cjs/plugins/plugin-service.d.ts +3 -3
  110. package/cjs/plugins/plugin-service.js +15 -8
  111. package/cjs/plugins/plugin-service.js.map +1 -1
  112. package/cjs/render/contributions/render/arc-render.d.ts +2 -1
  113. package/cjs/render/contributions/render/arc-render.js +48 -17
  114. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  115. package/cjs/render/contributions/render/area-render.d.ts +1 -1
  116. package/cjs/render/contributions/render/area-render.js +22 -12
  117. package/cjs/render/contributions/render/area-render.js.map +1 -1
  118. package/cjs/render/contributions/render/circle-render.js +4 -4
  119. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  120. package/cjs/render/contributions/render/contributions/arc-contribution-render.d.ts +2 -3
  121. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +2 -4
  122. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  123. package/cjs/render/contributions/render/contributions/area-contribution-render.d.ts +2 -3
  124. package/cjs/render/contributions/render/contributions/area-contribution-render.js +2 -4
  125. package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  126. package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +17 -5
  127. package/cjs/render/contributions/render/contributions/base-contribution-render.js +28 -4
  128. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  129. package/cjs/render/contributions/render/contributions/circle-contribution-render.d.ts +2 -3
  130. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +2 -4
  131. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  132. package/cjs/render/contributions/render/contributions/constants.d.ts +11 -0
  133. package/cjs/render/contributions/render/contributions/constants.js +12 -0
  134. package/cjs/render/contributions/render/contributions/constants.js.map +1 -0
  135. package/cjs/render/contributions/render/contributions/group-contribution-render.d.ts +2 -3
  136. package/cjs/render/contributions/render/contributions/group-contribution-render.js +2 -4
  137. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  138. package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +2 -3
  139. package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -4
  140. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  141. package/cjs/render/contributions/render/contributions/path-contribution-render.d.ts +0 -1
  142. package/cjs/render/contributions/render/contributions/path-contribution-render.js +1 -3
  143. package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  144. package/cjs/render/contributions/render/contributions/polygon-contribution-render.d.ts +0 -1
  145. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js +1 -3
  146. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  147. package/cjs/render/contributions/render/contributions/rect-contribution-render.d.ts +4 -5
  148. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +4 -6
  149. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  150. package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +2 -3
  151. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +2 -4
  152. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  153. package/cjs/render/contributions/render/contributions/text-contribution-render.d.ts +1 -0
  154. package/cjs/render/contributions/render/contributions/text-contribution-render.js +6 -0
  155. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -0
  156. package/cjs/render/contributions/render/group-render.js +5 -5
  157. package/cjs/render/contributions/render/group-render.js.map +1 -1
  158. package/cjs/render/contributions/render/image-render.js +5 -5
  159. package/cjs/render/contributions/render/image-render.js.map +1 -1
  160. package/cjs/render/contributions/render/module.js +47 -36
  161. package/cjs/render/contributions/render/module.js.map +1 -1
  162. package/cjs/render/contributions/render/path-render.js +4 -4
  163. package/cjs/render/contributions/render/path-render.js.map +1 -1
  164. package/cjs/render/contributions/render/polygon-render.js +4 -4
  165. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  166. package/cjs/render/contributions/render/rect-render.js +4 -4
  167. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  168. package/cjs/render/contributions/render/symbol-render.js +4 -4
  169. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  170. package/cjs/render/contributions/render/text-render.d.ts +5 -1
  171. package/cjs/render/contributions/render/text-render.js +26 -6
  172. package/cjs/render/contributions/render/text-render.js.map +1 -1
  173. package/cjs/render/index.d.ts +1 -0
  174. package/cjs/render/index.js +2 -1
  175. package/cjs/render/index.js.map +1 -1
  176. package/dist/index.js +3196 -2447
  177. package/dist/index.min.js +1 -1
  178. package/es/canvas/contributions/browser/conical-gradient.d.ts +2 -2
  179. package/es/canvas/contributions/browser/conical-gradient.js +1 -1
  180. package/es/canvas/contributions/browser/conical-gradient.js.map +1 -1
  181. package/es/canvas/contributions/feishu/context.d.ts +2 -1
  182. package/es/canvas/contributions/feishu/context.js +3 -0
  183. package/es/canvas/contributions/feishu/context.js.map +1 -1
  184. package/es/canvas/contributions/lynx/context.d.ts +1 -0
  185. package/es/canvas/contributions/lynx/context.js +3 -0
  186. package/es/canvas/contributions/lynx/context.js.map +1 -1
  187. package/es/canvas/contributions/modules.d.ts +1 -1
  188. package/es/canvas/contributions/modules.js +3 -1
  189. package/es/canvas/contributions/modules.js.map +1 -1
  190. package/es/canvas/contributions/taro/context.d.ts +2 -1
  191. package/es/canvas/contributions/taro/context.js +3 -0
  192. package/es/canvas/contributions/taro/context.js.map +1 -1
  193. package/es/canvas/contributions/tt/context.d.ts +2 -1
  194. package/es/canvas/contributions/tt/context.js +3 -0
  195. package/es/canvas/contributions/tt/context.js.map +1 -1
  196. package/es/canvas/contributions/wx/canvas.d.ts +48 -0
  197. package/es/canvas/contributions/wx/canvas.js +101 -0
  198. package/es/canvas/contributions/wx/canvas.js.map +1 -0
  199. package/es/canvas/contributions/wx/context.d.ts +7 -0
  200. package/es/canvas/contributions/wx/context.js +21 -0
  201. package/es/canvas/contributions/wx/context.js.map +1 -0
  202. package/es/canvas/contributions/wx/index.d.ts +2 -0
  203. package/es/canvas/contributions/wx/index.js +4 -0
  204. package/es/canvas/contributions/wx/index.js.map +1 -0
  205. package/es/canvas/contributions/wx/modules.d.ts +3 -0
  206. package/es/canvas/contributions/wx/modules.js +13 -0
  207. package/es/canvas/contributions/wx/modules.js.map +1 -0
  208. package/es/common/contribution-provider.js +1 -1
  209. package/es/common/contribution-provider.js.map +1 -1
  210. package/es/common/render-area.d.ts +1 -1
  211. package/es/common/render-area.js +1 -0
  212. package/es/common/render-area.js.map +1 -1
  213. package/es/core/contributions/env/base-contribution.d.ts +3 -1
  214. package/es/core/contributions/env/base-contribution.js +6 -0
  215. package/es/core/contributions/env/base-contribution.js.map +1 -1
  216. package/es/core/contributions/env/feishu-contribution.d.ts +2 -0
  217. package/es/core/contributions/env/feishu-contribution.js +8 -2
  218. package/es/core/contributions/env/feishu-contribution.js.map +1 -1
  219. package/es/core/contributions/env/lynx-contribution.d.ts +2 -0
  220. package/es/core/contributions/env/lynx-contribution.js +18 -4
  221. package/es/core/contributions/env/lynx-contribution.js.map +1 -1
  222. package/es/core/contributions/env/modules.js +3 -0
  223. package/es/core/contributions/env/modules.js.map +1 -1
  224. package/es/core/contributions/env/node-contribution.d.ts +3 -1
  225. package/es/core/contributions/env/node-contribution.js +6 -0
  226. package/es/core/contributions/env/node-contribution.js.map +1 -1
  227. package/es/core/contributions/env/taro-contribution.d.ts +2 -0
  228. package/es/core/contributions/env/taro-contribution.js +8 -2
  229. package/es/core/contributions/env/taro-contribution.js.map +1 -1
  230. package/es/core/contributions/env/wx-contribution.d.ts +39 -0
  231. package/es/core/contributions/env/wx-contribution.js +130 -0
  232. package/es/core/contributions/env/wx-contribution.js.map +1 -0
  233. package/es/core/contributions/layerHandler/canvas2d-contribution.js +1 -1
  234. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  235. package/es/core/contributions/window/modules.js +3 -0
  236. package/es/core/contributions/window/modules.js.map +1 -1
  237. package/es/core/contributions/window/wx-contribution.d.ts +46 -0
  238. package/es/core/contributions/window/wx-contribution.js +161 -0
  239. package/es/core/contributions/window/wx-contribution.js.map +1 -0
  240. package/es/core/global.d.ts +5 -3
  241. package/es/core/global.js +19 -6
  242. package/es/core/global.js.map +1 -1
  243. package/es/core/layer-service.d.ts +4 -2
  244. package/es/core/layer-service.js +10 -6
  245. package/es/core/layer-service.js.map +1 -1
  246. package/es/core/layer.d.ts +3 -6
  247. package/es/core/layer.js +7 -6
  248. package/es/core/layer.js.map +1 -1
  249. package/es/core/stage.d.ts +7 -3
  250. package/es/core/stage.js +22 -9
  251. package/es/core/stage.js.map +1 -1
  252. package/es/graphic/bounds.d.ts +3 -1
  253. package/es/graphic/bounds.js +7 -1
  254. package/es/graphic/bounds.js.map +1 -1
  255. package/es/graphic/graphic.d.ts +2 -0
  256. package/es/graphic/graphic.js +11 -0
  257. package/es/graphic/graphic.js.map +1 -1
  258. package/es/graphic/node-tree.d.ts +2 -1
  259. package/es/graphic/node-tree.js +6 -3
  260. package/es/graphic/node-tree.js.map +1 -1
  261. package/es/graphic/text.js +1 -1
  262. package/es/graphic/text.js.map +1 -1
  263. package/es/index.d.ts +3 -1
  264. package/es/index.js +5 -1
  265. package/es/index.js.map +1 -1
  266. package/es/interface/contribution.d.ts +15 -37
  267. package/es/interface/contribution.js.map +1 -1
  268. package/es/interface/core.d.ts +2 -2
  269. package/es/interface/core.js.map +1 -1
  270. package/es/interface/global.d.ts +6 -1
  271. package/es/interface/global.js.map +1 -1
  272. package/es/interface/graphic.d.ts +1 -0
  273. package/es/interface/graphic.js.map +1 -1
  274. package/es/interface/layer.d.ts +7 -0
  275. package/es/interface/layer.js.map +1 -1
  276. package/es/interface/stage.d.ts +7 -2
  277. package/es/interface/stage.js.map +1 -1
  278. package/es/plugins/builtin-plugin/poptip-plugin.d.ts +1 -0
  279. package/es/plugins/builtin-plugin/poptip-plugin.js +3 -0
  280. package/es/plugins/builtin-plugin/poptip-plugin.js.map +1 -0
  281. package/es/plugins/constants.d.ts +2 -0
  282. package/es/plugins/constants.js +4 -0
  283. package/es/plugins/constants.js.map +1 -0
  284. package/es/plugins/plugin-modules.js +9 -2
  285. package/es/plugins/plugin-modules.js.map +1 -1
  286. package/es/plugins/plugin-service.d.ts +3 -3
  287. package/es/plugins/plugin-service.js +17 -6
  288. package/es/plugins/plugin-service.js.map +1 -1
  289. package/es/render/contributions/render/arc-render.d.ts +2 -1
  290. package/es/render/contributions/render/arc-render.js +47 -15
  291. package/es/render/contributions/render/arc-render.js.map +1 -1
  292. package/es/render/contributions/render/area-render.d.ts +1 -1
  293. package/es/render/contributions/render/area-render.js +21 -10
  294. package/es/render/contributions/render/area-render.js.map +1 -1
  295. package/es/render/contributions/render/circle-render.js +3 -3
  296. package/es/render/contributions/render/circle-render.js.map +1 -1
  297. package/es/render/contributions/render/contributions/arc-contribution-render.d.ts +2 -3
  298. package/es/render/contributions/render/contributions/arc-contribution-render.js +1 -3
  299. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  300. package/es/render/contributions/render/contributions/area-contribution-render.d.ts +2 -3
  301. package/es/render/contributions/render/contributions/area-contribution-render.js +1 -3
  302. package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  303. package/es/render/contributions/render/contributions/base-contribution-render.d.ts +17 -5
  304. package/es/render/contributions/render/contributions/base-contribution-render.js +30 -3
  305. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  306. package/es/render/contributions/render/contributions/circle-contribution-render.d.ts +2 -3
  307. package/es/render/contributions/render/contributions/circle-contribution-render.js +1 -3
  308. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  309. package/es/render/contributions/render/contributions/constants.d.ts +11 -0
  310. package/es/render/contributions/render/contributions/constants.js +22 -0
  311. package/es/render/contributions/render/contributions/constants.js.map +1 -0
  312. package/es/render/contributions/render/contributions/group-contribution-render.d.ts +2 -3
  313. package/es/render/contributions/render/contributions/group-contribution-render.js +1 -3
  314. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  315. package/es/render/contributions/render/contributions/image-contribution-render.d.ts +2 -3
  316. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -3
  317. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  318. package/es/render/contributions/render/contributions/path-contribution-render.d.ts +0 -1
  319. package/es/render/contributions/render/contributions/path-contribution-render.js +0 -2
  320. package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  321. package/es/render/contributions/render/contributions/polygon-contribution-render.d.ts +0 -1
  322. package/es/render/contributions/render/contributions/polygon-contribution-render.js +0 -2
  323. package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  324. package/es/render/contributions/render/contributions/rect-contribution-render.d.ts +4 -5
  325. package/es/render/contributions/render/contributions/rect-contribution-render.js +3 -5
  326. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  327. package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +2 -3
  328. package/es/render/contributions/render/contributions/symbol-contribution-render.js +1 -3
  329. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  330. package/es/render/contributions/render/contributions/text-contribution-render.d.ts +1 -0
  331. package/es/render/contributions/render/contributions/text-contribution-render.js +2 -0
  332. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -0
  333. package/es/render/contributions/render/group-render.js +3 -3
  334. package/es/render/contributions/render/group-render.js.map +1 -1
  335. package/es/render/contributions/render/image-render.js +3 -3
  336. package/es/render/contributions/render/image-render.js.map +1 -1
  337. package/es/render/contributions/render/module.js +28 -14
  338. package/es/render/contributions/render/module.js.map +1 -1
  339. package/es/render/contributions/render/path-render.js +3 -3
  340. package/es/render/contributions/render/path-render.js.map +1 -1
  341. package/es/render/contributions/render/polygon-render.js +3 -3
  342. package/es/render/contributions/render/polygon-render.js.map +1 -1
  343. package/es/render/contributions/render/rect-render.js +3 -3
  344. package/es/render/contributions/render/rect-render.js.map +1 -1
  345. package/es/render/contributions/render/symbol-render.js +3 -3
  346. package/es/render/contributions/render/symbol-render.js.map +1 -1
  347. package/es/render/contributions/render/text-render.d.ts +5 -1
  348. package/es/render/contributions/render/text-render.js +30 -6
  349. package/es/render/contributions/render/text-render.js.map +1 -1
  350. package/es/render/index.d.ts +1 -0
  351. package/es/render/index.js +2 -0
  352. package/es/render/index.js.map +1 -1
  353. package/es/tsconfig.tsbuildinfo +1 -1
  354. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- import { IAreaCacheItem, IDirection, IPath2D } from '../interface';
1
+ import type { IAreaCacheItem, IDirection, IPath2D } from '../interface';
2
2
  export declare function drawAreaSegments(path: IPath2D, segPath: IAreaCacheItem, percent: number, params?: {
3
3
  offsetX?: number;
4
4
  offsetY?: number;
@@ -57,6 +57,7 @@ function drawAreaBlock(path, topList, bottomList, params) {
57
57
  curve.defined ? (needMoveTo && path.lineTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ),
58
58
  drawSegItem(path, curve, 1, params), needMoveTo = !1) : needMoveTo = !0;
59
59
  }
60
+ path.closePath();
60
61
  }
61
62
 
62
63
  function drawSegItem(ctx, curve, endPercent, params) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common/render-area.ts"],"names":[],"mappings":"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","file":"render-area.js","sourcesContent":["import { abs, IPoint } from '@visactor/vutils';\nimport { IAreaCacheItem, ICubicBezierCurve, ICurve, IDirection, ILineCurve, IPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { divideCubic } from './segment/curve/cubic-bezier';\nimport { divideLinear } from './segment/curve/line';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawAreaSegments(\n path: IPath2D,\n segPath: IAreaCacheItem,\n percent: number,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n direction?: IDirection;\n }\n) {\n // const { offsetX = 0, offsetY = 0 } = params || {};\n // let needMoveTo: boolean = true;\n const { top, bottom } = segPath;\n if (percent >= 1) {\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n let lastDefined: boolean = true;\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n }\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let { direction } = params || {};\n const { curves: topCurves } = top;\n const endP = topCurves[topCurves.length - 1].p3 ?? topCurves[topCurves.length - 1].p1;\n const xTotalLength = abs(endP.x - topCurves[0].p0.x);\n const yTotalLength = abs(endP.y - topCurves[0].p0.y);\n direction = direction ?? (xTotalLength > yTotalLength ? Direction.ROW : Direction.COLUMN);\n if (!Number.isFinite(xTotalLength)) {\n direction = Direction.COLUMN;\n }\n if (!Number.isFinite(yTotalLength)) {\n direction = Direction.ROW;\n }\n\n // x和y必须始终保持同方向\n // 整个线段的总长度(基于水平、垂直方向)\n const totalLength: number = direction === Direction.ROW ? xTotalLength : yTotalLength;\n\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let lastDefined: boolean = true;\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n const curCurveLength = topCurve.getLength(direction);\n const percent = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n if (percent < 0) {\n break;\n }\n drawedLengthUntilLast += curCurveLength;\n let tc: ICurve<IPoint> | null = null;\n let bc: ICurve<IPoint> | null = null;\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n }\n\n if (tc && bc) {\n if (percent < 1) {\n if (tc.p2 && tc.p3) {\n tc = divideCubic(tc as ICubicBezierCurve, percent)[0];\n } else {\n tc = divideLinear(tc as ILineCurve, percent)[0];\n }\n if (bc.p2 && bc.p3) {\n bc = divideCubic(bc as ICubicBezierCurve, 1 - percent)[1];\n } else {\n bc = divideLinear(bc as ILineCurve, 1 - percent)[1];\n }\n }\n tc.defined = lastDefined;\n bc.defined = lastDefined;\n topList.push(tc);\n bottomList.push(bc);\n }\n\n tc = null;\n bc = null;\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n // const totalLength = segPath.tryUpdateLength();\n\n // // 直到上次绘制的长度\n // let drawedLengthUntilLast = 0;\n // for (let i = 0, n = curves.length; i < n; i++) {\n // const curve = curves[i];\n // const curCurveLength = curve.getLength();\n // const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n // drawedLengthUntilLast += curCurveLength;\n // if (_p < 0) {\n // break;\n // }\n\n // // 跳过这个点\n // if (!curve.defined()) {\n // needMoveTo = true;\n // continue;\n // }\n // if (needMoveTo) {\n // path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY);\n // }\n // drawSegItem(path, curve, min(_p, 1), params);\n // needMoveTo = false;\n // }\n}\n\nfunction drawAreaBlock(\n path: IPath2D,\n topList: ICurve<IPoint>[],\n bottomList: ICurve<IPoint>[],\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n let needMoveTo = true;\n topList.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n needMoveTo = true;\n for (let i = bottomList.length - 1; i >= 0; i--) {\n const curve = bottomList[i];\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n // bottom需要直接line绘制\n path.lineTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n }\n}\n\n/**\n * 绘制某个segment\n * @param ctx\n * @param seg\n * @param t 绘制这个segment的比例,t > 0从start到end,t < 0从end到start\n */\nfunction drawSegItem(\n ctx: IPath2D,\n curve: ICurve<IPoint>,\n endPercent: number,\n params?: {\n startLenPercent?: number;\n endLenPercent?: number;\n start?: number;\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n if (!curve.p1) {\n return;\n }\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n\n // 完全绘制\n if (endPercent === 1) {\n if (curve.p2 && curve.p3) {\n ctx.bezierCurveTo(\n offsetX + curve.p1.x,\n offsetY + curve.p1.y,\n offsetX + curve.p2.x,\n offsetY + curve.p2.y,\n offsetX + curve.p3.x,\n offsetY + curve.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n ctx.lineTo(offsetX + curve.p1.x, offsetY + curve.p1.y, offsetZ);\n }\n } else {\n // 绘制一部分\n if (curve.p2 && curve.p3) {\n const [curve1] = divideCubic(curve as ICubicBezierCurve, endPercent);\n ctx.bezierCurveTo(\n offsetX + curve1.p1.x,\n offsetY + curve1.p1.y,\n offsetX + curve1.p2.x,\n offsetY + curve1.p2.y,\n offsetX + curve1.p3.x,\n offsetY + curve1.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n const p = curve.getPointAt(endPercent);\n ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/common/render-area.ts"],"names":[],"mappings":"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","file":"render-area.js","sourcesContent":["import type { IPoint } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport type { IAreaCacheItem, ICubicBezierCurve, ICurve, IDirection, ILineCurve, IPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { divideCubic } from './segment/curve/cubic-bezier';\nimport { divideLinear } from './segment/curve/line';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawAreaSegments(\n path: IPath2D,\n segPath: IAreaCacheItem,\n percent: number,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n direction?: IDirection;\n }\n) {\n // const { offsetX = 0, offsetY = 0 } = params || {};\n // let needMoveTo: boolean = true;\n const { top, bottom } = segPath;\n if (percent >= 1) {\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n let lastDefined: boolean = true;\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n }\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let { direction } = params || {};\n const { curves: topCurves } = top;\n const endP = topCurves[topCurves.length - 1].p3 ?? topCurves[topCurves.length - 1].p1;\n const xTotalLength = abs(endP.x - topCurves[0].p0.x);\n const yTotalLength = abs(endP.y - topCurves[0].p0.y);\n direction = direction ?? (xTotalLength > yTotalLength ? Direction.ROW : Direction.COLUMN);\n if (!Number.isFinite(xTotalLength)) {\n direction = Direction.COLUMN;\n }\n if (!Number.isFinite(yTotalLength)) {\n direction = Direction.ROW;\n }\n\n // x和y必须始终保持同方向\n // 整个线段的总长度(基于水平、垂直方向)\n const totalLength: number = direction === Direction.ROW ? xTotalLength : yTotalLength;\n\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let lastDefined: boolean = true;\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n const curCurveLength = topCurve.getLength(direction);\n const percent = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n if (percent < 0) {\n break;\n }\n drawedLengthUntilLast += curCurveLength;\n let tc: ICurve<IPoint> | null = null;\n let bc: ICurve<IPoint> | null = null;\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n }\n\n if (tc && bc) {\n if (percent < 1) {\n if (tc.p2 && tc.p3) {\n tc = divideCubic(tc as ICubicBezierCurve, percent)[0];\n } else {\n tc = divideLinear(tc as ILineCurve, percent)[0];\n }\n if (bc.p2 && bc.p3) {\n bc = divideCubic(bc as ICubicBezierCurve, 1 - percent)[1];\n } else {\n bc = divideLinear(bc as ILineCurve, 1 - percent)[1];\n }\n }\n tc.defined = lastDefined;\n bc.defined = lastDefined;\n topList.push(tc);\n bottomList.push(bc);\n }\n\n tc = null;\n bc = null;\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n // const totalLength = segPath.tryUpdateLength();\n\n // // 直到上次绘制的长度\n // let drawedLengthUntilLast = 0;\n // for (let i = 0, n = curves.length; i < n; i++) {\n // const curve = curves[i];\n // const curCurveLength = curve.getLength();\n // const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n // drawedLengthUntilLast += curCurveLength;\n // if (_p < 0) {\n // break;\n // }\n\n // // 跳过这个点\n // if (!curve.defined()) {\n // needMoveTo = true;\n // continue;\n // }\n // if (needMoveTo) {\n // path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY);\n // }\n // drawSegItem(path, curve, min(_p, 1), params);\n // needMoveTo = false;\n // }\n}\n\nfunction drawAreaBlock(\n path: IPath2D,\n topList: ICurve<IPoint>[],\n bottomList: ICurve<IPoint>[],\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n let needMoveTo = true;\n topList.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n needMoveTo = true;\n for (let i = bottomList.length - 1; i >= 0; i--) {\n const curve = bottomList[i];\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n // bottom需要直接line绘制\n path.lineTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n }\n path.closePath();\n}\n\n/**\n * 绘制某个segment\n * @param ctx\n * @param seg\n * @param t 绘制这个segment的比例,t > 0从start到end,t < 0从end到start\n */\nfunction drawSegItem(\n ctx: IPath2D,\n curve: ICurve<IPoint>,\n endPercent: number,\n params?: {\n startLenPercent?: number;\n endLenPercent?: number;\n start?: number;\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n if (!curve.p1) {\n return;\n }\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n\n // 完全绘制\n if (endPercent === 1) {\n if (curve.p2 && curve.p3) {\n ctx.bezierCurveTo(\n offsetX + curve.p1.x,\n offsetY + curve.p1.y,\n offsetX + curve.p2.x,\n offsetY + curve.p2.y,\n offsetX + curve.p3.x,\n offsetY + curve.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n ctx.lineTo(offsetX + curve.p1.x, offsetY + curve.p1.y, offsetZ);\n }\n } else {\n // 绘制一部分\n if (curve.p2 && curve.p3) {\n const [curve1] = divideCubic(curve as ICubicBezierCurve, endPercent);\n ctx.bezierCurveTo(\n offsetX + curve1.p1.x,\n offsetY + curve1.p1.y,\n offsetX + curve1.p2.x,\n offsetY + curve1.p2.y,\n offsetX + curve1.p3.x,\n offsetY + curve1.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n const p = curve.getPointAt(endPercent);\n ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';
1
+ import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';
2
2
  export declare abstract class BaseEnvContribution implements IEnvContribution {
3
3
  type: EnvType;
4
4
  supportsTouchEvents: boolean;
@@ -7,6 +7,8 @@ export declare abstract class BaseEnvContribution implements IEnvContribution {
7
7
  applyStyles: boolean;
8
8
  supportEvent: boolean;
9
9
  configure(service: IGlobal, ...p: any): void;
10
+ getDynamicCanvasCount(): number;
11
+ getStaticCanvasCount(): number;
10
12
  abstract loadImage(url: string): Promise<{
11
13
  loadState: 'success' | 'fail';
12
14
  data: HTMLImageElement | ImageData | null;
@@ -16,6 +16,12 @@ let BaseEnvContribution = class {
16
16
  configure(service, ...p) {
17
17
  service.env === this.type && service.setActiveEnvContribution(this);
18
18
  }
19
+ getDynamicCanvasCount() {
20
+ return 999;
21
+ }
22
+ getStaticCanvasCount() {
23
+ return 999;
24
+ }
19
25
  getElementById(str) {
20
26
  return document.getElementById(str);
21
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AAIhC,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;IASvC,SAAS,CAAC,OAAgB,EAAE,GAAG,CAAM;QACnC,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAgDD,cAAc,CAAC,GAAW;QACxB,OAAO,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,cAAc;QACZ,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAID,QAAQ,CAAC,GAAW;QAIlB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,WAAW;aACR,IAAI,CAAC,IAAI,CAAC,EAAE;YACX,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,MAAM;aACd,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,eAAe,CAAC,GAAW;QAIzB,MAAM,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,OAAO,kBAAkB;aACtB,IAAI,CAAC,CAAC,WAAwB,EAAE,EAAE;YACjC,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,SAAkB;aAC9B,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,MAAM;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,GAAW;QAIlB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,WAAW;aACf,IAAI,CAAC,CAAC,IAAU,EAAE,EAAE;YACnB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAkB;aAC9B,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,MAAM;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AAnIqB,mBAAmB;IADxC,IAAA,sBAAU,GAAE;GACS,mBAAmB,CAmIxC;AAnIqB,kDAAmB","file":"base-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';\n\n@injectable()\nexport abstract class BaseEnvContribution implements IEnvContribution {\n type: EnvType;\n\n supportsTouchEvents: boolean;\n supportsPointerEvents: boolean;\n supportsMouseEvents: boolean;\n applyStyles: boolean;\n supportEvent: boolean;\n\n configure(service: IGlobal, ...p: any) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n }\n }\n\n abstract loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n\n abstract releaseCanvas(canvas: ICanvasLike | string): void;\n\n abstract getDevicePixelRatio(): number;\n\n abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n abstract getCancelAnimationFrame(): (h: number) => void;\n\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract dispatchEvent(event: any): boolean;\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n abstract release(...params: any): void;\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json());\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer());\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadBlob(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }> {\n const blobPromise = fetch(url).then(data => data.blob());\n return blobPromise\n .then((blob: Blob) => {\n return {\n data: blob,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AAIhC,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;IASvC,SAAS,CAAC,OAAgB,EAAE,GAAG,CAAM;QACnC,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAKD,qBAAqB;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAKD,oBAAoB;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAgDD,cAAc,CAAC,GAAW;QACxB,OAAO,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,cAAc;QACZ,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAID,QAAQ,CAAC,GAAW;QAIlB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,WAAW;aACR,IAAI,CAAC,IAAI,CAAC,EAAE;YACX,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,MAAM;aACd,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,eAAe,CAAC,GAAW;QAIzB,MAAM,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,OAAO,kBAAkB;aACtB,IAAI,CAAC,CAAC,WAAwB,EAAE,EAAE;YACjC,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,SAAkB;aAC9B,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,MAAM;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,GAAW;QAIlB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,WAAW;aACf,IAAI,CAAC,CAAC,IAAU,EAAE,EAAE;YACnB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAkB;aAC9B,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,MAAM;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AAjJqB,mBAAmB;IADxC,IAAA,sBAAU,GAAE;GACS,mBAAmB,CAiJxC;AAjJqB,kDAAmB","file":"base-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';\n\n@injectable()\nexport abstract class BaseEnvContribution implements IEnvContribution {\n type: EnvType;\n\n supportsTouchEvents: boolean;\n supportsPointerEvents: boolean;\n supportsMouseEvents: boolean;\n applyStyles: boolean;\n supportEvent: boolean;\n\n configure(service: IGlobal, ...p: any) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 999;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 999;\n }\n\n abstract loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n\n abstract releaseCanvas(canvas: ICanvasLike | string): void;\n\n abstract getDevicePixelRatio(): number;\n\n abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n abstract getCancelAnimationFrame(): (h: number) => void;\n\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract dispatchEvent(event: any): boolean;\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n abstract release(...params: any): void;\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json());\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer());\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadBlob(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }> {\n const blobPromise = fetch(url).then(data => data.blob());\n return blobPromise\n .then((blob: Blob) => {\n return {\n data: blob,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n}\n"]}
@@ -7,6 +7,8 @@ export declare class FeishuEnvContribution extends BaseEnvContribution implement
7
7
  freeCanvasList: ITTCanvas[];
8
8
  canvasIdx: number;
9
9
  constructor();
10
+ getDynamicCanvasCount(): number;
11
+ getStaticCanvasCount(): number;
10
12
  configure(service: IGlobal, params: {
11
13
  domref: any;
12
14
  canvasIdLists: string[];
@@ -23,8 +23,8 @@ function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanva
23
23
  height: domref.height * dpr
24
24
  };
25
25
  const canvas = {
26
- width: domref.width,
27
- height: domref.height,
26
+ width: domref.width * dpr,
27
+ height: domref.height * dpr,
28
28
  offsetWidth: domref.width,
29
29
  offsetHeight: domref.height,
30
30
  id: null != id ? id : "",
@@ -49,6 +49,12 @@ let FeishuEnvContribution = class extends base_contribution_1.BaseEnvContributio
49
49
  }
50
50
  this.applyStyles = !0;
51
51
  }
52
+ getDynamicCanvasCount() {
53
+ return this.freeCanvasList.length;
54
+ }
55
+ getStaticCanvasCount() {
56
+ return this.freeCanvasList.length;
57
+ }
52
58
  configure(service, params) {
53
59
  service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList),
54
60
  (0, kits_1.loadFeishuContributions)());
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/feishu-contribution.ts"],"names":[],"mappings":"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","file":"feishu-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';\n\ndeclare const tt: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvasContext: (id: string) => any;\n};\n\n// 飞书小程序canvas的wrap\nfunction makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[]\n) {\n const dpr = tt.getSystemInfoSync().pixelRatio;\n\n canvasIdLists.forEach((id, i) => {\n const ctx = tt.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 FeishuEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'feishu';\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 }) {\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 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 tt.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 }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(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/feishu-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,wCAAwD;AASxD,2DAA0D;AAQ1D,SAAS,YAAY,CACnB,MAAW,EACX,aAAuB,EACvB,SAAiC,EACjC,aAAqB,EACrB,cAA2B;IAE3B,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC;IAE9C,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAEvC,GAAG,CAAC,MAAM,GAAG;YACX,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG;SAC5B,CAAC;QAyBF,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG;YAC3B,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,EAAE;YACZ,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG;YAErB,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;SACH,CAAC;QAEF,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,aAAa,EAAE;YACtB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,uCAAmB;IAS5D;QACE,KAAK,EAAE,CAAC;QATV,SAAI,GAAY,QAAQ,CAAC;QACzB,iBAAY,GAAY,IAAI,CAAC;QAE7B,cAAS,GAA2B,IAAI,GAAG,EAAE,CAAC;QAE9C,mBAAc,GAAgB,EAAE,CAAC;QACjC,cAAS,GAAW,CAAC,CAAC;QAIpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI;YACF,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;YACvD,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;SACpD;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAKD,qBAAqB;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAKD,oBAAoB;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAID,SAAS,CAAC,OAAgB,EAAE,MAAuE;QACjG,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAE7G,IAAA,8BAAuB,GAAE,CAAC;SAC3B;IACH,CAAC;IAED,SAAS,CAAC,GAAW;QAInB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAkC;YACxC,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAW;QAKjB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,MAA2B;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,MAA2B;QAC/C,OAAO;IACT,CAAC;IAED,aAAa,CAAC,MAA4B;QACxC,OAAO;IACT,CAAC;IAED,mBAAmB;QACjB,OAAO,EAAE,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,wBAAwB;QAMtB,OAAO,UAAU,QAA8B;YAC7C,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAQ,CAAC;IACX,CAAC;IAED,uBAAuB;QACrB,OAAO,CAAC,CAAS,EAAE,EAAE;YACnB,YAAY,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAYD,gBAAgB,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAiB;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAYD,mBAAmB,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAiB;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAU;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,cAAc,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,MAAW;QACpB,OAAO;IACT,CAAC;IAED,gBAAgB,CAAC,KAAU;;QACzB,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YACpC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA3JY,qBAAqB;IADjC,IAAA,sBAAU,GAAE;;GACA,qBAAqB,CA2JjC;AA3JY,sDAAqB","file":"feishu-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';\n\ndeclare const tt: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvasContext: (id: string) => any;\n};\n\n// 飞书小程序canvas的wrap\nfunction makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[]\n) {\n const dpr = tt.getSystemInfoSync().pixelRatio;\n\n canvasIdLists.forEach((id, i) => {\n const ctx = tt.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 * 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\n@injectable()\nexport class FeishuEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'feishu';\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 /**\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: { 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 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 tt.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 }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(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"]}
@@ -12,6 +12,8 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
12
12
  canvasIdLists: string[];
13
13
  freeCanvasIdx: number;
14
14
  }): void;
15
+ getDynamicCanvasCount(): number;
16
+ getStaticCanvasCount(): number;
15
17
  loadImage(url: string): Promise<{
16
18
  loadState: 'success' | 'fail';
17
19
  data: HTMLImageElement | ImageData | null;
@@ -14,16 +14,24 @@ Object.defineProperty(exports, "__esModule", {
14
14
 
15
15
  const inversify_1 = require("inversify"), kits_1 = require("../../../kits"), base_contribution_1 = require("./base-contribution");
16
16
 
17
+ let ng = !1;
18
+
19
+ try {
20
+ ng = !!lynx.createCanvasNG;
21
+ } catch (err) {}
22
+
17
23
  function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList) {
18
- SystemInfo.pixelRatio;
24
+ const dpr = SystemInfo.pixelRatio;
19
25
  canvasIdLists.forEach(((id, i) => {
20
- const ctx = lynx.createCanvas(id).getContext("2d");
26
+ const _canvas = ng ? lynx.createCanvasNG(id) : lynx.createCanvas(id);
27
+ _canvas.width = domref.width * dpr, _canvas.height = domref.height * dpr, ng && _canvas.attachToCanvasView(id);
28
+ const ctx = _canvas.getContext("2d");
21
29
  ctx.draw = (a, b) => {
22
30
  b();
23
31
  };
24
32
  const canvas = {
25
- width: domref.width,
26
- height: domref.height,
33
+ width: domref.width * dpr,
34
+ height: domref.height * dpr,
27
35
  offsetWidth: domref.width,
28
36
  offsetHeight: domref.height,
29
37
  id: null != id ? id : "",
@@ -52,6 +60,12 @@ let LynxEnvContribution = class extends base_contribution_1.BaseEnvContribution
52
60
  service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList),
53
61
  (0, kits_1.loadFeishuContributions)());
54
62
  }
63
+ getDynamicCanvasCount() {
64
+ return this.freeCanvasList.length;
65
+ }
66
+ getStaticCanvasCount() {
67
+ return this.freeCanvasList.length;
68
+ }
55
69
  loadImage(url) {
56
70
  return Promise.resolve({
57
71
  data: url,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/env/lynx-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,wCAAwD;AASxD,2DAA0D;AAW1D,SAAS,YAAY,CACnB,MAAW,EACX,aAAuB,EACvB,SAAmC,EACnC,aAAqB,EACrB,cAA6B;IAE7B,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;IAElC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE;YAC5B,CAAC,EAAE,CAAC;QACN,CAAC,CAAC;QAOF,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,EAAE;YACZ,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG;YAErB,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;SACH,CAAC;QAEF,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,aAAa,EAAE;YACtB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,uCAAmB;IAS1D;QACE,KAAK,EAAE,CAAC;QATV,SAAI,GAAY,MAAM,CAAC;QACvB,iBAAY,GAAY,IAAI,CAAC;QAE7B,cAAS,GAA6B,IAAI,GAAG,EAAE,CAAC;QAEhD,mBAAc,GAAkB,EAAE,CAAC;QACnC,cAAS,GAAW,CAAC,CAAC;QAIpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI;YACF,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;YACvD,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;SACpD;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAID,SAAS,CAAC,OAAgB,EAAE,MAAuE;QACjG,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAE7G,IAAA,8BAAuB,GAAE,CAAC;SAC3B;IACH,CAAC;IAED,SAAS,CAAC,GAAW;QAInB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAkC;YACxC,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAW;QAKjB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,MAA2B;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,MAA2B;QAC/C,OAAO;IACT,CAAC;IAED,aAAa,CAAC,MAA4B;QACxC,OAAO;IACT,CAAC;IAED,mBAAmB;QACjB,OAAO,UAAU,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,wBAAwB;QAMtB,OAAO,UAAU,QAA8B;YAC7C,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAQ,CAAC;IACX,CAAC;IAED,uBAAuB;QACrB,OAAO,CAAC,CAAS,EAAE,EAAE;YACnB,YAAY,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAYD,gBAAgB,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAiB;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAYD,mBAAmB,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAiB;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAU;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,cAAc,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,MAAW;QACpB,OAAO;IACT,CAAC;CACF,CAAA;AAtIY,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;;GACA,mBAAmB,CAsI/B;AAtIY,kDAAmB","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';\n\ndeclare const lynx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvas: (id: string) => any;\n};\ndeclare const SystemInfo: {\n pixelRatio: number;\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 = lynx.createCanvas(id);\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,\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 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 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): 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 }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(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';\n\ndeclare const lynx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvas: (id: string) => any;\n createCanvasNG: (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\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 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): 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 }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(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"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
6
 
7
- const inversify_1 = require("inversify"), contribution_provider_1 = require("../../../common/contribution-provider"), constants_1 = require("../../../constants"), browser_contribution_1 = require("./browser-contribution"), feishu_contribution_1 = require("./feishu-contribution"), taro_contribution_1 = require("./taro-contribution"), lynx_contribution_1 = require("./lynx-contribution"), node_contribution_1 = require("./node-contribution");
7
+ const inversify_1 = require("inversify"), contribution_provider_1 = require("../../../common/contribution-provider"), constants_1 = require("../../../constants"), browser_contribution_1 = require("./browser-contribution"), feishu_contribution_1 = require("./feishu-contribution"), taro_contribution_1 = require("./taro-contribution"), lynx_contribution_1 = require("./lynx-contribution"), node_contribution_1 = require("./node-contribution"), wx_contribution_1 = require("./wx-contribution");
8
8
 
9
9
  exports.default = new inversify_1.ContainerModule((bind => {
10
10
  bind(browser_contribution_1.BrowserEnvContribution).toSelf().inSingletonScope(),
@@ -12,6 +12,7 @@ exports.default = new inversify_1.ContainerModule((bind => {
12
12
  bind(feishu_contribution_1.FeishuEnvContribution).toSelf().inSingletonScope(), bind(constants_1.EnvContribution).toService(feishu_contribution_1.FeishuEnvContribution),
13
13
  bind(taro_contribution_1.TaroEnvContribution).toSelf().inSingletonScope(), bind(constants_1.EnvContribution).toService(taro_contribution_1.TaroEnvContribution),
14
14
  bind(lynx_contribution_1.LynxEnvContribution).toSelf().inSingletonScope(), bind(constants_1.EnvContribution).toService(lynx_contribution_1.LynxEnvContribution),
15
+ bind(wx_contribution_1.WxEnvContribution).toSelf().inSingletonScope(), bind(constants_1.EnvContribution).toService(wx_contribution_1.WxEnvContribution),
15
16
  bind(node_contribution_1.NodeEnvContribution).toSelf().inSingletonScope(), bind(constants_1.EnvContribution).toService(node_contribution_1.NodeEnvContribution),
16
17
  (0, contribution_provider_1.bindContributionProvider)(bind, constants_1.EnvContribution);
17
18
  }));
@@ -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;AAE1D,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,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';\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 // 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,4 +1,4 @@
1
- import { EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';
1
+ import type { EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';
2
2
  import { BaseEnvContribution } from './base-contribution';
3
3
  type Canvas = any;
4
4
  type NodePkg = {
@@ -13,6 +13,8 @@ export declare class NodeEnvContribution extends BaseEnvContribution implements
13
13
  _lastTime: number;
14
14
  supportEvent: boolean;
15
15
  configure(service: IGlobal, pkg: NodePkg): void;
16
+ getDynamicCanvasCount(): number;
17
+ getStaticCanvasCount(): number;
16
18
  loadJson(url: string): Promise<{
17
19
  loadState: 'success' | 'fail';
18
20
  data: Record<string, unknown> | null;
@@ -19,6 +19,12 @@ let NodeEnvContribution = class extends base_contribution_1.BaseEnvContribution
19
19
  configure(service, pkg) {
20
20
  service.env === this.type && (service.setActiveEnvContribution(this), this.pkg = pkg);
21
21
  }
22
+ getDynamicCanvasCount() {
23
+ return 0;
24
+ }
25
+ getStaticCanvasCount() {
26
+ return 1;
27
+ }
22
28
  loadJson(url) {
23
29
  const jsonPromise = fetch(url).then((data => data.json()));
24
30
  return jsonPromise.then((json => ({
@@ -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 { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { createImageElement } from './browser-contribution';\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 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 }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(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';\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 }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(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"]}
@@ -27,6 +27,8 @@ export declare class TaroEnvContribution extends BaseEnvContribution implements
27
27
  taro: ITaro;
28
28
  pixelRatio: number;
29
29
  constructor();
30
+ getDynamicCanvasCount(): number;
31
+ getStaticCanvasCount(): number;
30
32
  configure(service: IGlobal, params: IConfigureParams): void;
31
33
  loadImage(url: string): Promise<{
32
34
  loadState: 'success' | 'fail';
@@ -39,8 +39,8 @@ function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanva
39
39
  })));
40
40
  const canvas = {
41
41
  id: id,
42
- width: domref.width,
43
- height: domref.height,
42
+ width: domref.width * dpr,
43
+ height: domref.height * dpr,
44
44
  offsetWidth: domref.width,
45
45
  offsetHeight: domref.height,
46
46
  getContext: () => ctx,
@@ -65,6 +65,12 @@ let TaroEnvContribution = class extends base_contribution_1.BaseEnvContribution
65
65
  }
66
66
  this.applyStyles = !0;
67
67
  }
68
+ getDynamicCanvasCount() {
69
+ return this.freeCanvasList.length;
70
+ }
71
+ getStaticCanvasCount() {
72
+ return this.freeCanvasList.length;
73
+ }
68
74
  configure(service, params) {
69
75
  service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, params.taro, params.pixelRatio),
70
76
  this.taro = params.taro, this.pixelRatio = params.pixelRatio, (0, kits_1.loadTaroContributions)());
@@ -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,\n height: domref.height,\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 // 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"]}
@@ -0,0 +1,39 @@
1
+ import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ITTCanvas } from '../../../interface';
2
+ import { BaseEnvContribution } from './base-contribution';
3
+ export declare class WxEnvContribution extends BaseEnvContribution implements IEnvContribution {
4
+ type: EnvType;
5
+ supportEvent: boolean;
6
+ canvasMap: Map<string, ITTCanvas>;
7
+ freeCanvasList: ITTCanvas[];
8
+ canvasIdx: number;
9
+ constructor();
10
+ configure(service: IGlobal, params: {
11
+ domref: any;
12
+ canvasIdLists: string[];
13
+ freeCanvasIdx: number;
14
+ }): Promise<void>;
15
+ loadImage(url: string): Promise<{
16
+ loadState: 'success' | 'fail';
17
+ data: HTMLImageElement | ImageData | null;
18
+ }>;
19
+ loadSvg(url: string): Promise<{
20
+ loadState: 'success' | 'fail';
21
+ data: HTMLImageElement | ImageData | null;
22
+ }>;
23
+ createCanvas(params: ICreateCanvasParams): ITTCanvas;
24
+ createOffscreenCanvas(params: ICreateCanvasParams): void;
25
+ releaseCanvas(canvas: ICanvasLike | string): void;
26
+ getDevicePixelRatio(): number;
27
+ getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
28
+ getCancelAnimationFrame(): (h: number) => void;
29
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
30
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
31
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
32
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
33
+ dispatchEvent(event: any): boolean;
34
+ getElementById(str: string): any | null;
35
+ getRootElement(): HTMLElement | null;
36
+ getDocument(): Document | null;
37
+ release(...params: any): void;
38
+ mapToCanvasPoint(event: any): any;
39
+ }