@visactor/vrender-kits 1.1.0-alpha.21 → 1.1.0-alpha.23

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 (92) hide show
  1. package/cjs/canvas/contributions/create-canvas-module.js +1 -1
  2. package/cjs/canvas/contributions/harmony/canvas.js +5 -1
  3. package/cjs/canvas/contributions/harmony/canvas.js.map +1 -1
  4. package/cjs/canvas/contributions/modules.js +1 -1
  5. package/cjs/env/contributions/browser-contribution.js +1 -1
  6. package/cjs/env/contributions/canvas-wrap.js +1 -1
  7. package/cjs/env/contributions/feishu-contribution.d.ts +15 -8
  8. package/cjs/env/contributions/feishu-contribution.js +26 -14
  9. package/cjs/env/contributions/feishu-contribution.js.map +1 -1
  10. package/cjs/env/contributions/harmony-contribution.d.ts +26 -7
  11. package/cjs/env/contributions/harmony-contribution.js +129 -21
  12. package/cjs/env/contributions/harmony-contribution.js.map +1 -1
  13. package/cjs/env/contributions/lynx-contribution.d.ts +35 -10
  14. package/cjs/env/contributions/lynx-contribution.js +128 -31
  15. package/cjs/env/contributions/lynx-contribution.js.map +1 -1
  16. package/cjs/env/contributions/miniapp-canvas.d.ts +18 -0
  17. package/cjs/env/contributions/miniapp-canvas.js +46 -0
  18. package/cjs/env/contributions/miniapp-canvas.js.map +1 -0
  19. package/cjs/env/contributions/taro-contribution.d.ts +6 -10
  20. package/cjs/env/contributions/taro-contribution.js +17 -18
  21. package/cjs/env/contributions/taro-contribution.js.map +1 -1
  22. package/cjs/env/contributions/tt-contribution.d.ts +14 -8
  23. package/cjs/env/contributions/tt-contribution.js +26 -49
  24. package/cjs/env/contributions/tt-contribution.js.map +1 -1
  25. package/cjs/env/contributions/wx-contribution.d.ts +15 -11
  26. package/cjs/env/contributions/wx-contribution.js +30 -54
  27. package/cjs/env/contributions/wx-contribution.js.map +1 -1
  28. package/cjs/event/extension/drag.js +1 -1
  29. package/cjs/event/extension/gesture.js +1 -1
  30. package/cjs/event/extension/index.js +1 -1
  31. package/cjs/event/extension/interface.js +1 -1
  32. package/cjs/window/contributions/feishu-contribution.js +6 -1
  33. package/cjs/window/contributions/feishu-contribution.js.map +1 -1
  34. package/cjs/window/contributions/harmony-contribution.js +70 -11
  35. package/cjs/window/contributions/harmony-contribution.js.map +1 -1
  36. package/cjs/window/contributions/lynx-contribution.d.ts +1 -2
  37. package/cjs/window/contributions/lynx-contribution.js +63 -9
  38. package/cjs/window/contributions/lynx-contribution.js.map +1 -1
  39. package/cjs/window/contributions/taro-contribution.js +6 -1
  40. package/cjs/window/contributions/taro-contribution.js.map +1 -1
  41. package/cjs/window/contributions/tt-contribution.js +6 -1
  42. package/cjs/window/contributions/tt-contribution.js.map +1 -1
  43. package/cjs/window/contributions/wx-contribution.d.ts +1 -2
  44. package/cjs/window/contributions/wx-contribution.js +29 -10
  45. package/cjs/window/contributions/wx-contribution.js.map +1 -1
  46. package/dist/index.es.js +721 -213
  47. package/es/canvas/contributions/create-canvas-module.js +1 -1
  48. package/es/canvas/contributions/harmony/canvas.js +5 -1
  49. package/es/canvas/contributions/harmony/canvas.js.map +1 -1
  50. package/es/canvas/contributions/modules.js +1 -1
  51. package/es/env/contributions/browser-contribution.js +1 -1
  52. package/es/env/contributions/canvas-wrap.js +1 -1
  53. package/es/env/contributions/feishu-contribution.d.ts +15 -8
  54. package/es/env/contributions/feishu-contribution.js +27 -14
  55. package/es/env/contributions/feishu-contribution.js.map +1 -1
  56. package/es/env/contributions/harmony-contribution.d.ts +26 -7
  57. package/es/env/contributions/harmony-contribution.js +132 -22
  58. package/es/env/contributions/harmony-contribution.js.map +1 -1
  59. package/es/env/contributions/lynx-contribution.d.ts +35 -10
  60. package/es/env/contributions/lynx-contribution.js +128 -29
  61. package/es/env/contributions/lynx-contribution.js.map +1 -1
  62. package/es/env/contributions/miniapp-canvas.d.ts +18 -0
  63. package/es/env/contributions/miniapp-canvas.js +37 -0
  64. package/es/env/contributions/miniapp-canvas.js.map +1 -0
  65. package/es/env/contributions/taro-contribution.d.ts +6 -10
  66. package/es/env/contributions/taro-contribution.js +17 -17
  67. package/es/env/contributions/taro-contribution.js.map +1 -1
  68. package/es/env/contributions/tt-contribution.d.ts +14 -8
  69. package/es/env/contributions/tt-contribution.js +28 -48
  70. package/es/env/contributions/tt-contribution.js.map +1 -1
  71. package/es/env/contributions/wx-contribution.d.ts +15 -11
  72. package/es/env/contributions/wx-contribution.js +32 -53
  73. package/es/env/contributions/wx-contribution.js.map +1 -1
  74. package/es/event/extension/drag.js +1 -1
  75. package/es/event/extension/gesture.js +1 -1
  76. package/es/event/extension/index.js +1 -1
  77. package/es/event/extension/interface.js +1 -1
  78. package/es/window/contributions/feishu-contribution.js +6 -1
  79. package/es/window/contributions/feishu-contribution.js.map +1 -1
  80. package/es/window/contributions/harmony-contribution.js +70 -11
  81. package/es/window/contributions/harmony-contribution.js.map +1 -1
  82. package/es/window/contributions/lynx-contribution.d.ts +1 -2
  83. package/es/window/contributions/lynx-contribution.js +62 -10
  84. package/es/window/contributions/lynx-contribution.js.map +1 -1
  85. package/es/window/contributions/taro-contribution.js +6 -1
  86. package/es/window/contributions/taro-contribution.js.map +1 -1
  87. package/es/window/contributions/tt-contribution.js +6 -1
  88. package/es/window/contributions/tt-contribution.js.map +1 -1
  89. package/es/window/contributions/wx-contribution.d.ts +1 -2
  90. package/es/window/contributions/wx-contribution.js +28 -11
  91. package/es/window/contributions/wx-contribution.js.map +1 -1
  92. package/package.json +2 -2
