@visactor/vrender-kits 0.18.0-alpha.0 → 0.18.0-alpha.2

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 (231) hide show
  1. package/cjs/canvas/contributions/lynx/context.js +2 -2
  2. package/cjs/canvas/contributions/lynx/context.js.map +1 -1
  3. package/cjs/canvas/contributions/taro/context.d.ts +2 -0
  4. package/cjs/canvas/contributions/taro/context.js +22 -0
  5. package/cjs/canvas/contributions/taro/context.js.map +1 -1
  6. package/cjs/env/all.d.ts +3 -0
  7. package/cjs/env/all.js +7 -9
  8. package/cjs/env/all.js.map +1 -1
  9. package/cjs/env/browser.d.ts +3 -0
  10. package/cjs/env/browser.js +9 -12
  11. package/cjs/env/browser.js.map +1 -1
  12. package/cjs/env/contributions/browser-contribution.js +2 -2
  13. package/cjs/env/contributions/browser-contribution.js.map +1 -1
  14. package/cjs/env/contributions/canvas-wrap.d.ts +44 -0
  15. package/cjs/env/contributions/canvas-wrap.js +82 -0
  16. package/cjs/env/contributions/canvas-wrap.js.map +1 -0
  17. package/cjs/env/contributions/feishu-contribution.d.ts +1 -0
  18. package/cjs/env/contributions/feishu-contribution.js +6 -22
  19. package/cjs/env/contributions/feishu-contribution.js.map +1 -1
  20. package/cjs/env/contributions/lynx-contribution.d.ts +1 -0
  21. package/cjs/env/contributions/lynx-contribution.js +5 -21
  22. package/cjs/env/contributions/lynx-contribution.js.map +1 -1
  23. package/cjs/env/contributions/taro-contribution.js +4 -37
  24. package/cjs/env/contributions/taro-contribution.js.map +1 -1
  25. package/cjs/env/feishu.d.ts +3 -0
  26. package/cjs/env/feishu.js +8 -12
  27. package/cjs/env/feishu.js.map +1 -1
  28. package/cjs/env/lynx.d.ts +3 -0
  29. package/cjs/env/lynx.js +8 -12
  30. package/cjs/env/lynx.js.map +1 -1
  31. package/cjs/env/node.d.ts +3 -0
  32. package/cjs/env/node.js +7 -12
  33. package/cjs/env/node.js.map +1 -1
  34. package/cjs/env/taro.d.ts +3 -0
  35. package/cjs/env/taro.js +8 -12
  36. package/cjs/env/taro.js.map +1 -1
  37. package/cjs/env/wx.d.ts +3 -0
  38. package/cjs/env/wx.js +8 -12
  39. package/cjs/env/wx.js.map +1 -1
  40. package/cjs/event/extension/drag.js +2 -1
  41. package/cjs/index.d.ts +1 -0
  42. package/cjs/index.js +2 -2
  43. package/cjs/index.js.map +1 -1
  44. package/cjs/jsx/graphicType.d.ts +6 -0
  45. package/cjs/jsx/graphicType.js.map +1 -1
  46. package/cjs/picker/canvas-module.js +1 -2
  47. package/cjs/picker/canvas-picker-service.js +2 -1
  48. package/cjs/picker/contributions/canvas-picker/area-picker.js +9 -2
  49. package/cjs/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  50. package/cjs/picker/contributions/canvas-picker/module.d.ts +2 -2
  51. package/cjs/picker/contributions/canvas-picker/module.js +4 -6
  52. package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
  53. package/cjs/picker/contributions/math-picker/module.d.ts +2 -2
  54. package/cjs/picker/contributions/math-picker/module.js +4 -6
  55. package/cjs/picker/contributions/math-picker/module.js.map +1 -1
  56. package/cjs/react-tree.d.ts +1 -0
  57. package/cjs/react-tree.js +46 -0
  58. package/cjs/react-tree.js.map +1 -0
  59. package/cjs/register/register-arc.d.ts +5 -1
  60. package/cjs/register/register-arc.js +5 -7
  61. package/cjs/register/register-arc.js.map +1 -1
  62. package/cjs/register/register-arc3d.d.ts +6 -1
  63. package/cjs/register/register-arc3d.js +5 -6
  64. package/cjs/register/register-arc3d.js.map +1 -1
  65. package/cjs/register/register-area.d.ts +6 -1
  66. package/cjs/register/register-area.js +4 -6
  67. package/cjs/register/register-area.js.map +1 -1
  68. package/cjs/register/register-circle.d.ts +6 -1
  69. package/cjs/register/register-circle.js +4 -6
  70. package/cjs/register/register-circle.js.map +1 -1
  71. package/cjs/register/register-glyph.d.ts +6 -1
  72. package/cjs/register/register-glyph.js +4 -6
  73. package/cjs/register/register-glyph.js.map +1 -1
  74. package/cjs/register/register-group.d.ts +6 -1
  75. package/cjs/register/register-group.js +3 -5
  76. package/cjs/register/register-group.js.map +1 -1
  77. package/cjs/register/register-image.d.ts +6 -1
  78. package/cjs/register/register-image.js +4 -6
  79. package/cjs/register/register-image.js.map +1 -1
  80. package/cjs/register/register-line.d.ts +6 -1
  81. package/cjs/register/register-line.js +4 -6
  82. package/cjs/register/register-line.js.map +1 -1
  83. package/cjs/register/register-path.d.ts +6 -1
  84. package/cjs/register/register-path.js +4 -6
  85. package/cjs/register/register-path.js.map +1 -1
  86. package/cjs/register/register-polygon.d.ts +6 -1
  87. package/cjs/register/register-polygon.js +4 -6
  88. package/cjs/register/register-polygon.js.map +1 -1
  89. package/cjs/register/register-pyramid3d.d.ts +6 -1
  90. package/cjs/register/register-pyramid3d.js +5 -7
  91. package/cjs/register/register-pyramid3d.js.map +1 -1
  92. package/cjs/register/register-rect.d.ts +6 -1
  93. package/cjs/register/register-rect.js +5 -6
  94. package/cjs/register/register-rect.js.map +1 -1
  95. package/cjs/register/register-rect3d.d.ts +6 -1
  96. package/cjs/register/register-rect3d.js +5 -6
  97. package/cjs/register/register-rect3d.js.map +1 -1
  98. package/cjs/register/register-richtext.d.ts +6 -1
  99. package/cjs/register/register-richtext.js +4 -6
  100. package/cjs/register/register-richtext.js.map +1 -1
  101. package/cjs/register/register-shadowRoot.d.ts +6 -1
  102. package/cjs/register/register-shadowRoot.js +3 -5
  103. package/cjs/register/register-shadowRoot.js.map +1 -1
  104. package/cjs/register/register-symbol.d.ts +6 -1
  105. package/cjs/register/register-symbol.js +4 -6
  106. package/cjs/register/register-symbol.js.map +1 -1
  107. package/cjs/register/register-text.d.ts +6 -1
  108. package/cjs/register/register-text.js +4 -6
  109. package/cjs/register/register-text.js.map +1 -1
  110. package/cjs/register/register-wraptext.d.ts +6 -1
  111. package/cjs/register/register-wraptext.js +3 -5
  112. package/cjs/register/register-wraptext.js.map +1 -1
  113. package/cjs/window/contributions/browser-contribution.js +1 -1
  114. package/cjs/window/contributions/feishu-contribution.js +1 -1
  115. package/es/canvas/contributions/lynx/context.js +2 -2
  116. package/es/canvas/contributions/lynx/context.js.map +1 -1
  117. package/es/canvas/contributions/taro/context.d.ts +2 -0
  118. package/es/canvas/contributions/taro/context.js +22 -0
  119. package/es/canvas/contributions/taro/context.js.map +1 -1
  120. package/es/env/all.d.ts +3 -0
  121. package/es/env/all.js +6 -5
  122. package/es/env/all.js.map +1 -1
  123. package/es/env/browser.d.ts +3 -0
  124. package/es/env/browser.js +6 -6
  125. package/es/env/browser.js.map +1 -1
  126. package/es/env/contributions/browser-contribution.js +2 -2
  127. package/es/env/contributions/browser-contribution.js.map +1 -1
  128. package/es/env/contributions/canvas-wrap.d.ts +44 -0
  129. package/es/env/contributions/canvas-wrap.js +72 -0
  130. package/es/env/contributions/canvas-wrap.js.map +1 -0
  131. package/es/env/contributions/feishu-contribution.d.ts +1 -0
  132. package/es/env/contributions/feishu-contribution.js +7 -21
  133. package/es/env/contributions/feishu-contribution.js.map +1 -1
  134. package/es/env/contributions/lynx-contribution.d.ts +1 -0
  135. package/es/env/contributions/lynx-contribution.js +6 -20
  136. package/es/env/contributions/lynx-contribution.js.map +1 -1
  137. package/es/env/contributions/taro-contribution.js +5 -36
  138. package/es/env/contributions/taro-contribution.js.map +1 -1
  139. package/es/env/feishu.d.ts +3 -0
  140. package/es/env/feishu.js +6 -6
  141. package/es/env/feishu.js.map +1 -1
  142. package/es/env/lynx.d.ts +3 -0
  143. package/es/env/lynx.js +6 -6
  144. package/es/env/lynx.js.map +1 -1
  145. package/es/env/node.d.ts +3 -0
  146. package/es/env/node.js +6 -6
  147. package/es/env/node.js.map +1 -1
  148. package/es/env/taro.d.ts +3 -0
  149. package/es/env/taro.js +6 -6
  150. package/es/env/taro.js.map +1 -1
  151. package/es/env/wx.d.ts +3 -0
  152. package/es/env/wx.js +5 -5
  153. package/es/env/wx.js.map +1 -1
  154. package/es/event/extension/drag.js +2 -1
  155. package/es/index.d.ts +1 -0
  156. package/es/index.js +2 -0
  157. package/es/index.js.map +1 -1
  158. package/es/jsx/graphicType.d.ts +6 -0
  159. package/es/jsx/graphicType.js.map +1 -1
  160. package/es/picker/canvas-module.js +1 -2
  161. package/es/picker/canvas-picker-service.js +2 -1
  162. package/es/picker/contributions/canvas-picker/area-picker.js +10 -3
  163. package/es/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  164. package/es/picker/contributions/canvas-picker/module.d.ts +2 -2
  165. package/es/picker/contributions/canvas-picker/module.js +6 -4
  166. package/es/picker/contributions/canvas-picker/module.js.map +1 -1
  167. package/es/picker/contributions/math-picker/module.d.ts +2 -2
  168. package/es/picker/contributions/math-picker/module.js +6 -4
  169. package/es/picker/contributions/math-picker/module.js.map +1 -1
  170. package/es/react-tree.d.ts +1 -0
  171. package/es/react-tree.js +40 -0
  172. package/es/react-tree.js.map +1 -0
  173. package/es/register/register-arc.d.ts +5 -1
  174. package/es/register/register-arc.js +7 -4
  175. package/es/register/register-arc.js.map +1 -1
  176. package/es/register/register-arc3d.d.ts +6 -1
  177. package/es/register/register-arc3d.js +7 -4
  178. package/es/register/register-arc3d.js.map +1 -1
  179. package/es/register/register-area.d.ts +6 -1
  180. package/es/register/register-area.js +7 -4
  181. package/es/register/register-area.js.map +1 -1
  182. package/es/register/register-circle.d.ts +6 -1
  183. package/es/register/register-circle.js +7 -4
  184. package/es/register/register-circle.js.map +1 -1
  185. package/es/register/register-glyph.d.ts +6 -1
  186. package/es/register/register-glyph.js +7 -4
  187. package/es/register/register-glyph.js.map +1 -1
  188. package/es/register/register-group.d.ts +6 -1
  189. package/es/register/register-group.js +6 -4
  190. package/es/register/register-group.js.map +1 -1
  191. package/es/register/register-image.d.ts +6 -1
  192. package/es/register/register-image.js +7 -4
  193. package/es/register/register-image.js.map +1 -1
  194. package/es/register/register-line.d.ts +6 -1
  195. package/es/register/register-line.js +7 -4
  196. package/es/register/register-line.js.map +1 -1
  197. package/es/register/register-path.d.ts +6 -1
  198. package/es/register/register-path.js +7 -4
  199. package/es/register/register-path.js.map +1 -1
  200. package/es/register/register-polygon.d.ts +6 -1
  201. package/es/register/register-polygon.js +7 -5
  202. package/es/register/register-polygon.js.map +1 -1
  203. package/es/register/register-pyramid3d.d.ts +6 -1
  204. package/es/register/register-pyramid3d.js +7 -6
  205. package/es/register/register-pyramid3d.js.map +1 -1
  206. package/es/register/register-rect.d.ts +6 -1
  207. package/es/register/register-rect.js +8 -4
  208. package/es/register/register-rect.js.map +1 -1
  209. package/es/register/register-rect3d.d.ts +6 -1
  210. package/es/register/register-rect3d.js +7 -4
  211. package/es/register/register-rect3d.js.map +1 -1
  212. package/es/register/register-richtext.d.ts +6 -1
  213. package/es/register/register-richtext.js +7 -5
  214. package/es/register/register-richtext.js.map +1 -1
  215. package/es/register/register-shadowRoot.d.ts +6 -1
  216. package/es/register/register-shadowRoot.js +6 -4
  217. package/es/register/register-shadowRoot.js.map +1 -1
  218. package/es/register/register-symbol.d.ts +6 -1
  219. package/es/register/register-symbol.js +7 -4
  220. package/es/register/register-symbol.js.map +1 -1
  221. package/es/register/register-text.d.ts +6 -1
  222. package/es/register/register-text.js +7 -4
  223. package/es/register/register-text.js.map +1 -1
  224. package/es/register/register-wraptext.d.ts +6 -1
  225. package/es/register/register-wraptext.js +6 -4
  226. package/es/register/register-wraptext.js.map +1 -1
  227. package/es/window/contributions/browser-contribution.js +1 -1
  228. package/es/window/contributions/feishu-contribution.js +1 -1
  229. package/package.json +2 -2
  230. package/dist/index.js +0 -8774
  231. package/dist/index.min.js +0 -1
