From c3782f78b0ee05e15b7e62db5d41d08293ef594c Mon Sep 17 00:00:00 2001 From: RawKStar77 Date: Mon, 11 Nov 2013 18:22:27 -0800 Subject: [PATCH] Adds fullscreen support to Epub.js controls via screenfull.js. --- Gruntfile.js | 6 ++++-- build/libs/screenfull.min.js | 7 +++++++ build/reader.js | 9 ++++++++- demo/css/main.css | 3 --- demo/dev.html | 21 +++++++++++++-------- demo/img/cancelfullscreen.png | Bin 0 -> 246 bytes demo/img/fullscreen.png | Bin 0 -> 220 bytes demo/index.html | 11 ++++++++--- demo/js/libs/screenfull.min.js | 7 +++++++ demo/js/reader.min.js | 2 +- libs/screenfull.min.js | 7 +++++++ reader/app.js | 9 ++++++++- 12 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 build/libs/screenfull.min.js create mode 100644 demo/img/cancelfullscreen.png create mode 100644 demo/img/fullscreen.png create mode 100644 demo/js/libs/screenfull.min.js create mode 100644 libs/screenfull.min.js diff --git a/Gruntfile.js b/Gruntfile.js index 46f6b84..f3260c2 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,7 +14,8 @@ module.exports = function(grunt) { 'demo/js/libs/fileStorage.min.js': 'libs/fileStorage/fileStorage.min.js', 'demo/js/libs/loader_filesystem.min.js': 'libs/fileStorage/workers/loader_filesystem.min.js', 'demo/js/libs/jquery-1.9.0.min.js': 'libs/jquery/jquery-1.9.0.min.js', - 'demo/js/libs/inflate.js': 'libs/zip/inflate.js' + 'demo/js/libs/inflate.js': 'libs/zip/inflate.js', + 'demo/js/libs/screenfull.min.js': 'libs/screenfull.min.js' }, uglify: { options: { @@ -30,7 +31,8 @@ module.exports = function(grunt) { 'demo/js/libs/zip.min.js': ['libs/zip/zip.js', 'libs/zip/zip-fs.js', 'libs/zip/zip-ext.js', 'libs/zip/mime-types.js'], 'demo/js/libs/inflate.min.js': ['libs/zip/inflate.js'], 'build/libs/zip.min.js': ['libs/zip/zip.js', 'libs/zip/zip-fs.js', 'libs/zip/zip-ext.js', 'libs/zip/mime-types.js'], - 'build/libs/inflate.js': ['libs/zip/inflate.js'] + 'build/libs/inflate.js': ['libs/zip/inflate.js'], + 'build/libs/screenfull.min.js': ['libs/screenfull.min.js'] } } } diff --git a/build/libs/screenfull.min.js b/build/libs/screenfull.min.js new file mode 100644 index 0000000..6f5eaf3 --- /dev/null +++ b/build/libs/screenfull.min.js @@ -0,0 +1,7 @@ +/*! +* screenfull +* v1.1.0 - 2013-09-06 +* https://github.com/sindresorhus/screenfull.js +* (c) Sindre Sorhus; MIT License +*/ +!function(a,b){"use strict";var c="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,d=function(){for(var a,c,d=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenchange","MSFullscreenerror"]],e=0,f=d.length,g={};f>e;e++)if(a=d[e],a&&a[1]in b){for(e=0,c=a.length;c>e;e++)g[d[0][e]]=a[e];return g}return!1}(),e={request:function(a){var e=d.requestFullscreen;a=a||b.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[e]():a[e](c&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){b[d.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){},onerror:function(){},raw:d};return d?(Object.defineProperties(e,{isFullscreen:{get:function(){return!!b[d.fullscreenElement]}},element:{enumerable:!0,get:function(){return b[d.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return!!b[d.fullscreenEnabled]}}}),b.addEventListener(d.fullscreenchange,function(a){e.onchange.call(e,a)}),b.addEventListener(d.fullscreenerror,function(a){e.onerror.call(e,a)}),a.screenfull=e,void 0):(a.screenfull=!1,void 0)}(window,document); \ No newline at end of file diff --git a/build/reader.js b/build/reader.js index 998f97a..6639afa 100644 --- a/build/reader.js +++ b/build/reader.js @@ -273,6 +273,9 @@ EPUBJSR.app.init = (function($){ $settingLink = $("#setting"), $settings = $("#settingsPanel"), $toc = $("#toc"), + $fullscreen = $("#fullscreen"), + $fullscreenicon = $("#fullscreenicon"), + $cancelfullscreenicon = $("#cancelfullscreenicon"), $window = $(window); @@ -302,7 +305,11 @@ EPUBJSR.app.init = (function($){ }); - + $fullscreen.on("click", function () { + screenfull.toggle($('#container')[0]); + $fullscreenicon.toggle(); + $cancelfullscreenicon.toggle(); + }); var lock = false; $(document).keydown(function(e){ diff --git a/demo/css/main.css b/demo/css/main.css index b3e6071..41582fc 100755 --- a/demo/css/main.css +++ b/demo/css/main.css @@ -377,6 +377,3 @@ input:-moz-placeholder { webkit-padding-start:; } } - - - diff --git a/demo/dev.html b/demo/dev.html index 7cacfc4..f848470 100755 --- a/demo/dev.html +++ b/demo/dev.html @@ -15,18 +15,19 @@ --> + + +
diff --git a/demo/js/libs/screenfull.min.js b/demo/js/libs/screenfull.min.js new file mode 100644 index 0000000..6f5eaf3 --- /dev/null +++ b/demo/js/libs/screenfull.min.js @@ -0,0 +1,7 @@ +/*! +* screenfull +* v1.1.0 - 2013-09-06 +* https://github.com/sindresorhus/screenfull.js +* (c) Sindre Sorhus; MIT License +*/ +!function(a,b){"use strict";var c="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,d=function(){for(var a,c,d=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenchange","MSFullscreenerror"]],e=0,f=d.length,g={};f>e;e++)if(a=d[e],a&&a[1]in b){for(e=0,c=a.length;c>e;e++)g[d[0][e]]=a[e];return g}return!1}(),e={request:function(a){var e=d.requestFullscreen;a=a||b.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[e]():a[e](c&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){b[d.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){},onerror:function(){},raw:d};return d?(Object.defineProperties(e,{isFullscreen:{get:function(){return!!b[d.fullscreenElement]}},element:{enumerable:!0,get:function(){return b[d.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return!!b[d.fullscreenEnabled]}}}),b.addEventListener(d.fullscreenchange,function(a){e.onchange.call(e,a)}),b.addEventListener(d.fullscreenerror,function(a){e.onerror.call(e,a)}),a.screenfull=e,void 0):(a.screenfull=!1,void 0)}(window,document); \ No newline at end of file diff --git a/demo/js/reader.min.js b/demo/js/reader.min.js index de5028d..c55c41e 100644 --- a/demo/js/reader.min.js +++ b/demo/js/reader.min.js @@ -1 +1 @@ -var EPUBJSR=EPUBJSR||{};EPUBJSR.app={},EPUBJSR.app.init=function(a){"use strict";function b(b){var e=window.location.search.match(/book=(.*)/),b=b||(e?e[1]:"moby-dick");return k=a(window).width(),k>550?a("#main").width(k-m):a("#main").width(k),j=new EPUBJS.Book({bookPath:b,restore:!0}),j.on("book:online",g),j.on("book:offline",h),j.getMetadata().then(c),j.getToc().then(d),j.ready.all.then(f),j.renderTo("area"),a(function(){i()}),j}function c(b){var c=b.bookTitle,d=b.creator,e=a("#book-title"),f=a("#chapter-title"),g=a("#title-seperator");document.title=c+" – "+d,e.html(c),f.html(d),g.show()}function d(b){var c,d,f=a("#toc");f.empty(),d=e(b,1),f.append(d),c=a(".toc_link"),c.on("click",function(b){var c=a(this),d=c.data("url");a(".openChapter").removeClass("openChapter"),c.parents("li").addClass("openChapter"),j.goto(d),b.preventDefault()})}function e(b,c){var d=a("