123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*! lg-fullscreen - v1.0.0 - 2016-09-20
- * http://sachinchoolur.github.io/lightGallery
- * Copyright (c) 2016 Sachin N; Licensed GPLv3 */
- (function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Register as an anonymous module unless amdModuleId is set
- define([], function () {
- return (factory());
- });
- } else if (typeof exports === 'object') {
- // Node. Does not work with strict CommonJS, but
- // only CommonJS-like environments that support module.exports,
- // like Node.
- module.exports = factory();
- } else {
- factory();
- }
- }(this, function () {
- (function($, window, document, undefined) {
- 'use strict';
- var defaults = {
- fullScreen: true
- };
- 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 = '<span class="lg-fullscreen lg-icon"></span>';
- 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 (!document.fullscreenElement &&
- !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {
- _this.requestFullscreen();
- } else {
- _this.exitFullscreen();
- }
- });
- };
- Fullscreen.prototype.destroy = function() {
- // exit from fullscreen if activated
- this.exitFullscreen();
- $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
- };
- $.fn.lightGallery.modules.fullscreen = Fullscreen;
- })(jQuery, window, document);
- }));
|