@visactor/vrender-kits 0.18.11-alpha.3 → 0.18.11-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/cjs/env/contributions/node-contribution.js +1 -2
  2. package/cjs/env/contributions/taro-contribution.js +2 -1
  3. package/cjs/env/contributions/tt-contribution.d.ts +40 -0
  4. package/cjs/env/contributions/tt-contribution.js +128 -0
  5. package/cjs/env/contributions/tt-contribution.js.map +1 -0
  6. package/cjs/env/index.d.ts +1 -0
  7. package/cjs/env/index.js +1 -1
  8. package/cjs/env/index.js.map +1 -1
  9. package/cjs/env/tt.d.ts +7 -0
  10. package/cjs/env/tt.js +24 -0
  11. package/cjs/env/tt.js.map +1 -0
  12. package/cjs/jsx/jsx-classic.js +1 -2
  13. package/cjs/picker/canvas-module.js +2 -1
  14. package/cjs/picker/contributions/constants.js +1 -1
  15. package/cjs/register/register-polygon.js +1 -2
  16. package/cjs/register/register-pyramid3d.js +2 -1
  17. package/cjs/render/contributions/render-module.js +2 -0
  18. package/cjs/window/contributions/tt-contribution.d.ts +46 -0
  19. package/cjs/window/contributions/tt-contribution.js +159 -0
  20. package/cjs/window/contributions/tt-contribution.js.map +1 -0
  21. package/es/env/contributions/node-contribution.js +1 -2
  22. package/es/env/contributions/taro-contribution.js +2 -1
  23. package/es/env/contributions/tt-contribution.d.ts +40 -0
  24. package/es/env/contributions/tt-contribution.js +123 -0
  25. package/es/env/contributions/tt-contribution.js.map +1 -0
  26. package/es/env/index.d.ts +1 -0
  27. package/es/env/index.js +2 -0
  28. package/es/env/index.js.map +1 -1
  29. package/es/env/tt.d.ts +7 -0
  30. package/es/env/tt.js +28 -0
  31. package/es/env/tt.js.map +1 -0
  32. package/es/jsx/jsx-classic.js +1 -2
  33. package/es/picker/canvas-module.js +2 -1
  34. package/es/picker/contributions/constants.js +1 -1
  35. package/es/register/register-polygon.js +1 -2
  36. package/es/register/register-pyramid3d.js +2 -1
  37. package/es/render/contributions/render-module.js +2 -0
  38. package/es/window/contributions/tt-contribution.d.ts +46 -0
  39. package/es/window/contributions/tt-contribution.js +157 -0
  40. package/es/window/contributions/tt-contribution.js.map +1 -0
  41. package/package.json +2 -2
@@ -91,5 +91,4 @@ let NodeEnvContribution = class extends vrender_core_1.BaseEnvContribution {
91
91
  };
92
92
 
93
93
  NodeEnvContribution = __decorate([ (0, vrender_core_1.injectable)() ], NodeEnvContribution),
94
- exports.NodeEnvContribution = NodeEnvContribution;
95
- //# sourceMappingURL=node-contribution.js.map
94
+ exports.NodeEnvContribution = NodeEnvContribution;
@@ -111,4 +111,5 @@ let TaroEnvContribution = class extends vrender_core_1.BaseEnvContribution {
111
111
  };
112
112
 
113
113
  TaroEnvContribution = __decorate([ (0, vrender_core_1.injectable)(), __metadata("design:paramtypes", []) ], TaroEnvContribution),
114
- exports.TaroEnvContribution = TaroEnvContribution;
114
+ exports.TaroEnvContribution = TaroEnvContribution;
115
+ //# sourceMappingURL=taro-contribution.js.map
@@ -0,0 +1,40 @@
1
+ import { BaseEnvContribution } from '@visactor/vrender-core';
2
+ import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ITTCanvas } from '@visactor/vrender-core';
3
+ export declare class TTEnvContribution extends BaseEnvContribution implements IEnvContribution {
4
+ type: EnvType;
5
+ supportEvent: boolean;
6
+ canvasMap: Map<string, ITTCanvas>;
7
+ freeCanvasList: ITTCanvas[];
8
+ canvasIdx: number;
9
+ constructor();
10
+ configure(service: IGlobal, params: {
11
+ domref: any;
12
+ canvasIdLists: string[];
13
+ freeCanvasIdx: number;
14
+ component: any;
15
+ }): Promise<void>;
16
+ loadImage(url: string): Promise<{
17
+ loadState: 'success' | 'fail';
18
+ data: HTMLImageElement | ImageData | null;
19
+ }>;
20
+ loadSvg(url: string): Promise<{
21
+ loadState: 'success' | 'fail';
22
+ data: HTMLImageElement | ImageData | null;
23
+ }>;
24
+ createCanvas(params: ICreateCanvasParams): ITTCanvas;
25
+ createOffscreenCanvas(params: ICreateCanvasParams): void;
26
+ releaseCanvas(canvas: ICanvasLike | string): void;
27
+ getDevicePixelRatio(): number;
28
+ getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
29
+ getCancelAnimationFrame(): (h: number) => void;
30
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
31
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
32
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
33
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
34
+ dispatchEvent(event: any): boolean;
35
+ getElementById(str: string): any | null;
36
+ getRootElement(): HTMLElement | null;
37
+ getDocument(): Document | null;
38
+ release(...params: any): void;
39
+ mapToCanvasPoint(event: any): any;
40
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __metadata = this && this.__metadata || function(k, v) {
8
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
+ }, __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
10
+ return new (P || (P = Promise))((function(resolve, reject) {
11
+ function fulfilled(value) {
12
+ try {
13
+ step(generator.next(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ }
18
+ function rejected(value) {
19
+ try {
20
+ step(generator.throw(value));
21
+ } catch (e) {
22
+ reject(e);
23
+ }
24
+ }
25
+ function step(result) {
26
+ var value;
27
+ result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
28
+ resolve(value);
29
+ }))).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ }));
33
+ };
34
+
35
+ Object.defineProperty(exports, "__esModule", {
36
+ value: !0
37
+ }), exports.TTEnvContribution = void 0;
38
+
39
+ const vrender_core_1 = require("@visactor/vrender-core");
40
+
41
+ function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList, component) {
42
+ return __awaiter(this, void 0, void 0, (function*() {
43
+ const dpr = tt.getSystemInfoSync().pixelRatio;
44
+ for (let i = 0; i < canvasIdLists.length; i++) {
45
+ const id = canvasIdLists[i];
46
+ yield new Promise((resolve => {
47
+ let data = tt.createSelectorQuery();
48
+ component && (data = data.in(component)), data.select(`#${id}`).node().exec((res => {
49
+ const canvas = res[0].node, width = canvas.width, height = canvas.height;
50
+ canvas.width = width * dpr, canvas.height = height * dpr, canvasMap.set(id, canvas),
51
+ i >= freeCanvasIdx && freeCanvasList.push(canvas), resolve(null);
52
+ }));
53
+ }));
54
+ }
55
+ }));
56
+ }
57
+
58
+ let TTEnvContribution = class extends vrender_core_1.BaseEnvContribution {
59
+ constructor() {
60
+ super(), this.type = "tt", this.supportEvent = !0, this.canvasMap = new Map, this.freeCanvasList = [],
61
+ this.canvasIdx = 0, this.supportsTouchEvents = !0;
62
+ try {
63
+ this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
64
+ } catch (err) {
65
+ this.supportsPointerEvents = !1, this.supportsMouseEvents = !1;
66
+ }
67
+ this.applyStyles = !0;
68
+ }
69
+ configure(service, params) {
70
+ if (service.env === this.type) return service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, params.component).then((() => {}));
71
+ }
72
+ loadImage(url) {
73
+ return Promise.resolve({
74
+ data: url,
75
+ loadState: "success"
76
+ });
77
+ }
78
+ loadSvg(url) {
79
+ return Promise.reject();
80
+ }
81
+ createCanvas(params) {
82
+ const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
83
+ return this.canvasIdx++, result;
84
+ }
85
+ createOffscreenCanvas(params) {}
86
+ releaseCanvas(canvas) {}
87
+ getDevicePixelRatio() {
88
+ return tt.getSystemInfoSync().pixelRatio;
89
+ }
90
+ getRequestAnimationFrame() {
91
+ return function(callback) {
92
+ return vrender_core_1.rafBasedSto.call(callback);
93
+ };
94
+ }
95
+ getCancelAnimationFrame() {
96
+ return h => {
97
+ vrender_core_1.rafBasedSto.clear(h);
98
+ };
99
+ }
100
+ addEventListener(type, listener, options) {
101
+ return null;
102
+ }
103
+ removeEventListener(type, listener, options) {
104
+ return null;
105
+ }
106
+ dispatchEvent(event) {
107
+ return null;
108
+ }
109
+ getElementById(str) {
110
+ return this.canvasMap.get(str);
111
+ }
112
+ getRootElement() {
113
+ return null;
114
+ }
115
+ getDocument() {
116
+ return null;
117
+ }
118
+ release(...params) {}
119
+ mapToCanvasPoint(event) {
120
+ var _a;
121
+ return null === (_a = null == event ? void 0 : event.type) || void 0 === _a || _a.startsWith("mouse"),
122
+ event;
123
+ }
124
+ };
125
+
126
+ TTEnvContribution = __decorate([ (0, vrender_core_1.injectable)(), __metadata("design:paramtypes", []) ], TTEnvContribution),
127
+ exports.TTEnvContribution = TTEnvContribution;
128
+ //# sourceMappingURL=tt-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env/contributions/tt-contribution.ts"],"names":[],"mappings":"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","file":"tt-contribution.js","sourcesContent":["import { injectable, BaseEnvContribution, rafBasedSto } from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '@visactor/vrender-core';\n\ndeclare const tt: {\n getSystemInfoSync: () => { pixelRatio: number };\n createSelectorQuery: () => any;\n};\n\n// 飞书小程序canvas的wrap\nasync function makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n component: any\n) {\n const dpr = tt.getSystemInfoSync().pixelRatio;\n\n for (let i = 0; i < canvasIdLists.length; i++) {\n const id = canvasIdLists[i];\n await new Promise(resolve => {\n let data = tt.createSelectorQuery();\n if (component) {\n data = data.in(component);\n }\n // @ts-ignore\n data\n .select(`#${id}`) // 在 WXML 中填入的 id\n .node()\n .exec((res: any) => {\n const canvas = res[0].node;\n const width = canvas.width;\n const height = canvas.height;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n resolve(null);\n });\n });\n }\n\n // canvasIdLists.forEach((id, i) => {\n // const ctx = wx.createCanvasContext(id);\n // // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n // // 放到内容里\n // // // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n // // ctx.createRadialGradient = (...cc) => ctx.createCircularGradient(...cc);\n\n // // // 封装 getImageData 为 promise\n // // ctx.getImageData = (x, y, width, height) =>\n // // new Promise((resolve, reject) => {\n // // try {\n // // tt.canvasGetImageData({\n // // canvasId: item.id,\n // // x,\n // // y,\n // // width,\n // // height,\n // // success(res) {\n // // resolve(res);\n // // },\n // // });\n // // } catch (err) {\n // // reject(err);\n // // }\n // // });\n\n // const canvas = {\n // width: domref.width,\n // height: domref.height,\n // offsetWidth: domref.width,\n // offsetHeight: domref.height,\n // id: id ?? '',\n // getContext: () => ctx,\n // // 构造 getBoundingClientRect 方法\n // getBoundingClientRect: () => ({\n // height: domref.height,\n // width: domref.width\n // })\n // };\n\n // canvasMap.set(id, canvas);\n // if (i >= freeCanvasIdx) {\n // freeCanvasList.push(canvas);\n // }\n // });\n}\n\n@injectable()\nexport class TTEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'tt';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; component: any }) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n return makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.component\n ).then(() => {\n // loadFeishuContributions();\n });\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return tt.getSystemInfoSync().pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n}\n"]}
@@ -5,3 +5,4 @@ export * from './lynx';
5
5
  export * from './node';
