@visactor/vrender-kits 1.1.0-alpha.20 → 1.1.0-alpha.22

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 (98) hide show
  1. package/cjs/env/contributions/lynx-contribution.d.ts +39 -10
  2. package/cjs/env/contributions/lynx-contribution.js +136 -25
  3. package/cjs/env/contributions/lynx-contribution.js.map +1 -1
  4. package/cjs/env/contributions/node-contribution.d.ts +2 -2
  5. package/cjs/env/contributions/node-contribution.js +8 -3
  6. package/cjs/env/contributions/node-contribution.js.map +1 -1
  7. package/cjs/env/contributions/wx-contribution.d.ts +1 -2
  8. package/cjs/env/contributions/wx-contribution.js +4 -1
  9. package/cjs/env/contributions/wx-contribution.js.map +1 -1
  10. package/cjs/env/feishu.js +2 -3
  11. package/cjs/env/feishu.js.map +1 -1
  12. package/cjs/env/harmony.js +2 -3
  13. package/cjs/env/harmony.js.map +1 -1
  14. package/cjs/env/lynx.js +2 -3
  15. package/cjs/env/lynx.js.map +1 -1
  16. package/cjs/env/taro.js +2 -3
  17. package/cjs/env/taro.js.map +1 -1
  18. package/cjs/env/tt.js +2 -3
  19. package/cjs/env/tt.js.map +1 -1
  20. package/cjs/env/wx.js +2 -3
  21. package/cjs/env/wx.js.map +1 -1
  22. package/cjs/index-node.d.ts +1 -1
  23. package/cjs/index-node.js +36 -1
  24. package/cjs/index-node.js.map +1 -1
  25. package/cjs/index.d.ts +1 -1
  26. package/cjs/index.js +36 -1
  27. package/cjs/index.js.map +1 -1
  28. package/cjs/installers/app.d.ts +10 -3
  29. package/cjs/installers/app.js +90 -12
  30. package/cjs/installers/app.js.map +1 -1
  31. package/cjs/register/register-arc.js +2 -1
  32. package/cjs/register/register-arc3d.js +1 -2
  33. package/cjs/register/register-star.js +2 -1
  34. package/cjs/register/register-symbol.js +1 -2
  35. package/cjs/window/contributions/feishu-contribution.js +4 -6
  36. package/cjs/window/contributions/feishu-contribution.js.map +1 -1
  37. package/cjs/window/contributions/harmony-contribution.js +4 -6
  38. package/cjs/window/contributions/harmony-contribution.js.map +1 -1
  39. package/cjs/window/contributions/lynx-contribution.d.ts +1 -2
  40. package/cjs/window/contributions/lynx-contribution.js +67 -15
  41. package/cjs/window/contributions/lynx-contribution.js.map +1 -1
  42. package/cjs/window/contributions/taro-contribution.js +4 -6
  43. package/cjs/window/contributions/taro-contribution.js.map +1 -1
  44. package/cjs/window/contributions/tt-contribution.js +4 -6
  45. package/cjs/window/contributions/tt-contribution.js.map +1 -1
  46. package/cjs/window/contributions/wx-contribution.d.ts +1 -2
  47. package/cjs/window/contributions/wx-contribution.js +27 -15
  48. package/cjs/window/contributions/wx-contribution.js.map +1 -1
  49. package/dist/index.es.js +4871 -4571
  50. package/es/env/contributions/lynx-contribution.d.ts +39 -10
  51. package/es/env/contributions/lynx-contribution.js +137 -24
  52. package/es/env/contributions/lynx-contribution.js.map +1 -1
  53. package/es/env/contributions/node-contribution.d.ts +2 -2
  54. package/es/env/contributions/node-contribution.js +8 -3
  55. package/es/env/contributions/node-contribution.js.map +1 -1
  56. package/es/env/contributions/wx-contribution.d.ts +1 -2
  57. package/es/env/contributions/wx-contribution.js +4 -1
  58. package/es/env/contributions/wx-contribution.js.map +1 -1
  59. package/es/env/feishu.js +2 -3
  60. package/es/env/feishu.js.map +1 -1
  61. package/es/env/harmony.js +2 -3
  62. package/es/env/harmony.js.map +1 -1
  63. package/es/env/lynx.js +2 -3
  64. package/es/env/lynx.js.map +1 -1
  65. package/es/env/taro.js +2 -3
  66. package/es/env/taro.js.map +1 -1
  67. package/es/env/tt.js +2 -3
  68. package/es/env/tt.js.map +1 -1
  69. package/es/env/wx.js +2 -3
  70. package/es/env/wx.js.map +1 -1
  71. package/es/index-node.d.ts +1 -1
  72. package/es/index-node.js +1 -1
  73. package/es/index-node.js.map +1 -1
  74. package/es/index.d.ts +1 -1
  75. package/es/index.js +1 -1
  76. package/es/index.js.map +1 -1
  77. package/es/installers/app.d.ts +10 -3
  78. package/es/installers/app.js +120 -8
  79. package/es/installers/app.js.map +1 -1
  80. package/es/register/register-arc.js +2 -1
  81. package/es/register/register-arc3d.js +1 -2
  82. package/es/register/register-star.js +2 -1
  83. package/es/register/register-symbol.js +1 -2
  84. package/es/window/contributions/feishu-contribution.js +3 -4
  85. package/es/window/contributions/feishu-contribution.js.map +1 -1
  86. package/es/window/contributions/harmony-contribution.js +3 -4
  87. package/es/window/contributions/harmony-contribution.js.map +1 -1
  88. package/es/window/contributions/lynx-contribution.d.ts +1 -2
  89. package/es/window/contributions/lynx-contribution.js +65 -14
  90. package/es/window/contributions/lynx-contribution.js.map +1 -1
  91. package/es/window/contributions/taro-contribution.js +3 -4
  92. package/es/window/contributions/taro-contribution.js.map +1 -1
  93. package/es/window/contributions/tt-contribution.js +3 -4
  94. package/es/window/contributions/tt-contribution.js.map +1 -1
  95. package/es/window/contributions/wx-contribution.d.ts +1 -2
  96. package/es/window/contributions/wx-contribution.js +25 -14
  97. package/es/window/contributions/wx-contribution.js.map +1 -1
  98. package/package.json +4 -4