@@ -48,11 +48,11 @@ let LynxContext2d = class extends browser_1.BrowserContext2d {
48
48
  }
49
49
  draw() {
50
50
  const _context = this.nativeContext;
51
- this.drawPromise = new Promise((resolve => {
51
+ _context.draw && (this.drawPromise = new Promise((resolve => {
52
52
  _context.draw(!0, (() => {
53
53
  this.drawPromise = null, resolve(null);
54
54
  }));
55
- }));
55
+ })));
56
56
  }
57
57
  };
58
58
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/canvas/contributions/lynx/context.ts"],"names":[],"mappings":";;;;;;;;;AACA,yDAA+F;AAE/F,wCAA8C;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,0BAAgB;IAOjD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,IAAI,WAAW,CAAC,EAAU;QACxB,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC5B,MAAM,CAAC,GAAG,SAAS,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtB,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC1C,OAAO;aACR;YACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAChC;IACH,CAAC;IAES,eAAe,CACvB,MAA6B,EAC7B,SAA6B,EAE7B,OAAe,EACf,OAAe,EACf,aAAkC;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;SACvC;QACD,MAAM,EAAE,aAAa,GAAG,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;QACnG,IAAI,aAAa,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,EAAE;YAC5C,MAAM,EACJ,SAAS,GAAG,aAAa,CAAC,SAAS,EACnC,MAAM,GAAG,aAAa,CAAC,MAAM,EAC7B,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,OAAO,GAAG,aAAa,CAAC,OAAO,EAC/B,UAAU,GAAG,aAAa,CAAC,UAAU,EACtC,GAAG,SAAS,CAAC;YACd,QAAQ,CAAC,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;YAC/C,QAAQ,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,QAAQ,CAAC,WAAW,GAAG,IAAA,0BAAW,EAAC,IAAI,EAAE,MAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAClF,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE7B,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7C,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YACD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;SAClC;IACH,CAAC;IAED,WAAW,CACT,IAAY,EACZ,SAAwC,0BAAW,CAAC,MAAM,CAAC,iBAAiB;QAE5E,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,0BAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAA8D,EAAE,UAAkB;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAoB,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AApFM,iBAAG,GAAY,MAAM,CAAC;AADlB,aAAa;IADzB,IAAA,yBAAU,GAAE;GACA,aAAa,CAsFzB;AAtFY,sCAAa","file":"context.js","sourcesContent":["// 参考konva\nimport { injectable, createColor, getScaledStroke, application } from '@visactor/vrender-core';\nimport type { IContext2d, EnvType, ISetStrokeStyleParams, IStrokeStyleParams } from '@visactor/vrender-core';\nimport { BrowserContext2d } from '../browser';\n\n@injectable()\nexport class LynxContext2d extends BrowserContext2d implements IContext2d {\n static env: EnvType = 'lynx';\n\n declare drawPromise?: Promise<any>;\n\n declare _globalAlpha: number;\n\n get globalAlpha(): number {\n return this._globalAlpha;\n }\n set globalAlpha(ga: number) {\n this.nativeContext.globalAlpha = ga;\n this._globalAlpha = ga;\n }\n\n setLineDash(segments: number[]) {\n const a = arguments;\n const _context = this.nativeContext;\n\n if (!!this.nativeContext.setLineDash) {\n const lineDash = a[0];\n // lynx环境中lineDash不能为[0, 0]\n if (lineDash[0] === 0 && lineDash[1] === 0) {\n return;\n }\n _context.setLineDash(lineDash);\n }\n }\n\n protected _setStrokeStyle(\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defaultParams?: IStrokeStyleParams\n ) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.strokeAttributes;\n }\n const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;\n if (strokeOpacity > 1e-12 && opacity > 1e-12) {\n const {\n lineWidth = defaultParams.lineWidth,\n stroke = defaultParams.stroke,\n lineJoin = defaultParams.lineJoin,\n lineDash = defaultParams.lineDash,\n lineCap = defaultParams.lineCap,\n miterLimit = defaultParams.miterLimit\n } = attribute;\n _context.globalAlpha = strokeOpacity * opacity;\n _context.lineWidth = getScaledStroke(this, lineWidth, this.dpr);\n _context.strokeStyle = createColor(this, stroke as any, params, offsetX, offsetY);\n _context.lineJoin = lineJoin;\n // lynx环境中lineDash不能为[0, 0]\n if (!(lineDash[0] === 0 && lineDash[1] === 0)) {\n _context.setLineDash(lineDash);\n }\n _context.lineCap = lineCap;\n _context.miterLimit = miterLimit;\n }\n }\n\n measureText(\n text: string,\n method: 'native' | 'simple' | 'quick' = application.global.measureTextMethod\n ): { width: number } {\n this.setTransform(1, 0, 0, 1, 0, 0, true, application.global.devicePixelRatio);\n const data = super.measureText(text, method);\n return data;\n }\n\n createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern {\n return null;\n }\n\n draw() {\n const _context = this.nativeContext as any;\n this.drawPromise = new Promise(resolve => {\n _context.draw(true, () => {\n this.drawPromise = null;\n resolve(null);\n });\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/canvas/contributions/lynx/context.ts"],"names":[],"mappings":";;;;;;;;;AACA,yDAA+F;AAE/F,wCAA8C;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,0BAAgB;IAOjD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,IAAI,WAAW,CAAC,EAAU;QACxB,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC5B,MAAM,CAAC,GAAG,SAAS,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtB,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC1C,OAAO;aACR;YACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAChC;IACH,CAAC;IAES,eAAe,CACvB,MAA6B,EAC7B,SAA6B,EAE7B,OAAe,EACf,OAAe,EACf,aAAkC;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;SACvC;QACD,MAAM,EAAE,aAAa,GAAG,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;QACnG,IAAI,aAAa,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,EAAE;YAC5C,MAAM,EACJ,SAAS,GAAG,aAAa,CAAC,SAAS,EACnC,MAAM,GAAG,aAAa,CAAC,MAAM,EAC7B,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,OAAO,GAAG,aAAa,CAAC,OAAO,EAC/B,UAAU,GAAG,aAAa,CAAC,UAAU,EACtC,GAAG,SAAS,CAAC;YACd,QAAQ,CAAC,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;YAC/C,QAAQ,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,QAAQ,CAAC,WAAW,GAAG,IAAA,0BAAW,EAAC,IAAI,EAAE,MAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAClF,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE7B,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7C,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YACD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;SAClC;IACH,CAAC;IAED,WAAW,CACT,IAAY,EACZ,SAAwC,0BAAW,CAAC,MAAM,CAAC,iBAAiB;QAE5E,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,0BAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAA8D,EAAE,UAAkB;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAoB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AAvFM,iBAAG,GAAY,MAAM,CAAC;AADlB,aAAa;IADzB,IAAA,yBAAU,GAAE;GACA,aAAa,CAyFzB;AAzFY,sCAAa","file":"context.js","sourcesContent":["// 参考konva\nimport { injectable, createColor, getScaledStroke, application } from '@visactor/vrender-core';\nimport type { IContext2d, EnvType, ISetStrokeStyleParams, IStrokeStyleParams } from '@visactor/vrender-core';\nimport { BrowserContext2d } from '../browser';\n\n@injectable()\nexport class LynxContext2d extends BrowserContext2d implements IContext2d {\n static env: EnvType = 'lynx';\n\n declare drawPromise?: Promise<any>;\n\n declare _globalAlpha: number;\n\n get globalAlpha(): number {\n return this._globalAlpha;\n }\n set globalAlpha(ga: number) {\n this.nativeContext.globalAlpha = ga;\n this._globalAlpha = ga;\n }\n\n setLineDash(segments: number[]) {\n const a = arguments;\n const _context = this.nativeContext;\n\n if (!!this.nativeContext.setLineDash) {\n const lineDash = a[0];\n // lynx环境中lineDash不能为[0, 0]\n if (lineDash[0] === 0 && lineDash[1] === 0) {\n return;\n }\n _context.setLineDash(lineDash);\n }\n }\n\n protected _setStrokeStyle(\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defaultParams?: IStrokeStyleParams\n ) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.strokeAttributes;\n }\n const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;\n if (strokeOpacity > 1e-12 && opacity > 1e-12) {\n const {\n lineWidth = defaultParams.lineWidth,\n stroke = defaultParams.stroke,\n lineJoin = defaultParams.lineJoin,\n lineDash = defaultParams.lineDash,\n lineCap = defaultParams.lineCap,\n miterLimit = defaultParams.miterLimit\n } = attribute;\n _context.globalAlpha = strokeOpacity * opacity;\n _context.lineWidth = getScaledStroke(this, lineWidth, this.dpr);\n _context.strokeStyle = createColor(this, stroke as any, params, offsetX, offsetY);\n _context.lineJoin = lineJoin;\n // lynx环境中lineDash不能为[0, 0]\n if (!(lineDash[0] === 0 && lineDash[1] === 0)) {\n _context.setLineDash(lineDash);\n }\n _context.lineCap = lineCap;\n _context.miterLimit = miterLimit;\n }\n }\n\n measureText(\n text: string,\n method: 'native' | 'simple' | 'quick' = application.global.measureTextMethod\n ): { width: number } {\n this.setTransform(1, 0, 0, 1, 0, 0, true, application.global.devicePixelRatio);\n const data = super.measureText(text, method);\n return data;\n }\n\n createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern {\n return null;\n }\n\n draw() {\n const _context = this.nativeContext as any;\n if (!_context.draw) {\n return;\n }\n this.drawPromise = new Promise(resolve => {\n _context.draw(true, () => {\n this.drawPromise = null;\n resolve(null);\n });\n });\n }\n}\n"]}
@@ -28,5 +28,7 @@ export declare class TaroContext2d extends BrowserContext2d implements IContext2
28
28
  setTextStyle(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams): void;
