@shapediver/viewer.shared.services 2.12.8 → 3.0.0

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 (72) hide show
  1. package/dist/converter/Converter.d.ts +5 -2
  2. package/dist/converter/Converter.d.ts.map +1 -1
  3. package/dist/converter/Converter.js +11 -10
  4. package/dist/converter/Converter.js.map +1 -1
  5. package/dist/dom-event-engine/DomEventEngine.d.ts +21 -31
  6. package/dist/dom-event-engine/DomEventEngine.d.ts.map +1 -1
  7. package/dist/dom-event-engine/DomEventEngine.js +101 -172
  8. package/dist/dom-event-engine/DomEventEngine.js.map +1 -1
  9. package/dist/dom-event-engine/IDomEventListener.d.ts +6 -10
  10. package/dist/dom-event-engine/IDomEventListener.d.ts.map +1 -1
  11. package/dist/event-engine/EventTypes.d.ts +199 -2
  12. package/dist/event-engine/EventTypes.d.ts.map +1 -1
  13. package/dist/event-engine/EventTypes.js +201 -10
  14. package/dist/event-engine/EventTypes.js.map +1 -1
  15. package/dist/http-client/HttpClient.d.ts +1 -1
  16. package/dist/http-client/HttpClient.d.ts.map +1 -1
  17. package/dist/http-client/HttpClient.js +7 -4
  18. package/dist/http-client/HttpClient.js.map +1 -1
  19. package/dist/index.d.ts +25 -21
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +54 -46
  22. package/dist/index.js.map +1 -1
  23. package/dist/logger/ErrorTypeGuards.d.ts +3 -1
  24. package/dist/logger/ErrorTypeGuards.d.ts.map +1 -1
  25. package/dist/logger/ErrorTypeGuards.js +8 -1
  26. package/dist/logger/ErrorTypeGuards.js.map +1 -1
  27. package/dist/logger/ShapeDiverError.d.ts +1 -0
  28. package/dist/logger/ShapeDiverError.d.ts.map +1 -1
  29. package/dist/logger/ShapeDiverError.js +1 -0
  30. package/dist/logger/ShapeDiverError.js.map +1 -1
  31. package/dist/logger/ShapeDiverViewerErrors.d.ts +4 -0
  32. package/dist/logger/ShapeDiverViewerErrors.d.ts.map +1 -1
  33. package/dist/logger/ShapeDiverViewerErrors.js +8 -1
  34. package/dist/logger/ShapeDiverViewerErrors.js.map +1 -1
  35. package/dist/settings-engine/SettingsEngine.d.ts +36 -16
  36. package/dist/settings-engine/SettingsEngine.d.ts.map +1 -1
  37. package/dist/settings-engine/SettingsEngine.js +45 -38
  38. package/dist/settings-engine/SettingsEngine.js.map +1 -1
  39. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.d.ts +20 -0
  40. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.d.ts.map +1 -0
  41. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.js +3 -0
  42. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.js.map +1 -0
  43. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.d.ts +32 -0
  44. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.d.ts.map +1 -0
  45. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.js +3 -0
  46. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.js.map +1 -0
  47. package/dist/state-engine/StateEngine.d.ts +7 -18
  48. package/dist/state-engine/StateEngine.d.ts.map +1 -1
  49. package/dist/state-engine/StateEngine.js +9 -9
  50. package/dist/state-engine/StateEngine.js.map +1 -1
  51. package/dist/system-info/SystemInfo.js +1 -1
  52. package/dist/system-info/SystemInfo.js.map +1 -1
  53. package/dist/utilities/base64.d.ts +3 -0
  54. package/dist/utilities/base64.d.ts.map +1 -0
  55. package/dist/utilities/base64.js +22 -0
  56. package/dist/utilities/base64.js.map +1 -0
  57. package/package.json +4 -4
  58. package/src/converter/Converter.ts +18 -17
  59. package/src/dom-event-engine/DomEventEngine.ts +118 -194
  60. package/src/dom-event-engine/IDomEventListener.ts +10 -10
  61. package/src/event-engine/EventTypes.ts +231 -41
  62. package/src/http-client/HttpClient.ts +7 -4
  63. package/src/index.ts +99 -43
  64. package/src/logger/ErrorTypeGuards.ts +8 -1
  65. package/src/logger/ShapeDiverError.ts +1 -0
  66. package/src/logger/ShapeDiverViewerErrors.ts +8 -0
  67. package/src/settings-engine/SettingsEngine.ts +101 -80
  68. package/src/state-engine/ISessionGlobalAccessObjectDefinition.ts +25 -0
  69. package/src/state-engine/IViewportGlobalAccessObjectDefinition.ts +29 -0
  70. package/src/state-engine/StateEngine.ts +16 -48
  71. package/src/system-info/SystemInfo.ts +1 -1
  72. package/src/utilities/base64.ts +15 -0
