-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
121 lines (121 loc) · 3.5 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("es6-promise/auto");
/**
* switch target DOMElement to fullscreen mode.
* @param element {Element} DOMElement that you want to make fullscreen.
*/
function toggleFullscreen(element, callback) {
if (callback && typeof callback === 'function') {
if (!isFullscreen()) {
var fn = function (e) {
if (isFullscreen()) {
callback(true);
}
else {
callback(false);
}
};
fullscreenChange(fn);
enterFullscreen(element);
}
else {
exitFullscreen();
callback(false);
}
return Promise.resolve();
}
return new Promise(function (resolve) {
if (!isFullscreen()) {
enterFullscreen(element);
}
else {
exitFullscreen();
}
resolve();
});
/**
* enter fullscreen mode.
* @param {Element} element
*/
function enterFullscreen(element) {
var userAgent = navigator.userAgent.toLowerCase();
if (element.requestFullscreen) {
element.requestFullscreen();
}
else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
else if (element.mozRequestFullScreen) {
element.parentElement.mozRequestFullScreen();
}
else if (userAgent.indexOf('edge') != -1) {
element.parentElement.webkitRequestFullscreen();
}
else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
}
}
/**
* exit fullscreen mode.
*/
function exitFullscreen() {
var _doument = document;
if (document.exitFullscreen) {
document.exitFullscreen();
}
else if (_doument.msExitFullscreen) {
_doument.msExitFullscreen();
}
else if (_doument.mozCancelFullScreen) {
_doument.mozCancelFullScreen();
}
else if (_doument.webkitExitFullscreen) {
_doument.webkitExitFullscreen();
}
}
}
exports.default = toggleFullscreen;
/**
* check if fullscreen or not.
* @returns {boolean}
*/
function isFullscreen() {
var _document = document;
if (!_document.fullscreenElement &&
!_document.mozFullScreenElement &&
!_document.webkitFullscreenElement &&
!_document.msFullscreenElement) {
return false;
}
return true;
}
exports.isFullscreen = isFullscreen;
/**
* add eventListener 'fullscreenchange'
* @param callback
* @return {Promise}
*/
function fullscreenChange(callback) {
var _document = document;
return new Promise(function (resolve, reject) {
if (document.fullscreenEnabled) {
document.addEventListener('fullscreenchange', callback);
}
else if (_document.mozFullScreenEnabled) {
_document.addEventListener('mozfullscreenchange', callback);
}
else if (_document.webkitFullscreenEnabled) {
_document.addEventListener('webkitfullscreenchange', callback); //Safari
_document.addEventListener('fullscreenChange', callback); // Edge
}
else if (_document.msFullscreenEnabled) {
_document.addEventListener('MSFullscreenChange', callback);
}
else {
reject();
}
resolve();
});
}
exports.fullscreenChange = fullscreenChange;