6
6
  export * from './taro';
7
7
  export * from './wx';
8
+ export * from './tt';
package/cjs/env/index.js CHANGED
@@ -20,5 +20,5 @@ Object.defineProperty(exports, "__esModule", {
20
20
  }), __exportStar(require("./all"), exports), __exportStar(require("./browser"), exports),
21
21
  __exportStar(require("./feishu"), exports), __exportStar(require("./lynx"), exports),
22
22
  __exportStar(require("./node"), exports), __exportStar(require("./taro"), exports),
23
- __exportStar(require("./wx"), exports);
23
+ __exportStar(require("./wx"), exports), __exportStar(require("./tt"), exports);
24
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,yCAAuB;AACvB,uCAAqB","file":"index.js","sourcesContent":["export * from './all';\nexport * from './browser';\nexport * from './feishu';\nexport * from './lynx';\nexport * from './node';\nexport * from './taro';\nexport * from './wx';\n"]}
1
+ {"version":3,"sources":["../src/env/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,yCAAuB;AACvB,uCAAqB;AACrB,uCAAqB","file":"index.js","sourcesContent":["export * from './all';\nexport * from './browser';\nexport * from './feishu';\nexport * from './lynx';\nexport * from './node';\nexport * from './taro';\nexport * from './wx';\nexport * from './tt';\n"]}
@@ -0,0 +1,7 @@
1
+ import { ContainerModule, type Container } from '@visactor/vrender-core';
2
+ export declare const ttEnvModule: ContainerModule;
3
+ export declare function loadTTEnv(container: Container, loadPicker?: boolean): void;
4
+ export declare namespace loadTTEnv {
5
+ var __loaded: boolean;
6
+ }
7
+ export declare function initTTEnv(): void;
package/cjs/env/tt.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.initTTEnv = exports.loadTTEnv = exports.ttEnvModule = void 0;
6
+
7
+ const vrender_core_1 = require("@visactor/vrender-core"), modules_1 = require("../canvas/contributions/tt/modules"), tt_contribution_1 = require("../window/contributions/tt-contribution"), math_module_1 = require("../picker/math-module"), tt_contribution_2 = require("./contributions/tt-contribution");
8
+
9
+ function loadTTEnv(container, loadPicker = !0) {
10
+ loadTTEnv.__loaded || (loadTTEnv.__loaded = !0, container.load(exports.ttEnvModule),
11
+ container.load(modules_1.ttCanvasModule), container.load(tt_contribution_1.ttWindowModule),
12
+ loadPicker && (0, math_module_1.loadMathPicker)(container));
13
+ }
14
+
15
+ function initTTEnv() {
16
+ loadTTEnv(vrender_core_1.container);
17
+ }
18
+
19
+ exports.ttEnvModule = new vrender_core_1.ContainerModule((bind => {
20
+ exports.ttEnvModule.isTTBound || (exports.ttEnvModule.isTTBound = !0, bind(tt_contribution_2.TTEnvContribution).toSelf().inSingletonScope(),
21
+ bind(vrender_core_1.EnvContribution).toService(tt_contribution_2.TTEnvContribution));
22
+ })), exports.ttEnvModule.isTTBound = !1, exports.loadTTEnv = loadTTEnv, loadTTEnv.__loaded = !1,
23
+ exports.initTTEnv = initTTEnv;
24
+ //# sourceMappingURL=tt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env/tt.ts"],"names":[],"mappings":";;;AAAA,yDAAqG;AACrG,gEAAoE;AACpE,6EAAyE;AACzE,uDAAuD;AACvD,qEAAoE;AAEvD,QAAA,WAAW,GAAG,IAAI,8BAAe,CAAC,IAAI,CAAC,EAAE;IAEpD,IAAI,CAAE,mBAAmB,CAAC,SAAS,EAAE;QAClC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,mCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACpD,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,mCAAiB,CAAC,CAAC;KACpD;AACH,CAAC,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,GAAG,KAAK,CAAC;AAEvC,SAAgB,SAAS,CAAC,SAAoB,EAAE,aAAsB,IAAI;IACxE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,mBAAW,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,wBAAc,CAAC,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,gCAAc,CAAC,CAAC;QAC/B,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,8BAQC;AAED,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;AAE3B,SAAgB,SAAS;IACvB,SAAS,CAAC,wBAAS,CAAC,CAAC;AACvB,CAAC;AAFD,8BAEC","file":"tt.js","sourcesContent":["import { container, ContainerModule, type Container, EnvContribution } from '@visactor/vrender-core';\nimport { ttCanvasModule } from '../canvas/contributions/tt/modules';\nimport { ttWindowModule } from '../window/contributions/tt-contribution';\nimport { loadMathPicker } from '../picker/math-module';\nimport { TTEnvContribution } from './contributions/tt-contribution';\n\nexport const ttEnvModule = new ContainerModule(bind => {\n // feishu\n if (!(ttEnvModule as any).isTTBound) {\n (ttEnvModule as any).isTTBound = true;\n bind(TTEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(TTEnvContribution);\n }\n});\n\n(ttEnvModule as any).isTTBound = false;\n\nexport function loadTTEnv(container: Container, loadPicker: boolean = true) {\n if (!loadTTEnv.__loaded) {\n loadTTEnv.__loaded = true;\n container.load(ttEnvModule);\n container.load(ttCanvasModule);\n container.load(ttWindowModule);\n loadPicker && loadMathPicker(container);\n }\n}\n\nloadTTEnv.__loaded = false;\n\nexport function initTTEnv() {\n loadTTEnv(container);\n}\n"]}
@@ -54,5 +54,4 @@ function parseToGraphic(g, childrenList, props) {
54
54
  }))) : "richtext" === g.type && (g.attribute.textConfig = childrenList.map((item => item.attribute)).filter((item => item)));
