@vulfram/engine 0.5.6-alpha

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 (40) hide show
  1. package/package.json +17 -0
  2. package/src/engine/api.ts +282 -0
  3. package/src/engine/bridge/dispatch.ts +115 -0
  4. package/src/engine/bridge/guards.ts +28 -0
  5. package/src/engine/bridge/protocol.ts +130 -0
  6. package/src/engine/ecs/index.ts +516 -0
  7. package/src/engine/errors.ts +10 -0
  8. package/src/engine/state.ts +135 -0
  9. package/src/engine/systems/command-intent.ts +74 -0
  10. package/src/engine/systems/core-command-builder.ts +265 -0
  11. package/src/engine/systems/diagnostics.ts +42 -0
  12. package/src/engine/systems/index.ts +7 -0
  13. package/src/engine/systems/input-mirror.ts +152 -0
  14. package/src/engine/systems/resource-upload.ts +143 -0
  15. package/src/engine/systems/response-decode.ts +28 -0
  16. package/src/engine/systems/utils.ts +147 -0
  17. package/src/engine/systems/world-lifecycle.ts +164 -0
  18. package/src/engine/world/entities.ts +516 -0
  19. package/src/index.ts +9 -0
  20. package/src/types/cmds/camera.ts +76 -0
  21. package/src/types/cmds/environment.ts +45 -0
  22. package/src/types/cmds/geometry.ts +144 -0
  23. package/src/types/cmds/gizmo.ts +18 -0
  24. package/src/types/cmds/index.ts +231 -0
  25. package/src/types/cmds/light.ts +69 -0
  26. package/src/types/cmds/material.ts +98 -0
  27. package/src/types/cmds/model.ts +59 -0
  28. package/src/types/cmds/shadow.ts +22 -0
  29. package/src/types/cmds/system.ts +15 -0
  30. package/src/types/cmds/texture.ts +63 -0
  31. package/src/types/cmds/window.ts +263 -0
  32. package/src/types/events/gamepad.ts +34 -0
  33. package/src/types/events/index.ts +19 -0
  34. package/src/types/events/keyboard.ts +225 -0
  35. package/src/types/events/pointer.ts +105 -0
  36. package/src/types/events/system.ts +13 -0
  37. package/src/types/events/window.ts +96 -0
  38. package/src/types/index.ts +3 -0
  39. package/src/types/kinds.ts +111 -0
  40. package/tsconfig.json +29 -0