@@ -1,20 +1,48 @@
1
- import { BaseEnvContribution } from '@visactor/vrender-core';
2
- import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ILynxCanvas } from '@visactor/vrender-core';
3
- export declare function createImageElement(src: string, isSvg?: boolean): Promise<HTMLImageElement>;
1
+ import { BaseEnvContribution, type EnvType, type ICanvasLike, type ICreateCanvasParams, type IEnvContribution, type IGlobal, type ILynxCanvas } from '@visactor/vrender-core';
2
+ type LynxKryptonRuntime = Partial<{
3
+ createCanvas: (id: string) => any;
4
+ createCanvasNG: () => any;
5
+ CanvasElement: new (name: string) => any;
6
+ }>;
7
+ type LynxRuntime = Partial<{
8
+ getSystemInfoSync: () => {
9
+ pixelRatio?: number;
10
+ };
11
+ createCanvas: (id: string) => any;
12
+ createCanvasNG: (id?: string) => any;
13
+ createImage: (id: string) => any;
14
+ createOffscreenCanvas: () => any;
15
+ krypton: LynxKryptonRuntime;
16
+ }>;
17
+ type LynxCanvasFactoryOptions = {
18
+ id: string;
19
+ width: number;
20
+ height: number;
21
+ dpr: number;
22
+ offscreen: boolean;
23
+ };
24
+ type LynxCanvasFactory = (options: LynxCanvasFactoryOptions) => any;
25
+ type LynxEnvParams = {
26
+ domref?: any;
27
+ canvasIdLists?: string[];
28
+ freeCanvasIdx?: number;
29
+ offscreen?: boolean;
30
+ pixelRatio?: number;
31
+ lynx?: LynxRuntime;
32
+ runtime?: LynxRuntime;
33
+ canvasFactory?: LynxCanvasFactory;
34
+ };
35
+ export declare function createImageElement(src: string, isSvg?: boolean, runtime?: LynxRuntime | undefined): Promise<HTMLImageElement>;
4
36
  export declare class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {
5
37
  type: EnvType;
6
38
  supportEvent: boolean;
7
39
  canvasMap: Map<string, ILynxCanvas>;
8
40
  freeCanvasList: ILynxCanvas[];
9
41
  canvasIdx: number;
42
+ private lynxRuntime?;
43
+ private lynxEnvParams?;
10
44
  constructor();
11
- configure(service: IGlobal, params: {
12
- domref: any;
13
- canvasIdLists: string[];
14
- freeCanvasIdx: number;
15
- offscreen?: boolean;
16
- pixelRatio?: number;
17
- }): void;
45
+ configure(service: IGlobal, params?: LynxEnvParams): void;
18
46
  getDynamicCanvasCount(): number;
19
47
  getStaticCanvasCount(): number;
20
48
  loadImage(url: string): Promise<{
@@ -42,3 +70,4 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
42
70
  getDocument(): Document | null;
43
71
  release(...params: any): void;
44
72
  }
73
+ export {};
@@ -4,33 +4,132 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.LynxEnvContribution = exports.createImageElement = void 0;
6
6
 
7
- const vrender_core_1 = require("@visactor/vrender-core"), canvas_wrap_1 = require("./canvas-wrap");
7
+ const vrender_core_1 = require("@visactor/vrender-core"), canvas_wrap_1 = require("./canvas-wrap"), 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.";
8
8
 
9
- let ng = !1;
9
+ function isValidCoordinate(value) {
10
+ return "number" == typeof value && Number.isFinite(value);
11
+ }
12
+
13
+ function pickCoordinate(...values) {
14
+ for (let i = 0; i < values.length; i++) if (isValidCoordinate(values[i])) return values[i];
15
+ }
16
+
17
+ function getPrimaryTouch(event) {
18
+ var _a, _b, _c;
19
+ 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];
20
+ }
10
21
 
11
- try {
12
- ng = !!lynx.createCanvasNG;
13
- } catch (err) {}
22
+ function getLynxEventPoint(event) {
23
+ 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);
24
+ return null == x || null == y ? null : {
25
+ x: x,
26
+ y: y
27
+ };
28
+ }
14
29
 
