Skip to content

Commit

Permalink
Version 1.0. Yeej!
Browse files Browse the repository at this point in the history
  • Loading branch information
sindresorhus committed May 2, 2012
1 parent 1913bb8 commit f770ce9
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 71 deletions.
160 changes: 93 additions & 67 deletions dist/screenfull.js
@@ -1,84 +1,110 @@
/*!
* screenfull.js
* v0.9.0 - 2012-04-19
* v1.0.0 - 2012-05-02
* https://github.com/sindresorhus/screenfull.js
* (c) Sindre Sorhus; MIT License
*/

/*global Element:true*/
/*global Element */
(function( window, document ) {
'use strict';

var methods = (function() {
var methodMap = [
[
'requestFullscreen',
'exitFullscreen',
'fullscreenchange',
'fullscreen',
'fullscreenElement'
],
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
'webkitfullscreenchange',
'webkitIsFullScreen',
'webkitCurrentFullScreenElement'
var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element, // IE6 throws without typeof check

fn = (function() {
var fnMap = [
[
'requestFullscreen',
'exitFullscreen',
'fullscreenchange',
'fullscreen',
'fullscreenElement',
'fullscreenerror'
],
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
'webkitfullscreenchange',
'webkitIsFullScreen',
'webkitCurrentFullScreenElement',
'webkitfullscreenerror'

],
[
'mozRequestFullScreen',
'mozCancelFullScreen',
'mozfullscreenchange',
'mozFullScreen',
'mozFullScreenElement',
'mozfullscreenerror'
],
],
[
'mozRequestFullScreen',
'mozCancelFullScreen',
'mozfullscreenchange',
'mozFullScreen',
'mozFullScreenElement'
]
];
for ( var i = 0, l = methodMap.length; i < l; i++ ) {
var val = methodMap[i];
if ( val[1] in document ) {
return val;
i = 0,
l = fnMap.length,
ret = {},
val,
valLength;

for ( ; i < l; i++ ) {
val = fnMap[ i ];
if ( val && val[1] in document ) {
for ( i = 0, valLength = val.length; i < valLength; i++ ) {
ret[ fnMap[0][ i ] ] = val[ i ];
}
return ret;
}
}
}
})();
return false;
})(),

screenfull = {
isFullscreen: document[ fn.fullscreen ],
element: document[ fn.fullscreenElement ],

request: function( elem ) {
var request = fn.requestFullscreen;

elem = elem || document.documentElement;
elem[ request ]( keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT );

if ( !methods ) {
return window.screenfull = false;
// Work around Safari 5.1 bug: reports support for
// keyboard in fullscreen even though it doesn't.
if ( !document.isFullscreen ) {
elem[ request ]();
}
},

exit: function() {
document[ fn.exitFullscreen ]();
},

toggle: function( elem ) {
if ( this.isFullscreen ) {
this.exit();
} else {
this.request( elem );
}
},

onchange: function() {},
onerror: function() {}
};

if ( !fn ) {
window.screenfull = null;
return;
}

var keyboardAllowed = 'ALLOW_KEYBOARD_INPUT' in Element;

var screenfull = {
init: function() {
document.addEventListener( methods[2], function(e) {
screenfull.isFullscreen = document[ methods[3] ];
screenfull.element = document[ methods[4] ];
screenfull.onchange(e);
});
return this;
},
isFullscreen: document[ methods[3] ],
element: document[ methods[4] ],
request: function( elem ) {
elem = elem || document.documentElement;
elem[ methods[0] ]( keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT );
// Work around Safari 5.1 bug: reports support for keyboard in fullscreen even though it doesn't.
if ( !document.isFullscreen ) {
elem[ methods[0] ]();
}
},
exit: function() {
document[ methods[1] ]();
},
toggle: function( elem ) {
if ( this.isFullscreen ) {
this.exit();
} else {
this.request( elem );
}
},
onchange: function() {}
};
document.addEventListener( fn.fullscreenchange, function( e ) {
screenfull.isFullscreen = document[ fn.fullscreen ];
screenfull.element = document[ fn.fullscreenElement ];
screenfull.onchange.call( screenfull, e );
});

document.addEventListener( fn.fullscreenerror, function( e ) {
screenfull.onerror.call( screenfull, e );
});

window.screenfull = screenfull.init();
window.screenfull = screenfull;

})( window, document );
4 changes: 2 additions & 2 deletions dist/screenfull.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "screenfull.js",
"version": "0.9.0",
"version": "1.0.0",
"description": "Simple wrapper for cross-browser usage of the Fullscreen API",
"keywords": [
"fullscreen"
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Expand Up @@ -8,7 +8,7 @@ Simple wrapper for cross-browser usage of the JavaScript [Fullscreen API](https:

## Download

Only 578 bytes gzipped (1321 bytes minified)
Only 608 bytes gzipped (1380 bytes minified)

Download the [production version][min] or the [development version][max].

Expand Down

0 comments on commit f770ce9

Please sign in to comment.