@@ -0,0 +1,63 @@
1
+ import type { TextureCreateMode } from '../kinds';
2
+
3
+ /** Options for forward atlas texture packing. */
4
+ export interface ForwardAtlasOptions {
5
+ tilePx: number;
6
+ layers: number;
7
+ }
8
+
9
+ /** Command payload for creating a texture from an uploaded buffer. */
10
+ export interface CmdTextureCreateFromBufferArgs {
11
+ windowId: number;
12
+ textureId: number;
13
+ label?: string;
14
+ bufferId: number;
15
+ srgb?: boolean;
16
+ mode?: TextureCreateMode;
17
+ atlasOptions?: ForwardAtlasOptions;
18
+ }
19
+
20
+ /** Result payload for texture create from buffer. */
21
+ export interface CmdResultTextureCreateFromBuffer {
22
+ success: boolean;
23
+ message: string;
24
+ }
25
+
26
+ /** Command payload for creating a solid color texture. */
27
+ export interface CmdTextureCreateSolidColorArgs {
28
+ windowId: number;
29
+ textureId: number;
30
+ label?: string;
31
+ color: [number, number, number, number];
32
+ srgb?: boolean;
33
+ mode?: TextureCreateMode;
34
+ atlasOptions?: ForwardAtlasOptions;
35
+ }
36
+
37
+ /** Result payload for solid color texture create. */
38
+ export interface CmdResultTextureCreateSolidColor {
39
+ success: boolean;
40
+ message: string;
41
+ }
42
+
43
+ /** Command payload for disposing a texture. */
44
+ export interface CmdTextureDisposeArgs {
45
+ windowId: number;
46
+ textureId: number;
47
+ }
48
+
49
+ /** Result payload for texture dispose. */
50
+ export interface CmdResultTextureDispose {
51
+ success: boolean;
52
+ message: string;
53
+ }
54
+
55
+ /** Command payload for listing textures. */
56
+ export interface CmdTextureListArgs {}
57
+
58
+ /** Result payload for texture list. */
59
+ export interface CmdResultTextureList {
60
+ success: boolean;
61
+ message: string;
62
+ content: number[]; // List of texture IDs
63
+ }
@@ -0,0 +1,263 @@
1
+ import type {
2
+ WindowState,
3
+ CursorGrabMode,
4
+ CursorIcon,
5
+ UserAttentionType,
6
+ } from '../kinds';
7
+
8
+ /** Command payload for creating a window. */
9
+ export interface CmdWindowCreateArgs {
10
+ windowId: number;
11
+ title?: string;
12
+ size?: [number, number]; // UVec2
13
+ position?: [number, number]; // IVec2
14
+ canvasId?: string;
15
+ borderless?: boolean;
16
+ resizable?: boolean;
17
+ transparent?: boolean;
18
+ initialState?: WindowState;
19
+ }
20
+
21
+ /** Result payload for window create. */
22
+ export interface CmdResultWindowCreate {
23
+ success: boolean;
24
+ message: string;
25
+ }
26
+
27
+ /** Command payload for closing a window. */
28
+ export interface CmdWindowCloseArgs {
29
+ windowId: number;
30
+ }
31
+
32
+ /** Result payload for window close. */
33
+ export interface CmdResultWindowClose {
34
+ success: boolean;
35
+ message: string;
36
+ }
37
+
38
+ /** Command payload for setting window title. */
39
+ export interface CmdWindowSetTitleArgs {
40
+ windowId: number;
41
+ title: string;
42
+ }
43
+
44
+ /** Result payload for window title update. */
45
+ export interface CmdResultWindowSetTitle {
46
+ success: boolean;
47
+ message: string;
48
+ }
49
+
50
+ /** Command payload for setting window position. */
51
+ export interface CmdWindowSetPositionArgs {
52
+ windowId: number;
53
+ position: [number, number];
54
+ }
55
+
56
+ /** Result payload for window position update. */
57
+ export interface CmdResultWindowSetPosition {
58
+ success: boolean;
59
+ message: string;
60
+ }
61
+
62
+ /** Command payload for querying window position. */
63
+ export interface CmdWindowGetPositionArgs {
64
+ windowId: number;
65
+ }
66
+
67
+ /** Result payload for window position query. */
68
+ export interface CmdResultWindowGetPosition {
69
+ success: boolean;
70
+ message: string;
71
+ content: [number, number];
72
+ }
73
+
74
+ /** Command payload for setting window size. */
75
+ export interface CmdWindowSetSizeArgs {
76
+ windowId: number;
77
+ size: [number, number];
78
+ }
79
+
80
+ /** Result payload for window size update. */
81
+ export interface CmdResultWindowSetSize {
82
+ success: boolean;
83
+ message: string;
84
+ }
85
+
86
+ /** Command payload for querying window size. */
87
+ export interface CmdWindowGetSizeArgs {
88
+ windowId: number;
89
+ }
90
+
91
+ /** Result payload for window size query. */
92
+ export interface CmdResultWindowGetSize {
93
+ success: boolean;
94
+ message: string;
95
+ content: [number, number];
96
+ }
97
+
98
+ /** Command payload for querying outer window size. */
99
+ export interface CmdWindowGetOuterSizeArgs {
100
+ windowId: number;
101
+ }
102
+
103
+ /** Result payload for outer window size query. */
104
+ export interface CmdResultWindowGetOuterSize {
105
+ success: boolean;
106
+ message: string;
107
+ content: [number, number];
108
+ }
109
+
110
+ /** Command payload for querying surface size. */
111
+ export interface CmdWindowGetSurfaceSizeArgs {
112
+ windowId: number;
113
+ }
114
+
115
+ /** Result payload for surface size query. */
116
+ export interface CmdResultWindowGetSurfaceSize {
117
+ success: boolean;
118
+ message: string;
119
+ content: [number, number];
120
+ }
121
+
122
+ /** Command payload for setting window state. */
123
+ export interface CmdWindowSetStateArgs {
124
+ windowId: number;
125
+ state: WindowState;
126
+ }
127
+
128
+ /** Result payload for window state update. */
129
+ export interface CmdResultWindowSetState {
130
+ success: boolean;
131
+ message: string;
132
+ }
133
+
134
+ /** Command payload for querying window state. */
135
+ export interface CmdWindowGetStateArgs {
136
+ windowId: number;
137
+ }
138
+
139
+ /** Result payload for window state query. */
140
+ export interface CmdResultWindowGetState {
141
+ success: boolean;
142
+ message: string;
143
+ content: WindowState;
144
+ }
145
+
146
+ /** Command payload for setting window icon. */
147
+ export interface CmdWindowSetIconArgs {
148
+ windowId: number;
149
+ icon: string; // Buffer ID pointing to an image
150
+ }
151
+
152
+ /** Result payload for window icon update. */
153
+ export interface CmdResultWindowSetIcon {
154
+ success: boolean;
155
+ message: string;
156
+ }
157
+
158
+ /** Command payload for toggling window decorations. */
159
+ export interface CmdWindowSetDecorationsArgs {
160
+ windowId: number;
161
+ decorations: boolean;
162
+ }
163
+
164
+ /** Result payload for window decoration update. */
165
+ export interface CmdResultWindowSetDecorations {
166
+ success: boolean;
167
+ message: string;
168
+ }
169
+
170
+ /** Command payload for querying window decorations. */
171
+ export interface CmdWindowHasDecorationsArgs {
172
+ windowId: number;
173
+ }
174
+
175
+ /** Result payload for window decoration query. */
176
+ export interface CmdResultWindowHasDecorations {
177
+ success: boolean;
178
+ message: string;
179
+ content: boolean;
180
+ }
181
+
182
+ /** Command payload for toggling window resizable state. */
183
+ export interface CmdWindowSetResizableArgs {
184
+ windowId: number;
185
+ resizable: boolean;
186
+ }
187
+
188
+ /** Result payload for window resizable update. */
189
+ export interface CmdResultWindowSetResizable {
190
+ success: boolean;
191
+ message: string;
192
+ }
193
+
194
+ /** Command payload for querying resizable state. */
195
+ export interface CmdWindowIsResizableArgs {
196
+ windowId: number;
197
+ }
198
+
199
+ /** Result payload for resizable query. */
200
+ export interface CmdResultWindowIsResizable {
201
+ success: boolean;
202
+ message: string;
203
+ content: boolean;
204
+ }
205
+
206
+ /** Command payload for requesting user attention. */
207
+ export interface CmdWindowRequestAttentionArgs {
208
+ windowId: number;
209
+ attentionType?: UserAttentionType;
210
+ }
211
+
212
+ /** Result payload for attention request. */
213
+ export interface CmdResultWindowRequestAttention {
214
+ success: boolean;
215
+ message: string;
216
+ }
217
+
218
+ /** Command payload for focusing a window. */
219
+ export interface CmdWindowFocusArgs {
220
+ windowId: number;
221
+ }
222
+
223
+ /** Result payload for window focus. */
224
+ export interface CmdResultWindowFocus {
225
+ success: boolean;
226
+ message: string;
227
+ }
228
+
229
+ /** Command payload for toggling cursor visibility. */
230
+ export interface CmdWindowSetCursorVisibleArgs {
231
+ windowId: number;
232
+ visible: boolean;
233
+ }
234
+
235
+ /** Result payload for cursor visibility update. */
236
+ export interface CmdResultWindowSetCursorVisible {
237
+ success: boolean;
238
+ message: string;
239
+ }
240
+
241
+ /** Command payload for setting cursor grab mode. */
242
+ export interface CmdWindowSetCursorGrabArgs {
243
+ windowId: number;
244
+ mode: CursorGrabMode;
245
+ }
246
+
247
+ /** Result payload for cursor grab update. */
248
+ export interface CmdResultWindowSetCursorGrab {
249
+ success: boolean;
250
+ message: string;
251
+ }
252
+
253
+ /** Command payload for setting cursor icon. */
254
+ export interface CmdWindowSetCursorIconArgs {
255
+ windowId: number;
256
+ icon: CursorIcon;
257
+ }
258
+
259
+ /** Result payload for cursor icon update. */
260
+ export interface CmdResultWindowSetCursorIcon {
261
+ success: boolean;
262
+ message: string;
263
+ }
@@ -0,0 +1,34 @@
1
+ import type { ElementState } from '../kinds';
2
+
3
+ /** Payload for gamepad connect event. */
4
+ export interface GamepadEventOnConnectData {
5
+ gamepadId: number;
6
+ name: string;
7
+ }
8
+
9
+ /** Payload for gamepad disconnect event. */
10
+ export interface GamepadEventOnDisconnectData {
11
+ gamepadId: number;
12
+ }
13
+
14
+ /** Payload for gamepad button event. */
15
+ export interface GamepadEventOnButtonData {
16
+ gamepadId: number;
17
+ button: number;
18
+ state: ElementState;
19
+ value: number;
20
+ }
21
+
22
+ /** Payload for gamepad axis event. */
23
+ export interface GamepadEventOnAxisData {
24
+ gamepadId: number;
25
+ axis: number;
26
+ value: number;
27
+ }
28
+
29
+ /** Discriminated union of gamepad events. */
30
+ export type GamepadEvent =
31
+ | { event: 'on-connect'; data: GamepadEventOnConnectData }
32
+ | { event: 'on-disconnect'; data: GamepadEventOnDisconnectData }
33
+ | { event: 'on-button'; data: GamepadEventOnButtonData }
34
+ | { event: 'on-axis'; data: GamepadEventOnAxisData };
@@ -0,0 +1,19 @@
1
+ import type { WindowEvent } from './window';
2
+ import type { PointerEvent } from './pointer';
3
+ import type { KeyboardEvent } from './keyboard';
4
+ import type { GamepadEvent } from './gamepad';
5
+ import type { SystemEvent } from './system';
6
+
7
+ export * from './window';
8
+ export * from './pointer';
9
+ export * from './keyboard';
10
+ export * from './gamepad';
11
+ export * from './system';
12
+
13
+ /** Discriminated union of all engine events. */
14
+ export type EngineEvent =
15
+ | { type: 'window'; content: WindowEvent }
16
+ | { type: 'pointer'; content: PointerEvent }
17
+ | { type: 'keyboard'; content: KeyboardEvent }
18
+ | { type: 'gamepad'; content: GamepadEvent }
19
+ | { type: 'system'; content: SystemEvent };
@@ -0,0 +1,225 @@
1
+ import type { ElementState } from '../kinds';
2
+
3
+ /** Modifier key state for keyboard events. */
4
+ export interface ModifiersState {
5
+ shift: boolean;
6
+ ctrl: boolean;
7
+ alt: boolean;
8
+ meta: boolean;
9
+ }
10
+
11
+ /** Payload for keyboard input event. */
12
+ export interface KeyboardEventOnInputData {
13
+ windowId: number;
14
+ keyCode: KeyCode;
15
+ state: ElementState;
16
+ location: number;
17
+ repeat: boolean;
18
+ text?: string;
19
+ modifiers: ModifiersState;
20
+ }
21
+
22
+ /** Payload for modifier change event. */
23
+ export interface KeyboardEventOnModifiersChangeData {
24
+ windowId: number;
25
+ modifiers: ModifiersState;
26
+ }
27
+
28
+ /** Payload for IME enable event. */
29
+ export interface KeyboardEventOnImeEnableData {
30
+ windowId: number;
31
+ }
32
+
33
+ /** Payload for IME preedit event. */
34
+ export interface KeyboardEventOnImePreeditData {
35
+ windowId: number;
36
+ text: string;
37
+ cursorRange?: [number, number];
38
+ }
39
+
40
+ /** Payload for IME commit event. */
41
+ export interface KeyboardEventOnImeCommitData {
42
+ windowId: number;
43
+ text: string;
44
+ }
45
+
46
+ /** Payload for IME disable event. */
47
+ export interface KeyboardEventOnImeDisableData {
48
+ windowId: number;
49
+ }
50
+
51
+ /** Discriminated union of keyboard events. */
52
+ export type KeyboardEvent =
53
+ | { event: 'on-input'; data: KeyboardEventOnInputData }
54
+ | { event: 'on-modifiers-change'; data: KeyboardEventOnModifiersChangeData }
55
+ | { event: 'on-ime-enable'; data: KeyboardEventOnImeEnableData }
56
+ | { event: 'on-ime-preedit'; data: KeyboardEventOnImePreeditData }
57
+ | { event: 'on-ime-commit'; data: KeyboardEventOnImeCommitData }
58
+ | { event: 'on-ime-disable'; data: KeyboardEventOnImeDisableData };
59
+
60
+ /** Key code mapping used by the engine. */
61
+ export enum KeyCode {
62
+ // Writing System Keys (0–49)
63
+ Backquote = 0,
64
+ Backslash = 1,
65
+ BracketLeft = 2,
66
+ BracketRight = 3,
67
+ Comma = 4,
68
+ Digit0 = 5,
69
+ Digit1 = 6,
70
+ Digit2 = 7,
71
+ Digit3 = 8,
72
+ Digit4 = 9,
73
+ Digit5 = 10,
74
+ Digit6 = 11,
75
+ Digit7 = 12,
76
+ Digit8 = 13,
77
+ Digit9 = 14,
78
+ Equal = 15,
79
+ IntlBackslash = 16,
80
+ IntlRo = 17,
81
+ IntlYen = 18,
82
+ KeyA = 19,
83
+ KeyB = 20,
84
+ KeyC = 21,
85
+ KeyD = 22,
86
+ KeyE = 23,
87
+ KeyF = 24,
88
+ KeyG = 25,
89
+ KeyH = 26,
90
+ KeyI = 27,
91
+ KeyJ = 28,
92
+ KeyK = 29,
93
+ KeyL = 30,
94
+ KeyM = 31,
95
+ KeyN = 32,
96
+ KeyO = 33,
97
+ KeyP = 34,
98
+ KeyQ = 35,
99
+ KeyR = 36,
100
+ KeyS = 37,
101
+ KeyT = 38,
102
+ KeyU = 39,
103
+ KeyV = 40,
104
+ KeyW = 41,
105
+ KeyX = 42,
106
+ KeyY = 43,
107
+ KeyZ = 44,
108
+ Minus = 45,
109
+ Period = 46,
110
+ Quote = 47,
111
+ Semicolon = 48,
112
+ Slash = 49,
113
+
114
+ // Functional Keys (50–63)
115
+ AltLeft = 50,
116
+ AltRight = 51,
117
+ Backspace = 52,
118
+ CapsLock = 53,
119
+ ContextMenu = 54,
120
+ ControlLeft = 55,
121
+ ControlRight = 56,
122
+ Enter = 57,
123
+ SuperLeft = 58,
124
+ SuperRight = 59,
125
+ ShiftLeft = 60,
126
+ ShiftRight = 61,
127
+ Space = 62,
128
+ Tab = 63,
129
+
130
+ // Control Keys (64–70)
131
+ Delete = 64,
132
+ End = 65,
133
+ Help = 66,
134
+ Home = 67,
135
+ Insert = 68,
136
+ PageDown = 69,
137
+ PageUp = 70,
138
+
139
+ // Arrow Keys (71–74)
140
+ ArrowDown = 71,
141
+ ArrowLeft = 72,
142
+ ArrowRight = 73,
143
+ ArrowUp = 74,
144
+
145
+ // Numpad Keys (75–105)
146
+ NumLock = 75,
147
+ Numpad0 = 76,
148
+ Numpad1 = 77,
149
+ Numpad2 = 78,
150
+ Numpad3 = 79,
151
+ Numpad4 = 80,
152
+ Numpad5 = 81,
153
+ Numpad6 = 82,
154
+ Numpad7 = 83,
155
+ Numpad8 = 84,
156
+ Numpad9 = 85,
157
+ NumpadAdd = 86,
158
+ NumpadBackspace = 87,
159
+ NumpadClear = 88,
160
+ NumpadClearEntry = 89,
161
+ NumpadComma = 90,
162
+ NumpadDecimal = 91,
163
+ NumpadDivide = 92,
164
+ NumpadEnter = 93,
165
+ NumpadEqual = 94,
166
+ NumpadHash = 95,
167
+ NumpadMemoryAdd = 96,
168
+ NumpadMemoryClear = 97,
169
+ NumpadMemoryRecall = 98,
170
+ NumpadMemoryStore = 99,
171
+ NumpadMemorySubtract = 100,
172
+ NumpadMultiply = 101,
173
+ NumpadParenLeft = 102,
174
+ NumpadParenRight = 103,
175
+ NumpadStar = 104,
176
+ NumpadSubtract = 105,
177
+
178
+ // Function Keys (106–130)
179
+ Escape = 106,
180
+ F1 = 107,
181
+ F2 = 108,
182
+ F3 = 109,
183
+ F4 = 110,
184
+ F5 = 111,
185
+ F6 = 112,
186
+ F7 = 113,
187
+ F8 = 114,
188
+ F9 = 115,
189
+ F10 = 116,
190
+ F11 = 117,
191
+ F12 = 118,
192
+ F13 = 119,
193
+ F14 = 120,
194
+ F15 = 121,
195
+ F16 = 122,
196
+ F17 = 123,
197
+ F18 = 124,
198
+ F19 = 125,
199
+ F20 = 126,
200
+ F21 = 127,
201
+ F22 = 128,
202
+ F23 = 129,
203
+ F24 = 130,
204
+
205
+ // Lock, Media, Browser & System Keys (131–147)
206
+ ScrollLock = 131,
207
+ AudioVolumeDown = 132,
208
+ AudioVolumeMute = 133,
209
+ AudioVolumeUp = 134,
210
+ MediaPlayPause = 135,
211
+ MediaStop = 136,
212
+ MediaTrackNext = 137,
213
+ MediaTrackPrevious = 138,
214
+ BrowserBack = 139,
215
+ BrowserFavorites = 140,
216
+ BrowserForward = 141,
217
+ BrowserHome = 142,
218
+ BrowserRefresh = 143,
219
+ BrowserSearch = 144,
220
+ BrowserStop = 145,
221
+ PrintScreen = 146,
222
+ Pause = 147,
223
+
224
+ Unidentified = 255,
225
+ }
@@ -0,0 +1,105 @@
1
+ import type { ElementState, TouchPhase } from '../kinds';
2
+
3
+ /** Scroll delta reported in line or pixel units. */
4
+ export type ScrollDelta =
5
+ | { type: 'line'; value: [number, number] }
6
+ | { type: 'pixel'; value: [number, number] };
7
+
8
+ /** Payload for pointer move event. */
9
+ export interface PointerEventOnMoveData {
10
+ windowId: number;
11
+ pointerType: number;
12
+ pointerId: number;
13
+ position: [number, number];
14
+ }
15
+
16
+ /** Payload for pointer enter event. */
17
+ export interface PointerEventOnEnterData {
18
+ windowId: number;
19
+ pointerType: number;
20
+ pointerId: number;
21
+ }
22
+
23
+ /** Payload for pointer leave event. */
24
+ export interface PointerEventOnLeaveData {
25
+ windowId: number;
26
+ pointerType: number;
27
+ pointerId: number;
28
+ }
29
+
30
+ /** Payload for pointer button event. */
31
+ export interface PointerEventOnButtonData {
32
+ windowId: number;
33
+ pointerType: number;
34
+ pointerId: number;
35
+ button: MouseButton;
36
+ state: ElementState;
37
+ position: [number, number];
38
+ }
39
+
40
+ /** Payload for pointer scroll event. */
41
+ export interface PointerEventOnScrollData {
42
+ windowId: number;
43
+ delta: ScrollDelta;
44
+ phase: TouchPhase;
45
+ }
46
+
47
+ /** Payload for touch event. */
48
+ export interface PointerEventOnTouchData {
49
+ windowId: number;
50
+ pointerId: number;
51
+ phase: TouchPhase;
52
+ position: [number, number];
53
+ pressure?: number;
54
+ }
55
+
56
+ /** Payload for pinch gesture event. */
57
+ export interface PointerEventOnPinchGestureData {
58
+ windowId: number;
59
+ delta: number;
60
+ phase: TouchPhase;
61
+ }
62
+
63
+ /** Payload for pan gesture event. */
64
+ export interface PointerEventOnPanGestureData {
65
+ windowId: number;
66
+ delta: [number, number];
67
+ phase: TouchPhase;
68
+ }
69
+
70
+ /** Payload for rotation gesture event. */
71
+ export interface PointerEventOnRotationGestureData {
72
+ windowId: number;
73
+ delta: number;
74
+ phase: TouchPhase;
75
+ }
76
+
77
+ /** Payload for double tap gesture event. */
78
+ export interface PointerEventOnDoubleTapGestureData {
79
+ windowId: number;
80
+ }
81
+
82
+ /** Discriminated union of pointer events. */
83
+ export type PointerEvent =
84
+ | { event: 'on-move'; data: PointerEventOnMoveData }
85
+ | { event: 'on-enter'; data: PointerEventOnEnterData }
86
+ | { event: 'on-leave'; data: PointerEventOnLeaveData }
87
+ | { event: 'on-button'; data: PointerEventOnButtonData }
88
+ | { event: 'on-scroll'; data: PointerEventOnScrollData }
89
+ | { event: 'on-touch'; data: PointerEventOnTouchData }
90
+ | { event: 'on-pinch-gesture'; data: PointerEventOnPinchGestureData }
91
+ | { event: 'on-pan-gesture'; data: PointerEventOnPanGestureData }
92
+ | { event: 'on-rotation-gesture'; data: PointerEventOnRotationGestureData }
93
+ | {
94
+ event: 'on-double-tap-gesture';
95
+ data: PointerEventOnDoubleTapGestureData;
96
+ };
97
+
98
+ /** Mouse button identifiers. */
99
+ export enum MouseButton {
100
+ Left = 0,
101
+ Right = 1,
102
+ Middle = 2,
103
+ Back = 3,
104
+ Forward = 4,
105
+ }