55
55
  }
56
56
 
57
- exports.jsx = jsx, exports.Fragment = vrender_core_1.Group;
58
- //# sourceMappingURL=jsx-classic.js.map
57
+ exports.jsx = jsx, exports.Fragment = vrender_core_1.Group;
@@ -19,4 +19,5 @@ function loadCanvasPicker(c) {
19
19
  exports.canvasPickerModule = new vrender_core_1.ContainerModule(((bind, unbind, isBound, rebind) => {
20
20
  isBound(canvas_picker_service_1.DefaultCanvasPickerService) || bind(canvas_picker_service_1.DefaultCanvasPickerService).toSelf().inSingletonScope(),
21
21
  isBound(vrender_core_1.PickerService) ? rebind(vrender_core_1.PickerService).toService(canvas_picker_service_1.DefaultCanvasPickerService) : bind(vrender_core_1.PickerService).toService(canvas_picker_service_1.DefaultCanvasPickerService);
22
- })), exports.loadCanvasPicker = loadCanvasPicker;
22
+ })), exports.loadCanvasPicker = loadCanvasPicker;
23
+ //# sourceMappingURL=canvas-module.js.map
@@ -18,4 +18,4 @@ exports.CanvasTextPicker = Symbol.for("CanvasTextPicker"), exports.CanvasPolygon
18
18
  exports.CanvasPyramid3dPicker = Symbol.for("CanvasPyramid3dPicker"), exports.CanvasRichTextPicker = Symbol.for("CanvasRichTextPicker"),
19
19
  exports.CanvasGlyphPicker = Symbol.for("CanvasGlyphPicker"), exports.CanvasGroupPicker = Symbol.for("CanvasGroupPicker"),
20
20
  exports.CanvasPickerContribution = Symbol.for("CanvasPickerContribution");
21
- //# sourceMappingURL=constants.js.map
21
+ //# sourceMappingURL=constants.js.map
@@ -11,5 +11,4 @@ function _registerPolygon() {
11
11
  vrender_core_1.container.load(vrender_core_1.polygonModule), vrender_core_1.container.load(env_1.browser ? polygon_module_1.polygonCanvasPickModule : polygon_module_2.polygonMathPickModule));
12
12
  }
13
13
 
14
- _registerPolygon.__loaded = !1, exports.registerPolygon = _registerPolygon;
15
- //# sourceMappingURL=register-polygon.js.map
14
+ _registerPolygon.__loaded = !1, exports.registerPolygon = _registerPolygon;
@@ -12,4 +12,5 @@ function _registerPyramid3d() {
12
12
  pyramid3d_module_1.pyramid3dCanvasPickModule)));
13
13
  }
14
14
 
15
- _registerPyramid3d.__loaded = !1, exports.registerPyramid3d = _registerPyramid3d;
15
+ _registerPyramid3d.__loaded = !1, exports.registerPyramid3d = _registerPyramid3d;
16
+ //# sourceMappingURL=register-pyramid3d.js.map
@@ -1 +1,3 @@
1
+
2
+
1
3
  //# sourceMappingURL=render-module.js.map
