snappymail/vendors/lightgallery/dist/js/lg-fullscreen.js

101 lines
3.2 KiB
JavaScript
Raw Normal View History

2020-03-11 21:17:52 +08:00
/*! lightgallery - v1.2.21 - 2016-06-28
* http://sachinchoolur.github.io/lightGallery/
* Copyright (c) 2016 Sachin N; Licensed Apache 2.0 */
2020-08-13 19:16:08 +08:00
(($, document) => {
2020-03-11 21:17:52 +08:00
'use strict';
var defaults = {
fullScreen: true
};
2020-08-13 19:16:08 +08:00
class Fullscreen
{
constructor(element) {
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
// get lightGallery core plugin data
this.core = $(element).data('lightGallery');
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
this.$el = $(element);
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
// extend module defalut settings with lightGallery core settings
this.core.s = $.extend({}, defaults, this.core.s);
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
this.init();
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
return this;
}
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
init() {
var fullScreen = '';
if (this.core.s.fullScreen) {
// check for fullscreen browser support
if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&
!document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
return;
} else {
fullScreen = '<span class="lg-fullscreen lg-icon"></span>';
this.core.$outer.find('.lg-toolbar').append(fullScreen);
this.fullScreen();
}
2020-03-11 21:17:52 +08:00
}
}
2020-08-13 19:16:08 +08:00
requestFullscreen() {
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();
}
2020-03-11 21:17:52 +08:00
}
2020-08-13 19:16:08 +08:00
exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
2020-03-11 21:17:52 +08:00
}
2020-08-13 19:16:08 +08:00
// https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
fullScreen() {
var _this = this;
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
$(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', () =>
_this.core.$outer.toggleClass('lg-fullscreen-on')
);
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
this.core.$outer.find('.lg-fullscreen').on('click.lg', () => {
if (!document.fullscreenElement &&
!document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {
_this.requestFullscreen();
} else {
_this.exitFullscreen();
}
});
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
}
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
destroy() {
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
// exit from fullscreen if activated
this.exitFullscreen();
2020-03-11 21:17:52 +08:00
2020-08-13 19:16:08 +08:00
$(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
}
}
2020-03-11 21:17:52 +08:00
$.fn.lightGallery.modules.fullscreen = Fullscreen;
2020-08-13 19:16:08 +08:00
})(jQuery, document);