@visactor/vrender-kits 1.1.3-alpha.4 → 1.1.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.
@@ -16,4 +16,4 @@ function createModule(CanvasConstructor, ContextConstructor) {
16
16
  }
17
17
 
18
18
  exports.createModule = createModule;
19
- //# sourceMappingURL=create-canvas-module.js.map
19
+ //# sourceMappingURL=create-canvas-module.js.map
@@ -45,4 +45,4 @@ exports.loadAllCavnvas = loadAllCavnvas, exports.loadBrowserCanvas = loadBrowser
45
45
  exports.loadFeishuCanvas = loadFeishuCanvas, exports.loadLynxCanvas = loadLynxCanvas,
46
46
  exports.loadNodeCanvas = loadNodeCanvas, exports.loadTaroCanvas = loadTaroCanvas,
47
47
  exports.loadTTCanvas = loadTTCanvas, exports.loadWxCanvas = loadWxCanvas;
48
- //# sourceMappingURL=modules.js.map
48
+ //# sourceMappingURL=modules.js.map
@@ -79,4 +79,4 @@ class CanvasWrapEnableWH {
79
79
  }
80
80
 
81
81
  exports.CanvasWrapEnableWH = CanvasWrapEnableWH;
82
- //# sourceMappingURL=canvas-wrap.js.map
82
+ //# sourceMappingURL=canvas-wrap.js.map
@@ -101,4 +101,4 @@ class FeishuEnvContribution extends vrender_core_1.BaseEnvContribution {
101
101
  }
102
102
 
103
103
  exports.FeishuEnvContribution = FeishuEnvContribution;
104
- //# sourceMappingURL=feishu-contribution.js.map
104
+ //# sourceMappingURL=feishu-contribution.js.map
@@ -34,7 +34,8 @@ class BrowserWindowHandlerContribution extends vrender_core_1.BaseWindowHandlerC
34
34
  this.postInit();
35
35
  }
