1/*! lg-fullscreen - v1.0.0 - 2016-09-20 2* http://sachinchoolur.github.io/lightGallery 3* Copyright (c) 2016 Sachin N; Licensed GPLv3 */ 4 5(function (root, factory) { 6 if (typeof define === 'function' && define.amd) { 7 // AMD. Register as an anonymous module unless amdModuleId is set 8 define([], function () { 9 return (factory()); 10 }); 11 } else if (typeof exports === 'object') { 12 // Node. Does not work with strict CommonJS, but 13 // only CommonJS-like environments that support module.exports, 14 // like Node. 15 module.exports = factory(); 16 } else { 17 factory(); 18 } 19}(this, function () { 20 21(function($, window, document, undefined) { 22 23 'use strict'; 24 25 var defaults = { 26 fullScreen: true 27 }; 28 29 var Fullscreen = function(element) { 30 31 // get lightGallery core plugin data 32 this.core = $(element).data('lightGallery'); 33 34 this.$el = $(element); 35 36 // extend module defalut settings with lightGallery core settings 37 this.core.s = $.extend({}, defaults, this.core.s); 38 39 this.init(); 40 41 return this; 42 }; 43 44 Fullscreen.prototype.init = function() { 45 var fullScreen = ''; 46 if (this.core.s.fullScreen) { 47 48 // check for fullscreen browser support 49 if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled && 50 !document.mozFullScreenEnabled && !document.msFullscreenEnabled) { 51 return; 52 } else { 53 fullScreen = '<span class="lg-fullscreen lg-icon"></span>'; 54 this.core.$outer.find('.lg-toolbar').append(fullScreen); 55 this.fullScreen(); 56 } 57 } 58 }; 59 60 Fullscreen.prototype.requestFullscreen = function() { 61 var el = document.documentElement; 62 if (el.requestFullscreen) { 63 el.requestFullscreen(); 64 } else if (el.msRequestFullscreen) { 65 el.msRequestFullscreen(); 66 } else if (el.mozRequestFullScreen) { 67 el.mozRequestFullScreen(); 68 } else if (el.webkitRequestFullscreen) { 69 el.webkitRequestFullscreen(); 70 } 71 }; 72 73 Fullscreen.prototype.exitFullscreen = function() { 74 if (document.exitFullscreen) { 75 document.exitFullscreen(); 76 } else if (document.msExitFullscreen) { 77 document.msExitFullscreen(); 78 } else if (document.mozCancelFullScreen) { 79 document.mozCancelFullScreen(); 80 } else if (document.webkitExitFullscreen) { 81 document.webkitExitFullscreen(); 82 } 83 }; 84 85 // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode 86 Fullscreen.prototype.fullScreen = function() { 87 var _this = this; 88 89 $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() { 90 _this.core.$outer.toggleClass('lg-fullscreen-on'); 91 }); 92 93 this.core.$outer.find('.lg-fullscreen').on('click.lg', function() { 94 if (!document.fullscreenElement && 95 !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { 96 _this.requestFullscreen(); 97 } else { 98 _this.exitFullscreen(); 99 } 100 }); 101 102 }; 103 104 Fullscreen.prototype.destroy = function() { 105 106 // exit from fullscreen if activated 107 this.exitFullscreen(); 108 109 $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg'); 110 }; 111 112 $.fn.lightGallery.modules.fullscreen = Fullscreen; 113 114})(jQuery, window, document); 115 116})); 117