@visactor/vrender-kits 1.1.0-alpha.22 → 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.
- package/cjs/canvas/contributions/create-canvas-module.js +1 -1
- package/cjs/canvas/contributions/harmony/canvas.js +5 -1
- package/cjs/canvas/contributions/harmony/canvas.js.map +1 -1
- package/cjs/canvas/contributions/modules.js +1 -1
- package/cjs/env/contributions/browser-contribution.js +1 -1
- package/cjs/env/contributions/canvas-wrap.js +1 -1
- package/cjs/env/contributions/feishu-contribution.d.ts +15 -8
- package/cjs/env/contributions/feishu-contribution.js +26 -14
- package/cjs/env/contributions/feishu-contribution.js.map +1 -1
- package/cjs/env/contributions/harmony-contribution.d.ts +26 -7
- package/cjs/env/contributions/harmony-contribution.js +129 -21
- package/cjs/env/contributions/harmony-contribution.js.map +1 -1
- package/cjs/env/contributions/lynx-contribution.d.ts +0 -4
- package/cjs/env/contributions/lynx-contribution.js +7 -21
- package/cjs/env/contributions/lynx-contribution.js.map +1 -1
- package/cjs/env/contributions/miniapp-canvas.d.ts +18 -0
- package/cjs/env/contributions/miniapp-canvas.js +46 -0
- package/cjs/env/contributions/miniapp-canvas.js.map +1 -0
- package/cjs/env/contributions/taro-contribution.d.ts +6 -10
- package/cjs/env/contributions/taro-contribution.js +17 -18
- package/cjs/env/contributions/taro-contribution.js.map +1 -1
- package/cjs/env/contributions/tt-contribution.d.ts +14 -8
- package/cjs/env/contributions/tt-contribution.js +26 -49
- package/cjs/env/contributions/tt-contribution.js.map +1 -1
- package/cjs/env/contributions/wx-contribution.d.ts +14 -9
- package/cjs/env/contributions/wx-contribution.js +26 -53
- package/cjs/env/contributions/wx-contribution.js.map +1 -1
- package/cjs/event/extension/drag.js +1 -1
- package/cjs/event/extension/gesture.js +1 -1
- package/cjs/event/extension/index.js +1 -1
- package/cjs/event/extension/interface.js +1 -1
- package/cjs/window/contributions/feishu-contribution.js +6 -1
- package/cjs/window/contributions/feishu-contribution.js.map +1 -1
- package/cjs/window/contributions/harmony-contribution.js +70 -11
- package/cjs/window/contributions/harmony-contribution.js.map +1 -1
- package/cjs/window/contributions/taro-contribution.js +6 -1
- package/cjs/window/contributions/taro-contribution.js.map +1 -1
- package/cjs/window/contributions/tt-contribution.js +6 -1
- package/cjs/window/contributions/tt-contribution.js.map +1 -1
- package/cjs/window/contributions/wx-contribution.js +6 -1
- package/cjs/window/contributions/wx-contribution.js.map +1 -1
- package/dist/index.es.js +464 -191
- package/es/canvas/contributions/create-canvas-module.js +1 -1
- package/es/canvas/contributions/harmony/canvas.js +5 -1
- package/es/canvas/contributions/harmony/canvas.js.map +1 -1
- package/es/canvas/contributions/modules.js +1 -1
- package/es/env/contributions/browser-contribution.js +1 -1
- package/es/env/contributions/canvas-wrap.js +1 -1
- package/es/env/contributions/feishu-contribution.d.ts +15 -8
- package/es/env/contributions/feishu-contribution.js +27 -14
- package/es/env/contributions/feishu-contribution.js.map +1 -1
- package/es/env/contributions/harmony-contribution.d.ts +26 -7
- package/es/env/contributions/harmony-contribution.js +132 -22
- package/es/env/contributions/harmony-contribution.js.map +1 -1
- package/es/env/contributions/lynx-contribution.d.ts +0 -4
- package/es/env/contributions/lynx-contribution.js +7 -21
- package/es/env/contributions/lynx-contribution.js.map +1 -1
- package/es/env/contributions/miniapp-canvas.d.ts +18 -0
- package/es/env/contributions/miniapp-canvas.js +37 -0
- package/es/env/contributions/miniapp-canvas.js.map +1 -0
- package/es/env/contributions/taro-contribution.d.ts +6 -10
- package/es/env/contributions/taro-contribution.js +17 -17
- package/es/env/contributions/taro-contribution.js.map +1 -1
- package/es/env/contributions/tt-contribution.d.ts +14 -8
- package/es/env/contributions/tt-contribution.js +28 -48
- package/es/env/contributions/tt-contribution.js.map +1 -1
- package/es/env/contributions/wx-contribution.d.ts +14 -9
- package/es/env/contributions/wx-contribution.js +28 -52
- package/es/env/contributions/wx-contribution.js.map +1 -1
- package/es/event/extension/drag.js +1 -1
- package/es/event/extension/gesture.js +1 -1
- package/es/event/extension/index.js +1 -1
- package/es/event/extension/interface.js +1 -1
- package/es/window/contributions/feishu-contribution.js +6 -1
- package/es/window/contributions/feishu-contribution.js.map +1 -1
- package/es/window/contributions/harmony-contribution.js +70 -11
- package/es/window/contributions/harmony-contribution.js.map +1 -1
- package/es/window/contributions/taro-contribution.js +6 -1
- package/es/window/contributions/taro-contribution.js.map +1 -1
- package/es/window/contributions/tt-contribution.js +6 -1
- package/es/window/contributions/tt-contribution.js.map +1 -1
- package/es/window/contributions/wx-contribution.js +6 -1
- package/es/window/contributions/wx-contribution.js.map +1 -1
- package/package.json +2 -2
|
@@ -8,4 +8,4 @@ export function createModule(CanvasConstructor, ContextConstructor) {
|
|
|
8
8
|
hasContextFactory || bindingContainer.bind(Context2dFactory).toDynamicValue((() => (params, dpr) => new ContextConstructor(params, dpr))).whenTargetNamed(ContextConstructor.env);
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=create-canvas-module.js.map
|
|
11
|
+
//# sourceMappingURL=create-canvas-module.js.map
|
|
@@ -9,7 +9,11 @@ export class HarmonyCanvas extends BaseCanvas {
|
|
|
9
9
|
init() {
|
|
10
10
|
this._context = new HarmonyContext2d(this, this._dpr);
|
|
11
11
|
}
|
|
12
|
-
resize(width, height) {
|
|
12
|
+
resize(width, height) {
|
|
13
|
+
this.controled && (this._pixelWidth = width * this._dpr, this._pixelHeight = height * this._dpr,
|
|
14
|
+
this._displayWidth = width, this._displayHeight = height, this._nativeCanvas.width = this._pixelWidth,
|
|
15
|
+
this._nativeCanvas.height = this._pixelHeight, this._context.dpr = this._dpr);
|
|
16
|
+
}
|
|
13
17
|
release(...params) {}
|
|
14
18
|
}
|
|
15
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/canvas/contributions/harmony/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,OAAO,aAAc,SAAQ,UAAU;IAO3C,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,MAAW;QACpB,OAAO;IACT,CAAC;;
|
|
1
|
+
{"version":3,"sources":["../src/canvas/contributions/harmony/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,OAAO,aAAc,SAAQ,UAAU;IAO3C,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,MAAW;QACpB,OAAO;IACT,CAAC;;AA9BM,iBAAG,GAAY,SAAS,CAAC","file":"canvas.js","sourcesContent":["import { BaseCanvas } from '@visactor/vrender-core';\nimport type { ICanvas, CanvasConfigType, EnvType } from '@visactor/vrender-core';\nimport { HarmonyContext2d } from './context';\n\nexport class HarmonyCanvas extends BaseCanvas implements ICanvas {\n static env: EnvType = 'harmony';\n\n /**\n * 通过canvas生成一个wrap对象,初始化时不会再设置canvas的属性\n * @param params\n */\n constructor(params: CanvasConfigType) {\n super(params);\n }\n\n init() {\n this._context = new HarmonyContext2d(this, this._dpr);\n }\n\n resize(width: number, height: number): void {\n if (!this.controled) {\n return;\n }\n this._pixelWidth = width * this._dpr;\n this._pixelHeight = height * this._dpr;\n this._displayWidth = width;\n this._displayHeight = height;\n this._nativeCanvas.width = this._pixelWidth;\n this._nativeCanvas.height = this._pixelHeight;\n this._context.dpr = this._dpr;\n return;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
|
|
@@ -238,4 +238,4 @@ export class BrowserEnvContribution extends BaseEnvContribution {
|
|
|
238
238
|
return navigator.clipboard.writeText(text).then((() => {})).catch((err => {}));
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
|
-
//# sourceMappingURL=browser-contribution.js.map
|
|
241
|
+
//# sourceMappingURL=browser-contribution.js.map
|
|
@@ -1,20 +1,26 @@
|
|
|
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 FeishuEnvParams = MiniAppCanvasEnvParams & {
|
|
11
|
+
tt?: typeof tt;
|
|
12
|
+
feishu?: typeof tt;
|
|
13
|
+
runtime?: typeof tt;
|
|
14
|
+
};
|
|
3
15
|
export declare class FeishuEnvContribution extends BaseEnvContribution implements IEnvContribution {
|
|
4
16
|
type: EnvType;
|
|
5
17
|
supportEvent: boolean;
|
|
6
18
|
canvasMap: Map<string, ITTCanvas>;
|
|
7
|
-
|
|
8
|
-
canvasIdx: number;
|
|
19
|
+
private feishuEnvParams;
|
|
9
20
|
constructor();
|
|
10
21
|
getDynamicCanvasCount(): number;
|
|
11
22
|
getStaticCanvasCount(): number;
|
|
12
|
-
configure(service: IGlobal, params:
|
|
13
|
-
domref: any;
|
|
14
|
-
canvasIdLists: string[];
|
|
15
|
-
freeCanvasIdx: number;
|
|
16
|
-
pixelRatio?: number;
|
|
17
|
-
}): void;
|
|
23
|
+
configure(service: IGlobal, params?: FeishuEnvParams): void;
|
|
18
24
|
loadImage(url: string): Promise<{
|
|
19
25
|
loadState: 'success' | 'fail';
|
|
20
26
|
data: HTMLImageElement | ImageData | null;
|
|
@@ -40,3 +46,4 @@ export declare class FeishuEnvContribution extends BaseEnvContribution implement
|
|
|
40
46
|
release(...params: any): void;
|
|
41
47
|
mapToCanvasPoint(event: any): any;
|
|
42
48
|
}
|
|
49
|
+
export {};
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { BaseEnvContribution, rafBasedSto } from "@visactor/vrender-core";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { createCanvasWithFactory, getMiniAppCanvasOptions, wrapMiniAppContextCanvas } from "./miniapp-canvas";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
const FEISHU_CANVAS_BRIDGE_ERROR = "Feishu canvas bridge is unavailable. VRender feishu env requires envParams.canvasFactory, a Stage canvas object, or a feishu/tt runtime that exposes createCanvasContext(id).";
|
|
6
|
+
|
|
7
|
+
function getFeishuRuntime(params) {
|
|
8
|
+
var _a, _b, _c, _d, _e;
|
|
9
|
+
try {
|
|
10
|
+
return null !== (_c = null !== (_b = null !== (_a = null == params ? void 0 : params.feishu) && void 0 !== _a ? _a : null == params ? void 0 : params.tt) && void 0 !== _b ? _b : null == params ? void 0 : params.runtime) && void 0 !== _c ? _c : "undefined" != typeof tt ? tt : void 0;
|
|
11
|
+
} catch (_f) {
|
|
12
|
+
return null !== (_e = null !== (_d = null == params ? void 0 : params.feishu) && void 0 !== _d ? _d : null == params ? void 0 : params.tt) && void 0 !== _e ? _e : null == params ? void 0 : params.runtime;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function getFeishuPixelRatio(params, runtime = getFeishuRuntime(params)) {
|
|
17
|
+
var _a, _b, _c, _d;
|
|
18
|
+
return 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 : 1;
|
|
11
19
|
}
|
|
12
20
|
|
|
13
21
|
export class FeishuEnvContribution extends BaseEnvContribution {
|
|
14
22
|
constructor() {
|
|
15
23
|
super(), this.type = "feishu", this.supportEvent = !0, this.canvasMap = new Map,
|
|
16
|
-
this.
|
|
24
|
+
this.feishuEnvParams = {}, this.supportsTouchEvents = !0;
|
|
17
25
|
try {
|
|
18
26
|
this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
|
|
19
27
|
} catch (err) {
|
|
@@ -22,13 +30,13 @@ export class FeishuEnvContribution extends BaseEnvContribution {
|
|
|
22
30
|
this.applyStyles = !0;
|
|
23
31
|
}
|
|
24
32
|
getDynamicCanvasCount() {
|
|
25
|
-
return
|
|
33
|
+
return 0;
|
|
26
34
|
}
|
|
27
35
|
getStaticCanvasCount() {
|
|
28
36
|
return 9999;
|
|
29
37
|
}
|
|
30
|
-
configure(service, params) {
|
|
31
|
-
service.env === this.type && (service.setActiveEnvContribution(this),
|
|
38
|
+
configure(service, params = {}) {
|
|
39
|
+
service.env === this.type && (service.setActiveEnvContribution(this), this.feishuEnvParams = params);
|
|
32
40
|
}
|
|
33
41
|
loadImage(url) {
|
|
34
42
|
return Promise.resolve({
|
|
@@ -40,13 +48,18 @@ export class FeishuEnvContribution extends BaseEnvContribution {
|
|
|
40
48
|
return Promise.reject();
|
|
41
49
|
}
|
|
42
50
|
createCanvas(params) {
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
var _a;
|
|
52
|
+
const envParams = this.feishuEnvParams, runtime = getFeishuRuntime(envParams), dpr = null !== (_a = params.dpr) && void 0 !== _a ? _a : getFeishuPixelRatio(envParams, runtime), factoryCanvas = createCanvasWithFactory(params, dpr, this.canvasMap, envParams.canvasFactory);
|
|
53
|
+
if (factoryCanvas) return factoryCanvas;
|
|
54
|
+
const options = getMiniAppCanvasOptions(params, dpr, !1);
|
|
55
|
+
if (null == options.id || "function" != typeof (null == runtime ? void 0 : runtime.createCanvasContext)) throw new Error(FEISHU_CANVAS_BRIDGE_ERROR);
|
|
56
|
+
const canvas = wrapMiniAppContextCanvas(runtime.createCanvasContext(options.id), options);
|
|
57
|
+
return this.canvasMap.set(options.id, canvas), canvas;
|
|
45
58
|
}
|
|
46
59
|
createOffscreenCanvas(params) {}
|
|
47
60
|
releaseCanvas(canvas) {}
|
|
48
61
|
getDevicePixelRatio() {
|
|
49
|
-
return
|
|
62
|
+
return getFeishuPixelRatio(this.feishuEnvParams);
|
|
50
63
|
}
|
|
51
64
|
getRequestAnimationFrame() {
|
|
52
65
|
return function(callback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/env/contributions/feishu-contribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAU1E,OAAO,
|
|
1
|
+
{"version":3,"sources":["../src/env/contributions/feishu-contribution.ts"],"names":[],"mappings":"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","file":"feishu-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';\nimport {\n createCanvasWithFactory,\n getMiniAppCanvasOptions,\n type MiniAppCanvasEnvParams,\n wrapMiniAppContextCanvas\n} from './miniapp-canvas';\n\ndeclare const tt: {\n getSystemInfoSync?: () => { pixelRatio: number };\n createCanvasContext?: (id: string) => any;\n};\n\ntype FeishuEnvParams = MiniAppCanvasEnvParams & {\n tt?: typeof tt;\n feishu?: typeof tt;\n runtime?: typeof tt;\n};\n\nconst FEISHU_CANVAS_BRIDGE_ERROR =\n 'Feishu canvas bridge is unavailable. VRender feishu env requires envParams.canvasFactory, ' +\n 'a Stage canvas object, or a feishu/tt runtime that exposes createCanvasContext(id).';\n\nfunction getFeishuRuntime(params?: FeishuEnvParams): any {\n try {\n return params?.feishu ?? params?.tt ?? params?.runtime ?? (typeof tt !== 'undefined' ? tt : undefined);\n } catch {\n return params?.feishu ?? params?.tt ?? params?.runtime;\n }\n}\n\nfunction getFeishuPixelRatio(params?: FeishuEnvParams, runtime: any = getFeishuRuntime(params)): number {\n return params?.pixelRatio ?? runtime?.getSystemInfoSync?.()?.pixelRatio ?? 1;\n}\n\nexport class FeishuEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'feishu';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n private feishuEnvParams: FeishuEnvParams = {};\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 configure(service: IGlobal, params: FeishuEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.feishuEnvParams = params;\n\n // loadFeishuContributions();\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const envParams = this.feishuEnvParams;\n const runtime = getFeishuRuntime(envParams);\n const dpr = params.dpr ?? getFeishuPixelRatio(envParams, runtime);\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 runtime?.createCanvasContext !== 'function') {\n throw new Error(FEISHU_CANVAS_BRIDGE_ERROR);\n }\n\n const canvas = wrapMiniAppContextCanvas(runtime.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 getFeishuPixelRatio(this.feishuEnvParams);\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,17 +1,35 @@
|
|
|
1
1
|
import { BaseEnvContribution, RafBasedSTO } from '@visactor/vrender-core';
|
|
2
2
|
import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ILynxCanvas } from '@visactor/vrender-core';
|
|
3
|
+
type HarmonyCanvasFactoryOptions = {
|
|
4
|
+
id: string;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
dpr: number;
|
|
8
|
+
offscreen: boolean;
|
|
9
|
+
};
|
|
10
|
+
type HarmonyCanvasFactory = (options: HarmonyCanvasFactoryOptions) => any;
|
|
11
|
+
type HarmonyRuntime = Partial<{
|
|
12
|
+
createCanvas: (options: HarmonyCanvasFactoryOptions) => any;
|
|
13
|
+
createOffscreenCanvas: (options: HarmonyCanvasFactoryOptions) => any;
|
|
14
|
+
createImage: (src: string) => any;
|
|
15
|
+
}>;
|
|
16
|
+
type HarmonyEnvParams = {
|
|
17
|
+
pixelRatio?: number;
|
|
18
|
+
harmony?: HarmonyRuntime;
|
|
19
|
+
runtime?: HarmonyRuntime;
|
|
20
|
+
canvasFactory?: HarmonyCanvasFactory;
|
|
21
|
+
};
|
|
3
22
|
export declare class HarmonyEnvContribution extends BaseEnvContribution implements IEnvContribution {
|
|
4
23
|
type: EnvType;
|
|
5
24
|
supportEvent: boolean;
|
|
6
25
|
rafSTO: RafBasedSTO;
|
|
26
|
+
canvasMap: Map<string, ILynxCanvas>;
|
|
27
|
+
freeCanvasList: ILynxCanvas[];
|
|
28
|
+
canvasIdx: number;
|
|
29
|
+
private harmonyRuntime?;
|
|
30
|
+
private harmonyEnvParams?;
|
|
7
31
|
constructor();
|
|
8
|
-
configure(service: IGlobal, params:
|
|
9
|
-
domref: any;
|
|
10
|
-
canvasIdLists: string[];
|
|
11
|
-
freeCanvasIdx: number;
|
|
12
|
-
offscreen?: boolean;
|
|
13
|
-
pixelRatio?: number;
|
|
14
|
-
}): void;
|
|
32
|
+
configure(service: IGlobal, params?: HarmonyEnvParams): void;
|
|
15
33
|
getDynamicCanvasCount(): number;
|
|
16
34
|
getStaticCanvasCount(): number;
|
|
17
35
|
loadImage(url: string): Promise<{
|
|
@@ -39,3 +57,4 @@ export declare class HarmonyEnvContribution extends BaseEnvContribution implemen
|
|
|
39
57
|
getDocument(): Document | null;
|
|
40
58
|
release(...params: any): void;
|
|
41
59
|
}
|
|
60
|
+
export {};
|
|
@@ -1,25 +1,100 @@
|
|
|
1
1
|
import { BaseEnvContribution, RafBasedSTO } from "@visactor/vrender-core";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { CanvasWrapEnableWH } from "./canvas-wrap";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const HARMONY_CANVAS_BRIDGE_ERROR = "Harmony canvas bridge is unavailable. VRender Harmony env requires envParams.canvasFactory or a Harmony runtime that exposes a global createCanvas/createOffscreenCanvas capability.", HARMONY_CANVAS_SIZE_ERROR = "Harmony canvas size is unavailable. Pass stage width/height when creating a Harmony 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 getHarmonyEventPoint(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 getHarmonyRuntime(params) {
|
|
29
|
+
var _a;
|
|
30
|
+
return null !== (_a = null == params ? void 0 : params.harmony) && void 0 !== _a ? _a : null == params ? void 0 : params.runtime;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function getHarmonyPixelRatio(params) {
|
|
34
|
+
var _a;
|
|
35
|
+
return null !== (_a = null == params ? void 0 : params.pixelRatio) && void 0 !== _a ? _a : 1;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function getCanvasSize(width, height) {
|
|
39
|
+
if (!isValidCoordinate(width) || !isValidCoordinate(height)) throw new Error(HARMONY_CANVAS_SIZE_ERROR);
|
|
40
|
+
return {
|
|
41
|
+
width: width,
|
|
42
|
+
height: height
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function getGlobalOffscreenCanvasCtor() {
|
|
47
|
+
try {
|
|
48
|
+
return "undefined" != typeof OffscreenCanvas ? OffscreenCanvas : void 0;
|
|
49
|
+
} catch (err) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function createFallbackOffscreenCanvas(width, height) {
|
|
55
|
+
const OffscreenCanvasCtor = getGlobalOffscreenCanvasCtor();
|
|
56
|
+
return "function" != typeof OffscreenCanvasCtor ? null : new OffscreenCanvasCtor(width, height);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function wrapHarmonyNativeCanvas(nativeCanvas, id, width, height, dpr) {
|
|
60
|
+
var _a, _b, _c;
|
|
61
|
+
nativeCanvas.width = width * dpr, nativeCanvas.height = height * dpr;
|
|
62
|
+
const context = null !== (_b = null === (_a = nativeCanvas.getContext) || void 0 === _a ? void 0 : _a.call(nativeCanvas, "2d")) && void 0 !== _b ? _b : null === (_c = nativeCanvas.getContext) || void 0 === _c ? void 0 : _c.call(nativeCanvas);
|
|
63
|
+
if (!context) throw new Error(HARMONY_CANVAS_BRIDGE_ERROR);
|
|
64
|
+
return "function" != typeof nativeCanvas.getBoundingClientRect && (nativeCanvas.getBoundingClientRect = () => ({
|
|
65
|
+
width: width,
|
|
66
|
+
height: height
|
|
67
|
+
})), new CanvasWrapEnableWH(nativeCanvas, context, dpr, width, height, id);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function createHarmonyNativeCanvas(id, width, height, dpr, offscreen, params, runtime) {
|
|
71
|
+
const options = {
|
|
72
|
+
id: id,
|
|
8
73
|
width: width,
|
|
9
74
|
height: height,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
75
|
+
dpr: dpr,
|
|
76
|
+
offscreen: offscreen
|
|
77
|
+
};
|
|
78
|
+
if (params.canvasFactory) return params.canvasFactory(options);
|
|
79
|
+
if (offscreen && "function" == typeof (null == runtime ? void 0 : runtime.createOffscreenCanvas)) {
|
|
80
|
+
const canvas = runtime.createOffscreenCanvas(options);
|
|
81
|
+
if (canvas) return canvas;
|
|
82
|
+
}
|
|
83
|
+
if (!offscreen && "function" == typeof (null == runtime ? void 0 : runtime.createCanvas)) {
|
|
84
|
+
const canvas = runtime.createCanvas(options);
|
|
85
|
+
if (canvas) return canvas;
|
|
86
|
+
}
|
|
87
|
+
if (offscreen) {
|
|
88
|
+
const canvas = createFallbackOffscreenCanvas(width * dpr, height * dpr);
|
|
89
|
+
if (canvas) return canvas;
|
|
90
|
+
}
|
|
91
|
+
throw new Error(HARMONY_CANVAS_BRIDGE_ERROR);
|
|
18
92
|
}
|
|
19
93
|
|
|
20
94
|
export class HarmonyEnvContribution extends BaseEnvContribution {
|
|
21
95
|
constructor() {
|
|
22
|
-
super(), this.type = "harmony", this.supportEvent = !0, this.
|
|
96
|
+
super(), this.type = "harmony", this.supportEvent = !0, this.canvasMap = new Map,
|
|
97
|
+
this.freeCanvasList = [], this.canvasIdx = 0, this.supportsTouchEvents = !0;
|
|
23
98
|
try {
|
|
24
99
|
this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
|
|
25
100
|
} catch (err) {
|
|
@@ -27,8 +102,9 @@ export class HarmonyEnvContribution extends BaseEnvContribution {
|
|
|
27
102
|
}
|
|
28
103
|
this.applyStyles = !0, this.rafSTO = new RafBasedSTO(0);
|
|
29
104
|
}
|
|
30
|
-
configure(service, params) {
|
|
31
|
-
service.env === this.type && service.setActiveEnvContribution(this)
|
|
105
|
+
configure(service, params = {}) {
|
|
106
|
+
service.env === this.type && (service.setActiveEnvContribution(this), this.harmonyEnvParams = params,
|
|
107
|
+
this.harmonyRuntime = getHarmonyRuntime(params));
|
|
32
108
|
}
|
|
33
109
|
getDynamicCanvasCount() {
|
|
34
110
|
return 9999;
|
|
@@ -36,17 +112,51 @@ export class HarmonyEnvContribution extends BaseEnvContribution {
|
|
|
36
112
|
getStaticCanvasCount() {
|
|
37
113
|
return 9999;
|
|
38
114
|
}
|
|
39
|
-
loadImage(url) {
|
|
115
|
+
loadImage(url) {
|
|
116
|
+
var _a;
|
|
117
|
+
if ("function" != typeof (null === (_a = this.harmonyRuntime) || void 0 === _a ? void 0 : _a.createImage)) return Promise.resolve({
|
|
118
|
+
data: null,
|
|
119
|
+
loadState: "fail"
|
|
120
|
+
});
|
|
121
|
+
const img = this.harmonyRuntime.createImage(url);
|
|
122
|
+
return new Promise((resolve => {
|
|
123
|
+
img.onload = () => {
|
|
124
|
+
resolve({
|
|
125
|
+
data: img,
|
|
126
|
+
loadState: "success"
|
|
127
|
+
});
|
|
128
|
+
}, img.onerror = () => {
|
|
129
|
+
resolve({
|
|
130
|
+
data: null,
|
|
131
|
+
loadState: "fail"
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
40
136
|
loadSvg(url) {
|
|
41
|
-
return Promise.
|
|
137
|
+
return Promise.resolve({
|
|
138
|
+
data: null,
|
|
139
|
+
loadState: "fail"
|
|
140
|
+
});
|
|
42
141
|
}
|
|
43
142
|
createCanvas(params) {
|
|
44
|
-
|
|
143
|
+
var _a, _b;
|
|
144
|
+
const envParams = null !== (_a = this.harmonyEnvParams) && void 0 !== _a ? _a : {}, runtime = getHarmonyRuntime(envParams), dpr = null !== (_b = params.dpr) && void 0 !== _b ? _b : getHarmonyPixelRatio(envParams), size = getCanvasSize(params.width, params.height);
|
|
145
|
+
if (null != params.id) {
|
|
146
|
+
const id = String(params.id), existing = this.canvasMap.get(id);
|
|
147
|
+
if (existing) return existing;
|
|
148
|
+
const canvas = wrapHarmonyNativeCanvas(createHarmonyNativeCanvas(id, size.width, size.height, dpr, !1, envParams, runtime), id, size.width, size.height, dpr);
|
|
149
|
+
return this.canvasMap.set(id, canvas), canvas;
|
|
150
|
+
}
|
|
151
|
+
const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
|
|
152
|
+
if (this.canvasIdx++, result) return result;
|
|
153
|
+
const id = Math.random().toString(), canvas = wrapHarmonyNativeCanvas(createHarmonyNativeCanvas(id, size.width, size.height, dpr, !0, envParams, runtime), id, size.width, size.height, dpr);
|
|
154
|
+
return this.canvasMap.set(id, canvas), this.freeCanvasList.push(canvas), canvas;
|
|
45
155
|
}
|
|
46
156
|
createOffscreenCanvas(params) {}
|
|
47
157
|
releaseCanvas(canvas) {}
|
|
48
158
|
getDevicePixelRatio() {
|
|
49
|
-
return
|
|
159
|
+
return getHarmonyPixelRatio(this.harmonyEnvParams);
|
|
50
160
|
}
|
|
51
161
|
getRequestAnimationFrame() {
|
|
52
162
|
return callback => this.rafSTO.call(callback);
|
|
@@ -58,8 +168,7 @@ export class HarmonyEnvContribution extends BaseEnvContribution {
|
|
|
58
168
|
}
|
|
59
169
|
mapToCanvasPoint(event) {
|
|
60
170
|
var _a;
|
|
61
|
-
return null
|
|
62
|
-
event;
|
|
171
|
+
return null !== (_a = getHarmonyEventPoint(event)) && void 0 !== _a ? _a : event;
|
|
63
172
|
}
|
|
64
173
|
addEventListener(type, listener, options) {
|
|
65
174
|
return null;
|
|
@@ -71,7 +180,8 @@ export class HarmonyEnvContribution extends BaseEnvContribution {
|
|
|
71
180
|
return null;
|
|
72
181
|
}
|
|
73
182
|
getElementById(str) {
|
|
74
|
-
|
|
183
|
+
var _a;
|
|
184
|
+
return null !== (_a = this.canvasMap.get(str)) && void 0 !== _a ? _a : null;
|
|
75
185
|
}
|
|
76
186
|
getRootElement() {
|
|
77
187
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/env/contributions/harmony-contribution.ts"],"names":[],"mappings":"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","file":"harmony-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 { CanvasWrapDisableWH, CanvasWrapEnableWH } from './canvas-wrap';\n\nfunction createCanvas(width: number, height: number, id?: string) {\n // const context = new (OffscreenCanvasRenderingContext2D as any)(width, height);\n // 浏览器debug\n const _c = new OffscreenCanvas(width, height);\n const context = _c.getContext('2d');\n\n const nativeCanvas = {\n width,\n height,\n context,\n _c,\n getBoundingClientRect() {\n return {\n width,\n height\n };\n },\n getContext() {\n return context;\n }\n };\n return new CanvasWrapDisableWH(nativeCanvas, context, 1, width, height, id);\n}\n\nexport class HarmonyEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'harmony';\n supportEvent: boolean = true;\n rafSTO: RafBasedSTO;\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 this.rafSTO = new RafBasedSTO(0);\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\n // loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 9999;\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 return;\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 return createCanvas(params.width, params.height, params.id);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return 1;\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 (callback: FrameRequestCallback) => {\n return this.rafSTO.call(callback);\n };\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n this.rafSTO.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 null;\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/harmony-contribution.ts"],"names":[],"mappings":"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","file":"harmony-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\ntype HarmonyCanvasFactoryOptions = {\n id: string;\n width: number;\n height: number;\n dpr: number;\n offscreen: boolean;\n};\n\ntype HarmonyCanvasFactory = (options: HarmonyCanvasFactoryOptions) => any;\n\ntype HarmonyRuntime = Partial<{\n createCanvas: (options: HarmonyCanvasFactoryOptions) => any;\n createOffscreenCanvas: (options: HarmonyCanvasFactoryOptions) => any;\n createImage: (src: string) => any;\n}>;\n\ntype HarmonyEnvParams = {\n pixelRatio?: number;\n harmony?: HarmonyRuntime;\n runtime?: HarmonyRuntime;\n canvasFactory?: HarmonyCanvasFactory;\n};\n\nconst HARMONY_CANVAS_BRIDGE_ERROR =\n 'Harmony canvas bridge is unavailable. VRender Harmony env requires envParams.canvasFactory ' +\n 'or a Harmony runtime that exposes a global createCanvas/createOffscreenCanvas capability.';\nconst HARMONY_CANVAS_SIZE_ERROR =\n 'Harmony canvas size is unavailable. Pass stage width/height when creating a Harmony 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 getHarmonyEventPoint(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 getHarmonyRuntime(params?: HarmonyEnvParams): HarmonyRuntime | undefined {\n return params?.harmony ?? params?.runtime;\n}\n\nfunction getHarmonyPixelRatio(params?: HarmonyEnvParams): number {\n return params?.pixelRatio ?? 1;\n}\n\nfunction getCanvasSize(width?: number, height?: number) {\n if (!isValidCoordinate(width) || !isValidCoordinate(height)) {\n throw new Error(HARMONY_CANVAS_SIZE_ERROR);\n }\n return { width, height };\n}\n\nfunction getGlobalOffscreenCanvasCtor() {\n try {\n return typeof OffscreenCanvas !== 'undefined' ? OffscreenCanvas : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction createFallbackOffscreenCanvas(width: number, height: number) {\n const OffscreenCanvasCtor = getGlobalOffscreenCanvasCtor();\n if (typeof OffscreenCanvasCtor !== 'function') {\n return null;\n }\n return new OffscreenCanvasCtor(width, height);\n}\n\nfunction wrapHarmonyNativeCanvas(nativeCanvas: any, id: string, width: number, height: number, dpr: number) {\n nativeCanvas.width = width * dpr;\n nativeCanvas.height = height * dpr;\n const context = nativeCanvas.getContext?.('2d') ?? nativeCanvas.getContext?.();\n if (!context) {\n throw new Error(HARMONY_CANVAS_BRIDGE_ERROR);\n }\n if (typeof nativeCanvas.getBoundingClientRect !== 'function') {\n nativeCanvas.getBoundingClientRect = () => ({\n width,\n height\n });\n }\n return new CanvasWrapEnableWH(nativeCanvas, context, dpr, width, height, id);\n}\n\nfunction createHarmonyNativeCanvas(\n id: string,\n width: number,\n height: number,\n dpr: number,\n offscreen: boolean,\n params: HarmonyEnvParams,\n runtime?: HarmonyRuntime\n) {\n const options = {\n id,\n width,\n height,\n dpr,\n offscreen\n };\n\n if (params.canvasFactory) {\n return params.canvasFactory(options);\n }\n\n if (offscreen && typeof runtime?.createOffscreenCanvas === 'function') {\n const canvas = runtime.createOffscreenCanvas(options);\n if (canvas) {\n return canvas;\n }\n }\n\n if (!offscreen && typeof runtime?.createCanvas === 'function') {\n const canvas = runtime.createCanvas(options);\n if (canvas) {\n return canvas;\n }\n }\n\n if (offscreen) {\n const canvas = createFallbackOffscreenCanvas(width * dpr, height * dpr);\n if (canvas) {\n return canvas;\n }\n }\n\n throw new Error(HARMONY_CANVAS_BRIDGE_ERROR);\n}\n\nexport class HarmonyEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'harmony';\n supportEvent: boolean = true;\n rafSTO: RafBasedSTO;\n canvasMap: Map<string, ILynxCanvas> = new Map();\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n private harmonyRuntime?: HarmonyRuntime;\n private harmonyEnvParams?: HarmonyEnvParams;\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 this.rafSTO = new RafBasedSTO(0);\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: HarmonyEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.harmonyEnvParams = params;\n this.harmonyRuntime = getHarmonyRuntime(params);\n\n // loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 9999;\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 if (typeof this.harmonyRuntime?.createImage !== 'function') {\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n const img = this.harmonyRuntime.createImage(url);\n return new Promise(resolve => {\n img.onload = () => {\n resolve({\n data: img,\n loadState: 'success'\n });\n };\n img.onerror = () => {\n resolve({\n data: null,\n loadState: 'fail'\n });\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n const envParams = this.harmonyEnvParams ?? {};\n const runtime = getHarmonyRuntime(envParams);\n const dpr = params.dpr ?? getHarmonyPixelRatio(envParams);\n const size = getCanvasSize(params.width, params.height);\n\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 nativeCanvas = createHarmonyNativeCanvas(id, size.width, size.height, dpr, false, envParams, runtime);\n const canvas = wrapHarmonyNativeCanvas(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 id = Math.random().toString();\n const nativeCanvas = createHarmonyNativeCanvas(id, size.width, size.height, dpr, true, envParams, runtime);\n const canvas = wrapHarmonyNativeCanvas(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 getHarmonyPixelRatio(this.harmonyEnvParams);\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 (callback: FrameRequestCallback) => {\n return this.rafSTO.call(callback);\n };\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n this.rafSTO.clear(h);\n };\n }\n\n mapToCanvasPoint(event: any) {\n return getHarmonyEventPoint(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) ?? null;\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"]}
|
|
@@ -23,10 +23,6 @@ type LynxCanvasFactoryOptions = {
|
|
|
23
23
|
};
|
|
24
24
|
type LynxCanvasFactory = (options: LynxCanvasFactoryOptions) => any;
|
|
25
25
|
type LynxEnvParams = {
|
|
26
|
-
domref?: any;
|
|
27
|
-
canvasIdLists?: string[];
|
|
28
|
-
freeCanvasIdx?: number;
|
|
29
|
-
offscreen?: boolean;
|
|
30
26
|
pixelRatio?: number;
|
|
31
27
|
lynx?: LynxRuntime;
|
|
32
28
|
runtime?: LynxRuntime;
|
|
@@ -79,12 +79,11 @@ function createBoundLynxCanvas(id, runtime) {
|
|
|
79
79
|
return null;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
function getCanvasSize(
|
|
83
|
-
|
|
84
|
-
if (!isValidCoordinate(resolvedWidth) || !isValidCoordinate(resolvedHeight)) throw new Error(LYNX_CANVAS_SIZE_ERROR);
|
|
82
|
+
function getCanvasSize(width, height) {
|
|
83
|
+
if (!isValidCoordinate(width) || !isValidCoordinate(height)) throw new Error(LYNX_CANVAS_SIZE_ERROR);
|
|
85
84
|
return {
|
|
86
|
-
width:
|
|
87
|
-
height:
|
|
85
|
+
width: width,
|
|
86
|
+
height: height
|
|
88
87
|
};
|
|
89
88
|
}
|
|
90
89
|
|
|
@@ -111,19 +110,6 @@ function createLynxNativeCanvas(id, width, height, dpr, offscreen, params, runti
|
|
|
111
110
|
throw new Error(LYNX_CANVAS_BRIDGE_ERROR);
|
|
112
111
|
}
|
|
113
112
|
|
|
114
|
-
function makeUpCanvas(params = {}, canvasMap, freeCanvasList) {
|
|
115
|
-
const runtime = getLynxRuntime(params), {domref: domref, canvasIdLists: canvasIdLists = [], freeCanvasIdx: freeCanvasIdx = 0} = params, offscreen = !!params.offscreen, dpr = getLynxPixelRatio(params, runtime);
|
|
116
|
-
if (canvasIdLists.forEach(((id, i) => {
|
|
117
|
-
const size = getCanvasSize(domref), canvas = wrapLynxNativeCanvas(createLynxNativeCanvas(id, size.width, size.height, dpr, offscreen, params, runtime), id, size.width, size.height, dpr);
|
|
118
|
-
canvasMap.set(id, canvas), i > freeCanvasIdx && freeCanvasList.push(canvas);
|
|
119
|
-
})), !freeCanvasList.length && domref && "function" == typeof (null == runtime ? void 0 : runtime.createOffscreenCanvas)) {
|
|
120
|
-
const size = getCanvasSize(domref), _canvas = runtime.createOffscreenCanvas();
|
|
121
|
-
_canvas.width = size.width * dpr, _canvas.height = size.height * dpr;
|
|
122
|
-
const ctx = _canvas.getContext("2d"), id = Math.random().toString(), canvas = new CanvasWrapEnableWH(_canvas, ctx, dpr, size.width, size.height, id);
|
|
123
|
-
canvasMap.set(id, canvas), freeCanvasList.push(canvas);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
113
|
export function createImageElement(src, isSvg = !1, runtime = getGlobalLynxRuntime()) {
|
|
128
114
|
if (isSvg) return Promise.reject();
|
|
129
115
|
if ("function" != typeof (null == runtime ? void 0 : runtime.createImage)) return Promise.reject(new Error("Lynx image bridge is unavailable."));
|
|
@@ -150,7 +136,7 @@ export class LynxEnvContribution extends BaseEnvContribution {
|
|
|
150
136
|
}
|
|
151
137
|
configure(service, params = {}) {
|
|
152
138
|
service.env === this.type && (service.setActiveEnvContribution(this), this.lynxEnvParams = params,
|
|
153
|
-
this.lynxRuntime = getLynxRuntime(params)
|
|
139
|
+
this.lynxRuntime = getLynxRuntime(params));
|
|
154
140
|
}
|
|
155
141
|
getDynamicCanvasCount() {
|
|
156
142
|
return this.freeCanvasList.length;
|
|
@@ -178,12 +164,12 @@ export class LynxEnvContribution extends BaseEnvContribution {
|
|
|
178
164
|
if (null != params.id) {
|
|
179
165
|
const id = String(params.id), existing = this.canvasMap.get(id);
|
|
180
166
|
if (existing) return existing;
|
|
181
|
-
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(
|
|
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);
|
|
182
168
|
return this.canvasMap.set(id, canvas), canvas;
|
|
183
169
|
}
|
|
184
170
|
const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
|
|
185
171
|
if (this.canvasIdx++, result) return result;
|
|
186
|
-
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(
|
|
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);
|
|
187
173
|
return this.canvasMap.set(id, canvas), this.freeCanvasList.push(canvas), canvas;
|
|
188
174
|
}
|
|
189
175
|
createOffscreenCanvas(params) {}
|