Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/core/Fullscreen.js
- This file was added.
/** | |||||
* @requires javelin-install | |||||
* javelin-dom | |||||
* javelin-stratcom | |||||
* javelin-util | |||||
* @provides phabricator-fullscreen | |||||
* @javelin | |||||
*/ | |||||
JX.install('Fullscreen', { | |||||
statics: { | |||||
_element: null, | |||||
_installed: false, | |||||
isAvailable: function() { | |||||
var self = JX.Fullscreen; | |||||
return !!self._getStartFunction(document.documentElement); | |||||
}, | |||||
isFullscreen: function() { | |||||
var self = JX.Fullscreen; | |||||
return !!self._element; | |||||
}, | |||||
startFullscreen: function(node) { | |||||
var self = JX.Fullscreen; | |||||
if (!self.isAvailable()) { | |||||
return; | |||||
} | |||||
if (self._element) { | |||||
return; | |||||
} | |||||
if (!self._installed) { | |||||
self._install(); | |||||
self._installed = true; | |||||
} | |||||
self._element = node; | |||||
JX.DOM.alterClass(self._element, 'jx-fullscreen', true); | |||||
self._getStartFunction(node)(); | |||||
}, | |||||
stopFullscreen: function() { | |||||
var self = JX.Fullscreen; | |||||
if (!self._element) { | |||||
return; | |||||
} | |||||
JX.DOM.alterClass(self._element, 'jx-fullscreen', false); | |||||
self._element = null; | |||||
var fn = document.exitFullscreen || | |||||
document.msExitFullscreen || | |||||
document.mozCancelFullScreen || | |||||
document.webkitRequestFullscreen; | |||||
fn.call(document); | |||||
}, | |||||
_install: function() { | |||||
var self = JX.Fullscreen; | |||||
JX.Stratcom.listen('keydown', null, self._onkey); | |||||
}, | |||||
_getStartFunction: function(node) { | |||||
var fn = node.requestFullscreen || | |||||
node.msRequestFullscreen || | |||||
node.mozRequestFullScreen || | |||||
node.webkitRequestFullscreen; | |||||
if (!fn) { | |||||
return null; | |||||
} | |||||
return JX.bind(node, fn); | |||||
}, | |||||
_onkey: function(e) { | |||||
var self = JX.Fullscreen; | |||||
if (!self.isFullscreen()) { | |||||
return; | |||||
} | |||||
if (e.getSpecialKey() != 'esc') { | |||||
return; | |||||
} | |||||
self.stopFullscreen(); | |||||
e.kill(); | |||||
} | |||||
} | |||||
}); |