@@ -1,63 +1,51 @@
1
- import { SystemInfo } from '../system-info/SystemInfo';
1
+ import { IDomEventListener } from './IDomEventListener';
2
2
  import { UuidGenerator } from '../uuid-generator/UuidGenerator';
3
3
 
4
- import { IDomEventListener } from './IDomEventListener'
5
-
6
4
  export class DomEventEngine {
7
- // #region Properties (5)
5
+ // #region Properties (14)
8
6
 
9
7
  private readonly _domEventListeners: {
10
8
  [key: string]: IDomEventListener
11
9
  } = {};
12
10
  private readonly _uuidGenerator: UuidGenerator = UuidGenerator.instance;
13
- private readonly _systemInfo: SystemInfo = SystemInfo.instance;
14
11
 
15
12
  private _allowListeners = {
16
13
  mousewheel: true,
17
- mousedown: true,
18
- mousemove: true,
19
- mouseup: true,
20
- mouseout: true,
21
- touchstart: true,
22
- touchmove: true,
23
- touchend: true,
24
- touchcancel: true,
14
+ pointerdown: true,
15
+ pointermove: true,
16
+ pointerup: true,
17
+ pointerout: true,
25
18
  keydown: true,
19
+ keyup: true,
26
20
  contextmenu: true,
27
21
  };
28
22
  private _canvas: HTMLCanvasElement;
29
- private _currentMousePosition: { x: number, y: number } = { x: 0, y: 0 };
30
- private _onMouseWheel: (event: Event) => void;
31
- private _onMouseDown: (event: MouseEvent) => void;
32
- private _onMouseMove: (event: MouseEvent) => void;
33
- private _onKeyDownMousePositionHelper: (event: MouseEvent) => void;
34
- private _onMouseUp: (event: MouseEvent) => void;
35
- private _onMouseOut: (event: MouseEvent) => void;
36
- private _onTouchStart: (event: TouchEvent) => void;
37
- private _onTouchMove: (event: TouchEvent) => void;
38
- private _onTouchUp: (event: TouchEvent) => void;
39
- private _onTouchCancel: (event: TouchEvent) => void;
40
- private _onKeyDown: (event: KeyboardEvent) => void;
23
+ private _currentPointerPosition: { x: number, y: number } = { x: 0, y: 0 };
41
24
  private _onContextMenu: (event: MouseEvent) => void;
25
+ private _onKeyDown: (event: KeyboardEvent) => void;
26
+ private _onKeyDownPointerPositionHelper: (event: PointerEvent) => void;
27
+ private _onKeyUp: (event: KeyboardEvent) => void;
28
+ private _onMouseWheel: (event: Event) => void;
29
+ private _onPointerDown: (event: PointerEvent) => void;
30
+ private _onPointerMove: (event: PointerEvent) => void;
31
+ private _onPointerOut: (event: PointerEvent) => void;
32
+ private _onPointerUp: (event: PointerEvent) => void;
42
33
 
43
- // #endregion Properties (5)
34
+ // #endregion Properties (14)
44
35
 
45
36
  // #region Constructors (1)
46
37
 
47
38
  constructor(canvas: HTMLCanvasElement) {
48
39
  this._canvas = canvas;
49
40
  this._onMouseWheel = this.onMouseWheel.bind(this);
50
- this._onMouseDown = this.onMouseDown.bind(this);
51
- this._onMouseMove = this.onMouseMove.bind(this)
52
- this._onKeyDownMousePositionHelper = this.onKeyDownMousePositionHelper.bind(this)
53
- this._onMouseUp = this.onMouseUp.bind(this)
54
- this._onMouseOut = this.onMouseOut.bind(this)
55
- this._onTouchStart = this.onTouchStart.bind(this)
56
- this._onTouchMove = this.onTouchMove.bind(this)
57
- this._onTouchUp = this.onTouchUp.bind(this)
58
- this._onTouchCancel = this.onTouchCancel.bind(this)
59
- this._onKeyDown = this.onKeyDown.bind(this)
60
- this._onContextMenu = this.onContextMenu.bind(this)
41
+ this._onPointerDown = this.onPointerDown.bind(this);
42
+ this._onPointerMove = this.onPointerMove.bind(this);
43
+ this._onKeyDownPointerPositionHelper = this.onKeyDownPointerPositionHelper.bind(this);
44
+ this._onPointerUp = this.onPointerUp.bind(this);
45
+ this._onPointerOut = this.onPointerOut.bind(this);
46
+ this._onKeyDown = this.onKeyDown.bind(this);
47
+ this._onKeyUp = this.onKeyUp.bind(this);
48
+ this._onContextMenu = this.onContextMenu.bind(this);
61
49
 
62
50
  this.addEventListeners();
63
51
  }
@@ -78,122 +66,94 @@ export class DomEventEngine {
78
66
  *
79
67
  * Example use case: If you don't want to allow mouse wheel events for a specific viewer so that users can scroll past the viewer.
80
68
  *
81
- * Be aware that this might cause some issues with the the camera controls if the mouse / touch events are disabled only partially.
69
+ * Be aware that this might cause some issues with the the camera controls if the pointer events are disabled only partially.
82
70
  *
83
71
  * @param allowedListeners
84
72
  */
85
73
  public allowEventListeners(allowedListeners: {
86
74
  mousewheel?: boolean,
87
- mousedown?: boolean,
88
- mousemove?: boolean,
89
- mouseup?: boolean,
90
- mouseout?: boolean,
91
- touchstart?: boolean,
92
- touchmove?: boolean,
93
- touchend?: boolean,
94
- touchcancel?: boolean,
75
+ pointerdown?: boolean,
76
+ pointermove?: boolean,
77
+ pointerup?: boolean,
78
+ pointerout?: boolean,
95
79
  keydown?: boolean,
80
+ keyup?: boolean,
96
81
  contextmenu?: boolean,
97
82
  }): void {
83
+ if (typeof window === undefined) return;
84
+
98
85
  if (allowedListeners.mousewheel !== undefined && this._allowListeners.mousewheel !== allowedListeners.mousewheel) {
99
86
  if (allowedListeners.mousewheel) {
100
- this._canvas.addEventListener("mousewheel", this._onMouseWheel);
101
- this._canvas.addEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
87
+ this._canvas.addEventListener('mousewheel', this._onMouseWheel);
88
+ this._canvas.addEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
102
89
  } else {
103
- this._canvas.removeEventListener("mousewheel", this._onMouseWheel);
104
- this._canvas.removeEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
90
+ this._canvas.removeEventListener('mousewheel', this._onMouseWheel);
91
+ this._canvas.removeEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
105
92
  }
106
93
  this._allowListeners.mousewheel = allowedListeners.mousewheel;
107
94
  }
108
95
 
109
- if (allowedListeners.mousedown !== undefined && this._allowListeners.mousedown !== allowedListeners.mousedown) {
110
- if (allowedListeners.mousedown) {
111
- this._canvas.addEventListener("mousedown", this._onMouseDown);
96
+ if (allowedListeners.pointerdown !== undefined && this._allowListeners.pointerdown !== allowedListeners.pointerdown) {
97
+ if (allowedListeners.pointerdown) {
98
+ this._canvas.addEventListener('pointerdown', this._onPointerDown);
112
99
  } else {
113
- this._canvas.removeEventListener("mousedown", this._onMouseDown);
100
+ this._canvas.removeEventListener('pointerdown', this._onPointerDown);
114
101
  }
115
- this._allowListeners.mousedown = allowedListeners.mousedown;
102
+ this._allowListeners.pointerdown = allowedListeners.pointerdown;
116
103
  }
117
104
 
118
- if (allowedListeners.mousemove !== undefined && this._allowListeners.mousemove !== allowedListeners.mousemove) {
119
- if (allowedListeners.mousemove) {
120
- this._canvas.addEventListener("mousemove", this._onMouseMove);
121
- window.addEventListener("mousemove", this._onKeyDownMousePositionHelper);
105
+ if (allowedListeners.pointermove !== undefined && this._allowListeners.pointermove !== allowedListeners.pointermove) {
106
+ if (allowedListeners.pointermove) {
107
+ this._canvas.addEventListener('pointermove', this._onPointerMove);
108
+ window.addEventListener('pointermove', this._onKeyDownPointerPositionHelper);
122
109
  } else {
123
- this._canvas.removeEventListener("mousemove", this._onMouseMove);
124
- window.removeEventListener("mousemove", this._onKeyDownMousePositionHelper);
110
+ this._canvas.removeEventListener('pointermove', this._onPointerMove);
111
+ window.removeEventListener('pointermove', this._onKeyDownPointerPositionHelper);
125
112
  }
126
- this._allowListeners.mousemove = allowedListeners.mousemove;
113
+ this._allowListeners.pointermove = allowedListeners.pointermove;
127
114
  }
128
115
 
129
- if (allowedListeners.mouseup !== undefined && this._allowListeners.mouseup !== allowedListeners.mouseup) {
130
- if (allowedListeners.mouseup) {
131
- this._canvas.addEventListener("mouseup", this._onMouseUp);
116
+ if (allowedListeners.pointerup !== undefined && this._allowListeners.pointerup !== allowedListeners.pointerup) {
117
+ if (allowedListeners.pointerup) {
118
+ this._canvas.addEventListener('pointerup', this._onPointerUp);
132
119
  } else {
133
- this._canvas.removeEventListener("mouseup", this._onMouseUp);
120
+ this._canvas.removeEventListener('pointerup', this._onPointerUp);
134
121
  }
135
- this._allowListeners.mouseup = allowedListeners.mouseup;
122
+ this._allowListeners.pointerup = allowedListeners.pointerup;
136
123
  }
137
124
 
138
- if (allowedListeners.mouseout !== undefined && this._allowListeners.mouseout !== allowedListeners.mouseout) {
139
- if (allowedListeners.mouseout) {
140
- this._canvas.addEventListener("mouseout", this._onMouseOut);
125
+ if (allowedListeners.pointerout !== undefined && this._allowListeners.pointerout !== allowedListeners.pointerout) {
126
+ if (allowedListeners.pointerout) {
127
+ this._canvas.addEventListener('pointerout', this._onPointerOut);
141
128
  } else {
142
- this._canvas.removeEventListener("mouseout", this._onMouseOut);
129
+ this._canvas.removeEventListener('pointerout', this._onPointerOut);
143
130
  }
144
- this._allowListeners.mouseout = allowedListeners.mouseout;
131
+ this._allowListeners.pointerout = allowedListeners.pointerout;
145
132
  }
146
133
 
147
- if (allowedListeners.touchstart !== undefined && this._allowListeners.touchstart !== allowedListeners.touchstart) {
148
- if (allowedListeners.touchstart) {
149
- window.addEventListener("touchstart", this._onTouchStart, { passive: false });
150
- } else {
151
- window.removeEventListener("touchstart", this._onTouchStart);
152
- }
153
- this._allowListeners.touchstart = allowedListeners.touchstart;
154
- }
155
-
156
- if (allowedListeners.touchmove !== undefined && this._allowListeners.touchmove !== allowedListeners.touchmove) {
157
- if (allowedListeners.touchmove) {
158
- window.addEventListener("touchmove", this._onTouchMove, { passive: false });
159
- } else {
160
- window.removeEventListener("touchmove", this._onTouchMove);
161
- }
162
- this._allowListeners.touchmove = allowedListeners.touchmove;
163
- }
164
-
165
- if (allowedListeners.touchend !== undefined && this._allowListeners.touchend !== allowedListeners.touchend) {
166
- if (allowedListeners.touchend) {
167
- window.addEventListener("touchend", this._onTouchUp, { passive: false });
134
+ if (allowedListeners.keydown !== undefined && this._allowListeners.keydown !== allowedListeners.keydown) {
135
+ if (allowedListeners.keydown) {
136
+ window.addEventListener('keydown', this._onKeyDown);
168
137
  } else {
169
- window.removeEventListener("touchend", this._onTouchUp);
138
+ window.removeEventListener('keydown', this._onKeyDown);
170
139
  }
171
- this._allowListeners.touchend = allowedListeners.touchend;
140
+ this._allowListeners.keydown = allowedListeners.keydown;
172
141
  }
173
142
 
174
- if (allowedListeners.touchcancel !== undefined && this._allowListeners.touchcancel !== allowedListeners.touchcancel) {
175
- if (allowedListeners.touchcancel) {
176
- window.addEventListener("touchcancel", this._onTouchCancel, { passive: false });
143
+ if (allowedListeners.keyup !== undefined && this._allowListeners.keyup !== allowedListeners.keyup) {
144
+ if (allowedListeners.keyup) {
145
+ window.addEventListener('keyup', this._onKeyUp);
177
146
  } else {
178
- window.removeEventListener("touchcancel", this._onTouchCancel);
147
+ window.removeEventListener('keyup', this._onKeyUp);
179
148
  }
180
- this._allowListeners.touchcancel = allowedListeners.touchcancel;
181
- }
182
-
183
- if (allowedListeners.keydown !== undefined && this._allowListeners.keydown !== allowedListeners.keydown) {
184
- if (allowedListeners.keydown) {
185
- window.addEventListener("keydown", this._onKeyDown);
186
- } else {
187
- window.removeEventListener("keydown", this._onKeyDown);
188
- }
189
- this._allowListeners.keydown = allowedListeners.keydown;
149
+ this._allowListeners.keyup = allowedListeners.keyup;
190
150
  }
191
151
 
192
152
  if (allowedListeners.contextmenu !== undefined && this._allowListeners.contextmenu !== allowedListeners.contextmenu) {
193
153
  if (allowedListeners.contextmenu) {
194
- this._canvas.addEventListener("contextmenu", this._onContextMenu);
154
+ this._canvas.addEventListener('contextmenu', this._onContextMenu);
195
155
  } else {
196
- this._canvas.removeEventListener("contextmenu", this._onContextMenu);
156
+ this._canvas.removeEventListener('contextmenu', this._onContextMenu);
197
157
  }
198
158
  this._allowListeners.contextmenu = allowedListeners.contextmenu;
199
159
  }
@@ -204,12 +164,12 @@ export class DomEventEngine {
204
164
  }
205
165
 
206
166
  public removeAllDomEventListener(): void {
207
- for(let id in this._domEventListeners)
167
+ for (const id in this._domEventListeners)
208
168
  delete this._domEventListeners[id];
209
169
  }
210
170
 
211
171
  public removeDomEventListener(id: string): boolean {
212
- if(this._domEventListeners[id]) {
172
+ if (this._domEventListeners[id]) {
213
173
  delete this._domEventListeners[id];
214
174
  return true;
215
175
  }
@@ -218,125 +178,89 @@ export class DomEventEngine {
218
178
 
219
179
  // #endregion Public Methods (5)
220
180
 
221
- // #region Private Methods (12)
181
+ // #region Private Methods (11)
222
182
 
223
183
  private addEventListeners() {
224
- this._canvas.addEventListener("mousewheel", this._onMouseWheel);
225
- this._canvas.addEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
184
+ if (typeof window === undefined) return;
226
185
 
227
- this._canvas.addEventListener("mousedown", this._onMouseDown);
228
- this._canvas.addEventListener("mousemove", this._onMouseMove);
229
- this._canvas.addEventListener("mouseup", this._onMouseUp);
230
- this._canvas.addEventListener("mouseout", this._onMouseOut);
186
+ this._canvas.addEventListener('mousewheel', this._onMouseWheel);
187
+ this._canvas.addEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
231
188
 
232
- window.addEventListener("touchstart", this._onTouchStart, { passive: false });
233
- window.addEventListener("touchmove", this._onTouchMove, { passive: false });
234
- window.addEventListener("touchend", this._onTouchUp, { passive: false });
235
- window.addEventListener("touchcancel", this._onTouchCancel, { passive: false });
189
+ this._canvas.addEventListener('pointerdown', this._onPointerDown);
190
+ this._canvas.addEventListener('pointermove', this._onPointerMove);
191
+ this._canvas.addEventListener('pointerup', this._onPointerUp);
192
+ this._canvas.addEventListener('pointerout', this._onPointerOut);
236
193
 
237
- window.addEventListener("keydown", this._onKeyDown);
238
- window.addEventListener("mousemove", this._onKeyDownMousePositionHelper);
194
+ window.addEventListener('keyup', this._onKeyUp);
195
+ window.addEventListener('keydown', this._onKeyDown);
196
+ window.addEventListener('pointermove', this._onKeyDownPointerPositionHelper);
239
197
 
240
198
  // just prevent right click menu
241
- this._canvas.addEventListener("contextmenu", this._onContextMenu);
199
+ this._canvas.addEventListener('contextmenu', this._onContextMenu);
242
200
  }
243
201
 
244
202
  private onContextMenu(event: MouseEvent): void {
245
- if(this._systemInfo.isMobile === true) return;
246
203
  event.preventDefault();
247
204
  }
248
205
 
249
206
  private onKeyDown(event: KeyboardEvent): void {
250
- if (this._canvas === document.elementFromPoint(this._currentMousePosition.x, this._currentMousePosition.y))
207
+ if (this._canvas === document.elementFromPoint(this._currentPointerPosition.x, this._currentPointerPosition.y))
251
208
  Object.values(this._domEventListeners).forEach(e => e.onKeyDown(event));
252
209
  }
253
210
 
254
- private onKeyDownMousePositionHelper(event: MouseEvent): void {
255
- if(this._systemInfo.isMobile === true) return;
256
- this._currentMousePosition = { x: event.pageX, y: event.pageY };
211
+ private onKeyDownPointerPositionHelper(event: PointerEvent): void {
212
+ this._currentPointerPosition = { x: event.pageX, y: event.pageY };
257
213
  }
258
214
 
259
- private onMouseDown(event: MouseEvent): void {
260
- if(this._systemInfo.isMobile === true) return;
261
- event.preventDefault();
262
- Object.values(this._domEventListeners).forEach(e => e.onMouseDown(event));
215
+ private onKeyUp(event: KeyboardEvent): void {
216
+ if (this._canvas === document.elementFromPoint(this._currentPointerPosition.x, this._currentPointerPosition.y))
217
+ Object.values(this._domEventListeners).forEach(e => e.onKeyUp(event));
263
218
  }
264
219
 
265
- private onMouseMove(event: MouseEvent): void {
266
- if(this._systemInfo.isMobile === true) return;
220
+ private onMouseWheel(event: Event): void {
267
221
  event.preventDefault();
268
- Object.values(this._domEventListeners).forEach(e => e.onMouseMove(event));
222
+ event.stopPropagation();
223
+ Object.values(this._domEventListeners).forEach(e => e.onMouseWheel(<WheelEvent>event));
269
224
  }
270
225
 
271
- private onMouseUp(event: MouseEvent): void {
272
- if(this._systemInfo.isMobile === true) return;
226
+ private onPointerDown(event: PointerEvent): void {
273
227
  event.preventDefault();
274
- Object.values(this._domEventListeners).forEach(e => e.onMouseUp(event));
275
- Object.values(this._domEventListeners).forEach(e => e.onMouseEnd(event));
228
+ Object.values(this._domEventListeners).forEach(e => e.onPointerDown(event));
276
229
  }
277
230
 
278
- private onMouseOut(event: MouseEvent): void {
279
- if(this._systemInfo.isMobile === true) return;
231
+ private onPointerMove(event: PointerEvent): void {
280
232
  event.preventDefault();
281
- Object.values(this._domEventListeners).forEach(e => e.onMouseOut(event));
282
- Object.values(this._domEventListeners).forEach(e => e.onMouseEnd(event));
233
+ Object.values(this._domEventListeners).forEach(e => e.onPointerMove(event));
283
234
  }
284
235
 
285
- private onMouseWheel(event: Event): void {
286
- if(this._systemInfo.isMobile === true) return;
236
+ private onPointerOut(event: PointerEvent): void {
287
237
  event.preventDefault();
288
- event.stopPropagation();
289
- Object.values(this._domEventListeners).forEach(e => e.onMouseWheel(<WheelEvent>event));
238
+ Object.values(this._domEventListeners).forEach(e => e.onPointerOut(event));
239
+ Object.values(this._domEventListeners).forEach(e => e.onPointerEnd(event));
290
240
  }
291
241
 
292
- private onTouchUp(event: TouchEvent): void {
293
- if (event.composedPath().includes(this._canvas.parentElement!)) {
294
- event.stopPropagation();
295
- Object.values(this._domEventListeners).forEach(e => e.onTouchUp(event));
296
- Object.values(this._domEventListeners).forEach(e => e.onTouchEnd(event));
297
- }
242
+ private onPointerUp(event: PointerEvent): void {
243
+ event.preventDefault();
244
+ Object.values(this._domEventListeners).forEach(e => e.onPointerUp(event));
245
+ Object.values(this._domEventListeners).forEach(e => e.onPointerEnd(event));
298
246
  }
299
247
 
300
- private onTouchCancel(event: TouchEvent): void {
301
- if (event.composedPath().includes(this._canvas.parentElement!)) {
302
- event.stopPropagation();
303
- Object.values(this._domEventListeners).forEach(e => e.onTouchCancel(event));
304
- Object.values(this._domEventListeners).forEach(e => e.onTouchEnd(event));
305
- }
306
- }
248
+ private removeEventListeners() {
249
+ if (typeof window === undefined) return;
307
250
 
308
- private onTouchMove(event: TouchEvent): void {
309
- if (event.composedPath().includes(this._canvas.parentElement!)) {
310
- event.stopPropagation();
311
- Object.values(this._domEventListeners).forEach(e => e.onTouchMove(event))
312
- }
313
- }
251
+ this._canvas.removeEventListener('mousewheel', this._onMouseWheel);
252
+ this._canvas.removeEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
314
253
 
315
- private onTouchStart(event: TouchEvent): void {
316
- if (event.composedPath().includes(this._canvas.parentElement!)) {
317
- event.stopPropagation();
318
- Object.values(this._domEventListeners).forEach(e => e.onTouchStart(event));
319
- }
320
- }
254
+ this._canvas.removeEventListener('pointerdown', this._onPointerDown);
255
+ this._canvas.removeEventListener('pointermove', this._onPointerMove);
256
+ this._canvas.removeEventListener('pointerup', this._onPointerUp);
257
+ this._canvas.removeEventListener('pointerout', this._onPointerOut);
321
258
 
322
- private removeEventListeners() {
323
- this._canvas.removeEventListener("mousewheel", this._onMouseWheel);
324
- this._canvas.removeEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
325
-
326
- this._canvas.removeEventListener("mousedown", this._onMouseDown);
327
- this._canvas.removeEventListener("mousemove", this._onMouseMove);
328
- this._canvas.removeEventListener("mouseup", this._onMouseUp);
329
- this._canvas.removeEventListener("mouseout", this._onMouseOut);
330
-
331
- window.removeEventListener("touchstart", this._onTouchStart);
332
- window.removeEventListener("touchmove", this._onTouchMove);
333
- window.removeEventListener("touchend", this._onTouchUp);
334
- window.removeEventListener("touchcancel", this._onTouchCancel);
335
-
336
- window.removeEventListener("keydown", this._onKeyDown);
337
- window.removeEventListener("mousemove", this._onKeyDownMousePositionHelper);
338
- this._canvas.removeEventListener("contextmenu", this._onContextMenu);
259
+ window.removeEventListener('keydown', this._onKeyDown);
260
+ window.removeEventListener('keyup', this._onKeyUp);
261
+ window.removeEventListener('pointermove', this._onKeyDownPointerPositionHelper);
262
+ this._canvas.removeEventListener('contextmenu', this._onContextMenu);
339
263
  }
340
264
 
341
- // #endregion Private Methods (12)
265
+ // #endregion Private Methods (11)
342
266
  }
@@ -1,14 +1,14 @@
1
1
  export interface IDomEventListener {
2
+ // #region Public Methods (8)
3
+
2
4
  onKeyDown(event: KeyboardEvent): void;
3
- onMouseDown(event: MouseEvent): void;
4
- onMouseMove(event: MouseEvent): void;
5
- onMouseEnd(event: MouseEvent): void;
6
- onMouseUp(event: MouseEvent): void;
7
- onMouseOut(event: MouseEvent): void;
5
+ onKeyUp(event: KeyboardEvent): void;
8
6
  onMouseWheel(event: WheelEvent): void;
9
- onTouchEnd(event: TouchEvent): void;
10
- onTouchUp(event: TouchEvent): void;
11
- onTouchCancel(event: TouchEvent): void;
12
- onTouchMove(event: TouchEvent): void;
13
- onTouchStart(event: TouchEvent): void;
7
+ onPointerDown(event: PointerEvent): void;
8
+ onPointerEnd(event: PointerEvent): void;
9
+ onPointerMove(event: PointerEvent): void;
10
+ onPointerOut(event: PointerEvent): void;
11
+ onPointerUp(event: PointerEvent): void;
12
+
13
+ // #endregion Public Methods (8)
14
14
  }