29
29
  createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradientData;
30
30
  createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern;
31
+ getImageData(sx: number, sy: number, sw: number, sh: number): any;
32
+ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
31
33
  }
32
34
  export {};
@@ -61,6 +61,28 @@ let TaroContext2d = class extends browser_1.BrowserContext2d {
61
61
  createPattern(image, repetition) {
62
62
  return null;
63
63
  }
64
+ getImageData(sx, sy, sw, sh) {
65
+ const ctx = this.nativeContext, taro = ctx.taro;
66
+ if (ctx && taro) return !ctx.getImageData && taro.canvasGetImageData ? new Promise(((resolve, reject) => {
67
+ try {
68
+ taro.canvasGetImageData({
69
+ canvasId: this.canvas.nativeCanvas.id,
70
+ sx: sx,
71
+ sy: sy,
72
+ sw: sw,
73
+ sh: sh,
74
+ success(res) {
75
+ resolve(res);
76
+ }
77
+ });
78
+ } catch (err) {
79
+ reject(err);
80
+ }
81
+ })) : void 0;
82
+ }
83
+ createRadialGradient(x0, y0, r0, x1, y1, r1) {
84
+ return this.nativeContext.createCircularGradient && this.nativeContext.createCircularGradient(x0, y0, r0, x1, y1, r1);
85
+ }
64
86
  };
65
87
 
