|
@@ -41,7 +41,7 @@ export type ViewportContainer = HTMLDivElement;
|
41
|
41
|
type ViewportSizeGetter = () => SpeedySize;
|
42
|
42
|
|
43
|
43
|
/** All possible event types emitted by a Viewport */
|
44
|
|
-type ViewportEventType = 'resize';
|
|
44
|
+type ViewportEventType = 'resize' | 'fullscreenchange';
|
45
|
45
|
|
46
|
46
|
/** An event emitted by a Viewport */
|
47
|
47
|
class ViewportEvent extends AREvent<ViewportEventType> { }
|
|
@@ -306,12 +306,18 @@ class ViewportCanvases
|
306
|
306
|
*/
|
307
|
307
|
class ViewportFullscreenHelper
|
308
|
308
|
{
|
|
309
|
+ /** The container to be put in fullscreen */
|
|
310
|
+ private readonly _container: HTMLElement;
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
309
|
314
|
/**
|
310
|
315
|
* Constructor
|
311
|
|
- * @param _container the container which will be put in fullscreen
|
|
316
|
+ * @param _viewport Viewport
|
312
|
317
|
*/
|
313
|
|
- constructor(private readonly _container: HTMLElement)
|
|
318
|
+ constructor(private readonly _viewport: Viewport)
|
314
|
319
|
{
|
|
320
|
+ this._container = _viewport.container;
|
315
|
321
|
}
|
316
|
322
|
|
317
|
323
|
/**
|
|
@@ -342,6 +348,7 @@ class ViewportFullscreenHelper
|
342
|
348
|
if(container === (document as any).webkitFullscreenElement) {
|
343
|
349
|
Utils.log('Entering fullscreen mode...');
|
344
|
350
|
resolve();
|
|
351
|
+ this._triggerEvent();
|
345
|
352
|
}
|
346
|
353
|
else
|
347
|
354
|
reject(new TypeError());
|
|
@@ -360,6 +367,7 @@ class ViewportFullscreenHelper
|
360
|
367
|
}).then(() => {
|
361
|
368
|
Utils.log('Entering fullscreen mode...');
|
362
|
369
|
resolve();
|
|
370
|
+ this._triggerEvent();
|
363
|
371
|
}, reject);
|
364
|
372
|
});
|
365
|
373
|
}
|
|
@@ -387,6 +395,7 @@ class ViewportFullscreenHelper
|
387
|
395
|
if(doc.webkitFullscreenElement === null) {
|
388
|
396
|
Utils.log('Exiting fullscreen mode...');
|
389
|
397
|
resolve();
|
|
398
|
+ this._triggerEvent();
|
390
|
399
|
}
|
391
|
400
|
else
|
392
|
401
|
reject(new TypeError());
|
|
@@ -403,6 +412,7 @@ class ViewportFullscreenHelper
|
403
|
412
|
document.exitFullscreen().then(() => {
|
404
|
413
|
Utils.log('Exiting fullscreen mode...');
|
405
|
414
|
resolve();
|
|
415
|
+ this._triggerEvent();
|
406
|
416
|
}, reject);
|
407
|
417
|
});
|
408
|
418
|
}
|
|
@@ -430,6 +440,15 @@ class ViewportFullscreenHelper
|
430
|
440
|
else
|
431
|
441
|
return false;
|
432
|
442
|
}
|
|
443
|
+
|
|
444
|
+ /**
|
|
445
|
+ * Trigger a fullscreenchange event
|
|
446
|
+ */
|
|
447
|
+ _triggerEvent(): void
|
|
448
|
+ {
|
|
449
|
+ const event = new ViewportEvent('fullscreenchange');
|
|
450
|
+ this._viewport.dispatchEvent(event);
|
|
451
|
+ }
|
433
|
452
|
}
|
434
|
453
|
|
435
|
454
|
|
|
@@ -794,7 +813,7 @@ export class Viewport extends ViewportEventTarget
|
794
|
813
|
this._resizer = new ViewportResizer(this);
|
795
|
814
|
this._resizer.setStrategyByName(this._style);
|
796
|
815
|
|
797
|
|
- this._fullscreen = new ViewportFullscreenHelper(this.container);
|
|
816
|
+ this._fullscreen = new ViewportFullscreenHelper(this);
|
798
|
817
|
}
|
799
|
818
|
|
800
|
819
|
/**
|