127 lines
3.8 KiB
JavaScript
127 lines
3.8 KiB
JavaScript
/*! lg-fullscreen - v1.2.1 - 2020-06-13
|
|
* http://sachinchoolur.github.io/lightGallery
|
|
* Copyright (c) 2020 Sachin N; Licensed GPLv3 */
|
|
|
|
(function (root, factory) {
|
|
if (typeof define === 'function' && define.amd) {
|
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
|
define(['jquery'], function (a0) {
|
|
return (factory(a0));
|
|
});
|
|
} else if (typeof module === 'object' && module.exports) {
|
|
// Node. Does not work with strict CommonJS, but
|
|
// only CommonJS-like environments that support module.exports,
|
|
// like Node.
|
|
module.exports = factory(require('jquery'));
|
|
} else {
|
|
factory(root["jQuery"]);
|
|
}
|
|
}(this, function ($) {
|
|
|
|
(function() {
|
|
|
|
'use strict';
|
|
|
|
var defaults = {
|
|
fullScreen: true
|
|
};
|
|
|
|
function isFullScreen() {
|
|
return (
|
|
document.fullscreenElement ||
|
|
document.mozFullScreenElement ||
|
|
document.webkitFullscreenElement ||
|
|
document.msFullscreenElement
|
|
);
|
|
}
|
|
|
|
var Fullscreen = function(element) {
|
|
|
|
// get lightGallery core plugin data
|
|
this.core = $(element).data('lightGallery');
|
|
|
|
this.$el = $(element);
|
|
|
|
// extend module defalut settings with lightGallery core settings
|
|
this.core.s = $.extend({}, defaults, this.core.s);
|
|
|
|
this.init();
|
|
|
|
return this;
|
|
};
|
|
|
|
Fullscreen.prototype.init = function() {
|
|
var fullScreen = '';
|
|
if (this.core.s.fullScreen) {
|
|
|
|
// check for fullscreen browser support
|
|
if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&
|
|
!document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
|
|
return;
|
|
} else {
|
|
fullScreen = '<button type="button" aria-label="Toggle fullscreen" class="lg-fullscreen lg-icon"></button>';
|
|
this.core.$outer.find('.lg-toolbar').append(fullScreen);
|
|
this.fullScreen();
|
|
}
|
|
}
|
|
};
|
|
|
|
Fullscreen.prototype.requestFullscreen = function() {
|
|
var el = document.documentElement;
|
|
if (el.requestFullscreen) {
|
|
el.requestFullscreen();
|
|
} else if (el.msRequestFullscreen) {
|
|
el.msRequestFullscreen();
|
|
} else if (el.mozRequestFullScreen) {
|
|
el.mozRequestFullScreen();
|
|
} else if (el.webkitRequestFullscreen) {
|
|
el.webkitRequestFullscreen();
|
|
}
|
|
};
|
|
|
|
Fullscreen.prototype.exitFullscreen = function() {
|
|
if (document.exitFullscreen) {
|
|
document.exitFullscreen();
|
|
} else if (document.msExitFullscreen) {
|
|
document.msExitFullscreen();
|
|
} else if (document.mozCancelFullScreen) {
|
|
document.mozCancelFullScreen();
|
|
} else if (document.webkitExitFullscreen) {
|
|
document.webkitExitFullscreen();
|
|
}
|
|
};
|
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
|
|
Fullscreen.prototype.fullScreen = function() {
|
|
var _this = this;
|
|
|
|
$(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {
|
|
_this.core.$outer.toggleClass('lg-fullscreen-on');
|
|
});
|
|
|
|
this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {
|
|
if (isFullScreen()) {
|
|
_this.exitFullscreen();
|
|
} else {
|
|
_this.requestFullscreen();
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
Fullscreen.prototype.destroy = function() {
|
|
|
|
// exit from fullscreen if activated
|
|
if(isFullScreen()) {
|
|
this.exitFullscreen();
|
|
}
|
|
|
|
$(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
|
|
};
|
|
|
|
$.fn.lightGallery.modules.fullscreen = Fullscreen;
|
|
|
|
})();
|
|
|
|
}));
|