@@ -0,0 +1,46 @@
1
+ import { BaseWindowHandlerContribution, ContainerModule } from '@visactor/vrender-core';
2
+ import type { EnvType, IGlobal, IContext2d, ICanvas, IDomRectLike, IWindowHandlerContribution, IWindowParams } from '@visactor/vrender-core';
3
+ declare class MiniAppEventManager {
4
+ addEventListener(type: string, func: EventListenerOrEventListenerObject): void;
5
+ removeEventListener(type: string, func: EventListenerOrEventListenerObject): void;
6
+ cleanEvent(): void;
7
+ cache: Record<string, {
8
+ listener: EventListenerOrEventListenerObject[];
9
+ }>;
10
+ }
11
+ export declare class TTWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {
12
+ private readonly global;
13
+ static env: EnvType;
14
+ type: EnvType;
15
+ protected eventManager: MiniAppEventManager;
16
+ canvas: ICanvas;
17
+ get container(): HTMLElement | null;
18
+ constructor(global: IGlobal);
19
+ getTitle(): string;
20
+ getWH(): {
21
+ width: number;
22
+ height: number;
23
+ };
24
+ getXY(): {
25
+ x: number;
26
+ y: number;
27
+ };
28
+ createWindow(params: IWindowParams): void;
29
+ private createWindowByConfig;
30
+ private createWindowByCanvas;
31
+ releaseWindow(): void;
32
+ resizeWindow(width: number, height: number): void;
33
+ setDpr(dpr: number): void;
34
+ getContext(): IContext2d;
35
+ getNativeHandler(): ICanvas;
36
+ getDpr(): number;
37
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
38
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
39
+ dispatchEvent(event: any): boolean;
40
+ getStyle(): CSSStyleDeclaration | Record<string, any>;
41
+ setStyle(style: CSSStyleDeclaration | Record<string, any>): void;
42
+ getBoundingClientRect(): IDomRectLike;
43
+ clearViewBox(color?: string): void;
44
+ }
45
+ export declare const ttWindowModule: ContainerModule;
46
+ export {};
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __metadata = this && this.__metadata || function(k, v) {
8
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
+ }, __param = this && this.__param || function(paramIndex, decorator) {
10
+ return function(target, key) {
11
+ decorator(target, key, paramIndex);
12
+ };
13
+ };
14
+
15
+ Object.defineProperty(exports, "__esModule", {
16
+ value: !0
17
+ }), exports.ttWindowModule = exports.TTWindowHandlerContribution = void 0;
18
+
19
+ const vrender_core_1 = require("@visactor/vrender-core"), tt_1 = require("../../canvas/contributions/tt");
20
+
21
+ class MiniAppEventManager {
22
+ constructor() {
23
+ this.cache = {};
24
+ }
25
+ addEventListener(type, func) {
26
+ type && func && (this.cache[type] = this.cache[type] || {
27
+ listener: []
28
+ }, this.cache[type].listener.push(func));
29
+ }
30
+ removeEventListener(type, func) {
31
+ if (!type || !func) return;
32
+ if (!this.cache[type]) return;
33
+ const index = this.cache[type].listener.findIndex((f => f === func));
34
+ index >= 0 && this.cache[type].listener.splice(index, 1);
35
+ }
36
+ cleanEvent() {
37
+ this.cache = {};
38
+ }
39
+ }
40
+
41
+ let TTWindowHandlerContribution = class extends vrender_core_1.BaseWindowHandlerContribution {
42
+ get container() {
43
+ return null;
44
+ }
45
+ constructor(global) {
46
+ super(), this.global = global, this.type = "tt", this.eventManager = new MiniAppEventManager;
47
+ }
48
+ getTitle() {
49
+ return this.canvas.id.toString();
50
+ }
51
+ getWH() {
52
+ return {
53
+ width: this.canvas.width / (this.canvas.dpr || 1),
54
+ height: this.canvas.height / (this.canvas.dpr || 1)
55
+ };
56
+ }
57
+ getXY() {
58
+ return {
59
+ x: 0,
60
+ y: 0
61
+ };
62
+ }
63
+ createWindow(params) {
64
+ params.canvas ? this.createWindowByCanvas(params) : this.createWindowByConfig(params);
65
+ }
66
+ createWindowByConfig(params) {
67
+ const nativeCanvas = this.global.createCanvas({
68
+ width: params.width,
69
+ height: params.height
70
+ }), options = {
71
+ width: params.width,
72
+ height: params.height,
73
+ dpr: params.dpr,
74
+ nativeCanvas: nativeCanvas,
75
+ id: vrender_core_1.Generator.GenAutoIncrementId().toString(),
76
+ canvasControled: !1
77
+ };
78
+ this.canvas = new tt_1.TTCanvas(options);
79
+ }
80
+ createWindowByCanvas(params) {
81
+ let canvas;
82
+ if ("string" == typeof params.canvas) {
83
+ if (canvas = this.global.getElementById(params.canvas), !canvas) throw new Error("canvasId 参数不正确,请确认canvas存在并插入dom");
84
+ } else canvas = params.canvas;
85
+ let width = params.width, height = params.height;
86
+ if (null == width || null == height || !params.canvasControled) {
87
+ const data = canvas.getBoundingClientRect();
88
+ width = data.width, height = data.height;
89
+ }
90
+ let dpr = params.dpr;
91
+ null == dpr && (dpr = canvas.width / width), this.canvas = new tt_1.TTCanvas({
92
+ width: width,
93
+ height: height,
94
+ dpr: dpr,
95
+ nativeCanvas: canvas,
96
+ canvasControled: params.canvasControled
97
+ });
98
+ }
99
+ releaseWindow() {}
100
+ resizeWindow(width, height) {}
101
+ setDpr(dpr) {
102
+ this.canvas.dpr = dpr;
103
+ }
104
+ getContext() {
105
+ return this.canvas.getContext();
106
+ }
107
+ getNativeHandler() {
108
+ return this.canvas;
109
+ }
110
+ getDpr() {
111
+ return this.canvas.dpr;
112
+ }
113
+ addEventListener(type, listener) {
114
+ this.eventManager.addEventListener(type, listener);
115
+ }
116
+ removeEventListener(type, listener) {
117
+ this.eventManager.removeEventListener(type, listener);
118
+ }
119
+ dispatchEvent(event) {
120
+ const {type: type} = event;
121
+ return !!this.eventManager.cache[type] && (event.changedTouches && event.changedTouches[0] && (event.offsetX = event.changedTouches[0].x,
122
+ event.changedTouches[0].offsetX = event.changedTouches[0].x, event.changedTouches[0].clientX = event.changedTouches[0].x,
123
+ event.offsetY = event.changedTouches[0].y, event.changedTouches[0].offsetY = event.changedTouches[0].y,
124
+ event.changedTouches[0].clientY = event.changedTouches[0].y), event.preventDefault = () => {},
125
+ event.stopPropagation = () => {}, this.eventManager.cache[type].listener && this.eventManager.cache[type].listener.forEach((f => {
126
+ f(event);
127
+ })), !0);
128
+ }
129
+ getStyle() {
130
+ return {};
131
+ }
132
+ setStyle(style) {}
133
+ getBoundingClientRect() {
134
+ const wh = this.getWH();
135
+ return {
136
+ x: 0,
137
+ y: 0,
138
+ width: wh.width,
139
+ height: wh.height,
140
+ left: 0,
141
+ top: 0,
142
+ right: 0,
143
+ bottom: 0
144
+ };
145
+ }
146
+ clearViewBox(color) {
147
+ const vb = this.viewBox, context = this.getContext(), dpr = this.getDpr();
148
+ context.nativeContext.save(), context.nativeContext.setTransform(dpr, 0, 0, dpr, 0, 0),
149
+ context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1), color && (context.fillStyle = color,
150
+ context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1)), context.nativeContext.restore();
151
+ }
152
+ };
153
+
154
+ TTWindowHandlerContribution.env = "tt", TTWindowHandlerContribution = __decorate([ (0,
155
+ vrender_core_1.injectable)(), __param(0, (0, vrender_core_1.inject)(vrender_core_1.VGlobal)), __metadata("design:paramtypes", [ Object ]) ], TTWindowHandlerContribution),
156
+ exports.TTWindowHandlerContribution = TTWindowHandlerContribution, exports.ttWindowModule = new vrender_core_1.ContainerModule((bind => {
157
+ bind(TTWindowHandlerContribution).toSelf(), bind(vrender_core_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(TTWindowHandlerContribution))).whenTargetNamed(TTWindowHandlerContribution.env);
158
+ }));
159
+ //# sourceMappingURL=tt-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/window/contributions/tt-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAQgC;AAWhC,sDAAyD;AAEzD,MAAM,mBAAmB;IAAzB;QAyBE,UAAK,GAAuE,EAAE,CAAC;IACjF,CAAC;IAzBC,gBAAgB,CAAC,IAAY,EAAE,IAAwC;QACrE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;YACrC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,mBAAmB,CAAC,IAAY,EAAE,IAAwC;QACxE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO;SACR;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAqC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACzG,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC5C;IACH,CAAC;IACD,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CAEF;AAGM,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,4CAA6B;IAO5E,IAAI,SAAS;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAA8C,MAAe;QAC3D,KAAK,EAAE,CAAC;QADoC,WAAM,GAAN,MAAM,CAAS;QAT7D,SAAI,GAAY,IAAI,CAAC;QAEX,iBAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;IASnD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnC,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,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,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;IACH,CAAC;IACO,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;QAGH,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY;YACZ,EAAE,EAAE,wBAAS,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE;YAC7C,eAAe,EAAE,KAAK;SACvB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,aAAQ,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IACO,oBAAoB,CAAC,MAAqB;QAEhD,IAAI,MAAgC,CAAC;QACrC,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;YACrC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAA6B,CAAC;YAC/E,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACrD;SACF;aAAM;YACL,MAAM,GAAG,MAAO,CAAC,MAAkC,CAAC;SACrD;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;QACrB,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;SAC5B;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAQ,CAAC;YACzB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC;IACL,CAAC;IACD,aAAa;QACX,OAAO;IACT,CAAC;IACD,YAAY,CAAC,KAAa,EAAE,MAAc;QACxC,OAAO;IACT,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,CAAC,IAAY,EAAE,QAA4C;QACzE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAMD,mBAAmB,CAAC,IAAY,EAAE,QAA4C;QAC5E,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,aAAa,CAAC,KAAU;QACtB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;QAGD,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YACnD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7D;QACD,KAAK,CAAC,cAAc,GAAG,GAAG,EAAE;YAC1B,OAAO;QACT,CAAC,CAAC;QACF,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE;YAC3B,OAAO;QACT,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAgB,EAAE,EAAE;gBAClE,CAAC,CAAC,KAAK,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,QAAQ,CAAC,KAAgD;QACvD,OAAO;IACT,CAAC;IAED,qBAAqB;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO;YACL,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,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;;AA1LM,+BAAG,GAAY,IAAI,CAAC;AADhB,2BAA2B;IADvC,IAAA,yBAAU,GAAE;IAYE,WAAA,IAAA,qBAAM,EAAC,sBAAO,CAAC,CAAA;;GAXjB,2BAA2B,CA4LvC;AA5LY,kEAA2B;AA8L3B,QAAA,cAAc,GAAG,IAAI,8BAAe,CAAC,IAAI,CAAC,EAAE;IAEvD,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3C,IAAI,CAAC,wCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;SACrE,eAAe,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC","file":"tt-contribution.js","sourcesContent":["import {\n inject,\n injectable,\n Generator,\n BaseWindowHandlerContribution,\n VGlobal,\n ContainerModule,\n WindowHandlerContribution\n} from '@visactor/vrender-core';\nimport type {\n EnvType,\n IGlobal,\n IContext2d,\n ICanvas,\n IDomRectLike,\n IWindowHandlerContribution,\n IWindowParams\n} from '@visactor/vrender-core';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { TTCanvas } from '../../canvas/contributions/tt';\n\nclass MiniAppEventManager {\n addEventListener(type: string, func: EventListenerOrEventListenerObject) {\n if (!type || !func) {\n return;\n }\n this.cache[type] = this.cache[type] || {\n listener: []\n };\n this.cache[type].listener.push(func);\n }\n removeEventListener(type: string, func: EventListenerOrEventListenerObject) {\n if (!type || !func) {\n return;\n }\n if (!this.cache[type]) {\n return;\n }\n const index = this.cache[type].listener.findIndex((f: EventListenerOrEventListenerObject) => f === func);\n if (index >= 0) {\n this.cache[type].listener.splice(index, 1);\n }\n }\n cleanEvent() {\n this.cache = {};\n }\n cache: Record<string, { listener: EventListenerOrEventListenerObject[] }> = {};\n}\n\n@injectable()\nexport class TTWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {\n static env: EnvType = 'tt';\n type: EnvType = 'tt';\n\n protected eventManager = new MiniAppEventManager();\n\n canvas: ICanvas;\n get container(): HTMLElement | null {\n return null;\n }\n\n constructor(@inject(VGlobal) private readonly global: IGlobal) {\n super();\n }\n\n getTitle(): string {\n return 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 { x: 0, y: 0 };\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 private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n id: Generator.GenAutoIncrementId().toString(),\n canvasControled: false\n };\n this.canvas = new TTCanvas(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) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\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 (dpr == null) {\n dpr = canvas.width / width;\n }\n this.canvas = new TTCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled\n });\n }\n releaseWindow(): void {\n return;\n }\n resizeWindow(width: number, height: number): void {\n return;\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(type: string, listener: EventListenerOrEventListenerObject): void {\n this.eventManager.addEventListener(type, listener);\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(type: string, listener: EventListenerOrEventListenerObject): void {\n this.eventManager.removeEventListener(type, listener);\n }\n dispatchEvent(event: any): boolean {\n const { type } = event;\n if (!this.eventManager.cache[type]) {\n return false;\n }\n\n // hack for offsetX offsetY\n if (event.changedTouches && event.changedTouches[0]) {\n event.offsetX = event.changedTouches[0].x;\n event.changedTouches[0].offsetX = event.changedTouches[0].x;\n event.changedTouches[0].clientX = event.changedTouches[0].x;\n event.offsetY = event.changedTouches[0].y;\n event.changedTouches[0].offsetY = event.changedTouches[0].y;\n event.changedTouches[0].clientY = event.changedTouches[0].y;\n }\n event.preventDefault = () => {\n return;\n };\n event.stopPropagation = () => {\n return;\n };\n if (this.eventManager.cache[type].listener) {\n this.eventManager.cache[type].listener.forEach((f: EventListener) => {\n f(event);\n });\n }\n return true;\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return {};\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n return;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const wh = this.getWH();\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\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\nexport const ttWindowModule = new ContainerModule(bind => {\n // tt\n bind(TTWindowHandlerContribution).toSelf();\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(TTWindowHandlerContribution))\n .whenTargetNamed(TTWindowHandlerContribution.env);\n});\n"]}
@@ -86,5 +86,4 @@ let NodeEnvContribution = class extends BaseEnvContribution {
86
86
 
87
87
  NodeEnvContribution = __decorate([ injectable() ], NodeEnvContribution);
88
88
 
89
- export { NodeEnvContribution };
90
- //# sourceMappingURL=node-contribution.js.map
89
+ export { NodeEnvContribution };
@@ -108,4 +108,5 @@ let TaroEnvContribution = class extends BaseEnvContribution {
108
108
 
109
109
  TaroEnvContribution = __decorate([ injectable(), __metadata("design:paramtypes", []) ], TaroEnvContribution);
110
110
 
111
- export { TaroEnvContribution };
111
+ export { TaroEnvContribution };
112
+ //# sourceMappingURL=taro-contribution.js.map
@@ -0,0 +1,40 @@
1
+ import { BaseEnvContribution } from '@visactor/vrender-core';
2
+ import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, ITTCanvas } from '@visactor/vrender-core';
3
+ export declare class TTEnvContribution extends BaseEnvContribution implements IEnvContribution {
4
+ type: EnvType;
5
+ supportEvent: boolean;
6
+ canvasMap: Map<string, ITTCanvas>;
7
+ freeCanvasList: ITTCanvas[];
8
+ canvasIdx: number;
9
+ constructor();
10
+ configure(service: IGlobal, params: {
11
+ domref: any;
12
+ canvasIdLists: string[];
13
+ freeCanvasIdx: number;
14
+ component: any;
15
+ }): Promise<void>;
16
+ loadImage(url: string): Promise<{
17
+ loadState: 'success' | 'fail';
18
+ data: HTMLImageElement | ImageData | null;
19
+ }>;
20
+ loadSvg(url: string): Promise<{
21
+ loadState: 'success' | 'fail';
22
+ data: HTMLImageElement | ImageData | null;
23
+ }>;
24
+ createCanvas(params: ICreateCanvasParams): ITTCanvas;
25
+ createOffscreenCanvas(params: ICreateCanvasParams): void;
26
+ releaseCanvas(canvas: ICanvasLike | string): void;
27
+ getDevicePixelRatio(): number;
28
+ getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
29
+ getCancelAnimationFrame(): (h: number) => void;
30
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
31
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
32
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
33
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
34
+ dispatchEvent(event: any): boolean;
35
+ getElementById(str: string): any | null;
36
+ getRootElement(): HTMLElement | null;
37
+ getDocument(): Document | null;
38
+ release(...params: any): void;
39
+ mapToCanvasPoint(event: any): any;
40
+ }
@@ -0,0 +1,123 @@
1
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
2
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
3
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
4
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
5
+ }, __metadata = this && this.__metadata || function(k, v) {
6
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
7
+ }, __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
8
+ return new (P || (P = Promise))((function(resolve, reject) {
9
+ function fulfilled(value) {
10
+ try {
11
+ step(generator.next(value));
12
+ } catch (e) {
13
+ reject(e);
14
+ }
15
+ }
16
+ function rejected(value) {
17
+ try {
18
+ step(generator.throw(value));
19
+ } catch (e) {
20
+ reject(e);
21
+ }
22
+ }
23
+ function step(result) {
24
+ var value;
25
+ result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
26
+ resolve(value);
27
+ }))).then(fulfilled, rejected);
28
+ }
29
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
30
+ }));
31
+ };
32
+
33
+ import { injectable, BaseEnvContribution, rafBasedSto } from "@visactor/vrender-core";
34
+
35
+ function makeUpCanvas(domref, canvasIdLists, canvasMap, freeCanvasIdx, freeCanvasList, component) {
36
+ return __awaiter(this, void 0, void 0, (function*() {
37
+ const dpr = tt.getSystemInfoSync().pixelRatio;
38
+ for (let i = 0; i < canvasIdLists.length; i++) {
39
+ const id = canvasIdLists[i];
40
+ yield new Promise((resolve => {
41
+ let data = tt.createSelectorQuery();
42
+ component && (data = data.in(component)), data.select(`#${id}`).node().exec((res => {
43
+ const canvas = res[0].node, width = canvas.width, height = canvas.height;
44
+ canvas.width = width * dpr, canvas.height = height * dpr, canvasMap.set(id, canvas),
45
+ i >= freeCanvasIdx && freeCanvasList.push(canvas), resolve(null);
46
+ }));
47
+ }));
48
+ }
49
+ }));
50
+ }
51
+
52
+ let TTEnvContribution = class extends BaseEnvContribution {
53
+ constructor() {
54
+ super(), this.type = "tt", this.supportEvent = !0, this.canvasMap = new Map, this.freeCanvasList = [],
55
+ this.canvasIdx = 0, this.supportsTouchEvents = !0;
56
+ try {
57
+ this.supportsPointerEvents = !!globalThis.PointerEvent, this.supportsMouseEvents = !!globalThis.MouseEvent;
58
+ } catch (err) {
59
+ this.supportsPointerEvents = !1, this.supportsMouseEvents = !1;
60
+ }
61
+ this.applyStyles = !0;
62
+ }
63
+ configure(service, params) {
64
+ if (service.env === this.type) return service.setActiveEnvContribution(this), makeUpCanvas(params.domref, params.canvasIdLists, this.canvasMap, params.freeCanvasIdx, this.freeCanvasList, params.component).then((() => {}));
65
+ }
66
+ loadImage(url) {
67
+ return Promise.resolve({
68
+ data: url,
69
+ loadState: "success"
70
+ });
71
+ }
72
+ loadSvg(url) {
73
+ return Promise.reject();
74
+ }
75
+ createCanvas(params) {
76
+ const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];
77
+ return this.canvasIdx++, result;
78
+ }
79
+ createOffscreenCanvas(params) {}
80
+ releaseCanvas(canvas) {}
81
+ getDevicePixelRatio() {
82
+ return tt.getSystemInfoSync().pixelRatio;
83
+ }
84
+ getRequestAnimationFrame() {
85
+ return function(callback) {
86
+ return rafBasedSto.call(callback);
87
+ };
88
+ }
89
+ getCancelAnimationFrame() {
90
+ return h => {
91
+ rafBasedSto.clear(h);
92
+ };
93
+ }
94
+ addEventListener(type, listener, options) {
95
+ return null;
96
+ }
97
+ removeEventListener(type, listener, options) {
98
+ return null;
99
+ }
100
+ dispatchEvent(event) {
101
+ return null;
102
+ }
103
+ getElementById(str) {
104
+ return this.canvasMap.get(str);
105
+ }
106
+ getRootElement() {
107
+ return null;
108
+ }
109
+ getDocument() {
110
+ return null;
111
+ }
112
+ release(...params) {}
113
+ mapToCanvasPoint(event) {
114
+ var _a;
115
+ return null === (_a = null == event ? void 0 : event.type) || void 0 === _a || _a.startsWith("mouse"),
116
+ event;
117
+ }
118
+ };
119
+
120
+ TTEnvContribution = __decorate([ injectable(), __metadata("design:paramtypes", []) ], TTEnvContribution);
121
+
122
+ export { TTEnvContribution };
123
+ //# sourceMappingURL=tt-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env/contributions/tt-contribution.ts"],"names":[],"mappings":"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","file":"tt-contribution.js","sourcesContent":["import { injectable, BaseEnvContribution, rafBasedSto } from '@visactor/vrender-core';\n// import { loadFeishuContributions } from '../../../kits';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n ITTCanvas\n} from '@visactor/vrender-core';\n\ndeclare const tt: {\n getSystemInfoSync: () => { pixelRatio: number };\n createSelectorQuery: () => any;\n};\n\n// 飞书小程序canvas的wrap\nasync function makeUpCanvas(\n domref: any,\n canvasIdLists: string[],\n canvasMap: Map<string, ITTCanvas>,\n freeCanvasIdx: number,\n freeCanvasList: ITTCanvas[],\n component: any\n) {\n const dpr = tt.getSystemInfoSync().pixelRatio;\n\n for (let i = 0; i < canvasIdLists.length; i++) {\n const id = canvasIdLists[i];\n await new Promise(resolve => {\n let data = tt.createSelectorQuery();\n if (component) {\n data = data.in(component);\n }\n // @ts-ignore\n data\n .select(`#${id}`) // 在 WXML 中填入的 id\n .node()\n .exec((res: any) => {\n const canvas = res[0].node;\n const width = canvas.width;\n const height = canvas.height;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvasMap.set(id, canvas);\n if (i >= freeCanvasIdx) {\n freeCanvasList.push(canvas);\n }\n resolve(null);\n });\n });\n }\n\n // canvasIdLists.forEach((id, i) => {\n // const ctx = wx.createCanvasContext(id);\n // // TODO: 这里是一个临时方案,向 ctx 内部构造一个 canvas,传递宽高\n // ctx.canvas = {\n // width: domref.width * dpr,\n // height: domref.height * dpr\n // };\n\n // // 放到内容里\n // // // TODO: 这里是一个临时方案,兼容 createCircularGradient 方法\n // // ctx.createRadialGradient = (...cc) => ctx.createCircularGradient(...cc);\n\n // // // 封装 getImageData 为 promise\n // // ctx.getImageData = (x, y, width, height) =>\n // // new Promise((resolve, reject) => {\n // // try {\n // // tt.canvasGetImageData({\n // // canvasId: item.id,\n // // x,\n // // y,\n // // width,\n // // height,\n // // success(res) {\n // // resolve(res);\n // // },\n // // });\n // // } catch (err) {\n // // reject(err);\n // // }\n // // });\n\n // const canvas = {\n // width: domref.width,\n // height: domref.height,\n // offsetWidth: domref.width,\n // offsetHeight: domref.height,\n // id: id ?? '',\n // getContext: () => ctx,\n // // 构造 getBoundingClientRect 方法\n // getBoundingClientRect: () => ({\n // height: domref.height,\n // width: domref.width\n // })\n // };\n\n // canvasMap.set(id, canvas);\n // if (i >= freeCanvasIdx) {\n // freeCanvasList.push(canvas);\n // }\n // });\n}\n\n@injectable()\nexport class TTEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'tt';\n supportEvent: boolean = true;\n // 所有添加进来的canvas\n canvasMap: Map<string, ITTCanvas> = new Map();\n // 所有可用的canvasList\n freeCanvasList: ITTCanvas[] = [];\n canvasIdx: number = 0;\n\n constructor() {\n super();\n this.supportsTouchEvents = true;\n try {\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsPointerEvents = false;\n this.supportsMouseEvents = false;\n }\n this.applyStyles = true;\n }\n\n // TODO:VGrammar在小程序环境会重复调用setEnv传入canvas,所以每次configure并不会释放\n // 这里等待后续和VGrammar沟通\n configure(service: IGlobal, params: { domref: any; canvasIdLists: string[]; freeCanvasIdx: number; component: any }) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n return makeUpCanvas(\n params.domref,\n params.canvasIdLists,\n this.canvasMap,\n params.freeCanvasIdx,\n this.freeCanvasList,\n params.component\n ).then(() => {\n // loadFeishuContributions();\n });\n }\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n return Promise.resolve({\n data: url as unknown as HTMLImageElement,\n loadState: 'success'\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n // 飞书小组件不支持DOMParser和URL.createObjectURL,无法解析svg字符串,可以通过url使用svg资源\n return Promise.reject();\n }\n\n createCanvas(params: ICreateCanvasParams): ITTCanvas {\n const result = this.freeCanvasList[this.canvasIdx] || this.freeCanvasList[this.freeCanvasList.length - 1];\n this.canvasIdx++;\n return result;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return tt.getSystemInfoSync().pixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n // return requestAnimationFrame;\n\n // 飞书小组件,在云文档浏览器环境中,没有requestAnimationFrame\n // 但是在小组件工作台环境和模拟器中正常\n // 反馈飞书修改,目前先使用setTimeout模拟,进行测试,飞书修复后替换回requestAnimationFrame\n // return function (callback: FrameRequestCallback) {\n // return setTimeout(callback, 1000 / 60, true);\n // } as any;\n return function (callback: FrameRequestCallback) {\n return rafBasedSto.call(callback);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n rafBasedSto.clear(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return null;\n }\n\n // 只能索引canvas\n getElementById(str: string): any | null {\n return this.canvasMap.get(str);\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n getDocument(): Document | null {\n return null;\n }\n\n release(...params: any): void {\n return;\n }\n\n mapToCanvasPoint(event: any) {\n if (event?.type?.startsWith('mouse')) {\n return event;\n }\n return event;\n }\n}\n"]}
package/es/env/index.d.ts CHANGED
@@ -5,3 +5,4 @@ export * from './lynx';
5
5
  export * from './node';