36
36
  postInit() {
37
- if (this.global.optimizeVisible) try {
37
+ var _a;
38
+ if (null === (_a = this.global) || void 0 === _a ? void 0 : _a.optimizeVisible) try {
38
39
  this.observerCanvas();
39
40
  } catch (err) {
40
41
  console.error("发生错误,该环境不存在IntersectionObserver");
@@ -75,10 +76,11 @@ class BrowserWindowHandlerContribution extends vrender_core_1.BaseWindowHandlerC
75
76
  this.canvas = new browser_1.BrowserCanvas(options);
76
77
  }
77
78
  createWindowByCanvas(params) {
78
- var _a, _b;
79
+ var _a, _b, _c;
79
80
  let canvas;
80
81
  if ("string" == typeof params.canvas) {
81
- if (canvas = this.global.getElementById(params.canvas), canvas || "undefined" == typeof document || (canvas = document.getElementById(params.canvas)),
82
+ if (canvas = null === (_a = this.global) || void 0 === _a ? void 0 : _a.getElementById(params.canvas),
83
+ canvas || "undefined" == typeof document || (canvas = document.getElementById(params.canvas)),
82
84
  !canvas) throw new Error("canvasId 参数不正确,请确认canvas存在并插入dom");
83
85
  } else canvas = params.canvas;
84
86
  if (!canvas) throw new Error("发生错误,传入的canvas不正确");
@@ -89,14 +91,14 @@ class BrowserWindowHandlerContribution extends vrender_core_1.BaseWindowHandlerC
89
91
  }
90
92
  let dpr = params.dpr;
91
93
  if (null == dpr) {
92
- dpr = null !== (_a = canvas.getContext("2d").pixelRatio) && void 0 !== _a ? _a : canvas.width / width;
94
+ dpr = null !== (_b = canvas.getContext("2d").pixelRatio) && void 0 !== _b ? _b : canvas.width / width;
93
95
  }
94
96
  this.canvas = new browser_1.BrowserCanvas({
95
97
  width: width,
96
98
  height: height,
97
99
  dpr: dpr,
98
100
  nativeCanvas: canvas,
99
- canvasControled: null !== (_b = params.canvasControled) && void 0 !== _b && _b
101
+ canvasControled: null !== (_c = params.canvasControled) && void 0 !== _c && _c
100
102
  });
101
103
  }
102
104
  releaseWindow() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/window/contributions/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { Generator } from '@visactor/vrender-core/common/generator';\nimport { application } from '@visactor/vrender-core/application';\nimport { BaseWindowHandlerContribution, WindowHandlerContribution } from '@visactor/vrender-core';\nimport type {\n IContext2d,\n ICanvas,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindowParams\n} from '@visactor/vrender-core';\nimport type { IBoundsLike, IMatrix, IBounds } from '@visactor/vutils';\nimport { Matrix, AABBBounds } from '@visactor/vutils';\nimport { BrowserCanvas } from '../../canvas/contributions/browser';\n\nexport class BrowserWindowHandlerContribution\n extends BaseWindowHandlerContribution\n implements IWindowHandlerContribution\n{\n static env: EnvType = 'browser';\n\n type: EnvType = 'browser';\n\n declare canvas: ICanvas;\n\n declare observer?: MutationObserver;\n\n protected _canvasIsIntersecting: boolean;\n protected _onVisibleChangeCb: (currentVisible: boolean) => void;\n\n private readonly global: IGlobal;\n\n get container(): HTMLElement | null {\n return this.canvas.nativeCanvas.parentElement;\n }\n\n static idprefix: string = 'visactor_window';\n static prefix_count: number = 0;\n\n static GenerateCanvasId() {\n return `${BrowserWindowHandlerContribution.idprefix}_${BrowserWindowHandlerContribution.prefix_count++}`;\n }\n\n constructor() {\n super();\n this._canvasIsIntersecting = true;\n this.global = application.global;\n this.viewBox = new AABBBounds();\n this.modelMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n getTitle(): string {\n return this.canvas.id && this.canvas.id.toString();\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.width / (this.canvas.dpr || 1),\n height: this.canvas.height / (this.canvas.dpr || 1)\n };\n }\n\n getXY(): { x: number; y: number } {\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n\n this.postInit();\n\n // this.bindOnChangeEvent();\n }\n\n protected postInit() {\n if (!this.global.optimizeVisible) {\n return;\n }\n try {\n this.observerCanvas();\n } catch (err) {\n console.error('发生错误,该环境不存在IntersectionObserver');\n }\n }\n\n isElementVisible(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n const vWidth = window.innerWidth || document.documentElement.clientWidth;\n const vHeight = window.innerHeight || document.documentElement.clientHeight;\n\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) {\n return false;\n }\n\n return true;\n }\n\n protected observerCanvas() {\n this._canvasIsIntersecting = this.isElementVisible(this.canvas.nativeCanvas);\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (this._canvasIsIntersecting !== entry.isIntersecting) {\n this._canvasIsIntersecting = entry.isIntersecting;\n this._onVisibleChangeCb && this._onVisibleChangeCb(entry.isIntersecting);\n } else {\n this._canvasIsIntersecting = entry.isIntersecting;\n }\n });\n });\n if (!observer) {\n return;\n }\n observer.observe(this.canvas.nativeCanvas);\n }\n\n // private bindOnChangeEvent() {\n // const { nativeCanvas } = this.canvas;\n // const observer = new MutationObserver((mutations, observer) => {\n // mutations.forEach((mutaion) => {\n // console.log(mutaion);\n // })\n // });\n // observer.observe(nativeCanvas, { attributes: true, childList: true, subtree: true })\n // }\n\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n // 保存到dom中\n let container: HTMLElement | null;\n if (typeof params.container === 'string') {\n container = this.global.getElementById(params.container);\n } else if (params.container) {\n container = params.container;\n } else {\n container = this.global.getRootElement();\n }\n if (!container) {\n throw new Error('发生错误,containerId可能传入有误');\n }\n\n if (!params.offscreen) {\n container.appendChild(nativeCanvas);\n } else {\n container = null;\n }\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n container,\n id: BrowserWindowHandlerContribution.GenerateCanvasId(),\n canvasControled: true\n };\n this.canvas = new BrowserCanvas(options);\n // 应用位置属性\n // window上的不需要设置position\n // this.canvas.applyPosition();\n // this.canvas.resetStyle(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n let canvas: HTMLCanvasElement | null;\n if (typeof params.canvas === 'string') {\n canvas = this.global.getElementById(params.canvas) as HTMLCanvasElement | null;\n if (!canvas && typeof document !== 'undefined') {\n canvas = document.getElementById(params.canvas) as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('发生错误,传入的canvas不正确');\n }\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n const data = canvas.getBoundingClientRect();\n width = data.width;\n height = data.height;\n }\n // 如果没有dpr,就使用canvas的原始dpr\n let dpr = params.dpr;\n // if (params.canvasControled === false) {\n // if (dpr) {\n // console.warn('canvasControled为false后,dpr参数将无效');\n // }\n // dpr = null;\n // }\n if (dpr == null) {\n const ctx = canvas.getContext('2d');\n // 兼容XTable\n dpr = (ctx as any).pixelRatio ?? canvas.width / width;\n }\n this.canvas = new BrowserCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled ?? false\n });\n // if (params.canvasControled) {\n // this.canvas.resetStyle({\n // width,\n // height,\n // dpr\n // });\n // }\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).dispatchEvent(event);\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return this.canvas.nativeCanvas.style ?? {};\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n this.canvas.nativeCanvas.style = style;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const c = this.canvas.nativeCanvas as HTMLCanvasElement;\n const wh = this.getWH();\n if (!c.parentElement) {\n return {\n x: 0,\n y: 0,\n width: wh.width,\n height: wh.height,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n clearViewBox(color?: string): void {\n const vb = this.viewBox;\n const context = this.getContext();\n const dpr = this.getDpr();\n context.nativeContext.save();\n (context.nativeContext as CanvasRenderingContext2D).setTransform(dpr, 0, 0, dpr, 0, 0);\n context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n if (color) {\n context.fillStyle = color;\n context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n }\n context.nativeContext.restore();\n }\n\n isVisible(bbox?: IBoundsLike) {\n return this._canvasIsIntersecting;\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n this._onVisibleChangeCb = cb;\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this.global.getElementTopLeft(this.canvas.nativeCanvas, baseWindow);\n }\n}\n\nexport function bindBrowserWindowContribution(container: any) {\n if (!container.isBound?.(BrowserWindowHandlerContribution)) {\n container.bind(BrowserWindowHandlerContribution).toSelf();\n }\n if (!container.getNamed?.(WindowHandlerContribution, BrowserWindowHandlerContribution.env)) {\n container\n .bind(WindowHandlerContribution)\n .toService(BrowserWindowHandlerContribution)\n .whenTargetNamed(BrowserWindowHandlerContribution.env);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/window/contributions/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { Generator } from '@visactor/vrender-core/common/generator';\nimport { application } from '@visactor/vrender-core/application';\nimport { BaseWindowHandlerContribution, WindowHandlerContribution } from '@visactor/vrender-core';\nimport type {\n IContext2d,\n ICanvas,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindowParams\n} from '@visactor/vrender-core';\nimport type { IBoundsLike, IMatrix, IBounds } from '@visactor/vutils';\nimport { Matrix, AABBBounds } from '@visactor/vutils';\nimport { BrowserCanvas } from '../../canvas/contributions/browser';\n\nexport class BrowserWindowHandlerContribution\n extends BaseWindowHandlerContribution\n implements IWindowHandlerContribution\n{\n static env: EnvType = 'browser';\n\n type: EnvType = 'browser';\n\n declare canvas: ICanvas;\n\n declare observer?: MutationObserver;\n\n protected _canvasIsIntersecting: boolean;\n protected _onVisibleChangeCb: (currentVisible: boolean) => void;\n\n private readonly global: IGlobal;\n\n get container(): HTMLElement | null {\n return this.canvas.nativeCanvas.parentElement;\n }\n\n static idprefix: string = 'visactor_window';\n static prefix_count: number = 0;\n\n static GenerateCanvasId() {\n return `${BrowserWindowHandlerContribution.idprefix}_${BrowserWindowHandlerContribution.prefix_count++}`;\n }\n\n constructor() {\n super();\n this._canvasIsIntersecting = true;\n this.global = application.global;\n this.viewBox = new AABBBounds();\n this.modelMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n getTitle(): string {\n return this.canvas.id && this.canvas.id.toString();\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.width / (this.canvas.dpr || 1),\n height: this.canvas.height / (this.canvas.dpr || 1)\n };\n }\n\n getXY(): { x: number; y: number } {\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n\n this.postInit();\n\n // this.bindOnChangeEvent();\n }\n\n protected postInit() {\n if (!this.global?.optimizeVisible) {\n return;\n }\n try {\n this.observerCanvas();\n } catch (err) {\n console.error('发生错误,该环境不存在IntersectionObserver');\n }\n }\n\n isElementVisible(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n const vWidth = window.innerWidth || document.documentElement.clientWidth;\n const vHeight = window.innerHeight || document.documentElement.clientHeight;\n\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) {\n return false;\n }\n\n return true;\n }\n\n protected observerCanvas() {\n this._canvasIsIntersecting = this.isElementVisible(this.canvas.nativeCanvas);\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (this._canvasIsIntersecting !== entry.isIntersecting) {\n this._canvasIsIntersecting = entry.isIntersecting;\n this._onVisibleChangeCb && this._onVisibleChangeCb(entry.isIntersecting);\n } else {\n this._canvasIsIntersecting = entry.isIntersecting;\n }\n });\n });\n if (!observer) {\n return;\n }\n observer.observe(this.canvas.nativeCanvas);\n }\n\n // private bindOnChangeEvent() {\n // const { nativeCanvas } = this.canvas;\n // const observer = new MutationObserver((mutations, observer) => {\n // mutations.forEach((mutaion) => {\n // console.log(mutaion);\n // })\n // });\n // observer.observe(nativeCanvas, { attributes: true, childList: true, subtree: true })\n // }\n\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n // 保存到dom中\n let container: HTMLElement | null;\n if (typeof params.container === 'string') {\n container = this.global.getElementById(params.container);\n } else if (params.container) {\n container = params.container;\n } else {\n container = this.global.getRootElement();\n }\n if (!container) {\n throw new Error('发生错误,containerId可能传入有误');\n }\n\n if (!params.offscreen) {\n container.appendChild(nativeCanvas);\n } else {\n container = null;\n }\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n container,\n id: BrowserWindowHandlerContribution.GenerateCanvasId(),\n canvasControled: true\n };\n this.canvas = new BrowserCanvas(options);\n // 应用位置属性\n // window上的不需要设置position\n // this.canvas.applyPosition();\n // this.canvas.resetStyle(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n let canvas: HTMLCanvasElement | null;\n if (typeof params.canvas === 'string') {\n canvas = this.global?.getElementById(params.canvas) as HTMLCanvasElement | null;\n if (!canvas && typeof document !== 'undefined') {\n canvas = document.getElementById(params.canvas) as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('发生错误,传入的canvas不正确');\n }\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n const data = canvas.getBoundingClientRect();\n width = data.width;\n height = data.height;\n }\n // 如果没有dpr,就使用canvas的原始dpr\n let dpr = params.dpr;\n // if (params.canvasControled === false) {\n // if (dpr) {\n // console.warn('canvasControled为false后,dpr参数将无效');\n // }\n // dpr = null;\n // }\n if (dpr == null) {\n const ctx = canvas.getContext('2d');\n // 兼容XTable\n dpr = (ctx as any).pixelRatio ?? canvas.width / width;\n }\n this.canvas = new BrowserCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled ?? false\n });\n // if (params.canvasControled) {\n // this.canvas.resetStyle({\n // width,\n // height,\n // dpr\n // });\n // }\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).dispatchEvent(event);\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return this.canvas.nativeCanvas.style ?? {};\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n this.canvas.nativeCanvas.style = style;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const c = this.canvas.nativeCanvas as HTMLCanvasElement;\n const wh = this.getWH();\n if (!c.parentElement) {\n return {\n x: 0,\n y: 0,\n width: wh.width,\n height: wh.height,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n clearViewBox(color?: string): void {\n const vb = this.viewBox;\n const context = this.getContext();\n const dpr = this.getDpr();\n context.nativeContext.save();\n (context.nativeContext as CanvasRenderingContext2D).setTransform(dpr, 0, 0, dpr, 0, 0);\n context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n if (color) {\n context.fillStyle = color;\n context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n }\n context.nativeContext.restore();\n }\n\n isVisible(bbox?: IBoundsLike) {\n return this._canvasIsIntersecting;\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n this._onVisibleChangeCb = cb;\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this.global.getElementTopLeft(this.canvas.nativeCanvas, baseWindow);\n }\n}\n\nexport function bindBrowserWindowContribution(container: any) {\n if (!container.isBound?.(BrowserWindowHandlerContribution)) {\n container.bind(BrowserWindowHandlerContribution).toSelf();\n }\n if (!container.getNamed?.(WindowHandlerContribution, BrowserWindowHandlerContribution.env)) {\n container\n .bind(WindowHandlerContribution)\n .toService(BrowserWindowHandlerContribution)\n .whenTargetNamed(BrowserWindowHandlerContribution.env);\n }\n}\n"]}
package/dist/index.es.js CHANGED
@@ -20425,7 +20425,8 @@ class BrowserWindowHandlerContribution extends BaseWindowHandlerContribution {
20425
20425
  this.postInit();
20426
20426
  }
20427
20427
  postInit() {
20428
- if (!this.global.optimizeVisible) {
20428
+ var _a;
20429
+ if (!((_a = this.global) === null || _a === void 0 ? void 0 : _a.optimizeVisible)) {
20429
20430
  return;
20430
20431
  }
20431
20432
  try {
@@ -20498,10 +20499,10 @@ class BrowserWindowHandlerContribution extends BaseWindowHandlerContribution {
20498
20499
  this.canvas = new BrowserCanvas(options);
20499
20500
  }
20500
20501
  createWindowByCanvas(params) {
20501
- var _a, _b;
20502
+ var _a, _b, _c;
20502
20503
  let canvas;
20503
20504
  if (typeof params.canvas === 'string') {
20504
- canvas = this.global.getElementById(params.canvas);
20505
+ canvas = (_a = this.global) === null || _a === void 0 ? void 0 : _a.getElementById(params.canvas);
20505
20506
  if (!canvas && typeof document !== 'undefined') {
20506
20507
  canvas = document.getElementById(params.canvas);
20507
20508
  }
@@ -20525,14 +20526,14 @@ class BrowserWindowHandlerContribution extends BaseWindowHandlerContribution {
20525
20526
  let dpr = params.dpr;
20526
20527
  if (dpr == null) {
20527
20528
  const ctx = canvas.getContext('2d');
20528
- dpr = (_a = ctx.pixelRatio) !== null && _a !== void 0 ? _a : canvas.width / width;
20529
+ dpr = (_b = ctx.pixelRatio) !== null && _b !== void 0 ? _b : canvas.width / width;
20529
20530
  }
20530
20531
  this.canvas = new BrowserCanvas({
20531
20532
  width: width,
20532
20533
  height: height,
20533
20534
  dpr: dpr,
20534
20535
  nativeCanvas: canvas,
20535
- canvasControled: (_b = params.canvasControled) !== null && _b !== void 0 ? _b : false
20536
+ canvasControled: (_c = params.canvasControled) !== null && _c !== void 0 ? _c : false
20536
20537
  });
20537
20538
  }
20538
20539
  releaseWindow() {
@@ -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
@@ -45,4 +45,4 @@ export function loadTTCanvas(container) {
45
45
  export function loadWxCanvas(container) {
46
46
  bindWxCanvasModules(container);
47
47
  }
48
- //# sourceMappingURL=modules.js.map
48
+ //# sourceMappingURL=modules.js.map
@@ -69,4 +69,4 @@ export class CanvasWrapEnableWH {
69
69
  };
70
70
  }
71
71
  }
72
- //# sourceMappingURL=canvas-wrap.js.map
72
+ //# sourceMappingURL=canvas-wrap.js.map
@@ -96,4 +96,4 @@ export class FeishuEnvContribution extends BaseEnvContribution {
96
96
  event;
97
97
  }
98
98
  }
99
- //# sourceMappingURL=feishu-contribution.js.map
99
+ //# sourceMappingURL=feishu-contribution.js.map
@@ -34,7 +34,8 @@ export class BrowserWindowHandlerContribution extends BaseWindowHandlerContribut
34
34
  this.postInit();
35
35
  }
36
36
  postInit() {
37
- if (this.global.optimizeVisible) try {
37
+ var _a;
38
+ if (null === (_a = this.global) || void 0 === _a ? void 0 : _a.optimizeVisible) try {
38
39
  this.observerCanvas();
39
40
  } catch (err) {
40
41
  console.error("发生错误,该环境不存在IntersectionObserver");
@@ -75,10 +76,11 @@ export class BrowserWindowHandlerContribution extends BaseWindowHandlerContribut
75
76
  this.canvas = new BrowserCanvas(options);
76
77
  }
77
78
  createWindowByCanvas(params) {
78
- var _a, _b;
79
+ var _a, _b, _c;
79
80
  let canvas;
80
81
  if ("string" == typeof params.canvas) {
81
- if (canvas = this.global.getElementById(params.canvas), canvas || "undefined" == typeof document || (canvas = document.getElementById(params.canvas)),
82
+ if (canvas = null === (_a = this.global) || void 0 === _a ? void 0 : _a.getElementById(params.canvas),
83
+ canvas || "undefined" == typeof document || (canvas = document.getElementById(params.canvas)),
82
84
  !canvas) throw new Error("canvasId 参数不正确,请确认canvas存在并插入dom");
83
85
  } else canvas = params.canvas;
84
86
  if (!canvas) throw new Error("发生错误,传入的canvas不正确");
@@ -89,14 +91,14 @@ export class BrowserWindowHandlerContribution extends BaseWindowHandlerContribut
89
91
  }
90
92
  let dpr = params.dpr;
91
93
  if (null == dpr) {
92
- dpr = null !== (_a = canvas.getContext("2d").pixelRatio) && void 0 !== _a ? _a : canvas.width / width;
94
+ dpr = null !== (_b = canvas.getContext("2d").pixelRatio) && void 0 !== _b ? _b : canvas.width / width;
93
95
  }
94
96
  this.canvas = new BrowserCanvas({
95
97
  width: width,
96
98
  height: height,
97
99
  dpr: dpr,
98
100
  nativeCanvas: canvas,
99
- canvasControled: null !== (_b = params.canvasControled) && void 0 !== _b && _b
101
+ canvasControled: null !== (_c = params.canvasControled) && void 0 !== _c && _c
100
102
  });
101
103
  }
102
104
  releaseWindow() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/window/contributions/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { Generator } from '@visactor/vrender-core/common/generator';\nimport { application } from '@visactor/vrender-core/application';\nimport { BaseWindowHandlerContribution, WindowHandlerContribution } from '@visactor/vrender-core';\nimport type {\n IContext2d,\n ICanvas,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindowParams\n} from '@visactor/vrender-core';\nimport type { IBoundsLike, IMatrix, IBounds } from '@visactor/vutils';\nimport { Matrix, AABBBounds } from '@visactor/vutils';\nimport { BrowserCanvas } from '../../canvas/contributions/browser';\n\nexport class BrowserWindowHandlerContribution\n extends BaseWindowHandlerContribution\n implements IWindowHandlerContribution\n{\n static env: EnvType = 'browser';\n\n type: EnvType = 'browser';\n\n declare canvas: ICanvas;\n\n declare observer?: MutationObserver;\n\n protected _canvasIsIntersecting: boolean;\n protected _onVisibleChangeCb: (currentVisible: boolean) => void;\n\n private readonly global: IGlobal;\n\n get container(): HTMLElement | null {\n return this.canvas.nativeCanvas.parentElement;\n }\n\n static idprefix: string = 'visactor_window';\n static prefix_count: number = 0;\n\n static GenerateCanvasId() {\n return `${BrowserWindowHandlerContribution.idprefix}_${BrowserWindowHandlerContribution.prefix_count++}`;\n }\n\n constructor() {\n super();\n this._canvasIsIntersecting = true;\n this.global = application.global;\n this.viewBox = new AABBBounds();\n this.modelMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n getTitle(): string {\n return this.canvas.id && this.canvas.id.toString();\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.width / (this.canvas.dpr || 1),\n height: this.canvas.height / (this.canvas.dpr || 1)\n };\n }\n\n getXY(): { x: number; y: number } {\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n\n this.postInit();\n\n // this.bindOnChangeEvent();\n }\n\n protected postInit() {\n if (!this.global.optimizeVisible) {\n return;\n }\n try {\n this.observerCanvas();\n } catch (err) {\n console.error('发生错误,该环境不存在IntersectionObserver');\n }\n }\n\n isElementVisible(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n const vWidth = window.innerWidth || document.documentElement.clientWidth;\n const vHeight = window.innerHeight || document.documentElement.clientHeight;\n\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) {\n return false;\n }\n\n return true;\n }\n\n protected observerCanvas() {\n this._canvasIsIntersecting = this.isElementVisible(this.canvas.nativeCanvas);\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (this._canvasIsIntersecting !== entry.isIntersecting) {\n this._canvasIsIntersecting = entry.isIntersecting;\n this._onVisibleChangeCb && this._onVisibleChangeCb(entry.isIntersecting);\n } else {\n this._canvasIsIntersecting = entry.isIntersecting;\n }\n });\n });\n if (!observer) {\n return;\n }\n observer.observe(this.canvas.nativeCanvas);\n }\n\n // private bindOnChangeEvent() {\n // const { nativeCanvas } = this.canvas;\n // const observer = new MutationObserver((mutations, observer) => {\n // mutations.forEach((mutaion) => {\n // console.log(mutaion);\n // })\n // });\n // observer.observe(nativeCanvas, { attributes: true, childList: true, subtree: true })\n // }\n\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n // 保存到dom中\n let container: HTMLElement | null;\n if (typeof params.container === 'string') {\n container = this.global.getElementById(params.container);\n } else if (params.container) {\n container = params.container;\n } else {\n container = this.global.getRootElement();\n }\n if (!container) {\n throw new Error('发生错误,containerId可能传入有误');\n }\n\n if (!params.offscreen) {\n container.appendChild(nativeCanvas);\n } else {\n container = null;\n }\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n container,\n id: BrowserWindowHandlerContribution.GenerateCanvasId(),\n canvasControled: true\n };\n this.canvas = new BrowserCanvas(options);\n // 应用位置属性\n // window上的不需要设置position\n // this.canvas.applyPosition();\n // this.canvas.resetStyle(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n let canvas: HTMLCanvasElement | null;\n if (typeof params.canvas === 'string') {\n canvas = this.global.getElementById(params.canvas) as HTMLCanvasElement | null;\n if (!canvas && typeof document !== 'undefined') {\n canvas = document.getElementById(params.canvas) as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('发生错误,传入的canvas不正确');\n }\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n const data = canvas.getBoundingClientRect();\n width = data.width;\n height = data.height;\n }\n // 如果没有dpr,就使用canvas的原始dpr\n let dpr = params.dpr;\n // if (params.canvasControled === false) {\n // if (dpr) {\n // console.warn('canvasControled为false后,dpr参数将无效');\n // }\n // dpr = null;\n // }\n if (dpr == null) {\n const ctx = canvas.getContext('2d');\n // 兼容XTable\n dpr = (ctx as any).pixelRatio ?? canvas.width / width;\n }\n this.canvas = new BrowserCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled ?? false\n });\n // if (params.canvasControled) {\n // this.canvas.resetStyle({\n // width,\n // height,\n // dpr\n // });\n // }\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).dispatchEvent(event);\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return this.canvas.nativeCanvas.style ?? {};\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n this.canvas.nativeCanvas.style = style;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const c = this.canvas.nativeCanvas as HTMLCanvasElement;\n const wh = this.getWH();\n if (!c.parentElement) {\n return {\n x: 0,\n y: 0,\n width: wh.width,\n height: wh.height,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n clearViewBox(color?: string): void {\n const vb = this.viewBox;\n const context = this.getContext();\n const dpr = this.getDpr();\n context.nativeContext.save();\n (context.nativeContext as CanvasRenderingContext2D).setTransform(dpr, 0, 0, dpr, 0, 0);\n context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n if (color) {\n context.fillStyle = color;\n context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n }\n context.nativeContext.restore();\n }\n\n isVisible(bbox?: IBoundsLike) {\n return this._canvasIsIntersecting;\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n this._onVisibleChangeCb = cb;\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this.global.getElementTopLeft(this.canvas.nativeCanvas, baseWindow);\n }\n}\n\nexport function bindBrowserWindowContribution(container: any) {\n if (!container.isBound?.(BrowserWindowHandlerContribution)) {\n container.bind(BrowserWindowHandlerContribution).toSelf();\n }\n if (!container.getNamed?.(WindowHandlerContribution, BrowserWindowHandlerContribution.env)) {\n container\n .bind(WindowHandlerContribution)\n .toService(BrowserWindowHandlerContribution)\n .whenTargetNamed(BrowserWindowHandlerContribution.env);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/window/contributions/browser-contribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAWlG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,OAAO,gCACX,SAAQ,6BAA6B;IAgBrC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;IAChD,CAAC;IAKD,MAAM,CAAC,gBAAgB;QACrB,OAAO,GAAG,gCAAgC,CAAC,QAAQ,IAAI,gCAAgC,CAAC,YAAY,EAAE,EAAE,CAAC;IAC3G,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAvBV,SAAI,GAAY,SAAS,CAAC;QAwBxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC;IAED,KAAK;QACH,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YACjD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,MAAqB;QAEhC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IAGlB,CAAC;IAES,QAAQ;;QAChB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,CAAA,EAAE;YACjC,OAAO;SACR;QACD,IAAI;YACF,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;SAClD;IACH,CAAC;IAED,gBAAgB,CAAC,EAAe;QAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;QAE5E,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE;YACjF,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,cAAc;QACtB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YAC9D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,qBAAqB,KAAK,KAAK,CAAC,cAAc,EAAE;oBACvD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC;oBAClD,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC;iBACnD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAYO,oBAAoB,CAAC,MAAqB;QAEhD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC5C,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,IAAI,SAA6B,CAAC;QAClC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;YACxC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC1D;aAAM,IAAI,MAAM,CAAC,SAAS,EAAE;YAC3B,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;SAC9B;aAAM;YACL,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SAC1C;QACD,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACrB,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SACrC;aAAM;YACL,SAAS,GAAG,IAAI,CAAC;SAClB;QAGD,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY;YACZ,SAAS;YACT,EAAE,EAAE,gCAAgC,CAAC,gBAAgB,EAAE;YACvD,eAAe,EAAE,IAAI;SACtB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAK3C,CAAC;IACO,oBAAoB,CAAC,MAAqB;;QAEhD,IAAI,MAAgC,CAAC;QACrC,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;YACrC,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAA6B,CAAC;YAChF,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;gBAC9C,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAA6B,CAAC;aAC7E;YACD,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACrD;SACF;aAAM;YACL,MAAM,GAAG,MAAO,CAAC,MAAkC,CAAC;SACrD;QACD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;QAGD,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC5C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACnB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SACtB;QAED,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAOrB,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEpC,GAAG,GAAG,MAAC,GAAW,CAAC,UAAU,mCAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;SACvD;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,MAAA,MAAM,CAAC,eAAe,mCAAI,KAAK;SACjD,CAAC,CAAC;IAQL,CAAC;IACD,aAAa;QACX,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IACD,YAAY,CAAC,KAAa,EAAE,MAAc;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IACD,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAOD,gBAAgB,CACd,IAAY,EACZ,QAA4C,EAC5C,OAA2C;QAE3C,OAAQ,IAAI,CAAC,MAAM,CAAC,YAAkC,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnG,CAAC;IAMD,mBAAmB,CACjB,IAAY,EACZ,QAA4C,EAC5C,OAAwC;QAExC,OAAQ,IAAI,CAAC,MAAM,CAAC,YAAkC,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtG,CAAC;IACD,aAAa,CAAC,KAAU;QACtB,OAAQ,IAAI,CAAC,MAAM,CAAC,YAAkC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ;;QACN,OAAO,MAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,mCAAI,EAAE,CAAC;IAC9C,CAAC;IACD,QAAQ,CAAC,KAAgD;QACvD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,qBAAqB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAiC,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;YACpB,OAAO;gBACL,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;aACV,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,aAA0C,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;YAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9D;QACD,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,IAAkB;QAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,EAAqC;QACnD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,UAAoB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC7E,CAAC;;AA/SM,oCAAG,GAAY,SAAS,CAAC;AAiBzB,yCAAQ,GAAW,iBAAiB,CAAC;AACrC,6CAAY,GAAW,CAAC,CAAC;AAgSlC,MAAM,UAAU,6BAA6B,CAAC,SAAc;;IAC1D,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,OAAO,0DAAG,gCAAgC,CAAC,CAAA,EAAE;QAC1D,SAAS,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC3D;IACD,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,QAAQ,0DAAG,yBAAyB,EAAE,gCAAgC,CAAC,GAAG,CAAC,CAAA,EAAE;QAC1F,SAAS;aACN,IAAI,CAAC,yBAAyB,CAAC;aAC/B,SAAS,CAAC,gCAAgC,CAAC;aAC3C,eAAe,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;KAC1D;AACH,CAAC","file":"browser-contribution.js","sourcesContent":["import { Generator } from '@visactor/vrender-core/common/generator';\nimport { application } from '@visactor/vrender-core/application';\nimport { BaseWindowHandlerContribution, WindowHandlerContribution } from '@visactor/vrender-core';\nimport type {\n IContext2d,\n ICanvas,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindowParams\n} from '@visactor/vrender-core';\nimport type { IBoundsLike, IMatrix, IBounds } from '@visactor/vutils';\nimport { Matrix, AABBBounds } from '@visactor/vutils';\nimport { BrowserCanvas } from '../../canvas/contributions/browser';\n\nexport class BrowserWindowHandlerContribution\n extends BaseWindowHandlerContribution\n implements IWindowHandlerContribution\n{\n static env: EnvType = 'browser';\n\n type: EnvType = 'browser';\n\n declare canvas: ICanvas;\n\n declare observer?: MutationObserver;\n\n protected _canvasIsIntersecting: boolean;\n protected _onVisibleChangeCb: (currentVisible: boolean) => void;\n\n private readonly global: IGlobal;\n\n get container(): HTMLElement | null {\n return this.canvas.nativeCanvas.parentElement;\n }\n\n static idprefix: string = 'visactor_window';\n static prefix_count: number = 0;\n\n static GenerateCanvasId() {\n return `${BrowserWindowHandlerContribution.idprefix}_${BrowserWindowHandlerContribution.prefix_count++}`;\n }\n\n constructor() {\n super();\n this._canvasIsIntersecting = true;\n this.global = application.global;\n this.viewBox = new AABBBounds();\n this.modelMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n getTitle(): string {\n return this.canvas.id && this.canvas.id.toString();\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.width / (this.canvas.dpr || 1),\n height: this.canvas.height / (this.canvas.dpr || 1)\n };\n }\n\n getXY(): { x: number; y: number } {\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n\n this.postInit();\n\n // this.bindOnChangeEvent();\n }\n\n protected postInit() {\n if (!this.global?.optimizeVisible) {\n return;\n }\n try {\n this.observerCanvas();\n } catch (err) {\n console.error('发生错误,该环境不存在IntersectionObserver');\n }\n }\n\n isElementVisible(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n const vWidth = window.innerWidth || document.documentElement.clientWidth;\n const vHeight = window.innerHeight || document.documentElement.clientHeight;\n\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) {\n return false;\n }\n\n return true;\n }\n\n protected observerCanvas() {\n this._canvasIsIntersecting = this.isElementVisible(this.canvas.nativeCanvas);\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (this._canvasIsIntersecting !== entry.isIntersecting) {\n this._canvasIsIntersecting = entry.isIntersecting;\n this._onVisibleChangeCb && this._onVisibleChangeCb(entry.isIntersecting);\n } else {\n this._canvasIsIntersecting = entry.isIntersecting;\n }\n });\n });\n if (!observer) {\n return;\n }\n observer.observe(this.canvas.nativeCanvas);\n }\n\n // private bindOnChangeEvent() {\n // const { nativeCanvas } = this.canvas;\n // const observer = new MutationObserver((mutations, observer) => {\n // mutations.forEach((mutaion) => {\n // console.log(mutaion);\n // })\n // });\n // observer.observe(nativeCanvas, { attributes: true, childList: true, subtree: true })\n // }\n\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n // 保存到dom中\n let container: HTMLElement | null;\n if (typeof params.container === 'string') {\n container = this.global.getElementById(params.container);\n } else if (params.container) {\n container = params.container;\n } else {\n container = this.global.getRootElement();\n }\n if (!container) {\n throw new Error('发生错误,containerId可能传入有误');\n }\n\n if (!params.offscreen) {\n container.appendChild(nativeCanvas);\n } else {\n container = null;\n }\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n container,\n id: BrowserWindowHandlerContribution.GenerateCanvasId(),\n canvasControled: true\n };\n this.canvas = new BrowserCanvas(options);\n // 应用位置属性\n // window上的不需要设置position\n // this.canvas.applyPosition();\n // this.canvas.resetStyle(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n let canvas: HTMLCanvasElement | null;\n if (typeof params.canvas === 'string') {\n canvas = this.global?.getElementById(params.canvas) as HTMLCanvasElement | null;\n if (!canvas && typeof document !== 'undefined') {\n canvas = document.getElementById(params.canvas) as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('发生错误,传入的canvas不正确');\n }\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n const data = canvas.getBoundingClientRect();\n width = data.width;\n height = data.height;\n }\n // 如果没有dpr,就使用canvas的原始dpr\n let dpr = params.dpr;\n // if (params.canvasControled === false) {\n // if (dpr) {\n // console.warn('canvasControled为false后,dpr参数将无效');\n // }\n // dpr = null;\n // }\n if (dpr == null) {\n const ctx = canvas.getContext('2d');\n // 兼容XTable\n dpr = (ctx as any).pixelRatio ?? canvas.width / width;\n }\n this.canvas = new BrowserCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled ?? false\n });\n // if (params.canvasControled) {\n // this.canvas.resetStyle({\n // width,\n // height,\n // dpr\n // });\n // }\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).dispatchEvent(event);\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return this.canvas.nativeCanvas.style ?? {};\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n this.canvas.nativeCanvas.style = style;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const c = this.canvas.nativeCanvas as HTMLCanvasElement;\n const wh = this.getWH();\n if (!c.parentElement) {\n return {\n x: 0,\n y: 0,\n width: wh.width,\n height: wh.height,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n clearViewBox(color?: string): void {\n const vb = this.viewBox;\n const context = this.getContext();\n const dpr = this.getDpr();\n context.nativeContext.save();\n (context.nativeContext as CanvasRenderingContext2D).setTransform(dpr, 0, 0, dpr, 0, 0);\n context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n if (color) {\n context.fillStyle = color;\n context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n }\n context.nativeContext.restore();\n }\n\n isVisible(bbox?: IBoundsLike) {\n return this._canvasIsIntersecting;\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n this._onVisibleChangeCb = cb;\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this.global.getElementTopLeft(this.canvas.nativeCanvas, baseWindow);\n }\n}\n\nexport function bindBrowserWindowContribution(container: any) {\n if (!container.isBound?.(BrowserWindowHandlerContribution)) {\n container.bind(BrowserWindowHandlerContribution).toSelf();\n }\n if (!container.getNamed?.(WindowHandlerContribution, BrowserWindowHandlerContribution.env)) {\n container\n .bind(WindowHandlerContribution)\n .toService(BrowserWindowHandlerContribution)\n .whenTargetNamed(BrowserWindowHandlerContribution.env);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-kits",
3
- "version": "1.1.3-alpha.4",
3
+ "version": "1.1.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.3-alpha.4",
47
+ "@visactor/vrender-core": "1.1.3",
48
48
  "@resvg/resvg-js": "2.4.1",
49
49
  "roughjs": "4.6.6",
50
50
  "gifuct-js": "2.1.2",
@@ -69,9 +69,9 @@
69
69
  "vite": "3.2.6",
70
70
  "typescript": "4.9.5",
71
71
  "cross-env": "^7.0.3",
72
+ "@internal/ts-config": "0.0.1",
72
73
  "@internal/bundler": "0.0.1",
73
- "@internal/eslint-config": "0.0.1",
74
- "@internal/ts-config": "0.0.1"
74
+ "@internal/eslint-config": "0.0.1"
75
75
  },
76
76
  "keywords": [
77
77
  "VisActor",