15
- function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList, offscreen, pixelRatio) {
16
- const dpr = null != pixelRatio ? pixelRatio : SystemInfo.pixelRatio;
30
+ function getGlobalLynxRuntime() {
31
+ try {
32
+ return "undefined" != typeof lynx ? lynx : void 0;
33
+ } catch (err) {
34
+ return;
35
+ }
36
+ }
37
+
38
+ function getGlobalSystemPixelRatio() {
39
+ try {
40
+ return "undefined" != typeof SystemInfo ? SystemInfo.pixelRatio : void 0;
41
+ } catch (err) {
42
+ return;
43
+ }
44
+ }
45
+
46
+ function getLynxRuntime(params) {
47
+ var _a, _b;
48
+ 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();
49
+ }
50
+
51
+ function getLynxPixelRatio(params, runtime) {
52
+ var _a, _b, _c, _d, _e;
53
+ 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;
54
+ }
55
+
56
+ function attachLynxCanvasToView(canvas, id) {
57
+ var _a;
58
+ return null === (_a = null == canvas ? void 0 : canvas.attachToCanvasView) || void 0 === _a || _a.call(canvas, id),
59
+ canvas;
60
+ }
61
+
62
+ function createBoundLynxCanvas(id, runtime) {
63
+ var _a, _b, _c;
64
+ if ("function" == typeof (null === (_a = null == runtime ? void 0 : runtime.krypton) || void 0 === _a ? void 0 : _a.createCanvas)) {
65
+ const canvas = runtime.krypton.createCanvas(id);
66
+ if (canvas) return canvas;
67
+ }
68
+ if ("function" == typeof (null == runtime ? void 0 : runtime.createCanvasNG)) {
69
+ const canvas = runtime.createCanvasNG(id);
70
+ if (canvas) return attachLynxCanvasToView(canvas, id);
71
+ }
72
+ if ("function" == typeof (null === (_b = null == runtime ? void 0 : runtime.krypton) || void 0 === _b ? void 0 : _b.createCanvasNG)) {
73
+ const canvas = runtime.krypton.createCanvasNG();
74
+ if (canvas) return attachLynxCanvasToView(canvas, id);
75
+ }
76
+ if ("function" == typeof (null === (_c = null == runtime ? void 0 : runtime.krypton) || void 0 === _c ? void 0 : _c.CanvasElement)) return new runtime.krypton.CanvasElement(id);
77
+ if ("function" == typeof (null == runtime ? void 0 : runtime.createCanvas)) {
78
+ const canvas = runtime.createCanvas(id);
79
+ if (canvas) return canvas;
80
+ }
81
+ return null;
82
+ }
83
+
84
+ function getCanvasSize(domref, width, height) {
85
+ const resolvedWidth = null != width ? width : null == domref ? void 0 : domref.width, resolvedHeight = null != height ? height : null == domref ? void 0 : domref.height;
86
+ if (!isValidCoordinate(resolvedWidth) || !isValidCoordinate(resolvedHeight)) throw new Error(LYNX_CANVAS_SIZE_ERROR);
87
+ return {
88
+ width: resolvedWidth,
89
+ height: resolvedHeight
90
+ };
91
+ }
92
+
93
+ function wrapLynxNativeCanvas(nativeCanvas, id, width, height, dpr) {
94
+ nativeCanvas.width = width * dpr, nativeCanvas.height = height * dpr;
95
+ const ctx = nativeCanvas.getContext("2d");
96
+ return new canvas_wrap_1.CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);
97
+ }
98
+
99
+ function createLynxNativeCanvas(id, width, height, dpr, offscreen, params, runtime) {
100
+ if (params.canvasFactory) return params.canvasFactory({
101
+ id: id,
102
+ width: width,
103
+ height: height,
104
+ dpr: dpr,
105
+ offscreen: offscreen
106
+ });
107
+ if (offscreen) {
108
+ if ("function" == typeof (null == runtime ? void 0 : runtime.createOffscreenCanvas)) return runtime.createOffscreenCanvas();
109
+ } else {
110
+ const canvas = createBoundLynxCanvas(id, runtime);
111
+ if (canvas) return canvas;
112
+ }
113
+ throw new Error(LYNX_CANVAS_BRIDGE_ERROR);
114
+ }
115
+
116
+ function makeUpCanvas(params = {}, canvasMap, freeCanvasList) {
117
+ const runtime = getLynxRuntime(params), {domref: domref, canvasIdLists: canvasIdLists = [], freeCanvasIdx: freeCanvasIdx = 0} = params, offscreen = !!params.offscreen, dpr = getLynxPixelRatio(params, runtime);
17
118
  if (canvasIdLists.forEach(((id, i) => {
18
- let _canvas;
19
- offscreen ? _canvas = lynx.createOffscreenCanvas() : (_canvas = ng ? lynx.createCanvasNG(id) : lynx.createCanvas(id),
20
- ng && _canvas.attachToCanvasView(id)), _canvas.width = domref.width * dpr, _canvas.height = domref.height * dpr;
21
- const ctx = _canvas.getContext("2d"), canvas = new canvas_wrap_1.CanvasWrapEnableWH(_canvas, ctx, dpr, domref.width, domref.height, id);
119
+ const size = getCanvasSize(domref), canvas = wrapLynxNativeCanvas(createLynxNativeCanvas(id, size.width, size.height, dpr, offscreen, params, runtime), id, size.width, size.height, dpr);
22
120
  canvasMap.set(id, canvas), i > freeCanvasIdx && freeCanvasList.push(canvas);
23
- })), !freeCanvasList.length && lynx.createOffscreenCanvas) {
24
- const _canvas = lynx.createOffscreenCanvas();
25
- _canvas.width = domref.width * dpr, _canvas.height = domref.height * dpr;
26
- const ctx = _canvas.getContext("2d"), id = Math.random().toString(), canvas = new canvas_wrap_1.CanvasWrapEnableWH(_canvas, ctx, dpr, domref.width, domref.height, id);
121
+ })), !freeCanvasList.length && domref && "function" == typeof (null == runtime ? void 0 : runtime.createOffscreenCanvas)) {
122
+ const size = getCanvasSize(domref), _canvas = runtime.createOffscreenCanvas();
123
+ _canvas.width = size.width * dpr, _canvas.height = size.height * dpr;
124
+ const ctx = _canvas.getContext("2d"), id = Math.random().toString(), canvas = new canvas_wrap_1.CanvasWrapEnableWH(_canvas, ctx, dpr, size.width, size.height, id);
27
125
  canvasMap.set(id, canvas), freeCanvasList.push(canvas);
28
126
  }
29
127
  }
30
128
 