66
88
  TaroContext2d.env = "taro", TaroContext2d = __decorate([ (0, vrender_core_1.injectable)() ], TaroContext2d),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/canvas/contributions/taro/context.ts"],"names":[],"mappings":"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","file":"context.js","sourcesContent":["// 参考konva\nimport { injectable, createColor, getScaledStroke, getContextFont } from '@visactor/vrender-core';\nimport type {\n ICommonStyleParams,\n IContext2d,\n ISetCommonStyleParams,\n ISetStrokeStyleParams,\n IStrokeStyleParams,\n ITextStyleParams,\n IConicalGradientData,\n EnvType\n} from '@visactor/vrender-core';\nimport { BrowserContext2d } from '../browser';\n\n// 考虑taro-feishu等环境\ninterface ITTContext {\n setFillStyle: (c: string | CanvasGradient) => void;\n setStrokeStyle: (c: string | CanvasGradient) => void;\n setGlobalAlpha: (alpha: number) => void;\n setLineWidth: (width: number) => void;\n setMiterLimit: (limit: number) => void;\n setLineJoin: (lineJoin: string) => void;\n setLineCap: (lineCap: string) => void;\n setTextAlign: (align: string) => void;\n setTextBaseline: (baseline: string) => void;\n setLineDash: (lineDash: number[]) => void;\n setFontSize: ((size: number) => void) & ((fontSize: number) => void);\n font: string;\n}\n\n@injectable()\nexport class TaroContext2d extends BrowserContext2d implements IContext2d {\n static env: EnvType = 'taro';\n\n declare nativeContext: ITTContext;\n\n declare _globalAlpha: number;\n\n // feishu小程序无法正常获取到globalAlpha\n get globalAlpha(): number {\n return this._globalAlpha;\n }\n set globalAlpha(ga: number) {\n this.nativeContext.setGlobalAlpha(ga);\n this._globalAlpha = ga;\n }\n\n draw() {\n const _context = this.nativeContext as any;\n _context.draw();\n }\n\n strokeText(text: string, x: number, y: number) {\n return;\n }\n\n _setCommonStyle(\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defaultParams?: ICommonStyleParams\n ) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.fillAttributes;\n }\n const {\n fillOpacity = defaultParams.fillOpacity,\n opacity = defaultParams.opacity,\n fill = defaultParams.fill\n } = attribute;\n if (fillOpacity > 1e-12 && opacity > 1e-12) {\n _context.setGlobalAlpha(fillOpacity * opacity);\n _context.setFillStyle(createColor(this, fill, params, offsetX, offsetY));\n // todo 小程序\n } else {\n // _context.setGlobalAlpha(fillOpacity * opacity);\n }\n }\n\n _setStrokeStyle(\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defaultParams?: IStrokeStyleParams\n ) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.strokeAttributes;\n }\n const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;\n if (strokeOpacity > 1e-12 && opacity > 1e-12) {\n const {\n lineWidth = defaultParams.lineWidth,\n stroke = defaultParams.stroke,\n lineJoin = defaultParams.lineJoin,\n lineDash = defaultParams.lineDash,\n lineCap = defaultParams.lineCap,\n miterLimit = defaultParams.miterLimit\n } = attribute;\n _context.setGlobalAlpha(strokeOpacity * opacity);\n _context.setLineWidth(getScaledStroke(this, lineWidth, this.dpr));\n _context.setStrokeStyle(createColor(this, stroke as any, params, offsetX, offsetY));\n _context.setLineJoin(lineJoin);\n _context.setLineDash(lineDash);\n _context.setLineCap(lineCap);\n _context.setMiterLimit(miterLimit);\n }\n }\n setTextStyleWithoutAlignBaseline(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.textAttributes;\n }\n if (params.font) {\n _context.font = params.font;\n } else {\n _context.font = getContextFont(params, defaultParams);\n }\n _context.setFontSize(params.fontSize ?? defaultParams.fontSize);\n // // 这里不使用defaultParams\n // _context.textAlign = params.textAlign || 'left';\n // _context.textBaseline = params.textBaseline || 'alphabetic';\n }\n setTextStyle(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.textAttributes;\n }\n if (params.font) {\n _context.font = params.font;\n } else {\n _context.font = getContextFont(params, defaultParams);\n }\n _context.setTextAlign(params.textAlign ?? defaultParams.textAlign);\n _context.setTextBaseline(params.textBaseline ?? defaultParams.textBaseline);\n }\n createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradientData {\n return null;\n }\n\n createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern {\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/canvas/contributions/taro/context.ts"],"names":[],"mappings":"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","file":"context.js","sourcesContent":["// 参考konva\nimport { injectable, createColor, getScaledStroke, getContextFont } from '@visactor/vrender-core';\nimport type {\n ICommonStyleParams,\n IContext2d,\n ISetCommonStyleParams,\n ISetStrokeStyleParams,\n IStrokeStyleParams,\n ITextStyleParams,\n IConicalGradientData,\n EnvType\n} from '@visactor/vrender-core';\nimport { BrowserContext2d } from '../browser';\n\n// 考虑taro-feishu等环境\ninterface ITTContext {\n setFillStyle: (c: string | CanvasGradient) => void;\n setStrokeStyle: (c: string | CanvasGradient) => void;\n setGlobalAlpha: (alpha: number) => void;\n setLineWidth: (width: number) => void;\n setMiterLimit: (limit: number) => void;\n setLineJoin: (lineJoin: string) => void;\n setLineCap: (lineCap: string) => void;\n setTextAlign: (align: string) => void;\n setTextBaseline: (baseline: string) => void;\n setLineDash: (lineDash: number[]) => void;\n setFontSize: ((size: number) => void) & ((fontSize: number) => void);\n font: string;\n}\n\n@injectable()\nexport class TaroContext2d extends BrowserContext2d implements IContext2d {\n static env: EnvType = 'taro';\n\n declare nativeContext: ITTContext;\n\n declare _globalAlpha: number;\n\n // feishu小程序无法正常获取到globalAlpha\n get globalAlpha(): number {\n return this._globalAlpha;\n }\n set globalAlpha(ga: number) {\n this.nativeContext.setGlobalAlpha(ga);\n this._globalAlpha = ga;\n }\n\n draw() {\n const _context = this.nativeContext as any;\n _context.draw();\n }\n\n strokeText(text: string, x: number, y: number) {\n return;\n }\n\n _setCommonStyle(\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defaultParams?: ICommonStyleParams\n ) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.fillAttributes;\n }\n const {\n fillOpacity = defaultParams.fillOpacity,\n opacity = defaultParams.opacity,\n fill = defaultParams.fill\n } = attribute;\n if (fillOpacity > 1e-12 && opacity > 1e-12) {\n _context.setGlobalAlpha(fillOpacity * opacity);\n _context.setFillStyle(createColor(this, fill, params, offsetX, offsetY));\n // todo 小程序\n } else {\n // _context.setGlobalAlpha(fillOpacity * opacity);\n }\n }\n\n _setStrokeStyle(\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defaultParams?: IStrokeStyleParams\n ) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.strokeAttributes;\n }\n const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;\n if (strokeOpacity > 1e-12 && opacity > 1e-12) {\n const {\n lineWidth = defaultParams.lineWidth,\n stroke = defaultParams.stroke,\n lineJoin = defaultParams.lineJoin,\n lineDash = defaultParams.lineDash,\n lineCap = defaultParams.lineCap,\n miterLimit = defaultParams.miterLimit\n } = attribute;\n _context.setGlobalAlpha(strokeOpacity * opacity);\n _context.setLineWidth(getScaledStroke(this, lineWidth, this.dpr));\n _context.setStrokeStyle(createColor(this, stroke as any, params, offsetX, offsetY));\n _context.setLineJoin(lineJoin);\n _context.setLineDash(lineDash);\n _context.setLineCap(lineCap);\n _context.setMiterLimit(miterLimit);\n }\n }\n setTextStyleWithoutAlignBaseline(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.textAttributes;\n }\n if (params.font) {\n _context.font = params.font;\n } else {\n _context.font = getContextFont(params, defaultParams);\n }\n _context.setFontSize(params.fontSize ?? defaultParams.fontSize);\n // // 这里不使用defaultParams\n // _context.textAlign = params.textAlign || 'left';\n // _context.textBaseline = params.textBaseline || 'alphabetic';\n }\n setTextStyle(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n const _context = this.nativeContext;\n if (!defaultParams) {\n defaultParams = this.textAttributes;\n }\n if (params.font) {\n _context.font = params.font;\n } else {\n _context.font = getContextFont(params, defaultParams);\n }\n _context.setTextAlign(params.textAlign ?? defaultParams.textAlign);\n _context.setTextBaseline(params.textBaseline ?? defaultParams.textBaseline);\n }\n createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradientData {\n return null;\n }\n\n createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern {\n return null;\n }\n\n getImageData(sx: number, sy: number, sw: number, sh: number): any {\n const ctx = this.nativeContext as any;\n const taro = ctx.taro;\n if (!(ctx && taro)) {\n return;\n }\n if (!ctx.getImageData && taro.canvasGetImageData) {\n return new Promise((resolve, reject) => {\n try {\n taro.canvasGetImageData({\n canvasId: this.canvas.nativeCanvas.id,\n sx,\n sy,\n sw,\n sh,\n success(res: any) {\n resolve(res);\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n }\n }\n\n createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient {\n return (\n (this.nativeContext as any).createCircularGradient &&\n (this.nativeContext as any).createCircularGradient(x0, y0, r0, x1, y1, r1)\n );\n }\n}\n"]}
package/cjs/env/all.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import { type Container } from '@visactor/vrender-core';
2
2
  export declare function loadAllEnv(container: Container): void;
3
3
  export declare function loadAllModule(container: Container): void;
4
+ export declare namespace loadAllModule {
5
+ var __loaded: boolean;
6
+ }
4
7
  export declare function initAllEnv(): void;
package/cjs/env/all.js CHANGED
@@ -10,15 +10,12 @@ function loadAllEnv(container) {
10
10
  loadAllModule(container);
11
11
  }
12
12
 
