@visactor/vrender-core 0.22.8 → 0.22.9-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/common/event-listener-manager.d.ts +14 -0
- package/cjs/common/event-listener-manager.js +52 -0
- package/cjs/common/event-listener-manager.js.map +1 -0
- package/cjs/common/event-transformer.d.ts +12 -0
- package/cjs/common/event-transformer.js +91 -0
- package/cjs/common/event-transformer.js.map +1 -0
- package/cjs/common/polygon.js +0 -1
- package/cjs/common/render-area.js +1 -0
- package/cjs/common/sort.js +1 -1
- package/cjs/common/split-path.js +1 -1
- package/cjs/core/global.d.ts +7 -5
- package/cjs/core/global.js +13 -13
- package/cjs/core/global.js.map +1 -1
- package/cjs/core/window.d.ts +5 -4
- package/cjs/core/window.js +14 -13
- package/cjs/core/window.js.map +1 -1
- package/cjs/event/event-system.js +11 -10
- package/cjs/event/event-system.js.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +2 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface/event-listener-manager.d.ts +7 -0
- package/cjs/interface/event-listener-manager.js +6 -0
- package/cjs/interface/event-listener-manager.js.map +1 -0
- package/cjs/interface/global.d.ts +2 -1
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/window.d.ts +1 -0
- package/cjs/interface/window.js.map +1 -1
- package/dist/index.es.js +215 -58
- package/es/common/event-listener-manager.d.ts +14 -0
- package/es/common/event-listener-manager.js +44 -0
- package/es/common/event-listener-manager.js.map +1 -0
- package/es/common/event-transformer.d.ts +12 -0
- package/es/common/event-transformer.js +81 -0
- package/es/common/event-transformer.js.map +1 -0
- package/es/common/polygon.js +1 -2
- package/es/common/render-area.js +2 -1
- package/es/common/sort.js +1 -1
- package/es/common/split-path.js +1 -1
- package/es/core/global.d.ts +7 -5
- package/es/core/global.js +14 -12
- package/es/core/global.js.map +1 -1
- package/es/core/window.d.ts +5 -4
- package/es/core/window.js +15 -12
- package/es/core/window.js.map +1 -1
- package/es/event/event-system.js +11 -10
- package/es/event/event-system.js.map +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -0
- package/es/index.js.map +1 -1
- package/es/interface/event-listener-manager.d.ts +7 -0
- package/es/interface/event-listener-manager.js +2 -0
- package/es/interface/event-listener-manager.js.map +1 -0
- package/es/interface/global.d.ts +2 -1
- package/es/interface/global.js.map +1 -1
- package/es/interface/window.d.ts +1 -0
- package/es/interface/window.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { isNumber } from "../canvas/util";
|
|
2
|
+
|
|
3
|
+
function isIdentityMatrix(matrix) {
|
|
4
|
+
return 1 === matrix.a && 0 === matrix.b && 0 === matrix.c && 1 === matrix.d && 0 === matrix.e && 0 === matrix.f;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function createEventTransformer(containerElement, getMatrix, getRect, transformPoint) {
|
|
8
|
+
return event => {
|
|
9
|
+
if (!(event instanceof MouseEvent || event instanceof TouchEvent || event instanceof PointerEvent)) return event;
|
|
10
|
+
const transformMatrix = getMatrix();
|
|
11
|
+
if (isIdentityMatrix(transformMatrix)) return event;
|
|
12
|
+
const containerRect = getRect(), transformedEvent = new event.constructor(event.type, event);
|
|
13
|
+
if (Object.defineProperties(transformedEvent, {
|
|
14
|
+
target: {
|
|
15
|
+
value: event.target
|
|
16
|
+
},
|
|
17
|
+
currentTarget: {
|
|
18
|
+
value: event.currentTarget
|
|
19
|
+
}
|
|
20
|
+
}), event instanceof MouseEvent || event instanceof PointerEvent) transformPoint(event.clientX, event.clientY, transformMatrix, containerRect, transformedEvent); else if (event instanceof TouchEvent) {
|
|
21
|
+
if (event.touches.length > 0) {
|
|
22
|
+
const touch = transformedEvent.touches[0];
|
|
23
|
+
transformPoint(touch.clientX, touch.clientY, transformMatrix, containerRect, touch);
|
|
24
|
+
}
|
|
25
|
+
if (event.changedTouches.length > 0) {
|
|
26
|
+
const touch = transformedEvent.changedTouches[0];
|
|
27
|
+
transformPoint(touch.clientX, touch.clientY, transformMatrix, containerRect, touch);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return transformedEvent;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function createCanvasEventTransformer(canvasElement, getMatrix, getRect, transformPoint) {
|
|
35
|
+
return createEventTransformer(canvasElement.parentElement || canvasElement, getMatrix, getRect, transformPoint);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function registerWindowEventTransformer(window, container, getMatrix, getRect, transformPoint) {
|
|
39
|
+
const transformer = createEventTransformer(container, getMatrix, getRect, transformPoint);
|
|
40
|
+
window.setEventListenerTransformer(transformer);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function registerGlobalEventTransformer(global, container, getMatrix, getRect, transformPoint) {
|
|
44
|
+
const transformer = createEventTransformer(container, getMatrix, getRect, transformPoint);
|
|
45
|
+
global.setEventListenerTransformer(transformer);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function transformPointForCanvas(clientX, clientY, matrix, rect, transformedEvent) {
|
|
49
|
+
const transformedPoint = {
|
|
50
|
+
x: clientX,
|
|
51
|
+
y: clientY
|
|
52
|
+
};
|
|
53
|
+
matrix.transformPoint(transformedPoint, transformedPoint), Object.defineProperties(transformedEvent, {
|
|
54
|
+
_canvasX: {
|
|
55
|
+
value: transformedPoint.x
|
|
56
|
+
},
|
|
57
|
+
_canvasY: {
|
|
58
|
+
value: transformedPoint.y
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function mapToCanvasPointForCanvas(nativeEvent) {
|
|
64
|
+
var _a;
|
|
65
|
+
if (isNumber(nativeEvent._canvasX) && isNumber(nativeEvent._canvasY)) return {
|
|
66
|
+
x: nativeEvent._canvasX,
|
|
67
|
+
y: nativeEvent._canvasY
|
|
68
|
+
};
|
|
69
|
+
if (nativeEvent.changedTouches) {
|
|
70
|
+
const data = null !== (_a = nativeEvent.changedTouches[0]) && void 0 !== _a ? _a : {};
|
|
71
|
+
return {
|
|
72
|
+
x: data._canvasX,
|
|
73
|
+
y: data._canvasY
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
x: nativeEvent._canvasX || 0,
|
|
78
|
+
y: nativeEvent._canvasY || 0
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=event-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/event-transformer.ts"],"names":[],"mappings":"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","file":"event-transformer.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport type { Matrix } from '@visactor/vutils';\nimport type { IGlobal, IWindow } from '../interface';\nimport { isNumber } from '../canvas/util';\n\nfunction isIdentityMatrix(matrix: Matrix): boolean {\n return matrix.a === 1 && matrix.b === 0 && matrix.c === 0 && matrix.d === 1 && matrix.e === 0 && matrix.f === 0;\n}\n\n/**\n * Create an event transformer that corrects event coordinates based on container transformations\n * @param containerElement The container element\n * @param matrix The transformation matrix to apply\n * @param rect Optional DOMRect of the container, if not provided will use getBoundingClientRect\n * @returns A function that transforms events to correct coordinates\n */\nexport function createEventTransformer(\n containerElement: HTMLElement,\n getMatrix: () => Matrix,\n getRect: () => IAABBBounds,\n transformPoint: (clientX: number, clientY: number, matrix: Matrix, rect: IAABBBounds, transformedEvent: Event) => void\n): (event: Event) => Event {\n return (event: Event): Event => {\n // Only transform mouse and touch events that have coordinates\n if (!(event instanceof MouseEvent) && !(event instanceof TouchEvent) && !(event instanceof PointerEvent)) {\n return event;\n }\n\n // Use provided matrix\n const transformMatrix = getMatrix();\n\n // If there's no transformation, return the original event\n if (isIdentityMatrix(transformMatrix)) {\n return event;\n }\n\n // Get the container's bounding rect for coordinate conversion\n const containerRect = getRect();\n\n // Create a copy of the event to modify\n const transformedEvent = new (event.constructor as any)(event.type, event);\n Object.defineProperties(transformedEvent, {\n target: { value: event.target },\n currentTarget: { value: event.currentTarget }\n });\n\n if (event instanceof MouseEvent || event instanceof PointerEvent) {\n transformPoint(event.clientX, event.clientY, transformMatrix, containerRect, transformedEvent);\n } else if (event instanceof TouchEvent) {\n // For touch events, we need to transform each touch point\n // This is a simplified version that assumes we're only using the first touch\n if (event.touches.length > 0) {\n const touch = transformedEvent.touches[0];\n transformPoint(touch.clientX, touch.clientY, transformMatrix, containerRect, touch);\n }\n if (event.changedTouches.length > 0) {\n const touch = transformedEvent.changedTouches[0];\n transformPoint(touch.clientX, touch.clientY, transformMatrix, containerRect, touch);\n }\n }\n\n return transformedEvent;\n };\n}\n\n/**\n * Create an event transformer for the given canvas element\n * @param canvasElement The canvas element\n * @param getMatrix The transformation matrix to apply\n * @param getRect Optional DOMRect of the container\n * @returns A function that transforms events to correct coordinates\n */\nexport function createCanvasEventTransformer(\n canvasElement: HTMLCanvasElement,\n getMatrix: () => Matrix,\n getRect: () => IAABBBounds,\n transformPoint: (clientX: number, clientY: number, matrix: Matrix, rect: IAABBBounds, transformedEvent: Event) => void\n): (event: Event) => Event {\n return createEventTransformer(canvasElement.parentElement || canvasElement, getMatrix, getRect, transformPoint);\n}\n\n/**\n * Register the event transformer with a DefaultWindow instance\n * @param window The window instance\n * @param container The container element\n * @param getMatrix The transformation matrix to apply\n * @param getRect Optional DOMRect of the container\n */\nexport function registerWindowEventTransformer(\n window: IWindow,\n container: HTMLElement,\n getMatrix: () => Matrix,\n getRect: () => IAABBBounds,\n transformPoint: (clientX: number, clientY: number, matrix: Matrix, rect: IAABBBounds, transformedEvent: Event) => void\n): void {\n const transformer = createEventTransformer(container, getMatrix, getRect, transformPoint);\n window.setEventListenerTransformer(transformer);\n}\n\n/**\n * Register the event transformer with a DefaultGlobal instance\n * @param global The global instance\n * @param container The container element\n * @param getMatrix The transformation matrix to apply\n * @param getRect Optional DOMRect of the container\n */\nexport function registerGlobalEventTransformer(\n global: IGlobal,\n container: HTMLElement,\n getMatrix: () => Matrix,\n getRect: () => IAABBBounds,\n transformPoint: (clientX: number, clientY: number, matrix: Matrix, rect: IAABBBounds, transformedEvent: Event) => void\n): void {\n const transformer = createEventTransformer(container, getMatrix, getRect, transformPoint);\n global.setEventListenerTransformer(transformer);\n}\n\nexport function transformPointForCanvas(\n clientX: number,\n clientY: number,\n matrix: Matrix,\n rect: IAABBBounds,\n transformedEvent: Event\n) {\n // Apply the inverse transformation\n const transformedPoint = { x: clientX, y: clientY };\n\n matrix.transformPoint(transformedPoint, transformedPoint);\n\n // Update the event properties\n Object.defineProperties(transformedEvent, {\n _canvasX: { value: transformedPoint.x },\n _canvasY: { value: transformedPoint.y }\n });\n return;\n}\n\nexport function mapToCanvasPointForCanvas(nativeEvent: any) {\n if (isNumber(nativeEvent._canvasX) && isNumber(nativeEvent._canvasY)) {\n return {\n x: nativeEvent._canvasX,\n y: nativeEvent._canvasY\n };\n } else if ((nativeEvent as TouchEvent).changedTouches) {\n const data = (nativeEvent as TouchEvent).changedTouches[0] ?? ({} as any);\n return {\n x: data._canvasX,\n y: data._canvasY\n };\n }\n const x = (nativeEvent as any)._canvasX || 0;\n const y = (nativeEvent as any)._canvasY || 0;\n return {\n x,\n y\n };\n}\n"]}
|
package/es/common/polygon.js
CHANGED
package/es/common/render-area.js
CHANGED
package/es/common/sort.js
CHANGED
package/es/common/split-path.js
CHANGED
package/es/core/global.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CreateDOMParamsType, EnvType, IContributionProvider, ICreateCanvasParams, IEnvContribution, IEnvParamsMap, IGlobal, ISyncHook } from '../interface';
|
|
2
2
|
import type { IAABBBoundsLike } from '@visactor/vutils';
|
|
3
|
-
|
|
3
|
+
import { EventListenerManager } from '../common/event-listener-manager';
|
|
4
|
+
export declare class DefaultGlobal extends EventListenerManager implements IGlobal {
|
|
4
5
|
protected readonly contributions: IContributionProvider<IEnvContribution>;
|
|
5
6
|
readonly id: number;
|
|
6
7
|
private _env;
|
|
@@ -28,7 +29,11 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
28
29
|
hooks: {
|
|
29
30
|
onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;
|
|
30
31
|
};
|
|
32
|
+
eventListenerTransformer: (event: Event) => Event;
|
|
31
33
|
constructor(contributions: IContributionProvider<IEnvContribution>);
|
|
34
|
+
protected _nativeAddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
35
|
+
protected _nativeRemoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
36
|
+
protected _nativeDispatchEvent(event: Event): boolean;
|
|
32
37
|
protected bindContribution(params?: any): void | Promise<any>;
|
|
33
38
|
getDynamicCanvasCount(): number;
|
|
34
39
|
getStaticCanvasCount(): number;
|
|
@@ -39,9 +44,6 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
39
44
|
createCanvas(params: ICreateCanvasParams): any;
|
|
40
45
|
createOffscreenCanvas(params: ICreateCanvasParams): any;
|
|
41
46
|
releaseCanvas(canvas: HTMLCanvasElement | string | any): void;
|
|
42
|
-
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
43
|
-
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
44
|
-
dispatchEvent(event: any): boolean;
|
|
45
47
|
getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
|
|
46
48
|
getCancelAnimationFrame(): (h: number) => void;
|
|
47
49
|
getElementById(str: string): HTMLElement | null;
|
|
@@ -68,7 +70,7 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
68
70
|
loadState: "success" | "fail";
|
|
69
71
|
data: Blob;
|
|
70
72
|
}>;
|
|
71
|
-
loadFont(name: string, source: string |
|
|
73
|
+
loadFont(name: string, source: string | ArrayBuffer, descriptors?: FontFaceDescriptors): Promise<{
|
|
72
74
|
loadState: "success" | "fail";
|
|
73
75
|
}>;
|
|
74
76
|
isChrome(): boolean;
|
package/es/core/global.js
CHANGED
|
@@ -44,9 +44,11 @@ import { EnvContribution } from "../constants";
|
|
|
44
44
|
|
|
45
45
|
import { Generator } from "../common/generator";
|
|
46
46
|
|
|
47
|
+
import { EventListenerManager } from "../common/event-listener-manager";
|
|
48
|
+
|
|
47
49
|
const defaultEnv = "browser";
|
|
48
50
|
|
|
49
|
-
let DefaultGlobal = class {
|
|
51
|
+
let DefaultGlobal = class extends EventListenerManager {
|
|
50
52
|
get env() {
|
|
51
53
|
return this._env;
|
|
52
54
|
}
|
|
@@ -90,11 +92,20 @@ let DefaultGlobal = class {
|
|
|
90
92
|
this._env || this.setEnv("browser"), this.envContribution.applyStyles = support;
|
|
91
93
|
}
|
|
92
94
|
constructor(contributions) {
|
|
93
|
-
this.contributions = contributions, this._isImageAnonymous = !0, this.
|
|
94
|
-
this.hooks = {
|
|
95
|
+
super(), this.contributions = contributions, this._isImageAnonymous = !0, this.eventListenerTransformer = event => event,
|
|
96
|
+
this.id = Generator.GenAutoIncrementId(), this.hooks = {
|
|
95
97
|
onSetEnv: new SyncHook([ "lastEnv", "env", "global" ])
|
|
96
98
|
}, this.measureTextMethod = "native", this.optimizeVisible = !1;
|
|
97
99
|
}
|
|
100
|
+
_nativeAddEventListener(type, listener, options) {
|
|
101
|
+
return this._env || this.setEnv("browser"), this.envContribution.addEventListener(type, listener, options);
|
|
102
|
+
}
|
|
103
|
+
_nativeRemoveEventListener(type, listener, options) {
|
|
104
|
+
return this._env || this.setEnv("browser"), this.envContribution.removeEventListener(type, listener, options);
|
|
105
|
+
}
|
|
106
|
+
_nativeDispatchEvent(event) {
|
|
107
|
+
return this._env || this.setEnv("browser"), this.envContribution.dispatchEvent(event);
|
|
108
|
+
}
|
|
98
109
|
bindContribution(params) {
|
|
99
110
|
const promiseArr = [];
|
|
100
111
|
if (this.contributions.getContributions().forEach((contribution => {
|
|
@@ -136,15 +147,6 @@ let DefaultGlobal = class {
|
|
|
136
147
|
releaseCanvas(canvas) {
|
|
137
148
|
return this._env || this.setEnv("browser"), this.envContribution.releaseCanvas(canvas);
|
|
138
149
|
}
|
|
139
|
-
addEventListener(type, listener, options) {
|
|
140
|
-
return this._env || this.setEnv("browser"), this.envContribution.addEventListener(type, listener, options);
|
|
141
|
-
}
|
|
142
|
-
removeEventListener(type, listener, options) {
|
|
143
|
-
return this._env || this.setEnv("browser"), this.envContribution.removeEventListener(type, listener, options);
|
|
144
|
-
}
|
|
145
|
-
dispatchEvent(event) {
|
|
146
|
-
return this._env || this.setEnv("browser"), this.envContribution.dispatchEvent(event);
|
|
147
|
-
}
|
|
148
150
|
getRequestAnimationFrame() {
|
|
149
151
|
return this._env || this.setEnv("browser"), this.envContribution.getRequestAnimationFrame();
|
|
150
152
|
}
|
package/es/core/global.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from '../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\nimport { container } from '../container';\nimport { Generator } from '../common/generator';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n readonly id: number;\n private _env: EnvType;\n private _isSafari?: boolean;\n private _isChrome?: boolean;\n private _isImageAnonymous?: boolean = true;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get isImageAnonymous(): boolean {\n return this._isImageAnonymous;\n }\n\n set isImageAnonymous(isImageAnonymous: boolean) {\n this._isImageAnonymous = isImageAnonymous;\n }\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n set supportEvent(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportEvent = support;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n set supportsTouchEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsTouchEvents = support;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n set supportsPointerEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsPointerEvents = support;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n set supportsMouseEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsMouseEvents = support;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n set applyStyles(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.applyStyles = support;\n }\n\n // 是否在不显示canvas的时候停止绘图操作,默认false\n optimizeVisible: boolean;\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.id = Generator.GenAutoIncrementId();\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n this.optimizeVisible = false;\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\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 if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.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 if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n async loadFont(name: string, source: string | BinaryData, descriptors?: FontFaceDescriptors) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadFont(name, source, descriptors);\n }\n\n isChrome(): boolean {\n if (this._isChrome != null) {\n return this._isChrome;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isChrome = this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n return this._isChrome;\n }\n\n isSafari(): boolean {\n if (this._isSafari != null) {\n return this._isSafari;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isSafari =\n this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n return this._isSafari;\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.updateDom(dom, params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n\n isMacOS(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.isMacOS();\n }\n\n copyToClipBoard(text: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.copyToClipBoard(text);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from '../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\nimport { container } from '../container';\nimport { Generator } from '../common/generator';\nimport { EventListenerManager } from '../common/event-listener-manager';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal extends EventListenerManager implements IGlobal {\n readonly id: number;\n private _env: EnvType;\n private _isSafari?: boolean;\n private _isChrome?: boolean;\n private _isImageAnonymous?: boolean = true;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get isImageAnonymous(): boolean {\n return this._isImageAnonymous;\n }\n\n set isImageAnonymous(isImageAnonymous: boolean) {\n this._isImageAnonymous = isImageAnonymous;\n }\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n set supportEvent(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportEvent = support;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n set supportsTouchEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsTouchEvents = support;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n set supportsPointerEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsPointerEvents = support;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n set supportsMouseEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsMouseEvents = support;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n set applyStyles(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.applyStyles = support;\n }\n\n // 是否在不显示canvas的时候停止绘图操作,默认false\n optimizeVisible: boolean;\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n // 事件监听器转换器,用于进行Event属性的转换,接收一个原生的Event,返回一个修改后的Event(默认不进行转换直接返回原始Event)\n // 注意返回的Event和原始的Event不是同一个对象,但也不能拷贝,返回的Event和原始Event是同一个Event类的实例(比如MouseEvent、FederatedPointerEvent等,不能直接拷贝或者用CustomEvent)\n eventListenerTransformer: (event: Event) => Event = event => event;\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n super();\n this.id = Generator.GenAutoIncrementId();\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n this.optimizeVisible = false;\n }\n\n // Override from EventListenerManager\n protected _nativeAddEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n\n // Override from EventListenerManager\n protected _nativeRemoveEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n\n // Override from EventListenerManager\n protected _nativeDispatchEvent(event: Event): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n async loadFont(name: string, source: string | ArrayBuffer, descriptors?: FontFaceDescriptors) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadFont(name, source, descriptors);\n }\n\n isChrome(): boolean {\n if (this._isChrome != null) {\n return this._isChrome;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isChrome = this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n return this._isChrome;\n }\n\n isSafari(): boolean {\n if (this._isSafari != null) {\n return this._isSafari;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isSafari =\n this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n return this._isSafari;\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.updateDom(dom, params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n\n isMacOS(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.isMacOS();\n }\n\n copyToClipBoard(text: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.copyToClipBoard(text);\n }\n}\n"]}
|
package/es/core/window.d.ts
CHANGED
|
@@ -2,9 +2,10 @@ import type { IPointLike } from '@visactor/vutils';
|
|
|
2
2
|
import { type IBoundsLike, type IMatrix, IBounds } from '@visactor/vutils';
|
|
3
3
|
import type { ICanvas, IContext2d, IDomRectLike, IGlobal, IWindow, IWindowHandlerContribution, IWindowParams } from '../interface';
|
|
4
4
|
import { SyncHook } from '../tapable';
|
|
5
|
+
import { EventListenerManager } from '../common/event-listener-manager';
|
|
5
6
|
export declare const VWindow: unique symbol;
|
|
6
7
|
export declare const WindowHandlerContribution: unique symbol;
|
|
7
|
-
export declare class DefaultWindow implements IWindow {
|
|
8
|
+
export declare class DefaultWindow extends EventListenerManager implements IWindow {
|
|
8
9
|
protected _width: number;
|
|
9
10
|
protected _height: number;
|
|
10
11
|
protected _handler: IWindowHandlerContribution;
|
|
@@ -27,6 +28,9 @@ export declare class DefaultWindow implements IWindow {
|
|
|
27
28
|
global: IGlobal;
|
|
28
29
|
get dpr(): number;
|
|
29
30
|
constructor();
|
|
31
|
+
protected _nativeAddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
32
|
+
protected _nativeRemoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
33
|
+
protected _nativeDispatchEvent(event: Event): boolean;
|
|
30
34
|
protected postInit(): void;
|
|
31
35
|
protected active: () => void;
|
|
32
36
|
get style(): CSSStyleDeclaration | Record<string, any>;
|
|
@@ -40,9 +44,6 @@ export declare class DefaultWindow implements IWindow {
|
|
|
40
44
|
getContext(): IContext2d;
|
|
41
45
|
getNativeHandler(): ICanvas;
|
|
42
46
|
getImageBuffer(type?: string): any;
|
|
43
|
-
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
44
|
-
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
45
|
-
dispatchEvent(event: any): boolean;
|
|
46
47
|
getBoundingClientRect(): IDomRectLike;
|
|
47
48
|
getContainer(): HTMLElement | any;
|
|
48
49
|
clearViewBox(color?: string): void;
|
package/es/core/window.js
CHANGED
|
@@ -18,11 +18,13 @@ import { SyncHook } from "../tapable";
|
|
|
18
18
|
|
|
19
19
|
import { application } from "../application";
|
|
20
20
|
|
|
21
|
+
import { EventListenerManager } from "../common/event-listener-manager";
|
|
22
|
+
|
|
21
23
|
export const VWindow = Symbol.for("VWindow");
|
|
22
24
|
|
|
23
25
|
export const WindowHandlerContribution = Symbol.for("WindowHandlerContribution");
|
|
24
26
|
|
|
25
|
-
let DefaultWindow = class {
|
|
27
|
+
let DefaultWindow = class extends EventListenerManager {
|
|
26
28
|
get width() {
|
|
27
29
|
if (this._handler) {
|
|
28
30
|
const wh = this._handler.getWH();
|
|
@@ -41,7 +43,7 @@ let DefaultWindow = class {
|
|
|
41
43
|
return this._handler.getDpr();
|
|
42
44
|
}
|
|
43
45
|
constructor() {
|
|
44
|
-
this.hooks = {
|
|
46
|
+
super(), this.hooks = {
|
|
45
47
|
onChange: new SyncHook([ "x", "y", "width", "height" ])
|
|
46
48
|
}, this.active = () => {
|
|
47
49
|
const global = this.global;
|
|
@@ -51,6 +53,15 @@ let DefaultWindow = class {
|
|
|
51
53
|
}, this._uid = Generator.GenAutoIncrementId(), this.global = application.global,
|
|
52
54
|
this.postInit();
|
|
53
55
|
}
|
|
56
|
+
_nativeAddEventListener(type, listener, options) {
|
|
57
|
+
return this._handler.addEventListener(type, listener, options);
|
|
58
|
+
}
|
|
59
|
+
_nativeRemoveEventListener(type, listener, options) {
|
|
60
|
+
return this._handler.removeEventListener(type, listener, options);
|
|
61
|
+
}
|
|
62
|
+
_nativeDispatchEvent(event) {
|
|
63
|
+
return this._handler.dispatchEvent(event);
|
|
64
|
+
}
|
|
54
65
|
postInit() {
|
|
55
66
|
this.global.hooks.onSetEnv.tap("window", this.active), this.active();
|
|
56
67
|
}
|
|
@@ -90,7 +101,8 @@ let DefaultWindow = class {
|
|
|
90
101
|
throw new Error("暂不支持");
|
|
91
102
|
}
|
|
92
103
|
release() {
|
|
93
|
-
return this.global.hooks.onSetEnv.unTap("window", this.active), this.
|
|
104
|
+
return this.global.hooks.onSetEnv.unTap("window", this.active), this.clearAllEventListeners(),
|
|
105
|
+
this._handler.releaseWindow();
|
|
94
106
|
}
|
|
95
107
|
getContext() {
|
|
96
108
|
return this._handler.getContext();
|
|
@@ -101,15 +113,6 @@ let DefaultWindow = class {
|
|
|
101
113
|
getImageBuffer(type) {
|
|
102
114
|
return this._handler.getImageBuffer ? this._handler.getImageBuffer(type) : null;
|
|
103
115
|
}
|
|
104
|
-
addEventListener(type, listener, options) {
|
|
105
|
-
return this._handler.addEventListener(type, listener, options);
|
|
106
|
-
}
|
|
107
|
-
removeEventListener(type, listener, options) {
|
|
108
|
-
return this._handler.removeEventListener(type, listener, options);
|
|
109
|
-
}
|
|
110
|
-
dispatchEvent(event) {
|
|
111
|
-
return this._handler.dispatchEvent(event);
|
|
112
|
-
}
|
|
113
116
|
getBoundingClientRect() {
|
|
114
117
|
return this._handler.getBoundingClientRect();
|
|
115
118
|
}
|
package/es/core/window.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/window.ts"],"names":[],"mappings":"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","file":"window.js","sourcesContent":["import { inject, injectable } from '../common/inversify-lite';\nimport type { IPointLike } from '@visactor/vutils';\nimport { Matrix, type IBoundsLike, type IMatrix, IBounds, Point, isEqual, isNumberClose } from '@visactor/vutils';\nimport { Generator } from '../common/generator';\nimport type {\n ICanvas,\n IContext2d,\n IDomRectLike,\n IGlobal,\n IWindow,\n IWindowHandlerContribution,\n IWindowParams\n} from '../interface';\nimport { container } from '../container';\nimport { SyncHook } from '../tapable';\nimport { application } from '../application';\n\nexport const VWindow = Symbol.for('VWindow');\n\nexport const WindowHandlerContribution = Symbol.for('WindowHandlerContribution');\n\n/**\n * 窗口\n * 对于浏览器,就是管理某个Stage影响的Canvas\n * 对于原生,就是管理这个系统窗口\n */\n@injectable()\nexport class DefaultWindow implements IWindow {\n protected _width: number;\n protected _height: number;\n protected _handler: IWindowHandlerContribution;\n\n hooks = {\n onChange: new SyncHook<[number, number, number, number]>(['x', 'y', 'width', 'height'])\n };\n\n // 父窗口(容器),对于浏览器来说就是container dom\n declare parent: Window;\n // 窗口的大小\n get width(): number {\n if (this._handler) {\n const wh = this._handler.getWH();\n return (this._width = wh.width);\n }\n return this._width;\n }\n get height(): number {\n if (this._handler) {\n const wh = this._handler.getWH();\n return (this._height = wh.height);\n }\n return this._height;\n }\n // 窗口的位置\n // declare x: number;\n // declare y: number;\n declare _uid: number;\n // 窗口操作配置\n declare resizable: boolean;\n declare minHeight: number;\n declare minWidth: number;\n declare maxHeight: number;\n declare maxWidth: number;\n // 窗口配置\n declare title: string;\n\n /* 浏览器环境配置 */\n // 这是主体canvas,对于单图层来说就是绘图canvas\n // 对于多图层画布来说,就是用户传入的或者默认的一个canvas\n declare mainCanvas: ICanvas;\n declare layerCanvas: ICanvas[];\n declare actived: boolean;\n declare global: IGlobal;\n get dpr(): number {\n return this._handler.getDpr();\n }\n\n constructor() {\n this._uid = Generator.GenAutoIncrementId();\n this.global = application.global;\n this.postInit();\n }\n\n protected postInit() {\n this.global.hooks.onSetEnv.tap('window', this.active);\n this.active();\n }\n\n protected active = () => {\n const global = this.global;\n if (!global.env || this.actived) {\n return;\n }\n const handler = container.getNamed<IWindowHandlerContribution>(WindowHandlerContribution, global.env);\n handler.configure(this, global);\n // this.contributions.getContributions().forEach((handlerContribution) => {\n // handlerContribution.configure(this, this.global);\n // });\n this.actived = true;\n };\n\n get style(): CSSStyleDeclaration | Record<string, any> {\n return this._handler.getStyle() ?? {};\n }\n\n set style(style: CSSStyleDeclaration | Record<string, any>) {\n this._handler.setStyle(style);\n }\n\n create(params: IWindowParams): void {\n // 通过handler创建窗口\n this._handler.createWindow(params);\n\n // 使用window的wh\n const windowWH = this._handler.getWH();\n this._width = windowWH.width;\n this._height = windowWH.height;\n\n // 设置viewBox\n if (params.viewBox) {\n this.setViewBox(params.viewBox);\n } else {\n if (params.canvasControled !== false) {\n this.setViewBox({ x1: 0, y1: 0, x2: this._width, y2: this._height });\n } else {\n this.setViewBox({ x1: 0, y1: 0, x2: params.width ?? this._width, y2: params.height ?? this._height });\n }\n }\n\n // 使用window的xy\n // const windowXY = this._handler.getXY();\n // this.x = windowXY.x;\n // this.y = windowXY.y;\n // 使用window的title\n this.title = this._handler.getTitle();\n this.resizable = true;\n }\n\n setWindowHandler(handler: IWindowHandlerContribution) {\n this._handler = handler;\n }\n\n setDpr(dpr: number): void {\n return this._handler.setDpr(dpr);\n }\n resize(w: number, h: number): void {\n return this._handler.resizeWindow(w, h);\n }\n configure(): void {\n throw new Error('暂不支持');\n }\n release(): void {\n this.global.hooks.onSetEnv.unTap('window', this.active);\n\n return this._handler.releaseWindow();\n }\n getContext(): IContext2d {\n return this._handler.getContext();\n }\n getNativeHandler(): ICanvas {\n return this._handler.getNativeHandler();\n }\n getImageBuffer(type?: string): any {\n if (!this._handler.getImageBuffer) {\n return null;\n }\n return this._handler.getImageBuffer(type);\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._handler.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._handler.removeEventListener(type, listener, options);\n }\n\n dispatchEvent(event: any): boolean {\n return this._handler.dispatchEvent(event);\n }\n\n getBoundingClientRect(): IDomRectLike {\n return this._handler.getBoundingClientRect();\n }\n\n getContainer(): HTMLElement | any {\n return this._handler.container;\n }\n\n clearViewBox(color?: string) {\n this._handler.clearViewBox(color);\n }\n setViewBox(viewBox: IBoundsLike) {\n this._handler.setViewBox(viewBox);\n }\n setViewBoxTransform(a: number, b: number, c: number, d: number, e: number, f: number) {\n this._handler.setViewBoxTransform(a, b, c, d, e, f);\n }\n getViewBox() {\n return this._handler.getViewBox();\n }\n getViewBoxTransform() {\n return this._handler.getViewBoxTransform();\n }\n pointTransform(x: number, y: number): IPointLike {\n const vb = this._handler.getViewBox();\n const m = this._handler.getViewBoxTransform();\n const nextP = { x, y };\n m.transformPoint({ x, y }, nextP);\n nextP.x -= vb.x1;\n nextP.y -= vb.y1;\n return nextP;\n }\n\n hasSubView() {\n const viewBox = this._handler.getViewBox();\n return !(\n viewBox.x1 === 0 &&\n viewBox.y1 === 0 &&\n isNumberClose(this.width, viewBox.width()) &&\n isNumberClose(this.height, viewBox.height())\n );\n }\n\n isVisible(bbox?: IBoundsLike): boolean {\n return this._handler.isVisible(bbox);\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n return this._handler.onVisibleChange(cb);\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this._handler.getTopLeft(baseWindow);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/window.ts"],"names":[],"mappings":"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","file":"window.js","sourcesContent":["import { inject, injectable } from '../common/inversify-lite';\nimport type { IPointLike } from '@visactor/vutils';\nimport { Matrix, type IBoundsLike, type IMatrix, IBounds, Point, isEqual, isNumberClose } from '@visactor/vutils';\nimport { Generator } from '../common/generator';\nimport type {\n ICanvas,\n IContext2d,\n IDomRectLike,\n IGlobal,\n IWindow,\n IWindowHandlerContribution,\n IWindowParams\n} from '../interface';\nimport { container } from '../container';\nimport { SyncHook } from '../tapable';\nimport { application } from '../application';\nimport { EventListenerManager } from '../common/event-listener-manager';\n\nexport const VWindow = Symbol.for('VWindow');\n\nexport const WindowHandlerContribution = Symbol.for('WindowHandlerContribution');\n\n/**\n * 窗口\n * 对于浏览器,就是管理某个Stage影响的Canvas\n * 对于原生,就是管理这个系统窗口\n */\n@injectable()\nexport class DefaultWindow extends EventListenerManager implements IWindow {\n protected _width: number;\n protected _height: number;\n protected _handler: IWindowHandlerContribution;\n\n hooks = {\n onChange: new SyncHook<[number, number, number, number]>(['x', 'y', 'width', 'height'])\n };\n\n // 父窗口(容器),对于浏览器来说就是container dom\n declare parent: Window;\n // 窗口的大小\n get width(): number {\n if (this._handler) {\n const wh = this._handler.getWH();\n return (this._width = wh.width);\n }\n return this._width;\n }\n get height(): number {\n if (this._handler) {\n const wh = this._handler.getWH();\n return (this._height = wh.height);\n }\n return this._height;\n }\n // 窗口的位置\n // declare x: number;\n // declare y: number;\n declare _uid: number;\n // 窗口操作配置\n declare resizable: boolean;\n declare minHeight: number;\n declare minWidth: number;\n declare maxHeight: number;\n declare maxWidth: number;\n // 窗口配置\n declare title: string;\n\n /* 浏览器环境配置 */\n // 这是主体canvas,对于单图层来说就是绘图canvas\n // 对于多图层画布来说,就是用户传入的或者默认的一个canvas\n declare mainCanvas: ICanvas;\n declare layerCanvas: ICanvas[];\n declare actived: boolean;\n declare global: IGlobal;\n get dpr(): number {\n return this._handler.getDpr();\n }\n\n constructor() {\n super();\n this._uid = Generator.GenAutoIncrementId();\n this.global = application.global;\n this.postInit();\n }\n\n // Override from EventListenerManager\n protected _nativeAddEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return this._handler.addEventListener(type, listener, options);\n }\n\n // Override from EventListenerManager\n protected _nativeRemoveEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return this._handler.removeEventListener(type, listener, options);\n }\n\n // Override from EventListenerManager\n protected _nativeDispatchEvent(event: Event): boolean {\n return this._handler.dispatchEvent(event);\n }\n\n protected postInit() {\n this.global.hooks.onSetEnv.tap('window', this.active);\n this.active();\n }\n\n protected active = () => {\n const global = this.global;\n if (!global.env || this.actived) {\n return;\n }\n const handler = container.getNamed<IWindowHandlerContribution>(WindowHandlerContribution, global.env);\n handler.configure(this, global);\n // this.contributions.getContributions().forEach((handlerContribution) => {\n // handlerContribution.configure(this, this.global);\n // });\n this.actived = true;\n };\n\n get style(): CSSStyleDeclaration | Record<string, any> {\n return this._handler.getStyle() ?? {};\n }\n\n set style(style: CSSStyleDeclaration | Record<string, any>) {\n this._handler.setStyle(style);\n }\n\n create(params: IWindowParams): void {\n // 通过handler创建窗口\n this._handler.createWindow(params);\n\n // 使用window的wh\n const windowWH = this._handler.getWH();\n this._width = windowWH.width;\n this._height = windowWH.height;\n\n // 设置viewBox\n if (params.viewBox) {\n this.setViewBox(params.viewBox);\n } else {\n if (params.canvasControled !== false) {\n this.setViewBox({ x1: 0, y1: 0, x2: this._width, y2: this._height });\n } else {\n this.setViewBox({ x1: 0, y1: 0, x2: params.width ?? this._width, y2: params.height ?? this._height });\n }\n }\n\n // 使用window的xy\n // const windowXY = this._handler.getXY();\n // this.x = windowXY.x;\n // this.y = windowXY.y;\n // 使用window的title\n this.title = this._handler.getTitle();\n this.resizable = true;\n }\n\n setWindowHandler(handler: IWindowHandlerContribution) {\n this._handler = handler;\n }\n\n setDpr(dpr: number): void {\n return this._handler.setDpr(dpr);\n }\n resize(w: number, h: number): void {\n return this._handler.resizeWindow(w, h);\n }\n configure(): void {\n throw new Error('暂不支持');\n }\n release(): void {\n this.global.hooks.onSetEnv.unTap('window', this.active);\n // Clean up all event listeners\n this.clearAllEventListeners();\n return this._handler.releaseWindow();\n }\n getContext(): IContext2d {\n return this._handler.getContext();\n }\n getNativeHandler(): ICanvas {\n return this._handler.getNativeHandler();\n }\n getImageBuffer(type?: string): any {\n if (!this._handler.getImageBuffer) {\n return null;\n }\n return this._handler.getImageBuffer(type);\n }\n\n getBoundingClientRect(): IDomRectLike {\n return this._handler.getBoundingClientRect();\n }\n\n getContainer(): HTMLElement | any {\n return this._handler.container;\n }\n\n clearViewBox(color?: string) {\n this._handler.clearViewBox(color);\n }\n setViewBox(viewBox: IBoundsLike) {\n this._handler.setViewBox(viewBox);\n }\n setViewBoxTransform(a: number, b: number, c: number, d: number, e: number, f: number) {\n this._handler.setViewBoxTransform(a, b, c, d, e, f);\n }\n getViewBox() {\n return this._handler.getViewBox();\n }\n getViewBoxTransform() {\n return this._handler.getViewBoxTransform();\n }\n pointTransform(x: number, y: number): IPointLike {\n const vb = this._handler.getViewBox();\n const m = this._handler.getViewBoxTransform();\n const nextP = { x, y };\n m.transformPoint({ x, y }, nextP);\n nextP.x -= vb.x1;\n nextP.y -= vb.y1;\n return nextP;\n }\n\n hasSubView() {\n const viewBox = this._handler.getViewBox();\n return !(\n viewBox.x1 === 0 &&\n viewBox.y1 === 0 &&\n isNumberClose(this.width, viewBox.width()) &&\n isNumberClose(this.height, viewBox.height())\n );\n }\n\n isVisible(bbox?: IBoundsLike): boolean {\n return this._handler.isVisible(bbox);\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n return this._handler.onVisibleChange(cb);\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this._handler.getTopLeft(baseWindow);\n }\n}\n"]}
|
package/es/event/event-system.js
CHANGED
|
@@ -88,11 +88,11 @@ export class EventSystem {
|
|
|
88
88
|
addEvents() {
|
|
89
89
|
if (this.eventsAdded || !this.domElement) return;
|
|
90
90
|
const {globalObj: globalObj, domElement: domElement} = this;
|
|
91
|
-
this.supportsPointerEvents ? (globalObj.getDocument() ? (globalObj.
|
|
92
|
-
globalObj.
|
|
91
|
+
this.supportsPointerEvents ? (globalObj.getDocument() ? (globalObj.addEventListener("pointermove", this.onPointerMove, !0),
|
|
92
|
+
globalObj.addEventListener("pointerup", this.onPointerUp, !0)) : (domElement.addEventListener("pointermove", this.onPointerMove, !0),
|
|
93
93
|
domElement.addEventListener("pointerup", this.onPointerUp, !0)), domElement.addEventListener("pointerdown", this.onPointerDown, !0),
|
|
94
|
-
domElement.addEventListener("pointerleave", this.onPointerOverOut, !0), domElement.addEventListener("pointerover", this.onPointerOverOut, !0)) : (globalObj.getDocument() ? (globalObj.
|
|
95
|
-
globalObj.
|
|
94
|
+
domElement.addEventListener("pointerleave", this.onPointerOverOut, !0), domElement.addEventListener("pointerover", this.onPointerOverOut, !0)) : (globalObj.getDocument() ? (globalObj.addEventListener("mousemove", this.onPointerMove, !0),
|
|
95
|
+
globalObj.addEventListener("mouseup", this.onPointerUp, !0)) : (domElement.addEventListener("mousemove", this.onPointerMove, !0),
|
|
96
96
|
domElement.addEventListener("mouseup", this.onPointerUp, !0)), domElement.addEventListener("mousedown", this.onPointerDown, !0),
|
|
97
97
|
domElement.addEventListener("mouseout", this.onPointerOverOut, !0), domElement.addEventListener("mouseover", this.onPointerOverOut, !0)),
|
|
98
98
|
this.supportsTouchEvents && (domElement.addEventListener("touchstart", this.onPointerDown, !0),
|
|
@@ -102,13 +102,14 @@ export class EventSystem {
|
|
|
102
102
|
}), this.eventsAdded = !0;
|
|
103
103
|
}
|
|
104
104
|
removeEvents() {
|
|
105
|
-
var _a;
|
|
106
105
|
if (!this.eventsAdded || !this.domElement) return;
|
|
107
|
-
const {globalObj: globalObj, domElement: domElement} = this
|
|
108
|
-
this.supportsPointerEvents ? (
|
|
109
|
-
|
|
110
|
-
domElement.removeEventListener("
|
|
111
|
-
|
|
106
|
+
const {globalObj: globalObj, domElement: domElement} = this;
|
|
107
|
+
this.supportsPointerEvents ? (globalObj.getDocument() ? (globalObj.removeEventListener("pointermove", this.onPointerMove, !0),
|
|
108
|
+
globalObj.removeEventListener("pointerup", this.onPointerUp, !0)) : (domElement.removeEventListener("pointermove", this.onPointerMove, !0),
|
|
109
|
+
domElement.removeEventListener("pointerup", this.onPointerUp, !0)), domElement.removeEventListener("pointerdown", this.onPointerDown, !0),
|
|
110
|
+
domElement.removeEventListener("pointerleave", this.onPointerOverOut, !0), domElement.removeEventListener("pointerover", this.onPointerOverOut, !0)) : (globalObj.getDocument() ? (globalObj.removeEventListener("mousemove", this.onPointerMove, !0),
|
|
111
|
+
globalObj.removeEventListener("mouseup", this.onPointerUp, !0)) : (domElement.removeEventListener("mousemove", this.onPointerMove, !0),
|
|
112
|
+
domElement.removeEventListener("mouseup", this.onPointerUp, !0)), domElement.removeEventListener("mousedown", this.onPointerDown, !0),
|
|
112
113
|
domElement.removeEventListener("mouseout", this.onPointerOverOut, !0), domElement.removeEventListener("mouseover", this.onPointerOverOut, !0)),
|
|
113
114
|
this.supportsTouchEvents && (domElement.removeEventListener("touchstart", this.onPointerDown, !0),
|
|
114
115
|
domElement.removeEventListener("touchend", this.onPointerUp, !0), domElement.removeEventListener("touchmove", this.onPointerMove, !0)),
|