31
- function createImageElement(src, isSvg = !1) {
129
+ function createImageElement(src, isSvg = !1, runtime = getGlobalLynxRuntime()) {
32
130
  if (isSvg) return Promise.reject();
33
- const img = lynx.createImage(src);
131
+ if ("function" != typeof (null == runtime ? void 0 : runtime.createImage)) return Promise.reject(new Error("Lynx image bridge is unavailable."));
132
+ const img = runtime.createImage(src);
34
133
  return new Promise(((resolve, reject) => {
35
134
  img.onload = () => {
36
135
  resolve(img);
@@ -53,8 +152,9 @@ class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
53
152
  }
54
153
  this.applyStyles = !0;
55
154
  }
56
- configure(service, params) {
57
- service.env === this.type && (service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, !!params.offscreen, params.pixelRatio));
155
+ configure(service, params = {}) {
156
+ service.env === this.type && (service.setActiveEnvContribution(this), this.lynxEnvParams = params,
157
+ this.lynxRuntime = getLynxRuntime(params), makeUpCanvas(params, this.canvasMap, this.freeCanvasList));
58
158
  }
59
159
  getDynamicCanvasCount() {
60
160
  return this.freeCanvasList.length;
@@ -63,7 +163,7 @@ class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
63
163
  return 9999;
64
164
  }
65
165
  loadImage(url) {
66
- return createImageElement(url, !1).then((img => ({
166
+ return createImageElement(url, !1, this.lynxRuntime).then((img => ({
67
167
  data: img,
68
168
  loadState: "success"
69
169
  }))).catch((() => ({
@@ -72,16 +172,28 @@ class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
72
172
  })));
73
173
  }
74
174
  loadSvg(url) {
75
- return Promise.reject();
175
+ return Promise.resolve({
176
+ data: null,
177
+ loadState: "fail"
178
+ });
76
179
  }
77
180
  createCanvas(params) {
181
+ var _a, _b, _c, _d;
182
+ if (null != params.id) {
183
+ const id = String(params.id), existing = this.canvasMap.get(id);
184
+ if (existing) return existing;
185
+ 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(envParams.domref, params.width, params.height), canvas = wrapLynxNativeCanvas(createLynxNativeCanvas(id, size.width, size.height, dpr, !1, envParams, runtime), id, size.width, size.height, dpr);
186
+ return this.canvasMap.set(id, canvas), canvas;
187
+ }
78
188
  const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
79
- return this.canvasIdx++, result;
189
+ if (this.canvasIdx++, result) return result;
190
+ 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(envParams.domref, 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);
191
+ return this.canvasMap.set(id, canvas), this.freeCanvasList.push(canvas), canvas;
80
192
  }
81
193
  createOffscreenCanvas(params) {}
82
194
  releaseCanvas(canvas) {}
83
195
  getDevicePixelRatio() {
84
- return SystemInfo.pixelRatio;
196
+ return getLynxPixelRatio(void 0, this.lynxRuntime);
85
197
  }
86
198
  getRequestAnimationFrame() {
87
199
  return function(callback) {
@@ -95,8 +207,7 @@ class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
95
207
  }
96
208
  mapToCanvasPoint(event) {
97
209
  var _a;
98
- return null === (_a = null == event ? void 0 : event.type) || void 0 === _a || _a.startsWith("mouse"),
99
- event;
210
+ return null !== (_a = getLynxEventPoint(event)) && void 0 !== _a ? _a : event;
100
211
  }
101
212
  addEventListener(type, listener, options) {
102
213
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/lynx-contribution.ts"],"names":[],"mappings":";;;AAAA,yDAA0E;AAU1E,+CAAmD;AAanD,IAAI,EAAE,GAAG,KAAK,CAAC;AACf,IAAI;IACF,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;CAC5B;AAAC,OAAO,GAAG,EAAE;CAEb;AAGD,SAAS,YAAY,CACnB,MAAW,EACX,aAAuB,EACvB,SAAmC,EACnC,aAAqB,EACrB,cAA6B,EAC7B,SAAkB,EAClB,UAAmB;IAEnB,MAAM,GAAG,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,UAAU,CAAC,UAAU,CAAC;IAEhD,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC9B,IAAI,OAAO,CAAC;QACZ,IAAI,SAAS,EAAE;YACb,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACxC;aAAM;YACL,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC/D,EAAE,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;SACtC;QAED,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;QACnC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;QAErC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAOrC,MAAM,MAAM,GAAG,IAAI,gCAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE1F,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,aAAa,EAAE;YACrB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;QACnC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,gCAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1F,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1B,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7B;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,GAAW,EAAE,QAAiB,KAAK;IACpE,IAAI,KAAK,EAAE;QACT,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;KACzB;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAIlC,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;AAjBD,gDAiBC;AAED,MAAa,mBAAoB,SAAQ,kCAAmB;IAS1D;QACE,KAAK,EAAE,CAAC;QATV,SAAI,GAAY,MAAM,CAAC;QACvB,iBAAY,GAAY,IAAI,CAAC;QAE7B,cAAS,GAA6B,IAAI,GAAG,EAAE,CAAC;QAEhD,mBAAc,GAAkB,EAAE,CAAC;QACnC,cAAS,GAAW,CAAC,CAAC;QAIpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI;YACF,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;YACvD,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;SACpD;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAID,SAAS,CACP,OAAgB,EAChB,MAAiH;QAEjH,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACvC,YAAY,CACV,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,aAAa,EACpB,IAAI,CAAC,SAAS,EACd,MAAM,CAAC,aAAa,EACpB,IAAI,CAAC,cAAc,EACnB,CAAC,CAAC,MAAM,CAAC,SAAS,EAClB,MAAM,CAAC,UAAU,CAClB,CAAC;SAGH;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,CAAC,CAAC;QACpD,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,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,MAA2B;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,MAA2B;QAC/C,OAAO;IACT,CAAC;IAED,aAAa,CAAC,MAA4B;QACxC,OAAO;IACT,CAAC;IAED,mBAAmB;QACjB,OAAO,UAAU,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,wBAAwB;QAStB,OAAO,UAAU,QAA8B;YAC7C,OAAO,0BAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAQ,CAAC;IACX,CAAC;IAED,uBAAuB;QACrB,OAAO,CAAC,CAAS,EAAE,EAAE;YACnB,0BAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,KAAU;;QACzB,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YACpC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,KAAK,CAAC;IACf,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;AAlLD,kDAkLC","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":"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","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 domref?: any;\n canvasIdLists?: string[];\n freeCanvasIdx?: number;\n offscreen?: boolean;\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(domref: any, width?: number, height?: number) {\n const resolvedWidth = width ?? domref?.width;\n const resolvedHeight = height ?? domref?.height;\n if (!isValidCoordinate(resolvedWidth) || !isValidCoordinate(resolvedHeight)) {\n throw new Error(LYNX_CANVAS_SIZE_ERROR);\n }\n return { width: resolvedWidth, height: resolvedHeight };\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\n// 飞书小程序canvas的wrap\nfunction makeUpCanvas(params: LynxEnvParams = {}, canvasMap: Map<string, ILynxCanvas>, freeCanvasList: ILynxCanvas[]) {\n const runtime = getLynxRuntime(params);\n const { domref, canvasIdLists = [], freeCanvasIdx = 0 } = params;\n const offscreen = !!params.offscreen;\n const dpr = getLynxPixelRatio(params, runtime);\n\n canvasIdLists.forEach((id, i) => {\n const size = getCanvasSize(domref);\n const _canvas = createLynxNativeCanvas(id, size.width, size.height, dpr, offscreen, params, runtime);\n\n // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: size.width * dpr,\n // height: size.height * dpr\n // };\n\n const canvas = wrapLynxNativeCanvas(_canvas, id, size.width, size.height, dpr);\n\n canvasMap.set(id, canvas);\n if (i > freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n });\n\n if (!freeCanvasList.length && domref && typeof runtime?.createOffscreenCanvas === 'function') {\n const size = getCanvasSize(domref);\n const _canvas = runtime.createOffscreenCanvas();\n _canvas.width = size.width * dpr;\n _canvas.height = size.height * dpr;\n const ctx = _canvas.getContext('2d');\n\n const id = Math.random().toString();\n const canvas = new CanvasWrapEnableWH(_canvas, ctx, dpr, size.width, size.height, id);\n canvasMap.set(id, canvas);\n freeCanvasList.push(canvas);\n }\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 makeUpCanvas(params, this.canvasMap, this.freeCanvasList);\n\n // loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 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(envParams.domref, 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(envParams.domref, 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"]}
@@ -1,5 +1,4 @@
1
- import { BaseEnvContribution } from '@visactor/vrender-core';
2
- import type { EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '@visactor/vrender-core';
1
+ import { BaseEnvContribution, type EnvType, type ICreateCanvasParams, type IEnvContribution, type IGlobal } from '@visactor/vrender-core';
3
2
  type Canvas = any;
4
3
  type NodePkg = {
5
4
  createCanvas: (width: number, height: number, type?: 'pdf' | 'svg') => Canvas;
@@ -13,6 +12,7 @@ export declare class NodeEnvContribution extends BaseEnvContribution implements
13
12
  _lastTime: number;
14
13
  supportEvent: boolean;
15
14
  configure(service: IGlobal, pkg: NodePkg): void;
15
+ private getNodePackage;
16
16
  getDynamicCanvasCount(): number;
17
17
  getStaticCanvasCount(): number;
18
18
  loadJson(url: string): Promise<{
@@ -13,6 +13,10 @@ class NodeEnvContribution extends vrender_core_1.BaseEnvContribution {
13
13
  configure(service, pkg) {
14
14
  service.env === this.type && (service.setActiveEnvContribution(this), this.pkg = pkg);
15
15
  }
16
+ getNodePackage(feature, requiredKey) {
17
+ if (!this.pkg || requiredKey && "function" != typeof this.pkg[requiredKey]) throw new Error(`Node env requires node-canvas package before ${feature}. Use vglobal.setEnv('node', CanvasPkg) before createNodeVRenderApp(), or createNodeVRenderApp({ envParams: CanvasPkg }).`);
18
+ return this.pkg;
19
+ }
16
20
  getDynamicCanvasCount() {
17
21
  return 0;
18
22
  }
@@ -39,7 +43,7 @@ class NodeEnvContribution extends vrender_core_1.BaseEnvContribution {
39
43
  })));
40
44
  }
41
45
  loadImage(url) {
42
- const {loadImage: loadImage} = this.pkg;
46
+ const {loadImage: loadImage} = this.getNodePackage("loadImage", "loadImage");
43
47
  return loadImage ? loadImage(url).then((image => ({
44
48
  loadState: image ? "success" : "fail",
45
49
  data: image
@@ -49,13 +53,14 @@ class NodeEnvContribution extends vrender_core_1.BaseEnvContribution {
49
53
  }))) : Promise.reject(new Error("node-canvas loadImage could not be found!"));
50
54
  }
51
55
  loadSvg(svgStr) {
52
- const Resvg = this.pkg.Resvg;
56
+ const Resvg = this.getNodePackage("loadSvg").Resvg;
53
57
  if (!Resvg) return Promise.reject(new Error("@resvg/resvg-js svgParser could not be found!"));
54
58
  const pngData = new Resvg(svgStr).render().asPng();
55
59
  return this.loadImage(pngData);
56
60
  }
57
61
  createCanvas(params) {
58
- return this.pkg.createCanvas(params.width, params.height);
62
+ const {createCanvas: createCanvas} = this.getNodePackage("createCanvas", "createCanvas");
63
+ return createCanvas(params.width, params.height);
59
64
  }
60
65
  releaseCanvas(canvas) {}
61
66
  getDevicePixelRatio() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/node-contribution.ts"],"names":[],"mappings":"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","file":"node-contribution.js","sourcesContent":["import { BaseEnvContribution, rafBasedSto } from '@visactor/vrender-core';\n// import { loadTaroContributions } from '../../../kits';\nimport type { EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '@visactor/vrender-core';\n\ntype Canvas = any;\n\ntype NodePkg = {\n createCanvas: (width: number, height: number, type?: 'pdf' | 'svg') => Canvas;\n createImageData: (data: Uint8ClampedArray, width: number, height?: number) => ImageData;\n loadImage: (src: string | any, options?: any) => Promise<any>;\n Resvg?: any;\n};\n\n// let last = 0;\n// function nodeRequestAnimationFrame(callback: FrameRequestCallback) {\n// const now = Date.now();\n// const timeLeft = Math.max(0, 16 - (now - last));\n// const id = setTimeout(function () {\n// callback(now + timeLeft);\n// }, timeLeft);\n// last = now + timeLeft;\n// return id;\n// }\n\nexport class NodeEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'node';\n pkg: NodePkg;\n _lastTime: number = 0;\n supportEvent: boolean = false;\n\n configure(service: IGlobal, pkg: NodePkg) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.pkg = pkg;\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 0;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 999;\n }\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json()) as Promise<any>; // ignore_security_alert\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer()); // ignore_security_alert\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n const { loadImage } = this.pkg;\n if (loadImage) {\n return loadImage(url)\n .then((image: any) => {\n const loadState: 'success' | 'fail' = image ? 'success' : 'fail';\n return {\n loadState,\n data: image as HTMLImageElement\n };\n })\n .catch(() => {\n return {\n loadState: 'fail',\n data: null\n } as any;\n });\n }\n return Promise.reject(new Error('node-canvas loadImage could not be found!'));\n }\n\n // 此处的\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n // // eslint-disable-next-line @typescript-eslint/no-var-requires\n // const { Resvg } = require('@resvg/resvg-js');\n const Resvg = this.pkg.Resvg;\n if (!Resvg) {\n return Promise.reject(new Error('@resvg/resvg-js svgParser could not be found!'));\n }\n const resvg = new Resvg(svgStr);\n const pngData = resvg.render().asPng();\n return this.loadImage(pngData as unknown as string);\n }\n\n createCanvas(params: any): Canvas {\n const canvas = this.pkg.createCanvas(params.width, params.height);\n return canvas;\n }\n\n releaseCanvas(canvas: Canvas | any) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return 1;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n getElementById(str: string): HTMLElement | null {\n return null;\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return;\n }\n\n release(...params: any): void {\n return;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/env/contributions/node-contribution.ts"],"names":[],"mappings":"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","file":"node-contribution.js","sourcesContent":["import {\n BaseEnvContribution,\n rafBasedSto,\n type EnvType,\n type ICreateCanvasParams,\n type IEnvContribution,\n type IGlobal\n} from '@visactor/vrender-core';\n// import { loadTaroContributions } from '../../../kits';\n\ntype Canvas = any;\n\ntype NodePkg = {\n createCanvas: (width: number, height: number, type?: 'pdf' | 'svg') => Canvas;\n createImageData: (data: Uint8ClampedArray, width: number, height?: number) => ImageData;\n loadImage: (src: string | any, options?: any) => Promise<any>;\n Resvg?: any;\n};\n\n// let last = 0;\n// function nodeRequestAnimationFrame(callback: FrameRequestCallback) {\n// const now = Date.now();\n// const timeLeft = Math.max(0, 16 - (now - last));\n// const id = setTimeout(function () {\n// callback(now + timeLeft);\n// }, timeLeft);\n// last = now + timeLeft;\n// return id;\n// }\n\nexport class NodeEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'node';\n pkg: NodePkg;\n _lastTime: number = 0;\n supportEvent: boolean = false;\n\n configure(service: IGlobal, pkg: NodePkg) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.pkg = pkg;\n }\n }\n\n private getNodePackage(feature: string, requiredKey?: keyof NodePkg): NodePkg {\n if (!this.pkg || (requiredKey && typeof this.pkg[requiredKey] !== 'function')) {\n throw new Error(\n `Node env requires node-canvas package before ${feature}. ` +\n `Use vglobal.setEnv('node', CanvasPkg) before createNodeVRenderApp(), ` +\n `or createNodeVRenderApp({ envParams: CanvasPkg }).`\n );\n }\n return this.pkg;\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 999;\n }\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json()) as Promise<any>; // ignore_security_alert\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer()); // ignore_security_alert\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n const { loadImage } = this.getNodePackage('loadImage', 'loadImage');\n if (loadImage) {\n return loadImage(url)\n .then((image: any) => {\n const loadState: 'success' | 'fail' = image ? 'success' : 'fail';\n return {\n loadState,\n data: image as HTMLImageElement\n };\n })\n .catch(() => {\n return {\n loadState: 'fail',\n data: null\n } as any;\n });\n }\n return Promise.reject(new Error('node-canvas loadImage could not be found!'));\n }\n\n // 此处的\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n // // eslint-disable-next-line @typescript-eslint/no-var-requires\n // const { Resvg } = require('@resvg/resvg-js');\n const Resvg = this.getNodePackage('loadSvg').Resvg;\n if (!Resvg) {\n return Promise.reject(new Error('@resvg/resvg-js svgParser could not be found!'));\n }\n const resvg = new Resvg(svgStr);\n const pngData = resvg.render().asPng();\n return this.loadImage(pngData as unknown as string);\n }\n\n createCanvas(params: any): Canvas {\n const { createCanvas } = this.getNodePackage('createCanvas', 'createCanvas');\n const canvas = createCanvas(params.width, params.height);\n return canvas;\n }\n\n releaseCanvas(canvas: Canvas | any) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return 1;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n getElementById(str: string): HTMLElement | null {\n return null;\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return;\n }\n\n release(...params: any): void {\n return;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
- import { BaseEnvContribution } from '@visactor/vrender-core';
2
- import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ITTCanvas } from '@visactor/vrender-core';
1
+ import { BaseEnvContribution, type ICanvasLike, type EnvType, type ICreateCanvasParams, type IEnvContribution, type IGlobal, type ITTCanvas } from '@visactor/vrender-core';
3
2
  export declare class WxEnvContribution extends BaseEnvContribution implements IEnvContribution {
4
3
  type: EnvType;
5
4
  supportEvent: boolean;
@@ -74,7 +74,10 @@ class WxEnvContribution extends vrender_core_1.BaseEnvContribution {
74
74
  });
75
75
  }
76
76
  loadSvg(url) {
77
- return Promise.reject();
77
+ return Promise.resolve({
78
+ data: null,
79
+ loadState: "fail"
80
+ });
78
81
  }
79
82
  createCanvas(params) {
80
83
  const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/contributions/wx-contribution.ts"],"names":[],"mappings":"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","file":"wx-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 ITTCanvas\n} from '@visactor/vrender-core';\n\ndeclare const wx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvasContext: (id: string) => any;\n createSelectorQuery: () => any;\n};\n\n// 飞书小程序canvas的wrap\nasync function makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n component: any,\n forceUpdate?: boolean\n) {\n const dpr = wx.getSystemInfoSync().pixelRatio;\n\n for (let i = 0; i < canvasIdLists.length; i++) {\n const id = canvasIdLists[i];\n if (!forceUpdate && canvasMap.has(id)) {\n continue;\n }\n await new Promise(resolve => {\n let data = wx.createSelectorQuery();\n if (component) {\n data = data.in(component);\n }\n // @ts-ignore\n data\n .select(`#${id}`) // 在 WXML 中填入的 id\n .fields({ node: true, size: true })\n .exec((res: any) => {\n if (!res[0]) {\n return;\n }\n const canvas = res[0].node;\n const width = res[0].width;\n const height = res[0].height;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n resolve(null);\n });\n });\n }\n\n // canvasIdLists.forEach((id, i) => {\n // const ctx = wx.createCanvasContext(id);\n // // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n // // 放到内容里\n // // // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n // // ctx.createRadialGradient = (...cc) => ctx.createCircularGradient(...cc);\n\n // // // 封装 getImageData 为 promise\n // // ctx.getImageData = (x, y, width, height) =>\n // // new Promise((resolve, reject) => {\n // // try {\n // // tt.canvasGetImageData({\n // // canvasId: item.id,\n // // x,\n // // y,\n // // width,\n // // height,\n // // success(res) {\n // // resolve(res);\n // // },\n // // });\n // // } catch (err) {\n // // reject(err);\n // // }\n // // });\n\n // const canvas = {\n // width: domref.width,\n // height: domref.height,\n // offsetWidth: domref.width,\n // offsetHeight: domref.height,\n // id: id ?? '',\n // getContext: () => ctx,\n // // 构造 getBoundingClientRect 方法\n // getBoundingClientRect: () => ({\n // height: domref.height,\n // width: domref.width\n // })\n // };\n\n // canvasMap.set(id, canvas);\n // if (i >= freeCanvasIdx) {\n // freeCanvasList.push(canvas);\n // }\n // });\n}\n\nexport class WxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'wx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(\n service: IGlobal,\n params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; component: any; forceUpdate?: boolean }\n ) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n return makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.component,\n params.forceUpdate\n ).then(() => {\n // loadFeishuContributions();\n });\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return wx.getSystemInfoSync().pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/env/contributions/wx-contribution.ts"],"names":[],"mappings":"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","file":"wx-contribution.js","sourcesContent":["import {\n BaseEnvContribution,\n rafBasedSto,\n type ICanvasLike,\n type EnvType,\n type ICreateCanvasParams,\n type IEnvContribution,\n type IGlobal,\n type ITTCanvas\n} from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\n\ndeclare const wx: {\n getSystemInfoSync: () => { pixelRatio: number };\n createCanvasContext: (id: string) => any;\n createSelectorQuery: () => any;\n};\n\n// 飞书小程序canvas的wrap\nasync function makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n component: any,\n forceUpdate?: boolean\n) {\n const dpr = wx.getSystemInfoSync().pixelRatio;\n\n for (let i = 0; i < canvasIdLists.length; i++) {\n const id = canvasIdLists[i];\n if (!forceUpdate && canvasMap.has(id)) {\n continue;\n }\n await new Promise(resolve => {\n let data = wx.createSelectorQuery();\n if (component) {\n data = data.in(component);\n }\n // @ts-ignore\n data\n .select(`#${id}`) // 在 WXML 中填入的 id\n .fields({ node: true, size: true })\n .exec((res: any) => {\n if (!res[0]) {\n return;\n }\n const canvas = res[0].node;\n const width = res[0].width;\n const height = res[0].height;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n resolve(null);\n });\n });\n }\n\n // canvasIdLists.forEach((id, i) => {\n // const ctx = wx.createCanvasContext(id);\n // // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n // // 放到内容里\n // // // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n // // ctx.createRadialGradient = (...cc) => ctx.createCircularGradient(...cc);\n\n // // // 封装 getImageData 为 promise\n // // ctx.getImageData = (x, y, width, height) =>\n // // new Promise((resolve, reject) => {\n // // try {\n // // tt.canvasGetImageData({\n // // canvasId: item.id,\n // // x,\n // // y,\n // // width,\n // // height,\n // // success(res) {\n // // resolve(res);\n // // },\n // // });\n // // } catch (err) {\n // // reject(err);\n // // }\n // // });\n\n // const canvas = {\n // width: domref.width,\n // height: domref.height,\n // offsetWidth: domref.width,\n // offsetHeight: domref.height,\n // id: id ?? '',\n // getContext: () => ctx,\n // // 构造 getBoundingClientRect 方法\n // getBoundingClientRect: () => ({\n // height: domref.height,\n // width: domref.width\n // })\n // };\n\n // canvasMap.set(id, canvas);\n // if (i >= freeCanvasIdx) {\n // freeCanvasList.push(canvas);\n // }\n // });\n}\n\nexport class WxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'wx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(\n service: IGlobal,\n params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; component: any; forceUpdate?: boolean }\n ) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n return makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.component,\n params.forceUpdate\n ).then(() => {\n // loadFeishuContributions();\n });\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 微信小程序不支持 DOMParser 和 URL.createObjectURL,无法解析 svg 字符串,可以通过 url 使用 svg 资源\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return wx.getSystemInfoSync().pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n}\n"]}
package/cjs/env/feishu.js CHANGED
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const vrender_core_1 = require("@visactor/vrender-core"), modules_1 = require("../canvas/contributions/feishu/modules"), feishu_contribution_1 = require("../window/contributions/feishu-contribution"), math_module_1 = require("../picker/math-module"), feishu_contribution_2 = require("./contributions/feishu-contribution");
8
8
 
9
- let isFeishuBound = !1;
10
-
11
9
  function bindFeishuEnv(container) {
12
- isFeishuBound || (isFeishuBound = !0, container.bind(feishu_contribution_2.FeishuEnvContribution).toSelf().inSingletonScope(),
10
+ var _a, _b;
11
+ (null === (_b = (_a = container).isBound) || void 0 === _b ? void 0 : _b.call(_a, feishu_contribution_2.FeishuEnvContribution)) || (container.bind(feishu_contribution_2.FeishuEnvContribution).toSelf().inSingletonScope(),
13
12
  container.bind(vrender_core_1.EnvContribution).toService(feishu_contribution_2.FeishuEnvContribution));
14
13
  }
15
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/feishu.ts"],"names":[],"mappings":";;;AAAA,yDAAkF;AAClF,oEAAiF;AACjF,qFAA2F;AAC3F,uDAAuD;AACvD,6EAA4E;AAG5E,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,SAAgB,aAAa,CAAC,SAA8B;IAC1D,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,GAAG,IAAI,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,2CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,2CAAqB,CAAC,CAAC;KAClE;AACH,CAAC;AAND,sCAMC;AAED,SAAgB,aAAa,CAAC,YAA6B,IAAA,sCAAuB,GAAE,EAAE,aAAsB,IAAI;IAC9G,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;QAC3B,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,IAAA,iCAAuB,EAAC,SAAS,CAAC,CAAC;QACnC,IAAA,kDAA4B,EAAC,SAAS,CAAC,CAAC;QACxC,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,sCAQC;AAED,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;AAE/B,SAAgB,aAAa;IAC3B,aAAa,EAAE,CAAC;AAClB,CAAC;AAFD,sCAEC","file":"feishu.js","sourcesContent":["import { EnvContribution, getLegacyBindingContext } from '@visactor/vrender-core';\nimport { bindFeishuCanvasModules } from '../canvas/contributions/feishu/modules';\nimport { bindFeishuWindowContribution } from '../window/contributions/feishu-contribution';\nimport { loadMathPicker } from '../picker/math-module';\nimport { FeishuEnvContribution } from './contributions/feishu-contribution';\nimport type { LegacyBindContainer, LegacyContainer } from '../common/legacy-container';\n\nlet isFeishuBound = false;\n\nexport function bindFeishuEnv(container: LegacyBindContainer) {\n if (!isFeishuBound) {\n isFeishuBound = true;\n container.bind(FeishuEnvContribution).toSelf().inSingletonScope();\n container.bind(EnvContribution).toService(FeishuEnvContribution);\n }\n}\n\nexport function loadFeishuEnv(container: LegacyContainer = getLegacyBindingContext(), loadPicker: boolean = true) {\n if (!loadFeishuEnv.__loaded) {\n loadFeishuEnv.__loaded = true;\n bindFeishuEnv(container);\n bindFeishuCanvasModules(container);\n bindFeishuWindowContribution(container);\n loadPicker && loadMathPicker(container);\n }\n}\n\nloadFeishuEnv.__loaded = false;\n\nexport function initFeishuEnv() {\n loadFeishuEnv();\n}\n"]}
1
+ {"version":3,"sources":["../src/env/feishu.ts"],"names":[],"mappings":";;;AAAA,yDAAkF;AAClF,oEAAiF;AACjF,qFAA2F;AAC3F,uDAAuD;AACvD,6EAA4E;AAG5E,SAAgB,aAAa,CAAC,SAA8B;;IAC1D,IAAI,CAAC,CAAA,MAAA,MAAC,SAAiB,EAAC,OAAO,mDAAG,2CAAqB,CAAC,CAAA,EAAE;QACxD,SAAS,CAAC,IAAI,CAAC,2CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,2CAAqB,CAAC,CAAC;KAClE;AACH,CAAC;AALD,sCAKC;AAED,SAAgB,aAAa,CAAC,YAA6B,IAAA,sCAAuB,GAAE,EAAE,aAAsB,IAAI;IAC9G,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;QAC3B,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,IAAA,iCAAuB,EAAC,SAAS,CAAC,CAAC;QACnC,IAAA,kDAA4B,EAAC,SAAS,CAAC,CAAC;QACxC,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,sCAQC;AAED,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;AAE/B,SAAgB,aAAa;IAC3B,aAAa,EAAE,CAAC;AAClB,CAAC;AAFD,sCAEC","file":"feishu.js","sourcesContent":["import { EnvContribution, getLegacyBindingContext } from '@visactor/vrender-core';\nimport { bindFeishuCanvasModules } from '../canvas/contributions/feishu/modules';\nimport { bindFeishuWindowContribution } from '../window/contributions/feishu-contribution';\nimport { loadMathPicker } from '../picker/math-module';\nimport { FeishuEnvContribution } from './contributions/feishu-contribution';\nimport type { LegacyBindContainer, LegacyContainer } from '../common/legacy-container';\n\nexport function bindFeishuEnv(container: LegacyBindContainer) {\n if (!(container as any).isBound?.(FeishuEnvContribution)) {\n container.bind(FeishuEnvContribution).toSelf().inSingletonScope();\n container.bind(EnvContribution).toService(FeishuEnvContribution);\n }\n}\n\nexport function loadFeishuEnv(container: LegacyContainer = getLegacyBindingContext(), loadPicker: boolean = true) {\n if (!loadFeishuEnv.__loaded) {\n loadFeishuEnv.__loaded = true;\n bindFeishuEnv(container);\n bindFeishuCanvasModules(container);\n bindFeishuWindowContribution(container);\n loadPicker && loadMathPicker(container);\n }\n}\n\nloadFeishuEnv.__loaded = false;\n\nexport function initFeishuEnv() {\n loadFeishuEnv();\n}\n"]}
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const vrender_core_1 = require("@visactor/vrender-core"), math_module_1 = require("../picker/math-module"), harmony_contribution_1 = require("../window/contributions/harmony-contribution"), modules_1 = require("../canvas/contributions/harmony/modules"), harmony_contribution_2 = require("./contributions/harmony-contribution");
8
8
 
9
- let isHarmonyBound = !1;
10
-
11
9
  function bindHarmonyEnv(container) {
12
- isHarmonyBound || (isHarmonyBound = !0, container.bind(harmony_contribution_2.HarmonyEnvContribution).toSelf().inSingletonScope(),
10
+ var _a, _b;
11
+ (null === (_b = (_a = container).isBound) || void 0 === _b ? void 0 : _b.call(_a, harmony_contribution_2.HarmonyEnvContribution)) || (container.bind(harmony_contribution_2.HarmonyEnvContribution).toSelf().inSingletonScope(),
13
12
  container.bind(vrender_core_1.EnvContribution).toService(harmony_contribution_2.HarmonyEnvContribution));
14
13
  }
15
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/harmony.ts"],"names":[],"mappings":";;;AAAA,yDAAkF;AAClF,uDAAuD;AACvD,uFAA6F;AAC7F,qEAAmF;AACnF,+EAA8E;AAG9E,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,SAAgB,cAAc,CAAC,SAA8B;IAC3D,IAAI,CAAC,cAAc,EAAE;QACnB,cAAc,GAAG,IAAI,CAAC;QACtB,SAAS,CAAC,IAAI,CAAC,6CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACnE,SAAS,CAAC,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,6CAAsB,CAAC,CAAC;KACnE;AACH,CAAC;AAND,wCAMC;AAED,SAAgB,cAAc,CAAC,YAA6B,IAAA,sCAAuB,GAAE,EAAE,aAAsB,IAAI;IAC/G,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAC5B,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAA,kCAAwB,EAAC,SAAS,CAAC,CAAC;QACpC,IAAA,oDAA6B,EAAC,SAAS,CAAC,CAAC;QACzC,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,wCAQC;AAED,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;AAEhC,SAAgB,cAAc;IAC5B,cAAc,EAAE,CAAC;AACnB,CAAC;AAFD,wCAEC","file":"harmony.js","sourcesContent":["import { EnvContribution, getLegacyBindingContext } from '@visactor/vrender-core';\nimport { loadMathPicker } from '../picker/math-module';\nimport { bindHarmonyWindowContribution } from '../window/contributions/harmony-contribution';\nimport { bindHarmonyCanvasModules } from '../canvas/contributions/harmony/modules';\nimport { HarmonyEnvContribution } from './contributions/harmony-contribution';\nimport type { LegacyBindContainer, LegacyContainer } from '../common/legacy-container';\n\nlet isHarmonyBound = false;\n\nexport function bindHarmonyEnv(container: LegacyBindContainer) {\n if (!isHarmonyBound) {\n isHarmonyBound = true;\n container.bind(HarmonyEnvContribution).toSelf().inSingletonScope();\n container.bind(EnvContribution).toService(HarmonyEnvContribution);\n }\n}\n\nexport function loadHarmonyEnv(container: LegacyContainer = getLegacyBindingContext(), loadPicker: boolean = true) {\n if (!loadHarmonyEnv.__loaded) {\n loadHarmonyEnv.__loaded = true;\n bindHarmonyEnv(container);\n bindHarmonyCanvasModules(container);\n bindHarmonyWindowContribution(container);\n loadPicker && loadMathPicker(container);\n }\n}\n\nloadHarmonyEnv.__loaded = false;\n\nexport function initHarmonyEnv() {\n loadHarmonyEnv();\n}\n"]}
1
+ {"version":3,"sources":["../src/env/harmony.ts"],"names":[],"mappings":";;;AAAA,yDAAkF;AAClF,uDAAuD;AACvD,uFAA6F;AAC7F,qEAAmF;AACnF,+EAA8E;AAG9E,SAAgB,cAAc,CAAC,SAA8B;;IAC3D,IAAI,CAAC,CAAA,MAAA,MAAC,SAAiB,EAAC,OAAO,mDAAG,6CAAsB,CAAC,CAAA,EAAE;QACzD,SAAS,CAAC,IAAI,CAAC,6CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACnE,SAAS,CAAC,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,6CAAsB,CAAC,CAAC;KACnE;AACH,CAAC;AALD,wCAKC;AAED,SAAgB,cAAc,CAAC,YAA6B,IAAA,sCAAuB,GAAE,EAAE,aAAsB,IAAI;IAC/G,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAC5B,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAA,kCAAwB,EAAC,SAAS,CAAC,CAAC;QACpC,IAAA,oDAA6B,EAAC,SAAS,CAAC,CAAC;QACzC,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,wCAQC;AAED,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;AAEhC,SAAgB,cAAc;IAC5B,cAAc,EAAE,CAAC;AACnB,CAAC;AAFD,wCAEC","file":"harmony.js","sourcesContent":["import { EnvContribution, getLegacyBindingContext } from '@visactor/vrender-core';\nimport { loadMathPicker } from '../picker/math-module';\nimport { bindHarmonyWindowContribution } from '../window/contributions/harmony-contribution';\nimport { bindHarmonyCanvasModules } from '../canvas/contributions/harmony/modules';\nimport { HarmonyEnvContribution } from './contributions/harmony-contribution';\nimport type { LegacyBindContainer, LegacyContainer } from '../common/legacy-container';\n\nexport function bindHarmonyEnv(container: LegacyBindContainer) {\n if (!(container as any).isBound?.(HarmonyEnvContribution)) {\n container.bind(HarmonyEnvContribution).toSelf().inSingletonScope();\n container.bind(EnvContribution).toService(HarmonyEnvContribution);\n }\n}\n\nexport function loadHarmonyEnv(container: LegacyContainer = getLegacyBindingContext(), loadPicker: boolean = true) {\n if (!loadHarmonyEnv.__loaded) {\n loadHarmonyEnv.__loaded = true;\n bindHarmonyEnv(container);\n bindHarmonyCanvasModules(container);\n bindHarmonyWindowContribution(container);\n loadPicker && loadMathPicker(container);\n }\n}\n\nloadHarmonyEnv.__loaded = false;\n\nexport function initHarmonyEnv() {\n loadHarmonyEnv();\n}\n"]}