13
- exports.loadAllEnv = loadAllEnv;
14
-
15
- let loaded = !1;
16
-
17
13
  function loadAllModule(container) {
18
- loaded || (loaded = !0, (0, browser_1.loadBrowserEnv)(container, !1), (0, feishu_1.loadFeishuEnv)(container, !1),
19
- (0, lynx_1.loadLynxEnv)(container, !1), (0, node_1.loadNodeEnv)(container, !1),
20
- (0, taro_1.loadTaroEnv)(container, !1), (0, wx_1.loadWxEnv)(container, !1), (0,
21
- canvas_module_1.loadCanvasPicker)(container), vrender_core_1.vglobal.hooks.onSetEnv.tap("loadMathPicker", ((lastEnv, env) => {
14
+ loadAllModule.__loaded || (loadAllModule.__loaded = !0, (0, browser_1.loadBrowserEnv)(container, !1),
15
+ (0, feishu_1.loadFeishuEnv)(container, !1), (0, lynx_1.loadLynxEnv)(container, !1),
16
+ (0, node_1.loadNodeEnv)(container, !1), (0, taro_1.loadTaroEnv)(container, !1),
17
+ (0, wx_1.loadWxEnv)(container, !1), (0, canvas_module_1.loadCanvasPicker)(container),
18
+ vrender_core_1.vglobal.hooks.onSetEnv.tap("loadMathPicker", ((lastEnv, env) => {
22
19
  "browser" !== env && (0, math_module_1.loadMathPicker)(container);
23
20
  })));
24
21
  }
@@ -27,5 +24,6 @@ function initAllEnv() {
27
24
  loadAllEnv(vrender_core_1.container);
28
25
  }
29
26
 
30
- exports.loadAllModule = loadAllModule, exports.initAllEnv = initAllEnv;
27
+ exports.loadAllEnv = loadAllEnv, exports.loadAllModule = loadAllModule, loadAllModule.__loaded = !1,
28
+ exports.initAllEnv = initAllEnv;
31
29
  //# sourceMappingURL=all.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/all.ts"],"names":[],"mappings":";;;AAAA,yDAA4E;AAC5E,uCAA2C;AAC3C,qCAAyC;AACzC,iCAAqC;AACrC,iCAAqC;AACrC,iCAAqC;AACrC,6BAAiC;AACjC,2DAA2D;AAC3D,uDAAuD;AAGvD,SAAgB,UAAU,CAAC,SAAoB;IAC7C,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAFD,gCAEC;AAED,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,SAAgB,aAAa,CAAC,SAAoB;IAChD,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,IAAI,CAAC;QACd,IAAA,wBAAc,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjC,IAAA,sBAAa,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,IAAA,kBAAW,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAA,kBAAW,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAA,kBAAW,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAA,cAAS,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAA,gCAAgB,EAAC,SAAS,CAAC,CAAC;QAC5B,sBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YAC5D,GAAG,KAAK,SAAS,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAdD,sCAcC;AAED,SAAgB,UAAU;IACxB,UAAU,CAAC,wBAAS,CAAC,CAAC;AACxB,CAAC;AAFD,gCAEC","file":"all.js","sourcesContent":["import { container, vglobal, type Container } from '@visactor/vrender-core';\nimport { loadBrowserEnv } from './browser';\nimport { loadFeishuEnv } from './feishu';\nimport { loadLynxEnv } from './lynx';\nimport { loadNodeEnv } from './node';\nimport { loadTaroEnv } from './taro';\nimport { loadWxEnv } from './wx';\nimport { loadCanvasPicker } from '../picker/canvas-module';\nimport { loadMathPicker } from '../picker/math-module';\n// import { loadMathPicker } from '../picker';\n\nexport function loadAllEnv(container: Container) {\n loadAllModule(container);\n}\n\nlet loaded = false;\nexport function loadAllModule(container: Container) {\n if (!loaded) {\n loaded = true;\n loadBrowserEnv(container, false);\n loadFeishuEnv(container, false);\n loadLynxEnv(container, false);\n loadNodeEnv(container, false);\n loadTaroEnv(container, false);\n loadWxEnv(container, false);\n loadCanvasPicker(container);\n vglobal.hooks.onSetEnv.tap('loadMathPicker', (lastEnv, env) => {\n env !== 'browser' && loadMathPicker(container);\n });\n }\n}\n\nexport function initAllEnv() {\n loadAllEnv(container);\n}\n"]}
1
+ {"version":3,"sources":["../src/env/all.ts"],"names":[],"mappings":";;;AAAA,yDAA4E;AAC5E,uCAA2C;AAC3C,qCAAyC;AACzC,iCAAqC;AACrC,iCAAqC;AACrC,iCAAqC;AACrC,6BAAiC;AACjC,2DAA2D;AAC3D,uDAAuD;AAGvD,SAAgB,UAAU,CAAC,SAAoB;IAC7C,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAFD,gCAEC;AAED,SAAgB,aAAa,CAAC,SAAoB;IAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;QAC3B,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,IAAA,wBAAc,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjC,IAAA,sBAAa,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,IAAA,kBAAW,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAA,kBAAW,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAA,kBAAW,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAA,cAAS,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAA,gCAAgB,EAAC,SAAS,CAAC,CAAC;QAC5B,sBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YAC5D,GAAG,KAAK,SAAS,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAdD,sCAcC;AAED,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;AAE/B,SAAgB,UAAU;IACxB,UAAU,CAAC,wBAAS,CAAC,CAAC;AACxB,CAAC;AAFD,gCAEC","file":"all.js","sourcesContent":["import { container, vglobal, type Container } from '@visactor/vrender-core';\nimport { loadBrowserEnv } from './browser';\nimport { loadFeishuEnv } from './feishu';\nimport { loadLynxEnv } from './lynx';\nimport { loadNodeEnv } from './node';\nimport { loadTaroEnv } from './taro';\nimport { loadWxEnv } from './wx';\nimport { loadCanvasPicker } from '../picker/canvas-module';\nimport { loadMathPicker } from '../picker/math-module';\n// import { loadMathPicker } from '../picker';\n\nexport function loadAllEnv(container: Container) {\n loadAllModule(container);\n}\n\nexport function loadAllModule(container: Container) {\n if (!loadAllModule.__loaded) {\n loadAllModule.__loaded = true;\n loadBrowserEnv(container, false);\n loadFeishuEnv(container, false);\n loadLynxEnv(container, false);\n loadNodeEnv(container, false);\n loadTaroEnv(container, false);\n loadWxEnv(container, false);\n loadCanvasPicker(container);\n vglobal.hooks.onSetEnv.tap('loadMathPicker', (lastEnv, env) => {\n env !== 'browser' && loadMathPicker(container);\n });\n }\n}\n\nloadAllModule.__loaded = false;\n\nexport function initAllEnv() {\n loadAllEnv(container);\n}\n"]}
@@ -1,4 +1,7 @@
1
1
  import { ContainerModule, type Container } from '@visactor/vrender-core';
2
2
  export declare const browserEnvModule: ContainerModule;
3
3
  export declare function loadBrowserEnv(container: Container, loadPicker?: boolean): void;
4
+ export declare namespace loadBrowserEnv {
5
+ var __loaded: boolean;
6
+ }
4
7
  export declare function initBrowserEnv(): void;
@@ -6,23 +6,20 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const vrender_core_1 = require("@visactor/vrender-core"), modules_1 = require("../canvas/contributions/browser/modules"), canvas_module_1 = require("../picker/canvas-module"), browser_contribution_1 = require("../window/contributions/browser-contribution"), browser_contribution_2 = require("./contributions/browser-contribution");
8
8
 
9
- let isBrowserBound = !1;
10
-
11
- exports.browserEnvModule = new vrender_core_1.ContainerModule((bind => {
12
- isBrowserBound || (isBrowserBound = !0, bind(browser_contribution_2.BrowserEnvContribution).toSelf().inSingletonScope(),
13
- bind(vrender_core_1.EnvContribution).toService(browser_contribution_2.BrowserEnvContribution));
14
- }));
15
-
16
- let loaded = !1;
17
-
18
9
  function loadBrowserEnv(container, loadPicker = !0) {
19
- loaded || (loaded = !0, container.load(exports.browserEnvModule), container.load(modules_1.browserCanvasModule),
20
- container.load(browser_contribution_1.browserWindowModule), loadPicker && (0, canvas_module_1.loadCanvasPicker)(container));
10
+ loadBrowserEnv.__loaded || (loadBrowserEnv.__loaded = !0, container.load(exports.browserEnvModule),
11
+ container.load(modules_1.browserCanvasModule), container.load(browser_contribution_1.browserWindowModule),
12
+ loadPicker && (0, canvas_module_1.loadCanvasPicker)(container));
21
13
  }
22
14
 
23
15
  function initBrowserEnv() {
24
16
  loadBrowserEnv(vrender_core_1.container);
25
17
  }
26
18
 
27
- exports.loadBrowserEnv = loadBrowserEnv, exports.initBrowserEnv = initBrowserEnv;
19
+ exports.browserEnvModule = new vrender_core_1.ContainerModule((bind => {
20
+ exports.browserEnvModule.isBrowserBound || (exports.browserEnvModule.isBrowserBound = !0,
21
+ bind(browser_contribution_2.BrowserEnvContribution).toSelf().inSingletonScope(),
22
+ bind(vrender_core_1.EnvContribution).toService(browser_contribution_2.BrowserEnvContribution));
23
+ })), exports.browserEnvModule.isBrowserBound = !1, exports.loadBrowserEnv = loadBrowserEnv,
24
+ loadBrowserEnv.__loaded = !1, exports.initBrowserEnv = initBrowserEnv;
28
25
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/browser.ts"],"names":[],"mappings":";;;AAAA,yDAAqG;AAErG,qEAA8E;AAC9E,2DAA2D;AAC3D,uFAAmF;AACnF,+EAA8E;AAE9E,IAAI,cAAc,GAAG,KAAK,CAAC;AACd,QAAA,gBAAgB,GAAG,IAAI,8BAAe,CAAC,IAAI,CAAC,EAAE;IAEzD,IAAI,CAAC,cAAc,EAAE;QACnB,cAAc,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,6CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACzD,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,6CAAsB,CAAC,CAAC;KACzD;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,SAAgB,cAAc,CAAC,SAAoB,EAAE,aAAsB,IAAI;IAC7E,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,IAAI,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,wBAAgB,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,6BAAmB,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,0CAAmB,CAAC,CAAC;QACpC,UAAU,IAAI,IAAA,gCAAgB,EAAC,SAAS,CAAC,CAAC;KAC3C;AACH,CAAC;AARD,wCAQC;AAED,SAAgB,cAAc;IAC5B,cAAc,CAAC,wBAAS,CAAC,CAAC;AAC5B,CAAC;AAFD,wCAEC","file":"browser.js","sourcesContent":["import { container, ContainerModule, type Container, EnvContribution } from '@visactor/vrender-core';\n// import { browserEnvModule } from './contributions/module';\nimport { browserCanvasModule } from '../canvas/contributions/browser/modules';\nimport { loadCanvasPicker } from '../picker/canvas-module';\nimport { browserWindowModule } from '../window/contributions/browser-contribution';\nimport { BrowserEnvContribution } from './contributions/browser-contribution';\n\nlet isBrowserBound = false;\nexport const browserEnvModule = new ContainerModule(bind => {\n // browser\n if (!isBrowserBound) {\n isBrowserBound = true;\n bind(BrowserEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(BrowserEnvContribution);\n }\n});\n\nlet loaded = false;\nexport function loadBrowserEnv(container: Container, loadPicker: boolean = true) {\n if (!loaded) {\n loaded = true;\n container.load(browserEnvModule);\n container.load(browserCanvasModule);\n container.load(browserWindowModule);\n loadPicker && loadCanvasPicker(container);\n }\n}\n\nexport function initBrowserEnv() {\n loadBrowserEnv(container);\n}\n"]}
1
+ {"version":3,"sources":["../src/env/browser.ts"],"names":[],"mappings":";;;AAAA,yDAAqG;AAErG,qEAA8E;AAC9E,2DAA2D;AAC3D,uFAAmF;AACnF,+EAA8E;AAEjE,QAAA,gBAAgB,GAAG,IAAI,8BAAe,CAAC,IAAI,CAAC,EAAE;IAEzD,IAAI,CAAE,wBAAwB,CAAC,cAAc,EAAE;QAC5C,wBAAwB,CAAC,cAAc,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,6CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACzD,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,6CAAsB,CAAC,CAAC;KACzD;AACH,CAAC,CAAC,CAAC;AAEF,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAC;AAEjD,SAAgB,cAAc,CAAC,SAAoB,EAAE,aAAsB,IAAI;IAC7E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAC5B,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,wBAAgB,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,6BAAmB,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,0CAAmB,CAAC,CAAC;QACpC,UAAU,IAAI,IAAA,gCAAgB,EAAC,SAAS,CAAC,CAAC;KAC3C;AACH,CAAC;AARD,wCAQC;AAED,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;AAEhC,SAAgB,cAAc;IAC5B,cAAc,CAAC,wBAAS,CAAC,CAAC;AAC5B,CAAC;AAFD,wCAEC","file":"browser.js","sourcesContent":["import { container, ContainerModule, type Container, EnvContribution } from '@visactor/vrender-core';\n// import { browserEnvModule } from './contributions/module';\nimport { browserCanvasModule } from '../canvas/contributions/browser/modules';\nimport { loadCanvasPicker } from '../picker/canvas-module';\nimport { browserWindowModule } from '../window/contributions/browser-contribution';\nimport { BrowserEnvContribution } from './contributions/browser-contribution';\n\nexport const browserEnvModule = new ContainerModule(bind => {\n // browser\n if (!(browserEnvModule as any).isBrowserBound) {\n (browserEnvModule as any).isBrowserBound = true;\n bind(BrowserEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(BrowserEnvContribution);\n }\n});\n\n(browserEnvModule as any).isBrowserBound = false;\n\nexport function loadBrowserEnv(container: Container, loadPicker: boolean = true) {\n if (!loadBrowserEnv.__loaded) {\n loadBrowserEnv.__loaded = true;\n container.load(browserEnvModule);\n container.load(browserCanvasModule);\n container.load(browserWindowModule);\n loadPicker && loadCanvasPicker(container);\n }\n}\n\nloadBrowserEnv.__loaded = false;\n\nexport function initBrowserEnv() {\n loadBrowserEnv(container);\n}\n"]}
@@ -87,8 +87,8 @@ let BrowserEnvContribution = class extends vrender_core_1.BaseEnvContribution {
87
87
  }
88
88
  getNativeAABBBounds(_dom) {
89
89
  let dom = _dom;
90
- if ("string" == typeof _dom && (dom = (new DOMParser).parseFromString(_dom, "text/html").firstChild),
91
- dom.getBoundingClientRect) {
90
+ if ("string" == typeof _dom && (dom = (new DOMParser).parseFromString(_dom, "text/html").firstChild,
91
+ dom.lastChild && (dom = dom.lastChild.firstChild)), dom.getBoundingClientRect) {
92
92
  const b = dom.getBoundingClientRect();
93
93
  return new DynamicB(b);
94
94
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { injectable, Generator, BaseEnvContribution } from '@visactor/vrender-core';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n CreateDOMParamsType\n} from '@visactor/vrender-core';\nimport type { IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, isString, isValidNumber } from '@visactor/vutils';\n\nclass DynamicB {\n get x1(): number {\n return this.dom.getBoundingClientRect().left;\n }\n get x2(): number {\n return this.dom.getBoundingClientRect().right;\n }\n get y1(): number {\n return this.dom.getBoundingClientRect().top;\n }\n get y2(): number {\n return this.dom.getBoundingClientRect().bottom;\n }\n get width(): number {\n return this.dom.getBoundingClientRect().width;\n }\n get height(): number {\n return this.dom.getBoundingClientRect().height;\n }\n\n dom: HTMLElement;\n\n constructor(dom: HTMLElement) {\n this.dom = dom;\n }\n}\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n const img = document.createElement('img');\n img.crossOrigin = 'anonymous';\n if (isSvg) {\n const data = new Blob([src], { type: 'image/svg+xml' });\n src = window.URL.createObjectURL(data);\n }\n img.src = src;\n if (img.complete) {\n return Promise.resolve(img);\n }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\n@injectable()\nexport class BrowserEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'browser';\n supportEvent: boolean = true;\n\n constructor() {\n super();\n try {\n this.supportsTouchEvents = 'ontouchstart' in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsTouchEvents = false;\n this.supportsPointerEvents = false;\n this.supportsPointerEvents = false;\n }\n this.applyStyles = true;\n }\n\n mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent, domElement?: any): IPointLike {\n if (domElement) {\n const { clientX: x, clientY: y } = nativeEvent;\n const rect = domElement.getBoundingClientRect();\n const nativeCanvas = domElement.getNativeHandler?.().nativeCanvas;\n let scaleX;\n let scaleY;\n if (nativeCanvas) {\n scaleX = rect.width / nativeCanvas.offsetWidth;\n scaleY = rect.height / nativeCanvas.offsetHeight;\n }\n\n return {\n x: (x - rect.left) / (isValidNumber(scaleX) ? scaleX : 1),\n y: (y - rect.top) / (isValidNumber(scaleY) ? scaleY : 1)\n };\n }\n return {\n x: nativeEvent.offsetX,\n y: nativeEvent.offsetY\n };\n }\n\n getNativeAABBBounds(_dom: any): IBoundsLike {\n let dom = _dom;\n if (typeof _dom === 'string') {\n dom = new DOMParser().parseFromString(_dom, 'text/html').firstChild;\n }\n if (dom.getBoundingClientRect) {\n const b = dom.getBoundingClientRect();\n return new DynamicB(b);\n }\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n dom.parentElement.removeChild(dom);\n return true;\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n const { tagName = 'div', width, height, style, parent } = params;\n const element = document.createElement(tagName);\n if (style) {\n if (isString(style)) {\n element.setAttribute('style', style);\n } else {\n Object.keys(style).forEach(k => {\n element.setAttribute(k, style[k]);\n });\n }\n }\n if (width != null) {\n element.style.width = `${width}px`;\n }\n if (height != null) {\n element.style.height = `${height}px`;\n }\n\n if (parent) {\n const pd = isString(parent) ? this.getElementById(parent) : parent;\n if (pd && pd.appendChild) {\n pd.appendChild(element);\n }\n }\n\n return element;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, true);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n createCanvas(params: ICreateCanvasParams): HTMLCanvasElement {\n const canvas = document.createElement('canvas');\n params.id && (canvas.id = params.id ?? Generator.GenAutoIncrementId().toString());\n // 默认dpr\n const dpr = params.dpr ?? window.devicePixelRatio;\n if (params.width && params.height) {\n canvas.style.width = `${params.width}px`;\n canvas.style.height = `${params.height}px`;\n canvas.width = params.width * dpr;\n canvas.height = params.height * dpr;\n }\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n const dpr = params.dpr ?? window.devicePixelRatio;\n const canvas = new OffscreenCanvas(params.width * dpr, params.height * dpr);\n return canvas;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n let c: HTMLCanvasElement | null;\n if (typeof canvas === 'string') {\n c = document.getElementById(canvas) as HTMLCanvasElement | null;\n } else {\n c = canvas as unknown as HTMLCanvasElement;\n }\n\n if (!c) {\n return;\n }\n if (c.parentElement) {\n c.parentElement.removeChild(c);\n }\n }\n\n getDevicePixelRatio(): number {\n return window.devicePixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return window.requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return window.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 document.addEventListener(type as any, listener as any, options as any);\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 document.removeEventListener(type as any, listener as any, options as any);\n }\n\n dispatchEvent(event: any): boolean {\n return document.dispatchEvent(event);\n }\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 getDocument(): Document | null {\n return document;\n }\n\n release(...params: any): void {\n return;\n }\n\n getElementTop(element: HTMLElement, baseWindow?: boolean) {\n let actualTop = element.offsetTop;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualTop += current.offsetTop;\n current = current.offsetParent as HTMLElement;\n }\n\n return actualTop;\n }\n getElementLeft(element: HTMLElement, baseWindow?: boolean) {\n let actualLeft = element.offsetLeft;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent as HTMLElement;\n }\n\n return actualLeft;\n }\n getElementTopLeft(element: HTMLElement, baseWindow?: boolean): { top: number; left: number } {\n let actualTop = element.offsetTop;\n let actualLeft = element.offsetLeft;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualTop += current.offsetTop;\n actualLeft += current.offsetLeft;\n current = current.offsetParent as HTMLElement;\n }\n\n return {\n top: actualTop,\n left: actualLeft\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/env/contributions/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { injectable, Generator, BaseEnvContribution } from '@visactor/vrender-core';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n CreateDOMParamsType\n} from '@visactor/vrender-core';\nimport type { IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, isString, isValidNumber } from '@visactor/vutils';\n\nclass DynamicB {\n get x1(): number {\n return this.dom.getBoundingClientRect().left;\n }\n get x2(): number {\n return this.dom.getBoundingClientRect().right;\n }\n get y1(): number {\n return this.dom.getBoundingClientRect().top;\n }\n get y2(): number {\n return this.dom.getBoundingClientRect().bottom;\n }\n get width(): number {\n return this.dom.getBoundingClientRect().width;\n }\n get height(): number {\n return this.dom.getBoundingClientRect().height;\n }\n\n dom: HTMLElement;\n\n constructor(dom: HTMLElement) {\n this.dom = dom;\n }\n}\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n const img = document.createElement('img');\n img.crossOrigin = 'anonymous';\n if (isSvg) {\n const data = new Blob([src], { type: 'image/svg+xml' });\n src = window.URL.createObjectURL(data);\n }\n img.src = src;\n if (img.complete) {\n return Promise.resolve(img);\n }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\n@injectable()\nexport class BrowserEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'browser';\n supportEvent: boolean = true;\n\n constructor() {\n super();\n try {\n this.supportsTouchEvents = 'ontouchstart' in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsTouchEvents = false;\n this.supportsPointerEvents = false;\n this.supportsPointerEvents = false;\n }\n this.applyStyles = true;\n }\n\n mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent, domElement?: any): IPointLike {\n if (domElement) {\n const { clientX: x, clientY: y } = nativeEvent;\n const rect = domElement.getBoundingClientRect();\n const nativeCanvas = domElement.getNativeHandler?.().nativeCanvas;\n let scaleX;\n let scaleY;\n if (nativeCanvas) {\n scaleX = rect.width / nativeCanvas.offsetWidth;\n scaleY = rect.height / nativeCanvas.offsetHeight;\n }\n\n return {\n x: (x - rect.left) / (isValidNumber(scaleX) ? scaleX : 1),\n y: (y - rect.top) / (isValidNumber(scaleY) ? scaleY : 1)\n };\n }\n return {\n x: nativeEvent.offsetX,\n y: nativeEvent.offsetY\n };\n }\n\n getNativeAABBBounds(_dom: any): IBoundsLike {\n let dom = _dom;\n if (typeof _dom === 'string') {\n dom = new DOMParser().parseFromString(_dom, 'text/html').firstChild;\n if ((dom as any).lastChild) {\n dom = (dom as any).lastChild.firstChild;\n }\n }\n if (dom.getBoundingClientRect) {\n const b = dom.getBoundingClientRect();\n return new DynamicB(b);\n }\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n dom.parentElement.removeChild(dom);\n return true;\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n const { tagName = 'div', width, height, style, parent } = params;\n const element = document.createElement(tagName);\n if (style) {\n if (isString(style)) {\n element.setAttribute('style', style);\n } else {\n Object.keys(style).forEach(k => {\n element.setAttribute(k, style[k]);\n });\n }\n }\n if (width != null) {\n element.style.width = `${width}px`;\n }\n if (height != null) {\n element.style.height = `${height}px`;\n }\n\n if (parent) {\n const pd = isString(parent) ? this.getElementById(parent) : parent;\n if (pd && pd.appendChild) {\n pd.appendChild(element);\n }\n }\n\n return element;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, true);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n createCanvas(params: ICreateCanvasParams): HTMLCanvasElement {\n const canvas = document.createElement('canvas');\n params.id && (canvas.id = params.id ?? Generator.GenAutoIncrementId().toString());\n // 默认dpr\n const dpr = params.dpr ?? window.devicePixelRatio;\n if (params.width && params.height) {\n canvas.style.width = `${params.width}px`;\n canvas.style.height = `${params.height}px`;\n canvas.width = params.width * dpr;\n canvas.height = params.height * dpr;\n }\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n const dpr = params.dpr ?? window.devicePixelRatio;\n const canvas = new OffscreenCanvas(params.width * dpr, params.height * dpr);\n return canvas;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n let c: HTMLCanvasElement | null;\n if (typeof canvas === 'string') {\n c = document.getElementById(canvas) as HTMLCanvasElement | null;\n } else {\n c = canvas as unknown as HTMLCanvasElement;\n }\n\n if (!c) {\n return;\n }\n if (c.parentElement) {\n c.parentElement.removeChild(c);\n }\n }\n\n getDevicePixelRatio(): number {\n return window.devicePixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return window.requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return window.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 document.addEventListener(type as any, listener as any, options as any);\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 document.removeEventListener(type as any, listener as any, options as any);\n }\n\n dispatchEvent(event: any): boolean {\n return document.dispatchEvent(event);\n }\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 getDocument(): Document | null {\n return document;\n }\n\n release(...params: any): void {\n return;\n }\n\n getElementTop(element: HTMLElement, baseWindow?: boolean) {\n let actualTop = element.offsetTop;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualTop += current.offsetTop;\n current = current.offsetParent as HTMLElement;\n }\n\n return actualTop;\n }\n getElementLeft(element: HTMLElement, baseWindow?: boolean) {\n let actualLeft = element.offsetLeft;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent as HTMLElement;\n }\n\n return actualLeft;\n }\n getElementTopLeft(element: HTMLElement, baseWindow?: boolean): { top: number; left: number } {\n let actualTop = element.offsetTop;\n let actualLeft = element.offsetLeft;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualTop += current.offsetTop;\n actualLeft += current.offsetLeft;\n current = current.offsetParent as HTMLElement;\n }\n\n return {\n top: actualTop,\n left: actualLeft\n };\n }\n}\n"]}
@@ -0,0 +1,44 @@
1
+ export declare class CanvasWrapDisableWH {
2
+ protected _w: number;
3
+ protected _h: number;
4
+ protected ctx: any;
5
+ nativeCanvas: any;
6
+ id: any;
7
+ readonly dpr: number;
8
+ get width(): number;
9
+ set width(w: number);
10
+ get height(): number;
11
+ set height(h: number);
12
+ get offsetWidth(): number;
13
+ set offsetWidth(w: number);
14
+ get offsetHeight(): number;
15
+ set offsetHeight(h: number);
16
+ constructor(nativeCanvas: any, ctx: any, dpr: number, w: number, h: number, id: any);
17
+ getContext(): any;
18
+ getBoundingClientRect(): {
19
+ width: number;
20
+ height: number;
21
+ };
22
+ }
23
+ export declare class CanvasWrapEnableWH {
24
+ protected _w: number;
25
+ protected _h: number;
26
+ protected ctx: any;
27
+ nativeCanvas: any;
28
+ id: any;
29
+ readonly dpr: number;
30
+ get width(): number;
31
+ set width(w: number);
32
+ get height(): number;
33
+ set height(h: number);
34
+ get offsetWidth(): number;
35
+ set offsetWidth(w: number);
36
+ get offsetHeight(): number;
37
+ set offsetHeight(h: number);
38
+ constructor(nativeCanvas: any, ctx: any, dpr: number, w: number, h: number, id: any);
39
+ getContext(): any;
40
+ getBoundingClientRect(): {
41
+ width: number;
42
+ height: number;
43
+ };
44
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.CanvasWrapEnableWH = exports.CanvasWrapDisableWH = void 0;
6
+
7
+ class CanvasWrapDisableWH {
8
+ get width() {
9
+ return this._w * this.dpr;
10
+ }
11
+ set width(w) {}
12
+ get height() {
13
+ return this._h * this.dpr;
14
+ }
15
+ set height(h) {}
16
+ get offsetWidth() {
17
+ return this._w;
18
+ }
19
+ set offsetWidth(w) {}
20
+ get offsetHeight() {
21
+ return this._h;
22
+ }
23
+ set offsetHeight(h) {}
24
+ constructor(nativeCanvas, ctx, dpr, w, h, id) {
25
+ this.nativeCanvas = nativeCanvas, this.ctx = ctx, this._w = w, this._h = h, this.id = id,
26
+ nativeCanvas.id = id, this.dpr = dpr;
27
+ }
28
+ getContext() {
29
+ return this.ctx;
30
+ }
31
+ getBoundingClientRect() {
32
+ return {
33
+ width: this._w,
34
+ height: this._h
35
+ };
36
+ }
37
+ }
38
+
39
+ exports.CanvasWrapDisableWH = CanvasWrapDisableWH;
40
+
41
+ class CanvasWrapEnableWH {
42
+ get width() {
43
+ return this._w * this.dpr;
44
+ }
45
+ set width(w) {
46
+ this._w = w / this.dpr, this.nativeCanvas.width = w;
47
+ }
48
+ get height() {
49
+ return this._h * this.dpr;
50
+ }
51
+ set height(h) {
52
+ this._h = h / this.dpr, this.nativeCanvas.height = h;
53
+ }
54
+ get offsetWidth() {
55
+ return this._w;
56
+ }
57
+ set offsetWidth(w) {
58
+ this._w = w, this.nativeCanvas.width = w * this.dpr;
59
+ }
60
+ get offsetHeight() {
61
+ return this._h;
62
+ }
63
+ set offsetHeight(h) {
64
+ this._h = h, this.nativeCanvas.height = h * this.dpr;
65
+ }
66
+ constructor(nativeCanvas, ctx, dpr, w, h, id) {
67
+ this.nativeCanvas = nativeCanvas, this.ctx = ctx, this._w = w, this._h = h, this.id = id,
68
+ nativeCanvas.id = id, this.dpr = dpr;
69
+ }
70
+ getContext() {
71
+ return this.ctx;
72
+ }
73
+ getBoundingClientRect() {
74
+ return {
75
+ width: this._w,
76
+ height: this._h
77
+ };
78
+ }
79
+ }
80
+
81
+ exports.CanvasWrapEnableWH = CanvasWrapEnableWH;
82
+ //# sourceMappingURL=canvas-wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env/contributions/canvas-wrap.ts"],"names":[],"mappings":"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","file":"canvas-wrap.js","sourcesContent":["export class CanvasWrapDisableWH {\n protected _w: number;\n protected _h: number;\n protected ctx: any;\n nativeCanvas: any;\n id: any;\n readonly dpr: number;\n get width(): number {\n return this._w * this.dpr;\n }\n set width(w: number) {\n return;\n }\n get height(): number {\n return this._h * this.dpr;\n }\n set height(h: number) {\n return;\n }\n get offsetWidth(): number {\n return this._w;\n }\n set offsetWidth(w: number) {\n return;\n }\n get offsetHeight(): number {\n return this._h;\n }\n set offsetHeight(h: number) {\n return;\n }\n\n constructor(nativeCanvas: any, ctx: any, dpr: number, w: number, h: number, id: any) {\n this.nativeCanvas = nativeCanvas;\n this.ctx = ctx;\n this._w = w;\n this._h = h;\n this.id = id;\n nativeCanvas.id = id;\n this.dpr = dpr;\n }\n\n getContext() {\n return this.ctx;\n }\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect() {\n return {\n width: this._w,\n height: this._h\n };\n }\n}\n\nexport class CanvasWrapEnableWH {\n protected _w: number;\n protected _h: number;\n protected ctx: any;\n nativeCanvas: any;\n id: any;\n readonly dpr: number;\n\n get width(): number {\n return this._w * this.dpr;\n }\n set width(w: number) {\n this._w = w / this.dpr;\n this.nativeCanvas.width = w;\n }\n get height(): number {\n return this._h * this.dpr;\n }\n set height(h: number) {\n this._h = h / this.dpr;\n this.nativeCanvas.height = h;\n }\n get offsetWidth(): number {\n return this._w;\n }\n set offsetWidth(w: number) {\n this._w = w;\n this.nativeCanvas.width = w * this.dpr;\n }\n get offsetHeight(): number {\n return this._h;\n }\n set offsetHeight(h: number) {\n this._h = h;\n this.nativeCanvas.height = h * this.dpr;\n }\n\n constructor(nativeCanvas: any, ctx: any, dpr: number, w: number, h: number, id: any) {\n this.nativeCanvas = nativeCanvas;\n this.ctx = ctx;\n this._w = w;\n this._h = h;\n this.id = id;\n nativeCanvas.id = id;\n this.dpr = dpr;\n }\n\n getContext() {\n return this.ctx;\n }\n // 构造 getBoundingClientRect 方法\n getBoundingClientRect() {\n return {\n width: this._w,\n height: this._h\n };\n }\n}\n"]}
@@ -13,6 +13,7 @@ export declare class FeishuEnvContribution extends BaseEnvContribution implement
13
13
  domref: any;
14
14
  canvasIdLists: string[];
15
15
  freeCanvasIdx: number;
16
+ pixelRatio?: number;
16
17
  }): void;
17
18
  loadImage(url: string): Promise<{
18
19
  loadState: 'success' | 'fail';
@@ -12,29 +12,13 @@ Object.defineProperty(exports, "__esModule", {
12
12
  value: !0
13
13
  }), exports.FeishuEnvContribution = void 0;
14
14
 
15
- const vrender_core_1 = require("@visactor/vrender-core");
15
+ const vrender_core_1 = require("@visactor/vrender-core"), canvas_wrap_1 = require("./canvas-wrap");
16
16
 
17
- function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList) {
18
- const dpr = tt.getSystemInfoSync().pixelRatio;
17
+ function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList, pixelRatio) {
18
+ const dpr = null != pixelRatio ? pixelRatio : tt.getSystemInfoSync().pixelRatio;
19
19
  canvasIdLists.forEach(((id, i) => {
20
- const ctx = tt.createCanvasContext(id);
21
- ctx.canvas = {
22
- width: domref.width * dpr,
23
- height: domref.height * dpr
24
- };
25
- const canvas = {
26
- width: domref.width * dpr,
27
- height: domref.height * dpr,
28
- offsetWidth: domref.width,
29
- offsetHeight: domref.height,
30
- id: null != id ? id : "",
31
- getContext: () => ctx,
32
- getBoundingClientRect: () => ({
33
- height: domref.height,
34
- width: domref.width
35
- })
36
- };
37
- canvasMap.set(id, canvas), i >= freeCanvasIdx && freeCanvasList.push(canvas);
20
+ const ctx = tt.createCanvasContext(id), canvas = new canvas_wrap_1.CanvasWrapDisableWH(ctx.canvas || {}, ctx, dpr, domref.width, domref.height, id);
21
+ ctx.canvas = canvas, canvasMap.set(id, canvas), i >= freeCanvasIdx && freeCanvasList.push(canvas);
38
22
  }));
39
23
  }
40
24
 
@@ -56,7 +40,7 @@ let FeishuEnvContribution = class extends vrender_core_1.BaseEnvContribution {
56
40
  return 9999;
57
41
  }
58
42
  configure(service, params) {
59
- service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList));
43
+ service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, params.pixelRatio));
60
44
  }
61
45
  loadImage(url) {
62
46
  return Promise.resolve({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/feishu-contribution.ts"],"names":[],"mappings":"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","file":"feishu-contribution.js","sourcesContent":["import { injectable, BaseEnvContribution, rafBasedSto } from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '@visactor/vrender-core';\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 9999;\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 return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/env/contributions/feishu-contribution.ts"],"names":[],"mappings":"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","file":"feishu-contribution.js","sourcesContent":["import { injectable, BaseEnvContribution, rafBasedSto } from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '@visactor/vrender-core';\nimport { CanvasWrapDisableWH } from './canvas-wrap';\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 pixelRatio?: number\n) {\n const dpr = pixelRatio ?? tt.getSystemInfoSync().pixelRatio;\n\n canvasIdLists.forEach((id, i) => {\n const ctx = tt.createCanvasContext(id);\n\n const canvas = new CanvasWrapDisableWH(ctx.canvas || {}, ctx, dpr, domref.width, domref.height, id);\n ctx.canvas = canvas;\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 9999;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(\n service: IGlobal,\n params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; pixelRatio?: number }\n ) {\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.pixelRatio\n );\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 return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n}\n"]}
@@ -12,6 +12,7 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
12
12
  domref: any;
13
13
  canvasIdLists: string[];
14
14
  freeCanvasIdx: number;
15
+ pixelRatio?: number;
15
16
  }): void;
16
17
  getDynamicCanvasCount(): number;
17
18
  getStaticCanvasCount(): number;