6
6
  export * from './taro';
7
7
  export * from './wx';
8
+ export * from './tt';
package/es/env/index.js CHANGED
@@ -11,4 +11,6 @@ export * from "./node";
11
11
  export * from "./taro";
12
12
 
13
13
  export * from "./wx";
14
+
15
+ export * from "./tt";
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC","file":"index.js","sourcesContent":["export * from './all';\nexport * from './browser';\nexport * from './feishu';\nexport * from './lynx';\nexport * from './node';\nexport * from './taro';\nexport * from './wx';\n"]}
1
+ {"version":3,"sources":["../src/env/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,MAAM,CAAC","file":"index.js","sourcesContent":["export * from './all';\nexport * from './browser';\nexport * from './feishu';\nexport * from './lynx';\nexport * from './node';\nexport * from './taro';\nexport * from './wx';\nexport * from './tt';\n"]}
package/es/env/tt.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { ContainerModule, type Container } from '@visactor/vrender-core';
2
+ export declare const ttEnvModule: ContainerModule;
3
+ export declare function loadTTEnv(container: Container, loadPicker?: boolean): void;
4
+ export declare namespace loadTTEnv {
5
+ var __loaded: boolean;
6
+ }
7
+ export declare function initTTEnv(): void;
package/es/env/tt.js ADDED
@@ -0,0 +1,28 @@
1
+ import { container, ContainerModule, EnvContribution } from "@visactor/vrender-core";
2
+
3
+ import { ttCanvasModule } from "../canvas/contributions/tt/modules";
4
+
5
+ import { ttWindowModule } from "../window/contributions/tt-contribution";
6
+
7
+ import { loadMathPicker } from "../picker/math-module";
8
+
9
+ import { TTEnvContribution } from "./contributions/tt-contribution";
10
+
11
+ export const ttEnvModule = new ContainerModule((bind => {
12
+ ttEnvModule.isTTBound || (ttEnvModule.isTTBound = !0, bind(TTEnvContribution).toSelf().inSingletonScope(),
13
+ bind(EnvContribution).toService(TTEnvContribution));
14
+ }));
15
+
16
+ ttEnvModule.isTTBound = !1;
17
+
18
+ export function loadTTEnv(container, loadPicker = !0) {
19
+ loadTTEnv.__loaded || (loadTTEnv.__loaded = !0, container.load(ttEnvModule), container.load(ttCanvasModule),
20
+ container.load(ttWindowModule), loadPicker && loadMathPicker(container));
21
+ }
22
+
23
+ loadTTEnv.__loaded = !1;
24
+
25
+ export function initTTEnv() {
26
+ loadTTEnv(container);
27
+ }
28
+ //# sourceMappingURL=tt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env/tt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;IAEpD,IAAI,CAAE,WAAmB,CAAC,SAAS,EAAE;QAClC,WAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;KACpD;AACH,CAAC,CAAC,CAAC;AAEF,WAAmB,CAAC,SAAS,GAAG,KAAK,CAAC;AAEvC,MAAM,UAAU,SAAS,CAAC,SAAoB,EAAE,aAAsB,IAAI;IACxE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/B,UAAU,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AAED,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;AAE3B,MAAM,UAAU,SAAS;IACvB,SAAS,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC","file":"tt.js","sourcesContent":["import { container, ContainerModule, type Container, EnvContribution } from '@visactor/vrender-core';\nimport { ttCanvasModule } from '../canvas/contributions/tt/modules';\nimport { ttWindowModule } from '../window/contributions/tt-contribution';\nimport { loadMathPicker } from '../picker/math-module';\nimport { TTEnvContribution } from './contributions/tt-contribution';\n\nexport const ttEnvModule = new ContainerModule(bind => {\n // feishu\n if (!(ttEnvModule as any).isTTBound) {\n (ttEnvModule as any).isTTBound = true;\n bind(TTEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(TTEnvContribution);\n }\n});\n\n(ttEnvModule as any).isTTBound = false;\n\nexport function loadTTEnv(container: Container, loadPicker: boolean = true) {\n if (!loadTTEnv.__loaded) {\n loadTTEnv.__loaded = true;\n container.load(ttEnvModule);\n container.load(ttCanvasModule);\n container.load(ttWindowModule);\n loadPicker && loadMathPicker(container);\n }\n}\n\nloadTTEnv.__loaded = false;\n\nexport function initTTEnv() {\n loadTTEnv(container);\n}\n"]}
@@ -52,5 +52,4 @@ function parseToGraphic(g, childrenList, props) {
52
52
  }))) : "richtext" === g.type && (g.attribute.textConfig = childrenList.map((item => item.attribute)).filter((item => item)));
