@visactor/vrender-kits 1.1.4-alpha.1 → 1.1.4-alpha.3

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.
@@ -247,4 +247,4 @@ class BrowserEnvContribution extends vrender_core_1.BaseEnvContribution {
247
247
  }
248
248
 
249
249
  exports.BrowserEnvContribution = BrowserEnvContribution;
250
- //# sourceMappingURL=browser-contribution.js.map
250
+ //# sourceMappingURL=browser-contribution.js.map
@@ -12,6 +12,8 @@ type LynxRuntime = Partial<{
12
12
  createCanvasNG: (id?: string) => any;
13
13
  createImage: (id: string) => any;
14
14
  createOffscreenCanvas: () => any;
15
+ requestAnimationFrame: (callback: FrameRequestCallback) => number;
16
+ cancelAnimationFrame: (handle: number) => void;
15
17
  krypton: LynxKryptonRuntime;
16
18
  }>;
17
19
  type LynxCanvasFactoryOptions = {
@@ -37,6 +39,8 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
37
39
  canvasIdx: number;
38
40
  private lynxRuntime?;
39
41
  private lynxEnvParams?;
42
+ private requestAnimationFrame;
43
+ private cancelAnimationFrame;
40
44
  constructor();
41
45
  configure(service: IGlobal, params?: LynxEnvParams): void;
42
46
  getDynamicCanvasCount(): number;
@@ -54,7 +58,7 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
54
58
  releaseCanvas(canvas: ICanvasLike | string): void;
55
59
  getDevicePixelRatio(): number;
56
60
  getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
57
- getCancelAnimationFrame(): (h: number) => void;
61
+ getCancelAnimationFrame(): (handle: number) => void;
58
62
  mapToCanvasPoint(event: any): any;
59
63
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
60
64
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
@@ -48,6 +48,8 @@ function getLynxRuntime(params) {
48
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
49
  }
50
50
 
51
+ const requestAnimationFrameBasedSTO = callback => vrender_core_1.rafBasedSto.call(callback), cancelAnimationFrameBasedSTO = handle => vrender_core_1.rafBasedSto.clear(handle);
52
+
51
53
  function getLynxPixelRatio(params, runtime) {
52
54
  var _a, _b, _c, _d, _e;
53
55
  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;
@@ -130,7 +132,8 @@ exports.createImageElement = createImageElement;
130
132
  class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
131
133
  constructor() {
132
134
  super(), this.type = "lynx", this.supportEvent = !0, this.canvasMap = new Map, this.freeCanvasList = [],
133
- this.canvasIdx = 0, this.supportsTouchEvents = !0;
135
+ this.canvasIdx = 0, this.requestAnimationFrame = requestAnimationFrameBasedSTO,
136
+ this.cancelAnimationFrame = cancelAnimationFrameBasedSTO, this.supportsTouchEvents = !0;
134
137
  try {
135
138
  this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
136
139
  } catch (err) {
@@ -139,8 +142,11 @@ class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
139
142
  this.applyStyles = !0;
140
143
  }
141
144
  configure(service, params = {}) {
145
+ var _a, _b;
142
146
  service.env === this.type && (service.setActiveEnvContribution(this), this.lynxEnvParams = params,
143
- this.lynxRuntime = getLynxRuntime(params));
147
+ this.lynxRuntime = getLynxRuntime(params), "function" == typeof (null === (_a = this.lynxRuntime) || void 0 === _a ? void 0 : _a.requestAnimationFrame) && "function" == typeof (null === (_b = this.lynxRuntime) || void 0 === _b ? void 0 : _b.cancelAnimationFrame) ? (this.requestAnimationFrame = this.lynxRuntime.requestAnimationFrame.bind(this.lynxRuntime),
148
+ this.cancelAnimationFrame = this.lynxRuntime.cancelAnimationFrame.bind(this.lynxRuntime)) : (this.requestAnimationFrame = requestAnimationFrameBasedSTO,
149
+ this.cancelAnimationFrame = cancelAnimationFrameBasedSTO));
144
150
  }
145
151
  getDynamicCanvasCount() {
146
152
  return this.freeCanvasList.length;
@@ -182,14 +188,10 @@ class LynxEnvContribution extends vrender_core_1.BaseEnvContribution {
182
188
  return getLynxPixelRatio(void 0, this.lynxRuntime);
183
189
  }
184
190
  getRequestAnimationFrame() {
185
- return function(callback) {
186
- return vrender_core_1.rafBasedSto.call(callback);
187
- };
191
+ return this.requestAnimationFrame;
188
192
  }
189
193
  getCancelAnimationFrame() {
190
- return h => {
191
- vrender_core_1.rafBasedSto.clear(h);
192
- };
194
+ return this.cancelAnimationFrame;
193
195
  }
194
196
  mapToCanvasPoint(event) {
195
197
  var _a;
@@ -1 +1 @@
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 pixelRatio?: number;\n lynx?: LynxRuntime;\n runtime?: LynxRuntime;\n canvasFactory?: LynxCanvasFactory;\n};\n\nconst LYNX_CANVAS_BRIDGE_ERROR =\n 'Lynx canvas bridge is unavailable. VRender Lynx env requires envParams.canvasFactory ' +\n 'or a Lynx runtime that exposes createCanvasNG/createCanvas/createOffscreenCanvas/krypton canvas APIs.';\nconst LYNX_CANVAS_SIZE_ERROR =\n 'Lynx canvas size is unavailable. Pass stage width/height when creating a Lynx stage canvas.';\n\nfunction isValidCoordinate(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction pickCoordinate(...values: unknown[]): number | undefined {\n for (let i = 0; i < values.length; i++) {\n if (isValidCoordinate(values[i])) {\n return values[i] as number;\n }\n }\n return undefined;\n}\n\nfunction getPrimaryTouch(event: any) {\n return event?.changedTouches?.[0] ?? event?.touches?.[0];\n}\n\nfunction getLynxEventPoint(event: any) {\n const touch = getPrimaryTouch(event);\n const x = pickCoordinate(\n event?.x,\n event?.offsetX,\n event?.clientX,\n event?.pageX,\n touch?.x,\n touch?.offsetX,\n touch?.clientX,\n touch?.pageX\n );\n const y = pickCoordinate(\n event?.y,\n event?.offsetY,\n event?.clientY,\n event?.pageY,\n touch?.y,\n touch?.offsetY,\n touch?.clientY,\n touch?.pageY\n );\n\n return x == null || y == null ? null : { x, y };\n}\n\nfunction getGlobalLynxRuntime(): LynxRuntime | undefined {\n try {\n return typeof lynx !== 'undefined' ? lynx : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getGlobalSystemPixelRatio(): number | undefined {\n try {\n return typeof SystemInfo !== 'undefined' ? SystemInfo.pixelRatio : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getLynxRuntime(params?: LynxEnvParams): LynxRuntime | undefined {\n return params?.lynx ?? params?.runtime ?? getGlobalLynxRuntime();\n}\n\nfunction getLynxPixelRatio(params?: LynxEnvParams, runtime?: LynxRuntime): number {\n return params?.pixelRatio ?? runtime?.getSystemInfoSync?.()?.pixelRatio ?? getGlobalSystemPixelRatio() ?? 1;\n}\n\nfunction attachLynxCanvasToView(canvas: any, id: string) {\n canvas?.attachToCanvasView?.(id);\n return canvas;\n}\n\nfunction createBoundLynxCanvas(id: string, runtime?: LynxRuntime) {\n if (typeof runtime?.krypton?.createCanvas === 'function') {\n const canvas = runtime.krypton.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n if (typeof runtime?.createCanvasNG === 'function') {\n const canvas = runtime.createCanvasNG(id);\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.createCanvasNG === 'function') {\n const canvas = runtime.krypton.createCanvasNG();\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.CanvasElement === 'function') {\n return new runtime.krypton.CanvasElement(id);\n }\n\n if (typeof runtime?.createCanvas === 'function') {\n const canvas = runtime.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n return null;\n}\n\nfunction getCanvasSize(width?: number, height?: number) {\n if (!isValidCoordinate(width) || !isValidCoordinate(height)) {\n throw new Error(LYNX_CANVAS_SIZE_ERROR);\n }\n return { width, height };\n}\n\nfunction wrapLynxNativeCanvas(nativeCanvas: any, id: string, width: number, height: number, dpr: number) {\n nativeCanvas.width = width * dpr;\n nativeCanvas.height = height * dpr;\n\n const ctx = nativeCanvas.getContext('2d');\n return new CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);\n}\n\nfunction createLynxNativeCanvas(\n id: string,\n width: number,\n height: number,\n dpr: number,\n offscreen: boolean,\n params: LynxEnvParams,\n runtime?: LynxRuntime\n) {\n if (params.canvasFactory) {\n return params.canvasFactory({\n id,\n width,\n height,\n dpr,\n offscreen\n });\n }\n\n if (offscreen) {\n if (typeof runtime?.createOffscreenCanvas === 'function') {\n return runtime.createOffscreenCanvas();\n }\n } else {\n const canvas = createBoundLynxCanvas(id, runtime);\n if (canvas) {\n return canvas;\n }\n }\n\n throw new Error(LYNX_CANVAS_BRIDGE_ERROR);\n}\n\nexport function createImageElement(\n src: string,\n isSvg: boolean = false,\n runtime: LynxRuntime | undefined = getGlobalLynxRuntime()\n): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n if (typeof runtime?.createImage !== 'function') {\n return Promise.reject(new Error('Lynx image bridge is unavailable.'));\n }\n const img = runtime.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\nexport class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'lynx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ILynxCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n private lynxRuntime?: LynxRuntime;\n private lynxEnvParams?: LynxEnvParams;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: LynxEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.lynxEnvParams = params;\n this.lynxRuntime = getLynxRuntime(params);\n\n // loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 9999;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false, this.lynxRuntime);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // Lynx 不支持 DOMParser 和 URL.createObjectURL,无法解析 svg 字符串,可以通过 url 使用 svg 资源\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n if (params.id != null) {\n const id = String(params.id);\n const existing = this.canvasMap.get(id);\n if (existing) {\n return existing;\n }\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, false, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n return canvas;\n }\n\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n if (result) {\n return result;\n }\n\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const id = Math.random().toString();\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, true, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n this.freeCanvasList.push(canvas);\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return getLynxPixelRatio(undefined, this.lynxRuntime);\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n mapToCanvasPoint(event: any) {\n return getLynxEventPoint(event) ?? event;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
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 requestAnimationFrame: (callback: FrameRequestCallback) => number;\n cancelAnimationFrame: (handle: number) => void;\n krypton: LynxKryptonRuntime;\n}>;\n\ntype LynxCanvasFactoryOptions = {\n id: string;\n width: number;\n height: number;\n dpr: number;\n offscreen: boolean;\n};\n\ntype LynxCanvasFactory = (options: LynxCanvasFactoryOptions) => any;\n\ntype LynxEnvParams = {\n pixelRatio?: number;\n lynx?: LynxRuntime;\n runtime?: LynxRuntime;\n canvasFactory?: LynxCanvasFactory;\n};\n\nconst LYNX_CANVAS_BRIDGE_ERROR =\n 'Lynx canvas bridge is unavailable. VRender Lynx env requires envParams.canvasFactory ' +\n 'or a Lynx runtime that exposes createCanvasNG/createCanvas/createOffscreenCanvas/krypton canvas APIs.';\nconst LYNX_CANVAS_SIZE_ERROR =\n 'Lynx canvas size is unavailable. Pass stage width/height when creating a Lynx stage canvas.';\n\nfunction isValidCoordinate(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction pickCoordinate(...values: unknown[]): number | undefined {\n for (let i = 0; i < values.length; i++) {\n if (isValidCoordinate(values[i])) {\n return values[i] as number;\n }\n }\n return undefined;\n}\n\nfunction getPrimaryTouch(event: any) {\n return event?.changedTouches?.[0] ?? event?.touches?.[0];\n}\n\nfunction getLynxEventPoint(event: any) {\n const touch = getPrimaryTouch(event);\n const x = pickCoordinate(\n event?.x,\n event?.offsetX,\n event?.clientX,\n event?.pageX,\n touch?.x,\n touch?.offsetX,\n touch?.clientX,\n touch?.pageX\n );\n const y = pickCoordinate(\n event?.y,\n event?.offsetY,\n event?.clientY,\n event?.pageY,\n touch?.y,\n touch?.offsetY,\n touch?.clientY,\n touch?.pageY\n );\n\n return x == null || y == null ? null : { x, y };\n}\n\nfunction getGlobalLynxRuntime(): LynxRuntime | undefined {\n try {\n return typeof lynx !== 'undefined' ? lynx : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getGlobalSystemPixelRatio(): number | undefined {\n try {\n return typeof SystemInfo !== 'undefined' ? SystemInfo.pixelRatio : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getLynxRuntime(params?: LynxEnvParams): LynxRuntime | undefined {\n return params?.lynx ?? params?.runtime ?? getGlobalLynxRuntime();\n}\n\nconst requestAnimationFrameBasedSTO = (callback: FrameRequestCallback): number => rafBasedSto.call(callback);\nconst cancelAnimationFrameBasedSTO = (handle: number): void => rafBasedSto.clear(handle);\n\nfunction getLynxPixelRatio(params?: LynxEnvParams, runtime?: LynxRuntime): number {\n return params?.pixelRatio ?? runtime?.getSystemInfoSync?.()?.pixelRatio ?? getGlobalSystemPixelRatio() ?? 1;\n}\n\nfunction attachLynxCanvasToView(canvas: any, id: string) {\n canvas?.attachToCanvasView?.(id);\n return canvas;\n}\n\nfunction createBoundLynxCanvas(id: string, runtime?: LynxRuntime) {\n if (typeof runtime?.krypton?.createCanvas === 'function') {\n const canvas = runtime.krypton.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n if (typeof runtime?.createCanvasNG === 'function') {\n const canvas = runtime.createCanvasNG(id);\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.createCanvasNG === 'function') {\n const canvas = runtime.krypton.createCanvasNG();\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.CanvasElement === 'function') {\n return new runtime.krypton.CanvasElement(id);\n }\n\n if (typeof runtime?.createCanvas === 'function') {\n const canvas = runtime.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n return null;\n}\n\nfunction getCanvasSize(width?: number, height?: number) {\n if (!isValidCoordinate(width) || !isValidCoordinate(height)) {\n throw new Error(LYNX_CANVAS_SIZE_ERROR);\n }\n return { width, height };\n}\n\nfunction wrapLynxNativeCanvas(nativeCanvas: any, id: string, width: number, height: number, dpr: number) {\n nativeCanvas.width = width * dpr;\n nativeCanvas.height = height * dpr;\n\n const ctx = nativeCanvas.getContext('2d');\n return new CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);\n}\n\nfunction createLynxNativeCanvas(\n id: string,\n width: number,\n height: number,\n dpr: number,\n offscreen: boolean,\n params: LynxEnvParams,\n runtime?: LynxRuntime\n) {\n if (params.canvasFactory) {\n return params.canvasFactory({\n id,\n width,\n height,\n dpr,\n offscreen\n });\n }\n\n if (offscreen) {\n if (typeof runtime?.createOffscreenCanvas === 'function') {\n return runtime.createOffscreenCanvas();\n }\n } else {\n const canvas = createBoundLynxCanvas(id, runtime);\n if (canvas) {\n return canvas;\n }\n }\n\n throw new Error(LYNX_CANVAS_BRIDGE_ERROR);\n}\n\nexport function createImageElement(\n src: string,\n isSvg: boolean = false,\n runtime: LynxRuntime | undefined = getGlobalLynxRuntime()\n): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n if (typeof runtime?.createImage !== 'function') {\n return Promise.reject(new Error('Lynx image bridge is unavailable.'));\n }\n const img = runtime.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\nexport class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'lynx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ILynxCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n private lynxRuntime?: LynxRuntime;\n private lynxEnvParams?: LynxEnvParams;\n private requestAnimationFrame = requestAnimationFrameBasedSTO;\n private cancelAnimationFrame = cancelAnimationFrameBasedSTO;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: LynxEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.lynxEnvParams = params;\n this.lynxRuntime = getLynxRuntime(params);\n\n if (\n typeof this.lynxRuntime?.requestAnimationFrame === 'function' &&\n typeof this.lynxRuntime?.cancelAnimationFrame === 'function'\n ) {\n this.requestAnimationFrame = this.lynxRuntime.requestAnimationFrame.bind(this.lynxRuntime);\n this.cancelAnimationFrame = this.lynxRuntime.cancelAnimationFrame.bind(this.lynxRuntime);\n } else {\n this.requestAnimationFrame = requestAnimationFrameBasedSTO;\n this.cancelAnimationFrame = cancelAnimationFrameBasedSTO;\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, this.lynxRuntime);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // Lynx 不支持 DOMParser 和 URL.createObjectURL,无法解析 svg 字符串,可以通过 url 使用 svg 资源\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n if (params.id != null) {\n const id = String(params.id);\n const existing = this.canvasMap.get(id);\n if (existing) {\n return existing;\n }\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, false, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n return canvas;\n }\n\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n if (result) {\n return result;\n }\n\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const id = Math.random().toString();\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, true, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n this.freeCanvasList.push(canvas);\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return getLynxPixelRatio(undefined, this.lynxRuntime);\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return this.requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (handle: number) => void {\n return this.cancelAnimationFrame;\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"]}
@@ -51,4 +51,4 @@ class DragNDrop {
51
51
  }
52
52
 
53
53
  exports.DragNDrop = DragNDrop;
54
- //# sourceMappingURL=drag.js.map
54
+ //# sourceMappingURL=drag.js.map
@@ -58,4 +58,5 @@ function createLottie(attributes) {
58
58
  }
59
59
 
60
60
  exports.Lottie = Lottie, Lottie.NOWORK_ANIMATE_ATTR = vrender_core_1.NOWORK_ANIMATE_ATTR,
61
- exports.createLottie = createLottie;
61
+ exports.createLottie = createLottie;
62
+ //# sourceMappingURL=Lottie.js.map
@@ -212,5 +212,4 @@ exports.installTaroEnvToApp = installTaroEnvToApp, exports.installFeishuEnvToApp
212
212
  exports.installTTEnvToApp = installTTEnvToApp, exports.installWxEnvToApp = installWxEnvToApp,
213
213
  exports.installLynxEnvToApp = installLynxEnvToApp, exports.installHarmonyEnvToApp = installHarmonyEnvToApp,
214
214
  exports.installDefaultGraphicsToApp = installDefaultGraphicsToApp, exports.installBrowserPickersToApp = installBrowserPickersToApp,
215
- exports.installNodePickersToApp = installNodePickersToApp, exports.installMathPickersToApp = installMathPickersToApp;
216
- //# sourceMappingURL=app.js.map
215
+ exports.installNodePickersToApp = installNodePickersToApp, exports.installMathPickersToApp = installMathPickersToApp;
package/dist/index.es.js CHANGED
@@ -4496,13 +4496,14 @@ function applyFillStyle(ctx, character, b) {
4496
4496
  }) : fillStyle, setTextStyle(ctx, character);
4497
4497
  }
4498
4498
  function applyStrokeStyle(ctx, character) {
4499
+ var _a, _b;
4499
4500
  const strokeStyle = character && character.stroke || defaultFormatting.stroke;
4500
4501
  if (!strokeStyle) return void (ctx.globalAlpha = 0);
4501
4502
  const {
4502
4503
  strokeOpacity = 1,
4503
4504
  opacity = 1
4504
4505
  } = character;
4505
- ctx.globalAlpha = strokeOpacity * opacity, ctx.lineWidth = character && "number" == typeof character.lineWidth ? character.lineWidth : 1, ctx.strokeStyle = strokeStyle, setTextStyle(ctx, character);
4506
+ ctx.globalAlpha = strokeOpacity * opacity, ctx.lineWidth = character && "number" == typeof character.lineWidth ? character.lineWidth : 1, ctx.setLineDash(null !== (_a = character.lineDash) && void 0 !== _a ? _a : []), ctx.lineDashOffset = null !== (_b = character.lineDashOffset) && void 0 !== _b ? _b : 0, ctx.strokeStyle = strokeStyle, setTextStyle(ctx, character);
4506
4507
  }
4507
4508
  function getStrByWithCanvas(desc, width, character, guessIndex, needTestLetter) {
4508
4509
  if (desc.length <= 1) return 0;
@@ -22805,6 +22806,8 @@ function getLynxRuntime(params) {
22805
22806
  var _a, _b;
22806
22807
  return (_b = (_a = params === null || params === void 0 ? void 0 : params.lynx) !== null && _a !== void 0 ? _a : params === null || params === void 0 ? void 0 : params.runtime) !== null && _b !== void 0 ? _b : getGlobalLynxRuntime();
22807
22808
  }
22809
+ const requestAnimationFrameBasedSTO = (callback) => rafBasedSto.call(callback);
22810
+ const cancelAnimationFrameBasedSTO = (handle) => rafBasedSto.clear(handle);
22808
22811
  function getLynxPixelRatio(params, runtime) {
22809
22812
  var _a, _b, _c, _d, _e;
22810
22813
  return (_e = (_d = (_a = params === null || params === void 0 ? void 0 : params.pixelRatio) !== null && _a !== void 0 ? _a : (_c = (_b = runtime === null || runtime === void 0 ? void 0 : runtime.getSystemInfoSync) === null || _b === void 0 ? void 0 : _b.call(runtime)) === null || _c === void 0 ? void 0 : _c.pixelRatio) !== null && _d !== void 0 ? _d : getGlobalSystemPixelRatio()) !== null && _e !== void 0 ? _e : 1;
@@ -22906,6 +22909,8 @@ class LynxEnvContribution extends BaseEnvContribution {
22906
22909
  this.canvasMap = new Map();
22907
22910
  this.freeCanvasList = [];
22908
22911
  this.canvasIdx = 0;
22912
+ this.requestAnimationFrame = requestAnimationFrameBasedSTO;
22913
+ this.cancelAnimationFrame = cancelAnimationFrameBasedSTO;
22909
22914
  this.supportsTouchEvents = true;
22910
22915
  try {
22911
22916
  this.supportsPointerEvents = !!globalThis.PointerEvent;
@@ -22918,10 +22923,20 @@ class LynxEnvContribution extends BaseEnvContribution {
22918
22923
  this.applyStyles = true;
22919
22924
  }
22920
22925
  configure(service, params = {}) {
22926
+ var _a, _b;
22921
22927
  if (service.env === this.type) {
22922
22928
  service.setActiveEnvContribution(this);
22923
22929
  this.lynxEnvParams = params;
22924
22930
  this.lynxRuntime = getLynxRuntime(params);
22931
+ if (typeof ((_a = this.lynxRuntime) === null || _a === void 0 ? void 0 : _a.requestAnimationFrame) === 'function' &&
22932
+ typeof ((_b = this.lynxRuntime) === null || _b === void 0 ? void 0 : _b.cancelAnimationFrame) === 'function') {
22933
+ this.requestAnimationFrame = this.lynxRuntime.requestAnimationFrame.bind(this.lynxRuntime);
22934
+ this.cancelAnimationFrame = this.lynxRuntime.cancelAnimationFrame.bind(this.lynxRuntime);
22935
+ }
22936
+ else {
22937
+ this.requestAnimationFrame = requestAnimationFrameBasedSTO;
22938
+ this.cancelAnimationFrame = cancelAnimationFrameBasedSTO;
22939
+ }
22925
22940
  }
22926
22941
  }
22927
22942
  getDynamicCanvasCount() {
@@ -22995,14 +23010,10 @@ class LynxEnvContribution extends BaseEnvContribution {
22995
23010
  return getLynxPixelRatio(undefined, this.lynxRuntime);
22996
23011
  }
22997
23012
  getRequestAnimationFrame() {
22998
- return function (callback) {
22999
- return rafBasedSto.call(callback);
23000
- };
23013
+ return this.requestAnimationFrame;
23001
23014
  }
23002
23015
  getCancelAnimationFrame() {
23003
- return (h) => {
23004
- rafBasedSto.clear(h);
23005
- };
23016
+ return this.cancelAnimationFrame;
23006
23017
  }
23007
23018
  mapToCanvasPoint(event) {
23008
23019
  var _a;
@@ -242,4 +242,4 @@ export class BrowserEnvContribution extends BaseEnvContribution {
242
242
  return navigator.clipboard.writeText(text).then((() => {})).catch((err => {}));
243
243
  }
244
244
  }
245
- //# sourceMappingURL=browser-contribution.js.map
245
+ //# sourceMappingURL=browser-contribution.js.map
@@ -12,6 +12,8 @@ type LynxRuntime = Partial<{
12
12
  createCanvasNG: (id?: string) => any;
13
13
  createImage: (id: string) => any;
14
14
  createOffscreenCanvas: () => any;
15
+ requestAnimationFrame: (callback: FrameRequestCallback) => number;
16
+ cancelAnimationFrame: (handle: number) => void;
15
17
  krypton: LynxKryptonRuntime;
16
18
  }>;
17
19
  type LynxCanvasFactoryOptions = {
@@ -37,6 +39,8 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
37
39
  canvasIdx: number;
38
40
  private lynxRuntime?;
39
41
  private lynxEnvParams?;
42
+ private requestAnimationFrame;
43
+ private cancelAnimationFrame;
40
44
  constructor();
41
45
  configure(service: IGlobal, params?: LynxEnvParams): void;
42
46
  getDynamicCanvasCount(): number;
@@ -54,7 +58,7 @@ export declare class LynxEnvContribution extends BaseEnvContribution implements
54
58
  releaseCanvas(canvas: ICanvasLike | string): void;
55
59
  getDevicePixelRatio(): number;
56
60
  getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
57
- getCancelAnimationFrame(): (h: number) => void;
61
+ getCancelAnimationFrame(): (handle: number) => void;
58
62
  mapToCanvasPoint(event: any): any;
59
63
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
60
64
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
@@ -46,6 +46,8 @@ function getLynxRuntime(params) {
46
46
  return null !== (_b = null !== (_a = null == params ? void 0 : params.lynx) && void 0 !== _a ? _a : null == params ? void 0 : params.runtime) && void 0 !== _b ? _b : getGlobalLynxRuntime();
47
47
  }
48
48
 
49
+ const requestAnimationFrameBasedSTO = callback => rafBasedSto.call(callback), cancelAnimationFrameBasedSTO = handle => rafBasedSto.clear(handle);
50
+
49
51
  function getLynxPixelRatio(params, runtime) {
50
52
  var _a, _b, _c, _d, _e;
51
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;
@@ -126,7 +128,8 @@ export function createImageElement(src, isSvg = !1, runtime = getGlobalLynxRunti
126
128
  export class LynxEnvContribution extends BaseEnvContribution {
127
129
  constructor() {
128
130
  super(), this.type = "lynx", this.supportEvent = !0, this.canvasMap = new Map, this.freeCanvasList = [],
129
- this.canvasIdx = 0, this.supportsTouchEvents = !0;
131
+ this.canvasIdx = 0, this.requestAnimationFrame = requestAnimationFrameBasedSTO,
132
+ this.cancelAnimationFrame = cancelAnimationFrameBasedSTO, this.supportsTouchEvents = !0;
130
133
  try {
131
134
  this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
132
135
  } catch (err) {
@@ -135,8 +138,11 @@ export class LynxEnvContribution extends BaseEnvContribution {
135
138
  this.applyStyles = !0;
136
139
  }
137
140
  configure(service, params = {}) {
141
+ var _a, _b;
138
142
  service.env === this.type && (service.setActiveEnvContribution(this), this.lynxEnvParams = params,
139
- this.lynxRuntime = getLynxRuntime(params));
143
+ this.lynxRuntime = getLynxRuntime(params), "function" == typeof (null === (_a = this.lynxRuntime) || void 0 === _a ? void 0 : _a.requestAnimationFrame) && "function" == typeof (null === (_b = this.lynxRuntime) || void 0 === _b ? void 0 : _b.cancelAnimationFrame) ? (this.requestAnimationFrame = this.lynxRuntime.requestAnimationFrame.bind(this.lynxRuntime),
144
+ this.cancelAnimationFrame = this.lynxRuntime.cancelAnimationFrame.bind(this.lynxRuntime)) : (this.requestAnimationFrame = requestAnimationFrameBasedSTO,
145
+ this.cancelAnimationFrame = cancelAnimationFrameBasedSTO));
140
146
  }
141
147
  getDynamicCanvasCount() {
142
148
  return this.freeCanvasList.length;
@@ -178,14 +184,10 @@ export class LynxEnvContribution extends BaseEnvContribution {
178
184
  return getLynxPixelRatio(void 0, this.lynxRuntime);
179
185
  }
180
186
  getRequestAnimationFrame() {
181
- return function(callback) {
182
- return rafBasedSto.call(callback);
183
- };
187
+ return this.requestAnimationFrame;
184
188
  }
185
189
  getCancelAnimationFrame() {
186
- return h => {
187
- rafBasedSto.clear(h);
188
- };
190
+ return this.cancelAnimationFrame;
189
191
  }
190
192
  mapToCanvasPoint(event) {
191
193
  var _a;
@@ -1 +1 @@
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 pixelRatio?: number;\n lynx?: LynxRuntime;\n runtime?: LynxRuntime;\n canvasFactory?: LynxCanvasFactory;\n};\n\nconst LYNX_CANVAS_BRIDGE_ERROR =\n 'Lynx canvas bridge is unavailable. VRender Lynx env requires envParams.canvasFactory ' +\n 'or a Lynx runtime that exposes createCanvasNG/createCanvas/createOffscreenCanvas/krypton canvas APIs.';\nconst LYNX_CANVAS_SIZE_ERROR =\n 'Lynx canvas size is unavailable. Pass stage width/height when creating a Lynx stage canvas.';\n\nfunction isValidCoordinate(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction pickCoordinate(...values: unknown[]): number | undefined {\n for (let i = 0; i < values.length; i++) {\n if (isValidCoordinate(values[i])) {\n return values[i] as number;\n }\n }\n return undefined;\n}\n\nfunction getPrimaryTouch(event: any) {\n return event?.changedTouches?.[0] ?? event?.touches?.[0];\n}\n\nfunction getLynxEventPoint(event: any) {\n const touch = getPrimaryTouch(event);\n const x = pickCoordinate(\n event?.x,\n event?.offsetX,\n event?.clientX,\n event?.pageX,\n touch?.x,\n touch?.offsetX,\n touch?.clientX,\n touch?.pageX\n );\n const y = pickCoordinate(\n event?.y,\n event?.offsetY,\n event?.clientY,\n event?.pageY,\n touch?.y,\n touch?.offsetY,\n touch?.clientY,\n touch?.pageY\n );\n\n return x == null || y == null ? null : { x, y };\n}\n\nfunction getGlobalLynxRuntime(): LynxRuntime | undefined {\n try {\n return typeof lynx !== 'undefined' ? lynx : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getGlobalSystemPixelRatio(): number | undefined {\n try {\n return typeof SystemInfo !== 'undefined' ? SystemInfo.pixelRatio : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getLynxRuntime(params?: LynxEnvParams): LynxRuntime | undefined {\n return params?.lynx ?? params?.runtime ?? getGlobalLynxRuntime();\n}\n\nfunction getLynxPixelRatio(params?: LynxEnvParams, runtime?: LynxRuntime): number {\n return params?.pixelRatio ?? runtime?.getSystemInfoSync?.()?.pixelRatio ?? getGlobalSystemPixelRatio() ?? 1;\n}\n\nfunction attachLynxCanvasToView(canvas: any, id: string) {\n canvas?.attachToCanvasView?.(id);\n return canvas;\n}\n\nfunction createBoundLynxCanvas(id: string, runtime?: LynxRuntime) {\n if (typeof runtime?.krypton?.createCanvas === 'function') {\n const canvas = runtime.krypton.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n if (typeof runtime?.createCanvasNG === 'function') {\n const canvas = runtime.createCanvasNG(id);\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.createCanvasNG === 'function') {\n const canvas = runtime.krypton.createCanvasNG();\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.CanvasElement === 'function') {\n return new runtime.krypton.CanvasElement(id);\n }\n\n if (typeof runtime?.createCanvas === 'function') {\n const canvas = runtime.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n return null;\n}\n\nfunction getCanvasSize(width?: number, height?: number) {\n if (!isValidCoordinate(width) || !isValidCoordinate(height)) {\n throw new Error(LYNX_CANVAS_SIZE_ERROR);\n }\n return { width, height };\n}\n\nfunction wrapLynxNativeCanvas(nativeCanvas: any, id: string, width: number, height: number, dpr: number) {\n nativeCanvas.width = width * dpr;\n nativeCanvas.height = height * dpr;\n\n const ctx = nativeCanvas.getContext('2d');\n return new CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);\n}\n\nfunction createLynxNativeCanvas(\n id: string,\n width: number,\n height: number,\n dpr: number,\n offscreen: boolean,\n params: LynxEnvParams,\n runtime?: LynxRuntime\n) {\n if (params.canvasFactory) {\n return params.canvasFactory({\n id,\n width,\n height,\n dpr,\n offscreen\n });\n }\n\n if (offscreen) {\n if (typeof runtime?.createOffscreenCanvas === 'function') {\n return runtime.createOffscreenCanvas();\n }\n } else {\n const canvas = createBoundLynxCanvas(id, runtime);\n if (canvas) {\n return canvas;\n }\n }\n\n throw new Error(LYNX_CANVAS_BRIDGE_ERROR);\n}\n\nexport function createImageElement(\n src: string,\n isSvg: boolean = false,\n runtime: LynxRuntime | undefined = getGlobalLynxRuntime()\n): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n if (typeof runtime?.createImage !== 'function') {\n return Promise.reject(new Error('Lynx image bridge is unavailable.'));\n }\n const img = runtime.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\nexport class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'lynx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ILynxCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n private lynxRuntime?: LynxRuntime;\n private lynxEnvParams?: LynxEnvParams;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: LynxEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.lynxEnvParams = params;\n this.lynxRuntime = getLynxRuntime(params);\n\n // loadFeishuContributions();\n }\n }\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return this.freeCanvasList.length;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 9999;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false, this.lynxRuntime);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // Lynx 不支持 DOMParser 和 URL.createObjectURL,无法解析 svg 字符串,可以通过 url 使用 svg 资源\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n if (params.id != null) {\n const id = String(params.id);\n const existing = this.canvasMap.get(id);\n if (existing) {\n return existing;\n }\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, false, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n return canvas;\n }\n\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n if (result) {\n return result;\n }\n\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const id = Math.random().toString();\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, true, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n this.freeCanvasList.push(canvas);\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return getLynxPixelRatio(undefined, this.lynxRuntime);\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n mapToCanvasPoint(event: any) {\n return getLynxEventPoint(event) ?? event;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
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 requestAnimationFrame: (callback: FrameRequestCallback) => number;\n cancelAnimationFrame: (handle: number) => void;\n krypton: LynxKryptonRuntime;\n}>;\n\ntype LynxCanvasFactoryOptions = {\n id: string;\n width: number;\n height: number;\n dpr: number;\n offscreen: boolean;\n};\n\ntype LynxCanvasFactory = (options: LynxCanvasFactoryOptions) => any;\n\ntype LynxEnvParams = {\n pixelRatio?: number;\n lynx?: LynxRuntime;\n runtime?: LynxRuntime;\n canvasFactory?: LynxCanvasFactory;\n};\n\nconst LYNX_CANVAS_BRIDGE_ERROR =\n 'Lynx canvas bridge is unavailable. VRender Lynx env requires envParams.canvasFactory ' +\n 'or a Lynx runtime that exposes createCanvasNG/createCanvas/createOffscreenCanvas/krypton canvas APIs.';\nconst LYNX_CANVAS_SIZE_ERROR =\n 'Lynx canvas size is unavailable. Pass stage width/height when creating a Lynx stage canvas.';\n\nfunction isValidCoordinate(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction pickCoordinate(...values: unknown[]): number | undefined {\n for (let i = 0; i < values.length; i++) {\n if (isValidCoordinate(values[i])) {\n return values[i] as number;\n }\n }\n return undefined;\n}\n\nfunction getPrimaryTouch(event: any) {\n return event?.changedTouches?.[0] ?? event?.touches?.[0];\n}\n\nfunction getLynxEventPoint(event: any) {\n const touch = getPrimaryTouch(event);\n const x = pickCoordinate(\n event?.x,\n event?.offsetX,\n event?.clientX,\n event?.pageX,\n touch?.x,\n touch?.offsetX,\n touch?.clientX,\n touch?.pageX\n );\n const y = pickCoordinate(\n event?.y,\n event?.offsetY,\n event?.clientY,\n event?.pageY,\n touch?.y,\n touch?.offsetY,\n touch?.clientY,\n touch?.pageY\n );\n\n return x == null || y == null ? null : { x, y };\n}\n\nfunction getGlobalLynxRuntime(): LynxRuntime | undefined {\n try {\n return typeof lynx !== 'undefined' ? lynx : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getGlobalSystemPixelRatio(): number | undefined {\n try {\n return typeof SystemInfo !== 'undefined' ? SystemInfo.pixelRatio : undefined;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getLynxRuntime(params?: LynxEnvParams): LynxRuntime | undefined {\n return params?.lynx ?? params?.runtime ?? getGlobalLynxRuntime();\n}\n\nconst requestAnimationFrameBasedSTO = (callback: FrameRequestCallback): number => rafBasedSto.call(callback);\nconst cancelAnimationFrameBasedSTO = (handle: number): void => rafBasedSto.clear(handle);\n\nfunction getLynxPixelRatio(params?: LynxEnvParams, runtime?: LynxRuntime): number {\n return params?.pixelRatio ?? runtime?.getSystemInfoSync?.()?.pixelRatio ?? getGlobalSystemPixelRatio() ?? 1;\n}\n\nfunction attachLynxCanvasToView(canvas: any, id: string) {\n canvas?.attachToCanvasView?.(id);\n return canvas;\n}\n\nfunction createBoundLynxCanvas(id: string, runtime?: LynxRuntime) {\n if (typeof runtime?.krypton?.createCanvas === 'function') {\n const canvas = runtime.krypton.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n if (typeof runtime?.createCanvasNG === 'function') {\n const canvas = runtime.createCanvasNG(id);\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.createCanvasNG === 'function') {\n const canvas = runtime.krypton.createCanvasNG();\n if (canvas) {\n return attachLynxCanvasToView(canvas, id);\n }\n }\n\n if (typeof runtime?.krypton?.CanvasElement === 'function') {\n return new runtime.krypton.CanvasElement(id);\n }\n\n if (typeof runtime?.createCanvas === 'function') {\n const canvas = runtime.createCanvas(id);\n if (canvas) {\n return canvas;\n }\n }\n\n return null;\n}\n\nfunction getCanvasSize(width?: number, height?: number) {\n if (!isValidCoordinate(width) || !isValidCoordinate(height)) {\n throw new Error(LYNX_CANVAS_SIZE_ERROR);\n }\n return { width, height };\n}\n\nfunction wrapLynxNativeCanvas(nativeCanvas: any, id: string, width: number, height: number, dpr: number) {\n nativeCanvas.width = width * dpr;\n nativeCanvas.height = height * dpr;\n\n const ctx = nativeCanvas.getContext('2d');\n return new CanvasWrapEnableWH(nativeCanvas, ctx, dpr, width, height, id);\n}\n\nfunction createLynxNativeCanvas(\n id: string,\n width: number,\n height: number,\n dpr: number,\n offscreen: boolean,\n params: LynxEnvParams,\n runtime?: LynxRuntime\n) {\n if (params.canvasFactory) {\n return params.canvasFactory({\n id,\n width,\n height,\n dpr,\n offscreen\n });\n }\n\n if (offscreen) {\n if (typeof runtime?.createOffscreenCanvas === 'function') {\n return runtime.createOffscreenCanvas();\n }\n } else {\n const canvas = createBoundLynxCanvas(id, runtime);\n if (canvas) {\n return canvas;\n }\n }\n\n throw new Error(LYNX_CANVAS_BRIDGE_ERROR);\n}\n\nexport function createImageElement(\n src: string,\n isSvg: boolean = false,\n runtime: LynxRuntime | undefined = getGlobalLynxRuntime()\n): Promise<HTMLImageElement> {\n if (isSvg) {\n return Promise.reject();\n }\n if (typeof runtime?.createImage !== 'function') {\n return Promise.reject(new Error('Lynx image bridge is unavailable.'));\n }\n const img = runtime.createImage(src);\n // if (img.complete) {\n // return Promise.resolve(img);\n // }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\nexport class LynxEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'lynx';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ILynxCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ILynxCanvas[] = [];\n canvasIdx: number = 0;\n private lynxRuntime?: LynxRuntime;\n private lynxEnvParams?: LynxEnvParams;\n private requestAnimationFrame = requestAnimationFrameBasedSTO;\n private cancelAnimationFrame = cancelAnimationFrameBasedSTO;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: LynxEnvParams = {}) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.lynxEnvParams = params;\n this.lynxRuntime = getLynxRuntime(params);\n\n if (\n typeof this.lynxRuntime?.requestAnimationFrame === 'function' &&\n typeof this.lynxRuntime?.cancelAnimationFrame === 'function'\n ) {\n this.requestAnimationFrame = this.lynxRuntime.requestAnimationFrame.bind(this.lynxRuntime);\n this.cancelAnimationFrame = this.lynxRuntime.cancelAnimationFrame.bind(this.lynxRuntime);\n } else {\n this.requestAnimationFrame = requestAnimationFrameBasedSTO;\n this.cancelAnimationFrame = cancelAnimationFrameBasedSTO;\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, this.lynxRuntime);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // Lynx 不支持 DOMParser 和 URL.createObjectURL,无法解析 svg 字符串,可以通过 url 使用 svg 资源\n return Promise.resolve({\n data: null,\n loadState: 'fail'\n });\n }\n\n createCanvas(params: ICreateCanvasParams): ILynxCanvas {\n if (params.id != null) {\n const id = String(params.id);\n const existing = this.canvasMap.get(id);\n if (existing) {\n return existing;\n }\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, false, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n return canvas;\n }\n\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n if (result) {\n return result;\n }\n\n const envParams = this.lynxEnvParams ?? {};\n const runtime = getLynxRuntime(envParams);\n const dpr = params.dpr ?? getLynxPixelRatio(envParams, runtime);\n const size = getCanvasSize(params.width, params.height);\n const id = Math.random().toString();\n const nativeCanvas = createLynxNativeCanvas(id, size.width, size.height, dpr, true, envParams, runtime);\n const canvas = wrapLynxNativeCanvas(nativeCanvas, id, size.width, size.height, dpr);\n this.canvasMap.set(id, canvas);\n this.freeCanvasList.push(canvas);\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return getLynxPixelRatio(undefined, this.lynxRuntime);\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return this.requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (handle: number) => void {\n return this.cancelAnimationFrame;\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"]}
@@ -43,4 +43,4 @@ export class DragNDrop {
43
43
  this.removeEvents(), this.rootNode = null;
44
44
  }
45
45
  }
46
- //# sourceMappingURL=drag.js.map
46
+ //# sourceMappingURL=drag.js.map
@@ -49,4 +49,5 @@ Lottie.NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;
49
49
 
50
50
  export function createLottie(attributes) {
51
51
  return new Lottie(attributes);
52
- }
52
+ }
53
+ //# sourceMappingURL=Lottie.js.map
@@ -302,5 +302,4 @@ export function installNodePickersToApp(app) {
302
302
 
303
303
  export function installMathPickersToApp(app) {
304
304
  installNodePickersToApp(app);
305
- }
306
- //# sourceMappingURL=app.js.map
305
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-kits",
3
- "version": "1.1.4-alpha.1",
3
+ "version": "1.1.4-alpha.3",
4
4
  "description": "",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index-node.js",
@@ -44,7 +44,7 @@
44
44
  ],
45
45
  "dependencies": {
46
46
  "@visactor/vutils": "~1.0.12",
47
- "@visactor/vrender-core": "1.1.4-alpha.1",
47
+ "@visactor/vrender-core": "1.1.4-alpha.3",
48
48
  "@resvg/resvg-js": "2.4.1",
49
49
  "roughjs": "4.6.6",
50
50
  "gifuct-js": "2.1.2",
@@ -69,8 +69,8 @@
69
69
  "vite": "3.2.6",
70
70
  "typescript": "4.9.5",
71
71
  "cross-env": "^7.0.3",
72
- "@internal/eslint-config": "0.0.1",
73
72
  "@internal/bundler": "0.0.1",
73
+ "@internal/eslint-config": "0.0.1",
74
74
  "@internal/ts-config": "0.0.1"
75
75
  },
76
76
  "keywords": [