|
@@ -312,18 +312,42 @@ class ViewportCanvases
|
312
|
312
|
*/
|
313
|
313
|
class ViewportFullscreenHelper
|
314
|
314
|
{
|
|
315
|
+ /** The viewport */
|
|
316
|
+ private readonly _viewport: Viewport;
|
|
317
|
+
|
315
|
318
|
/** The container to be put in fullscreen */
|
316
|
319
|
private readonly _container: HTMLElement;
|
317
|
320
|
|
|
321
|
+ /** Event handler */
|
|
322
|
+ private _boundEventHandler: EventListener;
|
|
323
|
+
|
318
|
324
|
|
319
|
325
|
|
320
|
326
|
/**
|
321
|
327
|
* Constructor
|
322
|
|
- * @param _viewport Viewport
|
|
328
|
+ * @param viewport Viewport
|
323
|
329
|
*/
|
324
|
|
- constructor(private readonly _viewport: Viewport)
|
|
330
|
+ constructor(viewport: Viewport)
|
325
|
331
|
{
|
326
|
|
- this._container = _viewport.container;
|
|
332
|
+ this._viewport = viewport;
|
|
333
|
+ this._container = viewport.container;
|
|
334
|
+ this._boundEventHandler = this._triggerEvent.bind(this);
|
|
335
|
+ }
|
|
336
|
+
|
|
337
|
+ /**
|
|
338
|
+ * Initialize
|
|
339
|
+ */
|
|
340
|
+ init(): void
|
|
341
|
+ {
|
|
342
|
+ this._container.addEventListener('fullscreenchange', this._boundEventHandler);
|
|
343
|
+ }
|
|
344
|
+
|
|
345
|
+ /**
|
|
346
|
+ * Release
|
|
347
|
+ */
|
|
348
|
+ release(): void
|
|
349
|
+ {
|
|
350
|
+ this._container.removeEventListener('fullscreenchange', this._boundEventHandler);
|
327
|
351
|
}
|
328
|
352
|
|
329
|
353
|
/**
|
|
@@ -354,7 +378,6 @@ class ViewportFullscreenHelper
|
354
|
378
|
if(container === (document as any).webkitFullscreenElement) {
|
355
|
379
|
Utils.log('Entering fullscreen mode...');
|
356
|
380
|
resolve();
|
357
|
|
- this._triggerEvent();
|
358
|
381
|
}
|
359
|
382
|
else
|
360
|
383
|
reject(new TypeError());
|
|
@@ -373,7 +396,6 @@ class ViewportFullscreenHelper
|
373
|
396
|
}).then(() => {
|
374
|
397
|
Utils.log('Entering fullscreen mode...');
|
375
|
398
|
resolve();
|
376
|
|
- this._triggerEvent();
|
377
|
399
|
}, reject);
|
378
|
400
|
});
|
379
|
401
|
}
|
|
@@ -401,7 +423,6 @@ class ViewportFullscreenHelper
|
401
|
423
|
if(doc.webkitFullscreenElement === null) {
|
402
|
424
|
Utils.log('Exiting fullscreen mode...');
|
403
|
425
|
resolve();
|
404
|
|
- this._triggerEvent();
|
405
|
426
|
}
|
406
|
427
|
else
|
407
|
428
|
reject(new TypeError());
|
|
@@ -418,7 +439,6 @@ class ViewportFullscreenHelper
|
418
|
439
|
document.exitFullscreen().then(() => {
|
419
|
440
|
Utils.log('Exiting fullscreen mode...');
|
420
|
441
|
resolve();
|
421
|
|
- this._triggerEvent();
|
422
|
442
|
}, reject);
|
423
|
443
|
});
|
424
|
444
|
}
|
|
@@ -988,6 +1008,7 @@ export class Viewport extends ViewportEventTarget
|
988
|
1008
|
this._hud._init(HUD_ZINDEX);
|
989
|
1009
|
this._canvases.init();
|
990
|
1010
|
this._resizer.init();
|
|
1011
|
+ this._fullscreen.init();
|
991
|
1012
|
this._fullscreenButton?.init();
|
992
|
1013
|
}
|
993
|
1014
|
|
|
@@ -997,10 +1018,11 @@ export class Viewport extends ViewportEventTarget
|
997
|
1018
|
*/
|
998
|
1019
|
_release(): void
|
999
|
1020
|
{
|
|
1021
|
+ this._fullscreenButton?.release();
|
|
1022
|
+ this._fullscreen.release();
|
1000
|
1023
|
this._resizer.release();
|
1001
|
1024
|
this._canvases.release();
|
1002
|
1025
|
this._hud._release();
|
1003
|
1026
|
this._containers.release();
|
1004
|
|
- this._fullscreenButton?.release();
|
1005
|
1027
|
}
|
1006
|
1028
|
}
|