53
53
  }
54
54
 
55
- export const Fragment = Group;
56
- //# sourceMappingURL=jsx-classic.js.map
55
+ export const Fragment = Group;
@@ -11,4 +11,5 @@ export const canvasPickerModule = new ContainerModule(((bind, unbind, isBound, r
11
11
 
12
12
  export function loadCanvasPicker(c) {
13
13
  c.load(canvasModule), c.load(canvasPickerModule);
14
- }
14
+ }
15
+ //# sourceMappingURL=canvas-module.js.map
@@ -55,4 +55,4 @@ export const CanvasGlyphPicker = Symbol.for("CanvasGlyphPicker");
55
55
  export const CanvasGroupPicker = Symbol.for("CanvasGroupPicker");
56
56
 
57
57
  export const CanvasPickerContribution = Symbol.for("CanvasPickerContribution");
58
- //# sourceMappingURL=constants.js.map
58
+ //# sourceMappingURL=constants.js.map
@@ -13,5 +13,4 @@ function _registerPolygon() {
13
13
 
14
14
  _registerPolygon.__loaded = !1;
15
15
 
16
- export const registerPolygon = _registerPolygon;
17
- //# sourceMappingURL=register-polygon.js.map
16
+ export const registerPolygon = _registerPolygon;
@@ -11,4 +11,5 @@ function _registerPyramid3d() {
11
11
 
12
12
  _registerPyramid3d.__loaded = !1;
13
13
 
14
- export const registerPyramid3d = _registerPyramid3d;
14
+ export const registerPyramid3d = _registerPyramid3d;
15
+ //# sourceMappingURL=register-pyramid3d.js.map
@@ -1 +1,3 @@
1
+
2
+
1
3
  //# sourceMappingURL=render-module.js.map
@@ -0,0 +1,46 @@
1
+ import { BaseWindowHandlerContribution, ContainerModule } from '@visactor/vrender-core';
2
+ import type { EnvType, IGlobal, IContext2d, ICanvas, IDomRectLike, IWindowHandlerContribution, IWindowParams } from '@visactor/vrender-core';
3
+ declare class MiniAppEventManager {
4
+ addEventListener(type: string, func: EventListenerOrEventListenerObject): void;
5
+ removeEventListener(type: string, func: EventListenerOrEventListenerObject): void;
6
+ cleanEvent(): void;
7
+ cache: Record<string, {
8
+ listener: EventListenerOrEventListenerObject[];
9
+ }>;
10
+ }
11
+ export declare class TTWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {
12
+ private readonly global;
13
+ static env: EnvType;
14
+ type: EnvType;
15
+ protected eventManager: MiniAppEventManager;
16
+ canvas: ICanvas;
17
+ get container(): HTMLElement | null;
18
+ constructor(global: IGlobal);
19
+ getTitle(): string;
20
+ getWH(): {
21
+ width: number;
22
+ height: number;
23
+ };
24
+ getXY(): {
25
+ x: number;
26
+ y: number;
27
+ };
28
+ createWindow(params: IWindowParams): void;
29
+ private createWindowByConfig;
30
+ private createWindowByCanvas;
31
+ releaseWindow(): void;
32
+ resizeWindow(width: number, height: number): void;
33
+ setDpr(dpr: number): void;
34
+ getContext(): IContext2d;
35
+ getNativeHandler(): ICanvas;
36
+ getDpr(): number;
37
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
38
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
39
+ dispatchEvent(event: any): boolean;
40
+ getStyle(): CSSStyleDeclaration | Record<string, any>;
41
+ setStyle(style: CSSStyleDeclaration | Record<string, any>): void;
42
+ getBoundingClientRect(): IDomRectLike;
43
+ clearViewBox(color?: string): void;
44
+ }
45
+ export declare const ttWindowModule: ContainerModule;
46
+ export {};
@@ -0,0 +1,157 @@
1
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
2
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
3
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
4
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
5
+ }, __metadata = this && this.__metadata || function(k, v) {
6
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
7
+ }, __param = this && this.__param || function(paramIndex, decorator) {
8
+ return function(target, key) {
9
+ decorator(target, key, paramIndex);
10
+ };
11
+ };
12
+
13
+ import { inject, injectable, Generator, BaseWindowHandlerContribution, VGlobal, ContainerModule, WindowHandlerContribution } from "@visactor/vrender-core";
14
+
15
+ import { TTCanvas } from "../../canvas/contributions/tt";
16
+
17
+ class MiniAppEventManager {
18
+ constructor() {
19
+ this.cache = {};
20
+ }
21
+ addEventListener(type, func) {
22
+ type && func && (this.cache[type] = this.cache[type] || {
23
+ listener: []
24
+ }, this.cache[type].listener.push(func));
25
+ }
26
+ removeEventListener(type, func) {
27
+ if (!type || !func) return;
28
+ if (!this.cache[type]) return;
29
+ const index = this.cache[type].listener.findIndex((f => f === func));
30
+ index >= 0 && this.cache[type].listener.splice(index, 1);
31
+ }
32
+ cleanEvent() {
33
+ this.cache = {};
34
+ }
35
+ }
36
+
37
+ let TTWindowHandlerContribution = class extends BaseWindowHandlerContribution {
38
+ get container() {
39
+ return null;
40
+ }
41
+ constructor(global) {
42
+ super(), this.global = global, this.type = "tt", this.eventManager = new MiniAppEventManager;
43
+ }
44
+ getTitle() {
45
+ return this.canvas.id.toString();
46
+ }
47
+ getWH() {
48
+ return {
49
+ width: this.canvas.width / (this.canvas.dpr || 1),
50
+ height: this.canvas.height / (this.canvas.dpr || 1)
51
+ };
52
+ }
53
+ getXY() {
54
+ return {
55
+ x: 0,
56
+ y: 0
57
+ };
58
+ }
59
+ createWindow(params) {
60
+ params.canvas ? this.createWindowByCanvas(params) : this.createWindowByConfig(params);
61
+ }
62
+ createWindowByConfig(params) {
63
+ const nativeCanvas = this.global.createCanvas({
64
+ width: params.width,
65
+ height: params.height
66
+ }), options = {
67
+ width: params.width,
68
+ height: params.height,
69
+ dpr: params.dpr,
70
+ nativeCanvas: nativeCanvas,
71
+ id: Generator.GenAutoIncrementId().toString(),
72
+ canvasControled: !1
73
+ };
74
+ this.canvas = new TTCanvas(options);
75
+ }
76
+ createWindowByCanvas(params) {
77
+ let canvas;
78
+ if ("string" == typeof params.canvas) {
79
+ if (canvas = this.global.getElementById(params.canvas), !canvas) throw new Error("canvasId 参数不正确,请确认canvas存在并插入dom");
80
+ } else canvas = params.canvas;
81
+ let width = params.width, height = params.height;
82
+ if (null == width || null == height || !params.canvasControled) {
83
+ const data = canvas.getBoundingClientRect();
84
+ width = data.width, height = data.height;
85
+ }
86
+ let dpr = params.dpr;
87
+ null == dpr && (dpr = canvas.width / width), this.canvas = new TTCanvas({
88
+ width: width,
89
+ height: height,
90
+ dpr: dpr,
91
+ nativeCanvas: canvas,
92
+ canvasControled: params.canvasControled
93
+ });
94
+ }
95
+ releaseWindow() {}
96
+ resizeWindow(width, height) {}
97
+ setDpr(dpr) {
98
+ this.canvas.dpr = dpr;
99
+ }
100
+ getContext() {
101
+ return this.canvas.getContext();
102
+ }
103
+ getNativeHandler() {
104
+ return this.canvas;
105
+ }
106
+ getDpr() {
107
+ return this.canvas.dpr;
108
+ }
109
+ addEventListener(type, listener) {
110
+ this.eventManager.addEventListener(type, listener);
111
+ }
112
+ removeEventListener(type, listener) {
113
+ this.eventManager.removeEventListener(type, listener);
114
+ }
115
+ dispatchEvent(event) {
116
+ const {type: type} = event;
117
+ return !!this.eventManager.cache[type] && (event.changedTouches && event.changedTouches[0] && (event.offsetX = event.changedTouches[0].x,
118
+ event.changedTouches[0].offsetX = event.changedTouches[0].x, event.changedTouches[0].clientX = event.changedTouches[0].x,
119
+ event.offsetY = event.changedTouches[0].y, event.changedTouches[0].offsetY = event.changedTouches[0].y,
120
+ event.changedTouches[0].clientY = event.changedTouches[0].y), event.preventDefault = () => {},
121
+ event.stopPropagation = () => {}, this.eventManager.cache[type].listener && this.eventManager.cache[type].listener.forEach((f => {
122
+ f(event);
123
+ })), !0);
124
+ }
125
+ getStyle() {
126
+ return {};
127
+ }
128
+ setStyle(style) {}
129
+ getBoundingClientRect() {
130
+ const wh = this.getWH();
131
+ return {
132
+ x: 0,
133
+ y: 0,
134
+ width: wh.width,
135
+ height: wh.height,
136
+ left: 0,
137
+ top: 0,
138
+ right: 0,
139
+ bottom: 0
140
+ };
141
+ }
142
+ clearViewBox(color) {
143
+ const vb = this.viewBox, context = this.getContext(), dpr = this.getDpr();
144
+ context.nativeContext.save(), context.nativeContext.setTransform(dpr, 0, 0, dpr, 0, 0),
145
+ context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1), color && (context.fillStyle = color,
146
+ context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1)), context.nativeContext.restore();
147
+ }
148
+ };
149
+
150
+ TTWindowHandlerContribution.env = "tt", TTWindowHandlerContribution = __decorate([ injectable(), __param(0, inject(VGlobal)), __metadata("design:paramtypes", [ Object ]) ], TTWindowHandlerContribution);
151
+
152
+ export { TTWindowHandlerContribution };
153
+
154
+ export const ttWindowModule = new ContainerModule((bind => {
155
+ bind(TTWindowHandlerContribution).toSelf(), bind(WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(TTWindowHandlerContribution))).whenTargetNamed(TTWindowHandlerContribution.env);
156
+ }));
157
+ //# sourceMappingURL=tt-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/window/contributions/tt-contribution.ts"],"names":[],"mappings":"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","file":"tt-contribution.js","sourcesContent":["import {\n inject,\n injectable,\n Generator,\n BaseWindowHandlerContribution,\n VGlobal,\n ContainerModule,\n WindowHandlerContribution\n} from '@visactor/vrender-core';\nimport type {\n EnvType,\n IGlobal,\n IContext2d,\n ICanvas,\n IDomRectLike,\n IWindowHandlerContribution,\n IWindowParams\n} from '@visactor/vrender-core';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { TTCanvas } from '../../canvas/contributions/tt';\n\nclass MiniAppEventManager {\n addEventListener(type: string, func: EventListenerOrEventListenerObject) {\n if (!type || !func) {\n return;\n }\n this.cache[type] = this.cache[type] || {\n listener: []\n };\n this.cache[type].listener.push(func);\n }\n removeEventListener(type: string, func: EventListenerOrEventListenerObject) {\n if (!type || !func) {\n return;\n }\n if (!this.cache[type]) {\n return;\n }\n const index = this.cache[type].listener.findIndex((f: EventListenerOrEventListenerObject) => f === func);\n if (index >= 0) {\n this.cache[type].listener.splice(index, 1);\n }\n }\n cleanEvent() {\n this.cache = {};\n }\n cache: Record<string, { listener: EventListenerOrEventListenerObject[] }> = {};\n}\n\n@injectable()\nexport class TTWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {\n static env: EnvType = 'tt';\n type: EnvType = 'tt';\n\n protected eventManager = new MiniAppEventManager();\n\n canvas: ICanvas;\n get container(): HTMLElement | null {\n return null;\n }\n\n constructor(@inject(VGlobal) private readonly global: IGlobal) {\n super();\n }\n\n getTitle(): string {\n return 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 { x: 0, y: 0 };\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 private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n id: Generator.GenAutoIncrementId().toString(),\n canvasControled: false\n };\n this.canvas = new TTCanvas(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) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\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 (dpr == null) {\n dpr = canvas.width / width;\n }\n this.canvas = new TTCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled\n });\n }\n releaseWindow(): void {\n return;\n }\n resizeWindow(width: number, height: number): void {\n return;\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(type: string, listener: EventListenerOrEventListenerObject): void {\n this.eventManager.addEventListener(type, listener);\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(type: string, listener: EventListenerOrEventListenerObject): void {\n this.eventManager.removeEventListener(type, listener);\n }\n dispatchEvent(event: any): boolean {\n const { type } = event;\n if (!this.eventManager.cache[type]) {\n return false;\n }\n\n // hack for offsetX offsetY\n if (event.changedTouches && event.changedTouches[0]) {\n event.offsetX = event.changedTouches[0].x;\n event.changedTouches[0].offsetX = event.changedTouches[0].x;\n event.changedTouches[0].clientX = event.changedTouches[0].x;\n event.offsetY = event.changedTouches[0].y;\n event.changedTouches[0].offsetY = event.changedTouches[0].y;\n event.changedTouches[0].clientY = event.changedTouches[0].y;\n }\n event.preventDefault = () => {\n return;\n };\n event.stopPropagation = () => {\n return;\n };\n if (this.eventManager.cache[type].listener) {\n this.eventManager.cache[type].listener.forEach((f: EventListener) => {\n f(event);\n });\n }\n return true;\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return {};\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n return;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const wh = this.getWH();\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\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\nexport const ttWindowModule = new ContainerModule(bind => {\n // tt\n bind(TTWindowHandlerContribution).toSelf();\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(TTWindowHandlerContribution))\n .whenTargetNamed(TTWindowHandlerContribution.env);\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-kits",
3
- "version": "0.18.11-alpha.3",
3
+ "version": "0.18.11-alpha.4",
4
4
  "description": "",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index.js",
@@ -12,7 +12,7 @@
12
12
  "dist"
13
13
  ],
14
14
  "dependencies": {
15
- "@visactor/vrender-core": "0.18.11-alpha.3",
15
+ "@visactor/vrender-core": "0.18.11-alpha.4",
16
16
  "@visactor/vutils": "~0.18.1",
17
17
  "@resvg/resvg-js": "2.4.1",
18
18
  "roughjs": "4.5.2"