@@ -2,31 +2,118 @@ import { BaseEnvContribution, rafBasedSto } from "@visactor/vrender-core";
2
2
 
3
3
  import { CanvasWrapEnableWH } from "./canvas-wrap";
4
4
 
5
- let ng = !1;
6
-
7
- try {
8
- ng = !!lynx.createCanvasNG;
9
- } catch (err) {}
10
-
11
- function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList, offscreen, pixelRatio) {
12
- const dpr = null != pixelRatio ? pixelRatio : SystemInfo.pixelRatio;
13
- if (canvasIdLists.forEach(((id, i) => {
14
- let _canvas;
15
- offscreen ? _canvas = lynx.createOffscreenCanvas() : (_canvas = ng ? lynx.createCanvasNG(id) : lynx.createCanvas(id),
16
- ng && _canvas.attachToCanvasView(id)), _canvas.width = domref.width * dpr, _canvas.height = domref.height * dpr;
17
- const ctx = _canvas.getContext("2d"), canvas = new CanvasWrapEnableWH(_canvas, ctx, dpr, domref.width, domref.height, id);
18
- canvasMap.set(id, canvas), i > freeCanvasIdx && freeCanvasList.push(canvas);
19
- })), !freeCanvasList.length && lynx.createOffscreenCanvas) {
20
- const _canvas = lynx.createOffscreenCanvas();
21
- _canvas.width = domref.width * dpr, _canvas.height = domref.height * dpr;
22
- const ctx = _canvas.getContext("2d"), id = Math.random().toString(), canvas = new CanvasWrapEnableWH(_canvas, ctx, dpr, domref.width, domref.height, id);
23
- canvasMap.set(id, canvas), freeCanvasList.push(canvas);
5
+ const LYNX_CANVAS_BRIDGE_ERROR = "Lynx canvas bridge is unavailable. VRender Lynx env requires envParams.canvasFactory or a Lynx runtime that exposes createCanvasNG/createCanvas/createOffscreenCanvas/krypton canvas APIs.", LYNX_CANVAS_SIZE_ERROR = "Lynx canvas size is unavailable. Pass stage width/height when creating a Lynx stage canvas.";
6
+
7
+ function isValidCoordinate(value) {
8
+ return "number" == typeof value && Number.isFinite(value);
9
+ }
10
+
11
+ function pickCoordinate(...values) {
12
+ for (let i = 0; i < values.length; i++) if (isValidCoordinate(values[i])) return values[i];
13
+ }
14
+
15
+ function getPrimaryTouch(event) {
16
+ var _a, _b, _c;
17
+ return null !== (_b = null === (_a = null == event ? void 0 : event.changedTouches) || void 0 === _a ? void 0 : _a[0]) && void 0 !== _b ? _b : null === (_c = null == event ? void 0 : event.touches) || void 0 === _c ? void 0 : _c[0];
18
+ }
19
+
20
+ function getLynxEventPoint(event) {
21
+ const touch = getPrimaryTouch(event), x = pickCoordinate(null == event ? void 0 : event.x, null == event ? void 0 : event.offsetX, null == event ? void 0 : event.clientX, null == event ? void 0 : event.pageX, null == touch ? void 0 : touch.x, null == touch ? void 0 : touch.offsetX, null == touch ? void 0 : touch.clientX, null == touch ? void 0 : touch.pageX), y = pickCoordinate(null == event ? void 0 : event.y, null == event ? void 0 : event.offsetY, null == event ? void 0 : event.clientY, null == event ? void 0 : event.pageY, null == touch ? void 0 : touch.y, null == touch ? void 0 : touch.offsetY, null == touch ? void 0 : touch.clientY, null == touch ? void 0 : touch.pageY);
22
+ return null == x || null == y ? null : {
23
+ x: x,
24
+ y: y
25
+ };
26
+ }
27
+
28
+ function getGlobalLynxRuntime() {
29
+ try {
30
+ return "undefined" != typeof lynx ? lynx : void 0;
31
+ } catch (err) {
32
+ return;
33
+ }
34
+ }
35
+
36
+ function getGlobalSystemPixelRatio() {
37
+ try {
38
+ return "undefined" != typeof SystemInfo ? SystemInfo.pixelRatio : void 0;
39
+ } catch (err) {
40
+ return;
24
41
  }
25
42
  }
26
43
 
27
- export function createImageElement(src, isSvg = !1) {
44
+ function getLynxRuntime(params) {
45
+ var _a, _b;
46
+ return null !== (_b = null !== (_a = null == params ? void 0 : params.lynx) && void 0 !== _a ? _a : null == params ? void 0 : params.runtime) && void 0 !== _b ? _b : getGlobalLynxRuntime();
47
+ }
48
+
49
+ function getLynxPixelRatio(params, runtime) {
50
+ var _a, _b, _c, _d, _e;
51
+ return null !== (_e = null !== (_d = null !== (_a = null == params ? void 0 : params.pixelRatio) && void 0 !== _a ? _a : null === (_c = null === (_b = null == runtime ? void 0 : runtime.getSystemInfoSync) || void 0 === _b ? void 0 : _b.call(runtime)) || void 0 === _c ? void 0 : _c.pixelRatio) && void 0 !== _d ? _d : getGlobalSystemPixelRatio()) && void 0 !== _e ? _e : 1;
52
+ }
53
+
54
+ function attachLynxCanvasToView(canvas, id) {
55
+ var _a;
56
+ return null === (_a = null == canvas ? void 0 : canvas.attachToCanvasView) || void 0 === _a || _a.call(canvas, id),
57
+ canvas;
58
+ }
59
+
60
+ function createBoundLynxCanvas(id, runtime) {
61
+ var _a, _b, _c;
62
+ if ("function" == typeof (null === (_a = null == runtime ? void 0 : runtime.krypton) || void 0 === _a ? void 0 : _a.createCanvas)) {
63
+ const canvas = runtime.krypton.createCanvas(id);
64
+ if (canvas) return canvas;
65
+ }
66
+ if ("function" == typeof (null == runtime ? void 0 : runtime.createCanvasNG)) {
67
+ const canvas = runtime.createCanvasNG(id);
68
+ if (canvas) return attachLynxCanvasToView(canvas, id);
69
+ }
70
+ if ("function" == typeof (null === (_b = null == runtime ? void 0 : runtime.krypton) || void 0 === _b ? void 0 : _b.createCanvasNG)) {
71
+ const canvas = runtime.krypton.createCanvasNG();
72
+ if (canvas) return attachLynxCanvasToView(canvas, id);
73
+ }
74
+ if ("function" == typeof (null === (_c = null == runtime ? void 0 : runtime.krypton) || void 0 === _c ? void 0 : _c.CanvasElement)) return new runtime.krypton.CanvasElement(id);
75
+ if ("function" == typeof (null == runtime ? void 0 : runtime.createCanvas)) {
76
+ const canvas = runtime.createCanvas(id);
77
+ if (canvas) return canvas;
78
+ }
79
+ return null;
80
+ }
81
+
82
+ function getCanvasSize(width, height) {
83
+ if (!isValidCoordinate(width) || !isValidCoordinate(height)) throw new Error(LYNX_CANVAS_SIZE_ERROR);
84
+ return {
85
+ width: width,
86
+ height: height
87
+ };
88
+ }
89
+
90
+ function wrapLynxNativeCanvas(nativeCanvas, id, width, height, dpr) {
91
+ nativeCanvas.width = width * dpr, nativeCanvas.height = height * dpr;
92
+ const ctx = nativeCanvas.getContext("2d");
93
+ return new CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);
94
+ }
95
+
96
+ function createLynxNativeCanvas(id, width, height, dpr, offscreen, params, runtime) {
97
+ if (params.canvasFactory) return params.canvasFactory({
98
+ id: id,
99
+ width: width,
100
+ height: height,
101
+ dpr: dpr,
102
+ offscreen: offscreen
103
+ });
104
+ if (offscreen) {
105
+ if ("function" == typeof (null == runtime ? void 0 : runtime.createOffscreenCanvas)) return runtime.createOffscreenCanvas();
106
+ } else {
107
+ const canvas = createBoundLynxCanvas(id, runtime);
108
+ if (canvas) return canvas;
109
+ }
110
+ throw new Error(LYNX_CANVAS_BRIDGE_ERROR);
111
+ }
112
+
113
+ export function createImageElement(src, isSvg = !1, runtime = getGlobalLynxRuntime()) {
28
114
  if (isSvg) return Promise.reject();
29
- const img = lynx.createImage(src);
115
+ if ("function" != typeof (null == runtime ? void 0 : runtime.createImage)) return Promise.reject(new Error("Lynx image bridge is unavailable."));
116
+ const img = runtime.createImage(src);
30
117
  return new Promise(((resolve, reject) => {
31
118
  img.onload = () => {
32
119
  resolve(img);
@@ -47,8 +134,9 @@ export class LynxEnvContribution extends BaseEnvContribution {
47
134
  }
48
135
  this.applyStyles = !0;
49
136
  }
50
- configure(service, params) {
51
- service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, !!params.offscreen, params.pixelRatio));
137
+ configure(service, params = {}) {
138
+ service.env === this.type && (service.setActiveEnvContribution(this), this.lynxEnvParams = params,
139
+ this.lynxRuntime = getLynxRuntime(params));
52
140
  }
53
141
  getDynamicCanvasCount() {
54
142
  return this.freeCanvasList.length;
@@ -57,7 +145,7 @@ export class LynxEnvContribution extends BaseEnvContribution {
57
145
  return 9999;
58
146
  }
59
147
  loadImage(url) {
60
- return createImageElement(url, !1).then((img => ({
148
+ return createImageElement(url, !1, this.lynxRuntime).then((img => ({
61
149
  data: img,
62
150
  loadState: "success"
63
151
  }))).catch((() => ({
@@ -66,16 +154,28 @@ export class LynxEnvContribution extends BaseEnvContribution {
66
154
  })));
67
155
  }
68
156
  loadSvg(url) {
69
- return Promise.reject();
157
+ return Promise.resolve({
158
+ data: null,
159
+ loadState: "fail"
160
+ });
70
161
  }
71
162
  createCanvas(params) {
163
+ var _a, _b, _c, _d;
164
+ if (null != params.id) {
165
+ const id = String(params.id), existing = this.canvasMap.get(id);
166
+ if (existing) return existing;
167
+ const envParams = null !== (_a = this.lynxEnvParams) && void 0 !== _a ? _a : {}, runtime = getLynxRuntime(envParams), dpr = null !== (_b = params.dpr) && void 0 !== _b ? _b : getLynxPixelRatio(envParams, runtime), size = getCanvasSize(params.width, params.height), canvas = wrapLynxNativeCanvas(createLynxNativeCanvas(id, size.width, size.height, dpr, !1, envParams, runtime), id, size.width, size.height, dpr);
168
+ return this.canvasMap.set(id, canvas), canvas;
169
+ }
72
170
  const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
73
- return this.canvasIdx++, result;
171
+ if (this.canvasIdx++, result) return result;
172
+ const envParams = null !== (_c = this.lynxEnvParams) && void 0 !== _c ? _c : {}, runtime = getLynxRuntime(envParams), dpr = null !== (_d = params.dpr) && void 0 !== _d ? _d : getLynxPixelRatio(envParams, runtime), size = getCanvasSize(params.width, params.height), id = Math.random().toString(), canvas = wrapLynxNativeCanvas(createLynxNativeCanvas(id, size.width, size.height, dpr, !0, envParams, runtime), id, size.width, size.height, dpr);
173
+ return this.canvasMap.set(id, canvas), this.freeCanvasList.push(canvas), canvas;
74
174
  }
75
175
  createOffscreenCanvas(params) {}
76
176
  releaseCanvas(canvas) {}
77
177
  getDevicePixelRatio() {
78
- return SystemInfo.pixelRatio;
178
+ return getLynxPixelRatio(void 0, this.lynxRuntime);
79
179
  }
80
180
  getRequestAnimationFrame() {
81
181
  return function(callback) {
@@ -89,8 +189,7 @@ export class LynxEnvContribution extends BaseEnvContribution {
89
189
  }
90
190
  mapToCanvasPoint(event) {
91
191
  var _a;
92
- return null === (_a = null == event ? void 0 : event.type) || void 0 === _a || _a.startsWith("mouse"),
93
- event;
192
+ return null !== (_a = getLynxEventPoint(event)) && void 0 !== _a ? _a : event;
94
193
  }
95
194
  addEventListener(type, listener, options) {
96
195
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/lynx-contribution.ts"],"names":[],"mappings":"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","file":"lynx-contribution.js","sourcesContent":["import { BaseEnvContribution, rafBasedSto } from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ILynxCanvas\n} from '@visactor/vrender-core';\nimport { CanvasWrapEnableWH } from './canvas-wrap';\n\ndeclare const lynx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvas: (id: string) => any;\n createCanvasNG: (id: string) => any;\n createImage: (id: string) => any;\n createOffscreenCanvas: () => 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 offscreen: boolean,\n pixelRatio?: number\n) {\n const dpr = pixelRatio ?? SystemInfo.pixelRatio;\n\n canvasIdLists.forEach((id, i) => {\n let _canvas;\n if (offscreen) {\n _canvas = lynx.createOffscreenCanvas();\n } else {\n _canvas = ng ? lynx.createCanvasNG(id) : lynx.createCanvas(id);\n ng && _canvas.attachToCanvasView(id);\n }\n\n _canvas.width = domref.width * dpr;\n _canvas.height = domref.height * dpr;\n\n const ctx = _canvas.getContext('2d');\n // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n const canvas = new CanvasWrapEnableWH(_canvas, ctx, dpr, domref.width, domref.height, id);\n\n canvasMap.set(id, canvas);\n if (i > freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n });\n\n if (!freeCanvasList.length && lynx.createOffscreenCanvas) {\n const _canvas = lynx.createOffscreenCanvas();\n _canvas.width = domref.width * dpr;\n _canvas.height = domref.height * dpr;\n const ctx = _canvas.getContext('2d');\n\n const id = Math.random().toString();\n const canvas = new CanvasWrapEnableWH(_canvas, ctx, dpr, domref.width, domref.height, id);\n canvasMap.set(id, canvas);\n freeCanvasList.push(canvas);\n }\n}\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n const img = lynx.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\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(\n service: IGlobal,\n params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; offscreen?: boolean; 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.offscreen,\n params.pixelRatio\n );\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 9999;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return SystemInfo.pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\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/env/contributions/lynx-contribution.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,WAAW,EAOZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAkDnD,MAAM,wBAAwB,GAC5B,uFAAuF;IACvF,uGAAuG,CAAC;AAC1G,MAAM,sBAAsB,GAC1B,6FAA6F,CAAC;AAEhG,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc,CAAC,GAAG,MAAiB;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAChC,OAAO,MAAM,CAAC,CAAC,CAAW,CAAC;SAC5B;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAU;;IACjC,OAAO,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,0CAAG,CAAC,CAAC,mCAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAU;IACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,cAAc,CACtB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EACR,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EACR,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CACb,CAAC;IACF,MAAM,CAAC,GAAG,cAAc,CACtB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EACR,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EACR,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CACb,CAAC;IAEF,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI;QACF,OAAO,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;KACvD;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED,SAAS,yBAAyB;IAChC,IAAI;QACF,OAAO,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;KAC9E;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAsB;;IAC5C,OAAO,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,oBAAoB,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAsB,EAAE,OAAqB;;IACtE,OAAO,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,mCAAI,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,uDAAI,0CAAE,UAAU,mCAAI,yBAAyB,EAAE,mCAAI,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAW,EAAE,EAAU;;IACrD,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,kBAAkB,uDAAG,EAAE,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU,EAAE,OAAqB;;IAC9D,IAAI,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,YAAY,CAAA,KAAK,UAAU,EAAE;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;KACF;IAED,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAA,KAAK,UAAU,EAAE;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE;YACV,OAAO,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC3C;KACF;IAED,IAAI,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,cAAc,CAAA,KAAK,UAAU,EAAE;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,MAAM,EAAE;YACV,OAAO,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC3C;KACF;IAED,IAAI,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,aAAa,CAAA,KAAK,UAAU,EAAE;QACzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAA,KAAK,UAAU,EAAE;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,MAAe;IACpD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAiB,EAAE,EAAU,EAAE,KAAa,EAAE,MAAc,EAAE,GAAW;IACrG,YAAY,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;IACjC,YAAY,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;IAEnC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,sBAAsB,CAC7B,EAAU,EACV,KAAa,EACb,MAAc,EACd,GAAW,EACX,SAAkB,EAClB,MAAqB,EACrB,OAAqB;IAErB,IAAI,MAAM,CAAC,aAAa,EAAE;QACxB,OAAO,MAAM,CAAC,aAAa,CAAC;YAC1B,EAAE;YACF,KAAK;YACL,MAAM;YACN,GAAG;YACH,SAAS;SACV,CAAC,CAAC;KACJ;IAED,IAAI,SAAS,EAAE;QACb,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qBAAqB,CAAA,KAAK,UAAU,EAAE;YACxD,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC;SACxC;KACF;SAAM;QACL,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;KACF;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,QAAiB,KAAK,EACtB,UAAmC,oBAAoB,EAAE;IAEzD,IAAI,KAAK,EAAE;QACT,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;KACzB;IACD,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,KAAK,UAAU,EAAE;QAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;KACvE;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAIrC,MAAM,OAAO,GAA8B,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzE,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC;QACF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;YACjB,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAW1D;QACE,KAAK,EAAE,CAAC;QAXV,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;QAMpB,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,SAAwB,EAAE;QACpD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;SAG3C;IACH,CAAC;IAID,qBAAqB;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAKD,oBAAoB;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,GAAW;QAInB,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,OAAO,YAAY;aAChB,IAAI,CAAC,CAAC,GAAqB,EAAE,EAAE;YAC9B,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,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,OAAO,CAAC,GAAW;QAKjB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,MAA2B;;QACtC,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,QAAQ,EAAE;gBACZ,OAAO,QAAQ,CAAC;aACjB;YACD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAA,MAAM,CAAC,GAAG,mCAAI,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACzG,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC;SACf;QAED,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,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;QAED,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAA,MAAM,CAAC,GAAG,mCAAI,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,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,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,wBAAwB;QAStB,OAAO,UAAU,QAA8B;YAC7C,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAQ,CAAC;IACX,CAAC;IAED,uBAAuB;QACrB,OAAO,CAAC,CAAS,EAAE,EAAE;YACnB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,KAAU;;QACzB,OAAO,MAAA,iBAAiB,CAAC,KAAK,CAAC,mCAAI,KAAK,CAAC;IAC3C,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","file":"lynx-contribution.js","sourcesContent":["import {\n BaseEnvContribution,\n rafBasedSto,\n type EnvType,\n type ICanvasLike,\n type ICreateCanvasParams,\n type IEnvContribution,\n type IGlobal,\n type ILynxCanvas\n} from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\nimport { CanvasWrapEnableWH } from './canvas-wrap';\n\ndeclare const lynx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvas: (id: string) => any;\n createCanvasNG: (id?: string) => any;\n createImage: (id: string) => any;\n createOffscreenCanvas: () => any;\n krypton?: {\n createCanvas?: (id: string) => any;\n createCanvasNG?: () => any;\n CanvasElement?: new (name: string) => any;\n };\n};\ndeclare const SystemInfo: {\n pixelRatio: number;\n};\n\ntype LynxKryptonRuntime = Partial<{\n createCanvas: (id: string) => any;\n createCanvasNG: () => any;\n CanvasElement: new (name: string) => any;\n}>;\n\ntype LynxRuntime = Partial<{\n getSystemInfoSync: () => { pixelRatio?: number };\n createCanvas: (id: string) => any;\n createCanvasNG: (id?: string) => any;\n createImage: (id: string) => any;\n createOffscreenCanvas: () => any;\n krypton: LynxKryptonRuntime;\n}>;\n\ntype LynxCanvasFactoryOptions = {\n id: string;\n width: number;\n height: number;\n dpr: number;\n offscreen: boolean;\n};\n\ntype LynxCanvasFactory = (options: LynxCanvasFactoryOptions) => any;\n\ntype LynxEnvParams = {\n pixelRatio?: number;\n lynx?: LynxRuntime;\n runtime?: LynxRuntime;\n canvasFactory?: LynxCanvasFactory;\n};\n\nconst LYNX_CANVAS_BRIDGE_ERROR =\n 'Lynx canvas bridge is unavailable. VRender Lynx env requires envParams.canvasFactory ' +\n 'or a Lynx runtime that exposes createCanvasNG/createCanvas/createOffscreenCanvas/krypton canvas APIs.';\nconst LYNX_CANVAS_SIZE_ERROR =\n 'Lynx canvas size is unavailable. Pass stage width/height when creating a Lynx stage canvas.';\n\nfunction isValidCoordinate(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction pickCoordinate(...values: unknown[]): number | undefined {\n for (let i = 0; i < values.length; i++) {\n if (isValidCoordinate(values[i])) {\n return values[i] as number;\n }\n }\n return undefined;\n}\n\nfunction getPrimaryTouch(event: any) {\n return event?.changedTouches?.[0] ?? event?.touches?.[0];\n}\n\nfunction getLynxEventPoint(event: any) {\n const touch = getPrimaryTouch(event);\n const x = pickCoordinate(\n event?.x,\n event?.offsetX,\n event?.clientX,\n event?.pageX,\n touch?.x,\n touch?.offsetX,\n touch?.clientX,\n touch?.pageX\n );\n const y = pickCoordinate(\n event?.y,\n event?.offsetY,\n event?.clientY,\n event?.pageY,\n touch?.y,\n touch?.offsetY,\n touch?.clientY,\n touch?.pageY\n );\n\n return x == null || y == null ? null : { x, y };\n}\n\nfunction getGlobalLynxRuntime(): LynxRuntime | undefined {\n try {\n return typeof lynx !== 'undefined' ? lynx : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getGlobalSystemPixelRatio(): number | undefined {\n try {\n return typeof SystemInfo !== 'undefined' ? SystemInfo.pixelRatio : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getLynxRuntime(params?: LynxEnvParams): LynxRuntime | undefined {\n return params?.lynx ?? params?.runtime ?? getGlobalLynxRuntime();\n}\n\nfunction getLynxPixelRatio(params?: LynxEnvParams, runtime?: LynxRuntime): number {\n return params?.pixelRatio ?? runtime?.getSystemInfoSync?.()?.pixelRatio ?? getGlobalSystemPixelRatio() ?? 1;\n}\n\nfunction attachLynxCanvasToView(canvas: any, id: string) {\n canvas?.attachToCanvasView?.(id);\n return canvas;\n}\n\nfunction createBoundLynxCanvas(id: string, runtime?: LynxRuntime) {\n if (typeof runtime?.krypton?.createCanvas === 'function') {\n const canvas = runtime.krypton.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n if (typeof runtime?.createCanvasNG === 'function') {\n const canvas = runtime.createCanvasNG(id);\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.createCanvasNG === 'function') {\n const canvas = runtime.krypton.createCanvasNG();\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.CanvasElement === 'function') {\n return new runtime.krypton.CanvasElement(id);\n }\n\n if (typeof runtime?.createCanvas === 'function') {\n const canvas = runtime.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n return null;\n}\n\nfunction getCanvasSize(width?: number, height?: number) {\n if (!isValidCoordinate(width) || !isValidCoordinate(height)) {\n throw new Error(LYNX_CANVAS_SIZE_ERROR);\n }\n return { width, height };\n}\n\nfunction wrapLynxNativeCanvas(nativeCanvas: any, id: string, width: number, height: number, dpr: number) {\n nativeCanvas.width = width * dpr;\n nativeCanvas.height = height * dpr;\n\n const ctx = nativeCanvas.getContext('2d');\n return new CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);\n}\n\nfunction createLynxNativeCanvas(\n id: string,\n width: number,\n height: number,\n dpr: number,\n offscreen: boolean,\n params: LynxEnvParams,\n runtime?: LynxRuntime\n) {\n if (params.canvasFactory) {\n return params.canvasFactory({\n id,\n width,\n height,\n dpr,\n offscreen\n });\n }\n\n if (offscreen) {\n if (typeof runtime?.createOffscreenCanvas === 'function') {\n return runtime.createOffscreenCanvas();\n }\n } else {\n const canvas = createBoundLynxCanvas(id, runtime);\n if (canvas) {\n return canvas;\n }\n }\n\n throw new Error(LYNX_CANVAS_BRIDGE_ERROR);\n}\n\nexport function createImageElement(\n src: string,\n isSvg: boolean = false,\n runtime: LynxRuntime | undefined = getGlobalLynxRuntime()\n): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n if (typeof runtime?.createImage !== 'function') {\n return Promise.reject(new Error('Lynx image bridge is unavailable.'));\n }\n const img = runtime.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\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 private lynxRuntime?: LynxRuntime;\n private lynxEnvParams?: LynxEnvParams;\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: LynxEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.lynxEnvParams = params;\n this.lynxRuntime = getLynxRuntime(params);\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 9999;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false, this.lynxRuntime);\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 // Lynx 不支持 DOMParser 和 URL.createObjectURL,无法解析 svg 字符串,可以通过 url 使用 svg 资源\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n if (params.id != null) {\n const id = String(params.id);\n const existing = this.canvasMap.get(id);\n if (existing) {\n return existing;\n }\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, false, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n return canvas;\n }\n\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n if (result) {\n return result;\n }\n\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const id = Math.random().toString();\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, true, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n this.freeCanvasList.push(canvas);\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return getLynxPixelRatio(undefined, this.lynxRuntime);\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 mapToCanvasPoint(event: any) {\n return getLynxEventPoint(event) ?? event;\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,18 @@
1
+ import type { ICreateCanvasParams, ITTCanvas } from '@visactor/vrender-core';
2
+ export type MiniAppCanvasFactoryOptions = {
3
+ id?: string;
4
+ width: number;
5
+ height: number;
6
+ dpr: number;
7
+ offscreen: boolean;
8
+ };
9
+ export type MiniAppCanvasFactory = (options: MiniAppCanvasFactoryOptions) => any;
10
+ export type MiniAppCanvasEnvParams = {
11
+ pixelRatio?: number;
12
+ canvasFactory?: MiniAppCanvasFactory;
13
+ [key: string]: any;
14
+ };
15
+ export declare function getMiniAppCanvasOptions(params: ICreateCanvasParams, pixelRatio: number, offscreen?: boolean): MiniAppCanvasFactoryOptions;
16
+ export declare function wrapMiniAppNativeCanvas(nativeCanvas: any, options: MiniAppCanvasFactoryOptions): ITTCanvas;
17
+ export declare function wrapMiniAppContextCanvas(ctx: any, options: MiniAppCanvasFactoryOptions): ITTCanvas;
18
+ export declare function createCanvasWithFactory(params: ICreateCanvasParams, pixelRatio: number, canvasMap: Map<string, ITTCanvas>, factory?: MiniAppCanvasFactory): ITTCanvas | null;
@@ -0,0 +1,37 @@
1
+ import { CanvasWrapDisableWH, CanvasWrapEnableWH } from "./canvas-wrap";
2
+
3
+ export function getMiniAppCanvasOptions(params, pixelRatio, offscreen = null == params.id) {
4
+ var _a, _b, _c;
5
+ return {
6
+ id: null == params.id ? void 0 : String(params.id),
7
+ width: null !== (_a = params.width) && void 0 !== _a ? _a : 0,
8
+ height: null !== (_b = params.height) && void 0 !== _b ? _b : 0,
9
+ dpr: null !== (_c = params.dpr) && void 0 !== _c ? _c : pixelRatio,
10
+ offscreen: offscreen
11
+ };
12
+ }
13
+
14
+ export function wrapMiniAppNativeCanvas(nativeCanvas, options) {
15
+ var _a;
16
+ const ctx = null === (_a = null == nativeCanvas ? void 0 : nativeCanvas.getContext) || void 0 === _a ? void 0 : _a.call(nativeCanvas, "2d");
17
+ if (!ctx) throw new Error('MiniApp canvas bridge returned a canvas without getContext("2d").');
18
+ return new CanvasWrapEnableWH(nativeCanvas, ctx, options.dpr, options.width, options.height, options.id);
19
+ }
20
+
21
+ export function wrapMiniAppContextCanvas(ctx, options) {
22
+ if (!ctx) throw new Error("MiniApp canvas bridge returned an empty 2d context.");
23
+ const canvas = new CanvasWrapDisableWH(ctx.canvas || {}, ctx, options.dpr, options.width, options.height, options.id);
24
+ return ctx.canvas = canvas, canvas;
25
+ }
26
+
27
+ export function createCanvasWithFactory(params, pixelRatio, canvasMap, factory) {
28
+ const options = getMiniAppCanvasOptions(params, pixelRatio), id = options.id;
29
+ if (null != id) {
30
+ const existing = canvasMap.get(id);
31
+ if (existing) return existing;
32
+ }
33
+ if (!factory) return null;
34
+ const canvas = wrapMiniAppNativeCanvas(factory(options), options);
35
+ return null != id && canvasMap.set(id, canvas), canvas;
36
+ }
37
+ //# sourceMappingURL=miniapp-canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env/contributions/miniapp-canvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAkBxE,MAAM,UAAU,uBAAuB,CACrC,MAA2B,EAC3B,UAAkB,EAClB,YAAqB,MAAM,CAAC,EAAE,IAAI,IAAI;;IAEtC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,KAAK,EAAE,MAAA,MAAM,CAAC,KAAK,mCAAI,CAAC;QACxB,MAAM,EAAE,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC;QAC1B,GAAG,EAAE,MAAA,MAAM,CAAC,GAAG,mCAAI,UAAU;QAC7B,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAiB,EAAE,OAAoC;;IAC7F,MAAM,GAAG,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,6DAAG,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACtF;IACD,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAQ,EAAE,OAAoC;IACrF,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;KACxE;IACD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACtH,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAA2B,EAC3B,UAAkB,EAClB,SAAiC,EACjC,OAA8B;IAE9B,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACtB,IAAI,EAAE,IAAI,IAAI,EAAE;QACd,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;SACjB;KACF;IACD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,EAAE,IAAI,IAAI,EAAE;QACd,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;KAC3B;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","file":"miniapp-canvas.js","sourcesContent":["import type { ICreateCanvasParams, ITTCanvas } from '@visactor/vrender-core';\nimport { CanvasWrapDisableWH, CanvasWrapEnableWH } from './canvas-wrap';\n\nexport type MiniAppCanvasFactoryOptions = {\n id?: string;\n width: number;\n height: number;\n dpr: number;\n offscreen: boolean;\n};\n\nexport type MiniAppCanvasFactory = (options: MiniAppCanvasFactoryOptions) => any;\n\nexport type MiniAppCanvasEnvParams = {\n pixelRatio?: number;\n canvasFactory?: MiniAppCanvasFactory;\n [key: string]: any;\n};\n\nexport function getMiniAppCanvasOptions(\n params: ICreateCanvasParams,\n pixelRatio: number,\n offscreen: boolean = params.id == null\n): MiniAppCanvasFactoryOptions {\n return {\n id: params.id == null ? undefined : String(params.id),\n width: params.width ?? 0,\n height: params.height ?? 0,\n dpr: params.dpr ?? pixelRatio,\n offscreen\n };\n}\n\nexport function wrapMiniAppNativeCanvas(nativeCanvas: any, options: MiniAppCanvasFactoryOptions): ITTCanvas {\n const ctx = nativeCanvas?.getContext?.('2d');\n if (!ctx) {\n throw new Error('MiniApp canvas bridge returned a canvas without getContext(\"2d\").');\n }\n return new CanvasWrapEnableWH(nativeCanvas, ctx, options.dpr, options.width, options.height, options.id);\n}\n\nexport function wrapMiniAppContextCanvas(ctx: any, options: MiniAppCanvasFactoryOptions): ITTCanvas {\n if (!ctx) {\n throw new Error('MiniApp canvas bridge returned an empty 2d context.');\n }\n const canvas = new CanvasWrapDisableWH(ctx.canvas || {}, ctx, options.dpr, options.width, options.height, options.id);\n ctx.canvas = canvas;\n return canvas;\n}\n\nexport function createCanvasWithFactory(\n params: ICreateCanvasParams,\n pixelRatio: number,\n canvasMap: Map<string, ITTCanvas>,\n factory?: MiniAppCanvasFactory\n): ITTCanvas | null {\n const options = getMiniAppCanvasOptions(params, pixelRatio);\n const id = options.id;\n if (id != null) {\n const existing = canvasMap.get(id);\n if (existing) {\n return existing;\n }\n }\n if (!factory) {\n return null;\n }\n\n const canvas = wrapMiniAppNativeCanvas(factory(options), options);\n if (id != null) {\n canvasMap.set(id, canvas);\n }\n return canvas;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { BaseEnvContribution } from '@visactor/vrender-core';
2
2
  import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ITTCanvas } from '@visactor/vrender-core';
3
+ import { type MiniAppCanvasEnvParams } from './miniapp-canvas';
3
4
  interface ITaro {
4
5
  createCanvasContext: (id: string) => any;
5
6
  canvasGetImageData: (data: {
@@ -11,26 +12,21 @@ interface ITaro {
11
12
  success: (res: any) => void;
12
13
  }) => any;
13
14
  }
14
- interface IConfigureParams {
15
- domref: any;
16
- canvasIdLists: string[];
17
- freeCanvasIdx: number;
18
- taro: ITaro;
19
- pixelRatio: number;
20
- }
15
+ type TaroEnvParams = MiniAppCanvasEnvParams & {
16
+ taro?: ITaro;
17
+ };
21
18
  export declare class TaroEnvContribution extends BaseEnvContribution implements IEnvContribution {
22
19
  type: EnvType;
23
20
  supportEvent: boolean;
24
21
  canvasMap: Map<string, ITTCanvas>;
25
- freeCanvasList: ITTCanvas[];
26
- canvasIdx: number;
27
22
  taro: ITaro;
28
23
  pixelRatio: number;
24
+ private taroEnvParams;
29
25
  constructor();
30
26
  getDynamicCanvasCount(): number;
31
27
  getStaticCanvasCount(): number;
32
28
  mapToCanvasPoint(event: any): any;
33
- configure(service: IGlobal, params: IConfigureParams): void;
29
+ configure(service: IGlobal, params?: TaroEnvParams): void;
34
30
  loadImage(url: string): Promise<{
35
31
  loadState: 'success' | 'fail';
36
32
  data: HTMLImageElement | ImageData | null;
@@ -1,19 +1,13 @@
1
1
  import { BaseEnvContribution } from "@visactor/vrender-core";
2
2
 
3
- import { CanvasWrapDisableWH } from "./canvas-wrap";
3
+ import { createCanvasWithFactory, getMiniAppCanvasOptions, wrapMiniAppContextCanvas } from "./miniapp-canvas";
4
4
 
5
- function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList, taro, dpr) {
6
- canvasIdLists.forEach(((id, i) => {
7
- const ctx = taro.createCanvasContext(id), canvas = new CanvasWrapDisableWH(ctx.canvas || {}, ctx, dpr, domref.width, domref.height, id);
8
- return ctx.canvas = canvas, canvasMap.set(id, canvas), i >= freeCanvasIdx && freeCanvasList.push(canvas),
9
- canvas;
10
- }));
11
- }
5
+ const TARO_CANVAS_BRIDGE_ERROR = "Taro canvas bridge is unavailable. VRender taro env requires envParams.canvasFactory, a Stage canvas object, or envParams.taro.createCanvasContext(id).";
12
6
 
13
7
  export class TaroEnvContribution extends BaseEnvContribution {
14
8
  constructor() {
15
- super(), this.type = "taro", this.supportEvent = !0, this.canvasMap = new Map, this.freeCanvasList = [],
16
- this.canvasIdx = 0, this.supportsTouchEvents = !0;
9
+ super(), this.type = "taro", this.supportEvent = !0, this.canvasMap = new Map, this.pixelRatio = 1,
10
+ this.taroEnvParams = {}, this.supportsTouchEvents = !0;
17
11
  try {
18
12
  this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
19
13
  } catch (err) {
@@ -22,7 +16,7 @@ export class TaroEnvContribution extends BaseEnvContribution {
22
16
  this.applyStyles = !0;
23
17
  }
24
18
  getDynamicCanvasCount() {
25
- return this.freeCanvasList.length;
19
+ return 0;
26
20
  }
27
21
  getStaticCanvasCount() {
28
22
  return 9999;
@@ -32,9 +26,10 @@ export class TaroEnvContribution extends BaseEnvContribution {
32
26
  return null === (_a = null == event ? void 0 : event.type) || void 0 === _a || _a.startsWith("mouse"),
33
27
  event;
34
28
  }
35
- configure(service, params) {
36
- service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, params.taro, params.pixelRatio),
37
- this.taro = params.taro, this.pixelRatio = params.pixelRatio);
29
+ configure(service, params = {}) {
30
+ var _a;
31
+ service.env === this.type && (service.setActiveEnvContribution(this), this.taroEnvParams = params,
32
+ this.taro = params.taro, this.pixelRatio = null !== (_a = params.pixelRatio) && void 0 !== _a ? _a : 1);
38
33
  }
39
34
  loadImage(url) {
40
35
  return Promise.resolve({
@@ -43,7 +38,7 @@ export class TaroEnvContribution extends BaseEnvContribution {
43
38
  });
44
39
  }
45
40
  loadSvg(svgStr) {
46
- const _window = window || globalThis;
41
+ const _window = "undefined" != typeof window ? window : globalThis;
47
42
  if (_window.DOMParser) {
48
43
  const svg = (new _window.DOMParser).parseFromString(svgStr, "image/svg+xml").children[0], data = (new XMLSerializer).serializeToString(svg), url = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(data)}`;
49
44
  return Promise.resolve({
@@ -63,8 +58,13 @@ export class TaroEnvContribution extends BaseEnvContribution {
63
58
  return Promise.reject();
64
59
  }
65
60
  createCanvas(params) {
66
- const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
67
- return this.canvasIdx++, result;
61
+ var _a, _b;
62
+ const envParams = this.taroEnvParams, dpr = null !== (_a = params.dpr) && void 0 !== _a ? _a : this.getDevicePixelRatio(), factoryCanvas = createCanvasWithFactory(params, dpr, this.canvasMap, envParams.canvasFactory);
63
+ if (factoryCanvas) return factoryCanvas;
64
+ const options = getMiniAppCanvasOptions(params, dpr, !1);
65
+ if (null == options.id || "function" != typeof (null === (_b = envParams.taro) || void 0 === _b ? void 0 : _b.createCanvasContext)) throw new Error(TARO_CANVAS_BRIDGE_ERROR);
66
+ const canvas = wrapMiniAppContextCanvas(envParams.taro.createCanvasContext(options.id), options);
67
+ return this.canvasMap.set(options.id, canvas), canvas;
68
68
  }
69
69
  createOffscreenCanvas(params) {}
70
70
  releaseCanvas(canvas) {}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/taro-contribution.ts"],"names":[],"mappings":"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","file":"taro-contribution.js","sourcesContent":["import { BaseEnvContribution } from '@visactor/vrender-core';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n IDomRef,\n ITTCanvas\n} from '@visactor/vrender-core';\nimport { CanvasWrapDisableWH } from './canvas-wrap';\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\n const canvas = new CanvasWrapDisableWH(ctx.canvas || {}, ctx, dpr, domref.width, domref.height, id);\n ctx.canvas = canvas;\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\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 9999;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\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/env/contributions/taro-contribution.ts"],"names":[],"mappings":"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","file":"taro-contribution.js","sourcesContent":["import { BaseEnvContribution } from '@visactor/vrender-core';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '@visactor/vrender-core';\nimport {\n createCanvasWithFactory,\n getMiniAppCanvasOptions,\n type MiniAppCanvasEnvParams,\n wrapMiniAppContextCanvas\n} from './miniapp-canvas';\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\ntype TaroEnvParams = MiniAppCanvasEnvParams & {\n taro?: ITaro;\n};\n\nconst TARO_CANVAS_BRIDGE_ERROR =\n 'Taro canvas bridge is unavailable. VRender taro env requires envParams.canvasFactory, ' +\n 'a Stage canvas object, or envParams.taro.createCanvasContext(id).';\n\nexport class TaroEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'taro';\n supportEvent: boolean = true;\n canvasMap: Map<string, ITTCanvas> = new Map();\n taro: ITaro;\n pixelRatio: number = 1;\n private taroEnvParams: TaroEnvParams = {};\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 0;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 9999;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n\n configure(service: IGlobal, params: TaroEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.taroEnvParams = params;\n this.taro = params.taro;\n this.pixelRatio = params.pixelRatio ?? 1;\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 = typeof window !== 'undefined' ? 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 const envParams = this.taroEnvParams;\n const dpr = params.dpr ?? this.getDevicePixelRatio();\n const factoryCanvas = createCanvasWithFactory(params, dpr, this.canvasMap, envParams.canvasFactory);\n if (factoryCanvas) {\n return factoryCanvas;\n }\n\n const options = getMiniAppCanvasOptions(params, dpr, false);\n if (options.id == null || typeof envParams.taro?.createCanvasContext !== 'function') {\n throw new Error(TARO_CANVAS_BRIDGE_ERROR);\n }\n\n const canvas = wrapMiniAppContextCanvas(envParams.taro.createCanvasContext(options.id), options);\n this.canvasMap.set(options.id, canvas);\n return canvas;\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,18 +1,23 @@
1
1
  import { BaseEnvContribution } from '@visactor/vrender-core';
2
2
  import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ITTCanvas } from '@visactor/vrender-core';
3
+ import { type MiniAppCanvasEnvParams } from './miniapp-canvas';
4
+ declare const tt: {
5
+ getSystemInfoSync?: () => {
6
+ pixelRatio: number;
7
+ };
8
+ createCanvasContext?: (id: string) => any;
9
+ };
10
+ type TTEnvParams = MiniAppCanvasEnvParams & {
11
+ tt?: typeof tt;
12
+ runtime?: typeof tt;
13
+ };
3
14
  export declare class TTEnvContribution extends BaseEnvContribution implements IEnvContribution {
4
15
  type: EnvType;
5
16
  supportEvent: boolean;
6
17
  canvasMap: Map<string, ITTCanvas>;
7
- freeCanvasList: ITTCanvas[];
8
- canvasIdx: number;
18
+ private ttEnvParams;
9
19
  constructor();
10
- configure(service: IGlobal, params: {
11
- domref: any;
12
- canvasIdLists: string[];
13
- freeCanvasIdx: number;
14
- component: any;
15
- }): Promise<void>;
20
+ configure(service: IGlobal, params?: TTEnvParams): void;
16
21
  loadImage(url: string): Promise<{
17
22
  loadState: 'success' | 'fail';
18
23
  data: HTMLImageElement | ImageData | null;
@@ -38,3 +43,4 @@ export declare class TTEnvContribution extends BaseEnvContribution implements IE
38
43
  release(...params: any): void;
39
44
  mapToCanvasPoint(event: any): any;
40
45
  }
46
+ export {};