File manager - Edit - /home/autoph/public_html/tasks/ekko-lightbox.tar
Back
ekko-lightbox.js 0000644 00000060561 15024757010 0007662 0 ustar 00 /*! * Lightbox for Bootstrap by @ashleydw * https://github.com/ashleydw/lightbox * * License: https://github.com/ashleydw/lightbox/blob/master/LICENSE */ +function ($) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var Lightbox = (function ($) { var NAME = 'ekkoLightbox'; var JQUERY_NO_CONFLICT = $.fn[NAME]; var Default = { title: '', footer: '', maxWidth: 9999, maxHeight: 9999, showArrows: true, //display the left / right arrows or not wrapping: true, //if true, gallery loops infinitely type: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it alwaysShowClose: false, //always show the close button, even if there is no title loadingMessage: '<div class="ekko-lightbox-loader"><div><div></div><div></div></div></div>', // http://tobiasahlin.com/spinkit/ leftArrow: '<span>❮</span>', rightArrow: '<span>❯</span>', strings: { close: 'Close', fail: 'Failed to load image:', type: 'Could not detect remote target type. Force the type using data-type' }, doc: document, // if in an iframe can specify top.document onShow: function onShow() {}, onShown: function onShown() {}, onHide: function onHide() {}, onHidden: function onHidden() {}, onNavigate: function onNavigate() {}, onContentLoaded: function onContentLoaded() {} }; var Lightbox = (function () { _createClass(Lightbox, null, [{ key: 'Default', /** Class properties: _$element: null -> the <a> element currently being displayed _$modal: The bootstrap modal generated _$modalDialog: The .modal-dialog _$modalContent: The .modal-content _$modalBody: The .modal-body _$modalHeader: The .modal-header _$modalFooter: The .modal-footer _$lightboxContainerOne: Container of the first lightbox element _$lightboxContainerTwo: Container of the second lightbox element _$lightboxBody: First element in the container _$modalArrows: The overlayed arrows container _$galleryItems: Other <a>'s available for this gallery _galleryName: Name of the current data('gallery') showing _galleryIndex: The current index of the _$galleryItems being shown _config: {} the options for the modal _modalId: unique id for the current lightbox _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content */ get: function get() { return Default; } }]); function Lightbox($element, config) { var _this = this; _classCallCheck(this, Lightbox); this._config = $.extend({}, Default, config); this._$modalArrows = null; this._galleryIndex = 0; this._galleryName = null; this._padding = null; this._border = null; this._titleIsShown = false; this._footerIsShown = false; this._wantedWidth = 0; this._wantedHeight = 0; this._touchstartX = 0; this._touchendX = 0; this._modalId = 'ekkoLightbox-' + Math.floor(Math.random() * 1000 + 1); this._$element = $element instanceof jQuery ? $element : $($element); this._isBootstrap3 = $.fn.modal.Constructor.VERSION[0] == 3; var h4 = '<h4 class="modal-title">' + (this._config.title || " ") + '</h4>'; var btn = '<button type="button" class="close" data-dismiss="modal" aria-label="' + this._config.strings.close + '"><span aria-hidden="true">×</span></button>'; var header = '<div class="modal-header' + (this._config.title || this._config.alwaysShowClose ? '' : ' hide') + '">' + (this._isBootstrap3 ? btn + h4 : h4 + btn) + '</div>'; var footer = '<div class="modal-footer' + (this._config.footer ? '' : ' hide') + '">' + (this._config.footer || " ") + '</div>'; var body = '<div class="modal-body"><div class="ekko-lightbox-container"><div class="ekko-lightbox-item fade in show"></div><div class="ekko-lightbox-item fade"></div></div></div>'; var dialog = '<div class="modal-dialog" role="document"><div class="modal-content">' + header + body + footer + '</div></div>'; $(this._config.doc.body).append('<div id="' + this._modalId + '" class="ekko-lightbox modal fade" tabindex="-1" tabindex="-1" role="dialog" aria-hidden="true">' + dialog + '</div>'); this._$modal = $('#' + this._modalId, this._config.doc); this._$modalDialog = this._$modal.find('.modal-dialog').first(); this._$modalContent = this._$modal.find('.modal-content').first(); this._$modalBody = this._$modal.find('.modal-body').first(); this._$modalHeader = this._$modal.find('.modal-header').first(); this._$modalFooter = this._$modal.find('.modal-footer').first(); this._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first(); this._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first(); this._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first(); this._border = this._calculateBorders(); this._padding = this._calculatePadding(); this._galleryName = this._$element.data('gallery'); if (this._galleryName) { this._$galleryItems = $(document.body).find('*[data-gallery="' + this._galleryName + '"]'); this._galleryIndex = this._$galleryItems.index(this._$element); $(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this)); // add the directional arrows to the modal if (this._config.showArrows && this._$galleryItems.length > 1) { this._$lightboxContainer.append('<div class="ekko-lightbox-nav-overlay"><a href="#">' + this._config.leftArrow + '</a><a href="#">' + this._config.rightArrow + '</a></div>'); this._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first(); this._$lightboxContainer.on('click', 'a:first-child', function (event) { event.preventDefault(); return _this.navigateLeft(); }); this._$lightboxContainer.on('click', 'a:last-child', function (event) { event.preventDefault(); return _this.navigateRight(); }); this.updateNavigation(); } } this._$modal.on('show.bs.modal', this._config.onShow.bind(this)).on('shown.bs.modal', function () { _this._toggleLoading(true); _this._handle(); return _this._config.onShown.call(_this); }).on('hide.bs.modal', this._config.onHide.bind(this)).on('hidden.bs.modal', function () { if (_this._galleryName) { $(document).off('keydown.ekkoLightbox'); $(window).off('resize.ekkoLightbox'); } _this._$modal.remove(); return _this._config.onHidden.call(_this); }).modal(this._config); $(window).on('resize.ekkoLightbox', function () { _this._resize(_this._wantedWidth, _this._wantedHeight); }); this._$lightboxContainer.on('touchstart', function () { _this._touchstartX = event.changedTouches[0].screenX; }).on('touchend', function () { _this._touchendX = event.changedTouches[0].screenX; _this._swipeGesure(); }); } _createClass(Lightbox, [{ key: 'element', value: function element() { return this._$element; } }, { key: 'modal', value: function modal() { return this._$modal; } }, { key: 'navigateTo', value: function navigateTo(index) { if (index < 0 || index > this._$galleryItems.length - 1) return this; this._galleryIndex = index; this.updateNavigation(); this._$element = $(this._$galleryItems.get(this._galleryIndex)); this._handle(); } }, { key: 'navigateLeft', value: function navigateLeft() { if (!this._$galleryItems) return; if (this._$galleryItems.length === 1) return; if (this._galleryIndex === 0) { if (this._config.wrapping) this._galleryIndex = this._$galleryItems.length - 1;else return; } else //circular this._galleryIndex--; this._config.onNavigate.call(this, 'left', this._galleryIndex); return this.navigateTo(this._galleryIndex); } }, { key: 'navigateRight', value: function navigateRight() { if (!this._$galleryItems) return; if (this._$galleryItems.length === 1) return; if (this._galleryIndex === this._$galleryItems.length - 1) { if (this._config.wrapping) this._galleryIndex = 0;else return; } else //circular this._galleryIndex++; this._config.onNavigate.call(this, 'right', this._galleryIndex); return this.navigateTo(this._galleryIndex); } }, { key: 'updateNavigation', value: function updateNavigation() { if (!this._config.wrapping) { var $nav = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay'); if (this._galleryIndex === 0) $nav.find('a:first-child').addClass('disabled');else $nav.find('a:first-child').removeClass('disabled'); if (this._galleryIndex === this._$galleryItems.length - 1) $nav.find('a:last-child').addClass('disabled');else $nav.find('a:last-child').removeClass('disabled'); } } }, { key: 'close', value: function close() { return this._$modal.modal('hide'); } // helper private methods }, { key: '_navigationalBinder', value: function _navigationalBinder(event) { event = event || window.event; if (event.keyCode === 39) return this.navigateRight(); if (event.keyCode === 37) return this.navigateLeft(); } // type detection private methods }, { key: '_detectRemoteType', value: function _detectRemoteType(src, type) { type = type || false; if (!type && this._isImage(src)) type = 'image'; if (!type && this._getYoutubeId(src)) type = 'youtube'; if (!type && this._getVimeoId(src)) type = 'vimeo'; if (!type && this._getInstagramId(src)) type = 'instagram'; if (!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0) type = 'url'; return type; } }, { key: '_isImage', value: function _isImage(string) { return string && string.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); } }, { key: '_containerToUse', value: function _containerToUse() { var _this2 = this; // if currently showing an image, fade it out and remove var $toUse = this._$lightboxBodyTwo; var $current = this._$lightboxBodyOne; if (this._$lightboxBodyTwo.hasClass('in')) { $toUse = this._$lightboxBodyOne; $current = this._$lightboxBodyTwo; } $current.removeClass('in show'); setTimeout(function () { if (!_this2._$lightboxBodyTwo.hasClass('in')) _this2._$lightboxBodyTwo.empty(); if (!_this2._$lightboxBodyOne.hasClass('in')) _this2._$lightboxBodyOne.empty(); }, 500); $toUse.addClass('in show'); return $toUse; } }, { key: '_handle', value: function _handle() { var $toUse = this._containerToUse(); this._updateTitleAndFooter(); var currentRemote = this._$element.attr('data-remote') || this._$element.attr('href'); var currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false); if (['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0) return this._error(this._config.strings.type); switch (currentType) { case 'image': this._preloadImage(currentRemote, $toUse); this._preloadImageByIndex(this._galleryIndex, 3); break; case 'youtube': this._showYoutubeVideo(currentRemote, $toUse); break; case 'vimeo': this._showVimeoVideo(this._getVimeoId(currentRemote), $toUse); break; case 'instagram': this._showInstagramVideo(this._getInstagramId(currentRemote), $toUse); break; case 'video': this._showHtml5Video(currentRemote, $toUse); break; default: // url this._loadRemoteContent(currentRemote, $toUse); break; } return this; } }, { key: '_getYoutubeId', value: function _getYoutubeId(string) { if (!string) return false; var matches = string.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/); return matches && matches[2].length === 11 ? matches[2] : false; } }, { key: '_getVimeoId', value: function _getVimeoId(string) { return string && string.indexOf('vimeo') > 0 ? string : false; } }, { key: '_getInstagramId', value: function _getInstagramId(string) { return string && string.indexOf('instagram') > 0 ? string : false; } // layout private methods }, { key: '_toggleLoading', value: function _toggleLoading(show) { show = show || false; if (show) { this._$modalDialog.css('display', 'none'); this._$modal.removeClass('in show'); $('.modal-backdrop').append(this._config.loadingMessage); } else { this._$modalDialog.css('display', 'block'); this._$modal.addClass('in show'); $('.modal-backdrop').find('.ekko-lightbox-loader').remove(); } return this; } }, { key: '_calculateBorders', value: function _calculateBorders() { return { top: this._totalCssByAttribute('border-top-width'), right: this._totalCssByAttribute('border-right-width'), bottom: this._totalCssByAttribute('border-bottom-width'), left: this._totalCssByAttribute('border-left-width') }; } }, { key: '_calculatePadding', value: function _calculatePadding() { return { top: this._totalCssByAttribute('padding-top'), right: this._totalCssByAttribute('padding-right'), bottom: this._totalCssByAttribute('padding-bottom'), left: this._totalCssByAttribute('padding-left') }; } }, { key: '_totalCssByAttribute', value: function _totalCssByAttribute(attribute) { return parseInt(this._$modalDialog.css(attribute), 10) + parseInt(this._$modalContent.css(attribute), 10) + parseInt(this._$modalBody.css(attribute), 10); } }, { key: '_updateTitleAndFooter', value: function _updateTitleAndFooter() { var title = this._$element.data('title') || ""; var caption = this._$element.data('footer') || ""; this._titleIsShown = false; if (title || this._config.alwaysShowClose) { this._titleIsShown = true; this._$modalHeader.css('display', '').find('.modal-title').html(title || " "); } else this._$modalHeader.css('display', 'none'); this._footerIsShown = false; if (caption) { this._footerIsShown = true; this._$modalFooter.css('display', '').html(caption); } else this._$modalFooter.css('display', 'none'); return this; } }, { key: '_showYoutubeVideo', value: function _showYoutubeVideo(remote, $containerForElement) { var id = this._getYoutubeId(remote); var query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : ''; var width = this._$element.data('width') || 560; var height = this._$element.data('height') || width / (560 / 315); return this._showVideoIframe('//www.youtube.com/embed/' + id + '?badge=0&autoplay=1&html5=1' + query, width, height, $containerForElement); } }, { key: '_showVimeoVideo', value: function _showVimeoVideo(id, $containerForElement) { var width = this._$element.data('width') || 500; var height = this._$element.data('height') || width / (560 / 315); return this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement); } }, { key: '_showInstagramVideo', value: function _showInstagramVideo(id, $containerForElement) { // instagram load their content into iframe's so this can be put straight into the element var width = this._$element.data('width') || 612; var height = width + 80; id = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash $containerForElement.html('<iframe width="' + width + '" height="' + height + '" src="' + id + 'embed/" frameborder="0" allowfullscreen></iframe>'); this._resize(width, height); this._config.onContentLoaded.call(this); if (this._$modalArrows) //hide the arrows when showing video this._$modalArrows.css('display', 'none'); this._toggleLoading(false); return this; } }, { key: '_showVideoIframe', value: function _showVideoIframe(url, width, height, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url) height = height || width; // default to square $containerForElement.html('<div class="embed-responsive embed-responsive-16by9"><iframe width="' + width + '" height="' + height + '" src="' + url + '" frameborder="0" allowfullscreen class="embed-responsive-item"></iframe></div>'); this._resize(width, height); this._config.onContentLoaded.call(this); if (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video this._toggleLoading(false); return this; } }, { key: '_showHtml5Video', value: function _showHtml5Video(url, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url) var width = this._$element.data('width') || 560; var height = this._$element.data('height') || width / (560 / 315); $containerForElement.html('<div class="embed-responsive embed-responsive-16by9"><video width="' + width + '" height="' + height + '" src="' + url + '" preload="auto" autoplay controls class="embed-responsive-item"></video></div>'); this._resize(width, height); this._config.onContentLoaded.call(this); if (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video this._toggleLoading(false); return this; } }, { key: '_loadRemoteContent', value: function _loadRemoteContent(url, $containerForElement) { var _this3 = this; var width = this._$element.data('width') || 560; var height = this._$element.data('height') || 560; var disableExternalCheck = this._$element.data('disableExternalCheck') || false; this._toggleLoading(false); // external urls are loading into an iframe // local ajax can be loaded into the container itself if (!disableExternalCheck && !this._isExternal(url)) { $containerForElement.load(url, $.proxy(function () { return _this3._$element.trigger('loaded.bs.modal');l; })); } else { $containerForElement.html('<iframe src="' + url + '" frameborder="0" allowfullscreen></iframe>'); this._config.onContentLoaded.call(this); } if (this._$modalArrows) //hide the arrows when remote content this._$modalArrows.css('display', 'none'); this._resize(width, height); return this; } }, { key: '_isExternal', value: function _isExternal(url) { var match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/); if (typeof match[1] === "string" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) return true; if (typeof match[2] === "string" && match[2].length > 0 && match[2].replace(new RegExp(':(' + ({ "http:": 80, "https:": 443 })[location.protocol] + ')?$'), "") !== location.host) return true; return false; } }, { key: '_error', value: function _error(message) { console.error(message); this._containerToUse().html(message); this._resize(300, 300); return this; } }, { key: '_preloadImageByIndex', value: function _preloadImageByIndex(startIndex, numberOfTimes) { if (!this._$galleryItems) return; var next = $(this._$galleryItems.get(startIndex), false); if (typeof next == 'undefined') return; var src = next.attr('data-remote') || next.attr('href'); if (next.attr('data-type') === 'image' || this._isImage(src)) this._preloadImage(src, false); if (numberOfTimes > 0) return this._preloadImageByIndex(startIndex + 1, numberOfTimes - 1); } }, { key: '_preloadImage', value: function _preloadImage(src, $containerForImage) { var _this4 = this; $containerForImage = $containerForImage || false; var img = new Image(); if ($containerForImage) { (function () { // if loading takes > 200ms show a loader var loadingTimeout = setTimeout(function () { $containerForImage.append(_this4._config.loadingMessage); }, 200); img.onload = function () { if (loadingTimeout) clearTimeout(loadingTimeout); loadingTimeout = null; var image = $('<img />'); image.attr('src', img.src); image.addClass('img-fluid'); // backward compatibility for bootstrap v3 image.css('width', '100%'); $containerForImage.html(image); if (_this4._$modalArrows) _this4._$modalArrows.css('display', ''); // remove display to default to css property _this4._resize(img.width, img.height); _this4._toggleLoading(false); return _this4._config.onContentLoaded.call(_this4); }; img.onerror = function () { _this4._toggleLoading(false); return _this4._error(_this4._config.strings.fail + (' ' + src)); }; })(); } img.src = src; return img; } }, { key: '_swipeGesure', value: function _swipeGesure() { if (this._touchendX < this._touchstartX) { return this.navigateRight(); } if (this._touchendX > this._touchstartX) { return this.navigateLeft(); } } }, { key: '_resize', value: function _resize(width, height) { height = height || width; this._wantedWidth = width; this._wantedHeight = height; var imageAspecRatio = width / height; // if width > the available space, scale down the expected width and height var widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right; // force 10px margin if window size > 575px var addMargin = this._config.doc.body.clientWidth > 575 ? 20 : 0; var discountMargin = this._config.doc.body.clientWidth > 575 ? 0 : 20; var maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth - addMargin, this._config.maxWidth); if (width + widthBorderAndPadding > maxWidth) { height = (maxWidth - widthBorderAndPadding - discountMargin) / imageAspecRatio; width = maxWidth; } else width = width + widthBorderAndPadding; var headerHeight = 0, footerHeight = 0; // as the resize is performed the modal is show, the calculate might fail // if so, default to the default sizes if (this._footerIsShown) footerHeight = this._$modalFooter.outerHeight(true) || 55; if (this._titleIsShown) headerHeight = this._$modalHeader.outerHeight(true) || 67; var borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top; //calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins var margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom')); var maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight, this._config.maxHeight - borderPadding - headerHeight - footerHeight); if (height > maxHeight) { // if height > the available height, scale down the width width = Math.ceil(maxHeight * imageAspecRatio) + widthBorderAndPadding; } this._$lightboxContainer.css('height', maxHeight); this._$modalDialog.css('flex', 1).css('maxWidth', width); var modal = this._$modal.data('bs.modal'); if (modal) { // v4 method is mistakenly protected try { modal._handleUpdate(); } catch (Exception) { modal.handleUpdate(); } } return this; } }], [{ key: '_jQueryInterface', value: function _jQueryInterface(config) { var _this5 = this; config = config || {}; return this.each(function () { var $this = $(_this5); var _config = $.extend({}, Lightbox.Default, $this.data(), typeof config === 'object' && config); new Lightbox(_this5, _config); }); } }]); return Lightbox; })(); $.fn[NAME] = Lightbox._jQueryInterface; $.fn[NAME].Constructor = Lightbox; $.fn[NAME].noConflict = function () { $.fn[NAME] = JQUERY_NO_CONFLICT; return Lightbox._jQueryInterface; }; return Lightbox; })(jQuery); //# sourceMappingURL=ekko-lightbox.js.map }(jQuery); ekko-lightbox.js.map 0000644 00000127557 15024757010 0010447 0 ustar 00 {"version":3,"sources":["../ekko-lightbox.js"],"names":[],"mappings":"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","file":"ekko-lightbox.js","sourcesContent":["const Lightbox = (($) => {\n\n\tconst NAME = 'ekkoLightbox'\n\tconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\n\tconst Default = {\n\t\ttitle: '',\n\t\tfooter: '',\n\t\tmaxWidth: 9999,\n\t\tmaxHeight: 9999,\n\t\tshowArrows: true, //display the left / right arrows or not\n\t\twrapping: true, //if true, gallery loops infinitely\n\t\ttype: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it\n\t\talwaysShowClose: false, //always show the close button, even if there is no title\n\t\tloadingMessage: '<div class=\"ekko-lightbox-loader\"><div><div></div><div></div></div></div>', // http://tobiasahlin.com/spinkit/\n\t\tleftArrow: '<span>❮</span>',\n\t\trightArrow: '<span>❯</span>',\n\t\tstrings: {\n\t\t\tclose: 'Close',\n\t\t\tfail: 'Failed to load image:',\n\t\t\ttype: 'Could not detect remote target type. Force the type using data-type',\n\t\t},\n\t\tdoc: document, // if in an iframe can specify top.document\n\t\tonShow() {},\n\t\tonShown() {},\n\t\tonHide() {},\n\t\tonHidden() {},\n\t\tonNavigate() {},\n\t\tonContentLoaded() {}\n\t}\n\n\tclass Lightbox {\n\n\t\t/**\n\n\t Class properties:\n\n\t\t _$element: null -> the <a> element currently being displayed\n\t\t _$modal: The bootstrap modal generated\n\t\t _$modalDialog: The .modal-dialog\n\t\t _$modalContent: The .modal-content\n\t\t _$modalBody: The .modal-body\n\t\t _$modalHeader: The .modal-header\n\t\t _$modalFooter: The .modal-footer\n\t\t _$lightboxContainerOne: Container of the first lightbox element\n\t\t _$lightboxContainerTwo: Container of the second lightbox element\n\t\t _$lightboxBody: First element in the container\n\t\t _$modalArrows: The overlayed arrows container\n\n\t\t _$galleryItems: Other <a>'s available for this gallery\n\t\t _galleryName: Name of the current data('gallery') showing\n\t\t _galleryIndex: The current index of the _$galleryItems being shown\n\n\t\t _config: {} the options for the modal\n\t\t _modalId: unique id for the current lightbox\n\t\t _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content\n\n\t\t */\n\n\t\tstatic get Default() {\n\t\t\treturn Default\n\t\t}\n\n\t\tconstructor($element, config) {\n\t\t\tthis._config = $.extend({}, Default, config)\n\t\t\tthis._$modalArrows = null\n\t\t\tthis._galleryIndex = 0\n\t\t\tthis._galleryName = null\n\t\t\tthis._padding = null\n\t\t\tthis._border = null\n\t\t\tthis._titleIsShown = false\n\t\t\tthis._footerIsShown = false\n\t\t\tthis._wantedWidth = 0\n\t\t\tthis._wantedHeight = 0\n\t\t\tthis._touchstartX = 0\n\t\t\tthis._touchendX = 0\n\n\t\t\tthis._modalId = `ekkoLightbox-${Math.floor((Math.random() * 1000) + 1)}`;\n\t\t\tthis._$element = $element instanceof jQuery ? $element : $($element)\n\n\t\t\tthis._isBootstrap3 = $.fn.modal.Constructor.VERSION[0] == 3;\n\n\t\t\tlet h4 = `<h4 class=\"modal-title\">${this._config.title || \" \"}</h4>`;\n\t\t\tlet btn = `<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"${this._config.strings.close}\"><span aria-hidden=\"true\">×</span></button>`;\n\n\t\t\tlet header = `<div class=\"modal-header${this._config.title || this._config.alwaysShowClose ? '' : ' hide'}\">`+(this._isBootstrap3 ? btn+h4 : h4+btn)+`</div>`;\n\t\t\tlet footer = `<div class=\"modal-footer${this._config.footer ? '' : ' hide'}\">${this._config.footer || \" \"}</div>`;\n\t\t\tlet body = '<div class=\"modal-body\"><div class=\"ekko-lightbox-container\"><div class=\"ekko-lightbox-item fade in show\"></div><div class=\"ekko-lightbox-item fade\"></div></div></div>'\n\t\t\tlet dialog = `<div class=\"modal-dialog\" role=\"document\"><div class=\"modal-content\">${header}${body}${footer}</div></div>`\n\t\t\t$(this._config.doc.body).append(`<div id=\"${this._modalId}\" class=\"ekko-lightbox modal fade\" tabindex=\"-1\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">${dialog}</div>`)\n\n\t\t\tthis._$modal = $(`#${this._modalId}`, this._config.doc)\n\t\t\tthis._$modalDialog = this._$modal.find('.modal-dialog').first()\n\t\t\tthis._$modalContent = this._$modal.find('.modal-content').first()\n\t\t\tthis._$modalBody = this._$modal.find('.modal-body').first()\n\t\t\tthis._$modalHeader = this._$modal.find('.modal-header').first()\n\t\t\tthis._$modalFooter = this._$modal.find('.modal-footer').first()\n\n\t\t\tthis._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first()\n\t\t\tthis._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first()\n\t\t\tthis._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first()\n\n\t\t\tthis._border = this._calculateBorders()\n\t\t\tthis._padding = this._calculatePadding()\n\n\t\t\tthis._galleryName = this._$element.data('gallery')\n\t\t\tif (this._galleryName) {\n\t\t\t\tthis._$galleryItems = $(document.body).find(`*[data-gallery=\"${this._galleryName}\"]`)\n\t\t\t\tthis._galleryIndex = this._$galleryItems.index(this._$element)\n\t\t\t\t$(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this))\n\n\t\t\t\t// add the directional arrows to the modal\n\t\t\t\tif (this._config.showArrows && this._$galleryItems.length > 1) {\n\t\t\t\t\tthis._$lightboxContainer.append(`<div class=\"ekko-lightbox-nav-overlay\"><a href=\"#\">${this._config.leftArrow}</a><a href=\"#\">${this._config.rightArrow}</a></div>`)\n\t\t\t\t\tthis._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first()\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:first-child', event => {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn this.navigateLeft()\n\t\t\t\t\t})\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:last-child', event => {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn this.navigateRight()\n\t\t\t\t\t})\n\t\t\t\t\tthis.updateNavigation()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._$modal\n\t\t\t.on('show.bs.modal', this._config.onShow.bind(this))\n\t\t\t.on('shown.bs.modal', () => {\n\t\t\t\tthis._toggleLoading(true)\n\t\t\t\tthis._handle()\n\t\t\t\treturn this._config.onShown.call(this)\n\t\t\t})\n\t\t\t.on('hide.bs.modal', this._config.onHide.bind(this))\n\t\t\t.on('hidden.bs.modal', () => {\n\t\t\t\tif (this._galleryName) {\n\t\t\t\t\t$(document).off('keydown.ekkoLightbox')\n\t\t\t\t\t$(window).off('resize.ekkoLightbox')\n\t\t\t\t}\n\t\t\t\tthis._$modal.remove()\n\t\t\t\treturn this._config.onHidden.call(this)\n\t\t\t})\n\t\t\t.modal(this._config)\n\n\t\t\t$(window).on('resize.ekkoLightbox', () => {\n\t\t\t\tthis._resize(this._wantedWidth, this._wantedHeight)\n\t\t\t})\n\t\t\tthis._$lightboxContainer\n\t\t\t.on('touchstart', () => {\n\t\t\t\tthis._touchstartX = event.changedTouches[0].screenX;\n\n\t\t\t})\n\t\t\t.on('touchend', () => {\n\t\t\t\tthis._touchendX = event.changedTouches[0].screenX;\n\t\t\t this._swipeGesure();\n\t\t\t})\n\t\t}\n\n\t\telement() {\n\t\t\treturn this._$element;\n\t\t}\n\n\t\tmodal() {\n\t\t\treturn this._$modal;\n\t\t}\n\n\t\tnavigateTo(index) {\n\n\t\t\tif (index < 0 || index > this._$galleryItems.length-1)\n\t\t\t\treturn this\n\n\t\t\tthis._galleryIndex = index\n\n\t\t\tthis.updateNavigation()\n\n\t\t\tthis._$element = $(this._$galleryItems.get(this._galleryIndex))\n\t\t\tthis._handle();\n\t\t}\n\n\t\tnavigateLeft() {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tif (this._$galleryItems.length === 1)\n\t\t\t\treturn\n\n\t\t\tif (this._galleryIndex === 0) {\n\t\t\t\tif (this._config.wrapping)\n\t\t\t\t\tthis._galleryIndex = this._$galleryItems.length - 1\n\t\t\t\telse\n\t\t\t\t\treturn\n\t\t\t}\n\t\t\telse //circular\n\t\t\t\tthis._galleryIndex--\n\n\t\t\tthis._config.onNavigate.call(this, 'left', this._galleryIndex)\n\t\t\treturn this.navigateTo(this._galleryIndex)\n\t\t}\n\n\t\tnavigateRight() {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tif (this._$galleryItems.length === 1)\n\t\t\t\treturn\n\n\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1) {\n\t\t\t\tif (this._config.wrapping)\n\t\t\t\t\tthis._galleryIndex = 0\n\t\t\t\telse\n\t\t\t\t\treturn\n\t\t\t}\n\t\t\telse //circular\n\t\t\t\tthis._galleryIndex++\n\n\t\t\tthis._config.onNavigate.call(this, 'right', this._galleryIndex)\n\t\t\treturn this.navigateTo(this._galleryIndex)\n\t\t}\n\n\t\tupdateNavigation() {\n\t\t\tif (!this._config.wrapping) {\n\t\t\t\tlet $nav = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay')\n\t\t\t\tif (this._galleryIndex === 0)\n\t\t\t\t\t$nav.find('a:first-child').addClass('disabled')\n\t\t\t\telse\n\t\t\t\t\t$nav.find('a:first-child').removeClass('disabled')\n\n\t\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1)\n\t\t\t\t\t$nav.find('a:last-child').addClass('disabled')\n\t\t\t\telse\n\t\t\t\t\t$nav.find('a:last-child').removeClass('disabled')\n\t\t\t}\n\t\t}\n\n\t\tclose() {\n\t\t\treturn this._$modal.modal('hide');\n\t\t}\n\n\t\t// helper private methods\n\t\t_navigationalBinder(event) {\n\t\t\tevent = event || window.event;\n\t\t\tif (event.keyCode === 39)\n\t\t\t\treturn this.navigateRight()\n\t\t\tif (event.keyCode === 37)\n\t\t\t\treturn this.navigateLeft()\n\t\t}\n\n\t\t// type detection private methods\n\t\t_detectRemoteType(src, type) {\n\n\t\t\ttype = type || false;\n\n\t\t\tif(!type && this._isImage(src))\n\t\t\t\ttype = 'image';\n\t\t\tif(!type && this._getYoutubeId(src))\n\t\t\t\ttype = 'youtube';\n\t\t\tif(!type && this._getVimeoId(src))\n\t\t\t\ttype = 'vimeo';\n\t\t\tif(!type && this._getInstagramId(src))\n\t\t\t\ttype = 'instagram';\n\n\t\t\tif(!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0)\n\t\t\t\ttype = 'url';\n\n\t\t\treturn type;\n\t\t}\n\n\t\t_isImage(string) {\n\t\t\treturn string && string.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i)\n\t\t}\n\n\t\t_containerToUse() {\n\t\t\t// if currently showing an image, fade it out and remove\n\t\t\tlet $toUse = this._$lightboxBodyTwo\n\t\t\tlet $current = this._$lightboxBodyOne\n\n\t\t\tif(this._$lightboxBodyTwo.hasClass('in')) {\n\t\t\t\t$toUse = this._$lightboxBodyOne\n\t\t\t\t$current = this._$lightboxBodyTwo\n\t\t\t}\n\n\t\t\t$current.removeClass('in show')\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(!this._$lightboxBodyTwo.hasClass('in'))\n\t\t\t\t\tthis._$lightboxBodyTwo.empty()\n\t\t\t\tif(!this._$lightboxBodyOne.hasClass('in'))\n\t\t\t\t\tthis._$lightboxBodyOne.empty()\n\t\t\t}, 500)\n\n\t\t\t$toUse.addClass('in show')\n\t\t\treturn $toUse\n\t\t}\n\n\t\t_handle() {\n\n\t\t\tlet $toUse = this._containerToUse()\n\t\t\tthis._updateTitleAndFooter()\n\n\t\t\tlet currentRemote = this._$element.attr('data-remote') || this._$element.attr('href')\n\t\t\tlet currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false)\n\n\t\t\tif(['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0)\n\t\t\t\treturn this._error(this._config.strings.type)\n\n\t\t\tswitch(currentType) {\n\t\t\t\tcase 'image':\n\t\t\t\t\tthis._preloadImage(currentRemote, $toUse)\n\t\t\t\t\tthis._preloadImageByIndex(this._galleryIndex, 3)\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'youtube':\n\t\t\t\t\tthis._showYoutubeVideo(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vimeo':\n\t\t\t\t\tthis._showVimeoVideo(this._getVimeoId(currentRemote), $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'instagram':\n\t\t\t\t\tthis._showInstagramVideo(this._getInstagramId(currentRemote), $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'video':\n\t\t\t\t\tthis._showHtml5Video(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // url\n\t\t\t\t\tthis._loadRemoteContent(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\t_getYoutubeId(string) {\n\t\t\tif(!string)\n\t\t\t\treturn false;\n\t\t\tlet matches = string.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/)\n\t\t\treturn (matches && matches[2].length === 11) ? matches[2] : false\n\t\t}\n\n\t\t_getVimeoId(string) {\n\t\t\treturn string && string.indexOf('vimeo') > 0 ? string : false\n\t\t}\n\n\t\t_getInstagramId(string) {\n\t\t\treturn string && string.indexOf('instagram') > 0 ? string : false\n\t\t}\n\n\t\t// layout private methods\n\t\t_toggleLoading(show) {\n\t\t\tshow = show || false\n\t\t\tif(show) {\n\t\t\t\tthis._$modalDialog.css('display', 'none')\n\t\t\t\tthis._$modal.removeClass('in show')\n\t\t\t\t$('.modal-backdrop').append(this._config.loadingMessage)\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._$modalDialog.css('display', 'block')\n\t\t\t\tthis._$modal.addClass('in show')\n\t\t\t\t$('.modal-backdrop').find('.ekko-lightbox-loader').remove()\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\t_calculateBorders() {\n\t\t\treturn {\n\t\t\t\ttop: this._totalCssByAttribute('border-top-width'),\n\t\t\t\tright: this._totalCssByAttribute('border-right-width'),\n\t\t\t\tbottom: this._totalCssByAttribute('border-bottom-width'),\n\t\t\t\tleft: this._totalCssByAttribute('border-left-width'),\n\t\t\t}\n\t\t}\n\n\t\t_calculatePadding() {\n\t\t\treturn {\n\t\t\t\ttop: this._totalCssByAttribute('padding-top'),\n\t\t\t\tright: this._totalCssByAttribute('padding-right'),\n\t\t\t\tbottom: this._totalCssByAttribute('padding-bottom'),\n\t\t\t\tleft: this._totalCssByAttribute('padding-left'),\n\t\t\t}\n\t\t}\n\n\t\t_totalCssByAttribute(attribute) {\n\t\t\treturn parseInt(this._$modalDialog.css(attribute), 10) +\n\t\t\t\tparseInt(this._$modalContent.css(attribute), 10) +\n\t\t\t\tparseInt(this._$modalBody.css(attribute), 10)\n\t\t}\n\n\t\t_updateTitleAndFooter() {\n\t\t\tlet title = this._$element.data('title') || \"\"\n\t\t\tlet caption = this._$element.data('footer') || \"\"\n\n\t\t\tthis._titleIsShown = false\n\t\t\tif (title || this._config.alwaysShowClose) {\n\t\t\t\tthis._titleIsShown = true\n\t\t\t\tthis._$modalHeader.css('display', '').find('.modal-title').html(title || \" \")\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis._$modalHeader.css('display', 'none')\n\n\t\t\tthis._footerIsShown = false\n\t\t\tif (caption) {\n\t\t\t\tthis._footerIsShown = true\n\t\t\t\tthis._$modalFooter.css('display', '').html(caption)\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis._$modalFooter.css('display', 'none')\n\n\t\t\treturn this;\n\t\t}\n\n\t\t_showYoutubeVideo(remote, $containerForElement) {\n\t\t\tlet id = this._getYoutubeId(remote)\n\t\t\tlet query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : ''\n\t\t\tlet width = this._$element.data('width') || 560\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\treturn this._showVideoIframe(\n\t\t\t\t`//www.youtube.com/embed/${id}?badge=0&autoplay=1&html5=1${query}`,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\t$containerForElement\n\t\t\t);\n\t\t}\n\n\t\t_showVimeoVideo(id, $containerForElement) {\n\t\t\tlet width = this._$element.data('width') || 500\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\treturn this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement)\n\t\t}\n\n\t\t_showInstagramVideo(id, $containerForElement) {\n\t\t\t// instagram load their content into iframe's so this can be put straight into the element\n\t\t\tlet width = this._$element.data('width') || 612\n\t\t\tlet height = width + 80;\n\t\t\tid = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash\n\t\t\t$containerForElement.html(`<iframe width=\"${width}\" height=\"${height}\" src=\"${id}embed/\" frameborder=\"0\" allowfullscreen></iframe>`);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows) //hide the arrows when showing video\n\t\t\t\tthis._$modalArrows.css('display', 'none');\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_showVideoIframe(url, width, height, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\theight = height || width; // default to square\n\t\t\t$containerForElement.html(`<div class=\"embed-responsive embed-responsive-16by9\"><iframe width=\"${width}\" height=\"${height}\" src=\"${url}\" frameborder=\"0\" allowfullscreen class=\"embed-responsive-item\"></iframe></div>`);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows)\n\t\t\t\tthis._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_showHtml5Video(url, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\tlet width = this._$element.data('width') || 560\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\t$containerForElement.html(`<div class=\"embed-responsive embed-responsive-16by9\"><video width=\"${width}\" height=\"${height}\" src=\"${url}\" preload=\"auto\" autoplay controls class=\"embed-responsive-item\"></video></div>`);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows)\n\t\t\t\tthis._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_loadRemoteContent(url, $containerForElement) {\n\t\t\tlet width = this._$element.data('width') || 560;\n\t\t\tlet height = this._$element.data('height') || 560;\n\n\t\t\tlet disableExternalCheck = this._$element.data('disableExternalCheck') || false;\n\t\t\tthis._toggleLoading(false);\n\n\t\t\t// external urls are loading into an iframe\n\t\t\t// local ajax can be loaded into the container itself\n\t\t\tif (!disableExternalCheck && !this._isExternal(url)) {\n\t\t\t\t$containerForElement.load(url, $.proxy(() => {\n\t\t\t\t\treturn this._$element.trigger('loaded.bs.modal');l\n\t\t\t\t}));\n\n\t\t\t} else {\n\t\t\t\t$containerForElement.html(`<iframe src=\"${url}\" frameborder=\"0\" allowfullscreen></iframe>`);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t}\n\n\t\t\tif (this._$modalArrows) //hide the arrows when remote content\n\t\t\t\tthis._$modalArrows.css('display', 'none')\n\n\t\t\tthis._resize(width, height);\n\t\t\treturn this;\n\t\t}\n\n\t\t_isExternal(url) {\n\t\t\tlet match = url.match(/^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/);\n\t\t\tif (typeof match[1] === \"string\" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol)\n\t\t\t\treturn true;\n\n\t\t\tif (typeof match[2] === \"string\" && match[2].length > 0 && match[2].replace(new RegExp(`:(${{\n\t\t\t\t\t\"http:\": 80,\n\t\t\t\t\t\"https:\": 443\n\t\t\t\t}[location.protocol]})?$`), \"\") !== location.host)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\n\t\t_error( message ) {\n\t\t\tconsole.error(message);\n\t\t\tthis._containerToUse().html(message);\n\t\t\tthis._resize(300, 300);\n\t\t\treturn this;\n\t\t}\n\n\t\t_preloadImageByIndex(startIndex, numberOfTimes) {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tlet next = $(this._$galleryItems.get(startIndex), false)\n\t\t\tif(typeof next == 'undefined')\n\t\t\t\treturn\n\n\t\t\tlet src = next.attr('data-remote') || next.attr('href')\n\t\t\tif (next.attr('data-type') === 'image' || this._isImage(src))\n\t\t\t\tthis._preloadImage(src, false)\n\n\t\t\tif(numberOfTimes > 0)\n\t\t\t\treturn this._preloadImageByIndex(startIndex + 1, numberOfTimes-1);\n\t\t}\n\n\t\t_preloadImage( src, $containerForImage) {\n\n\t\t\t$containerForImage = $containerForImage || false\n\n\t\t\tlet img = new Image();\n\t\t\tif ($containerForImage) {\n\n\t\t\t\t// if loading takes > 200ms show a loader\n\t\t\t\tlet loadingTimeout = setTimeout(() => {\n\t\t\t\t\t$containerForImage.append(this._config.loadingMessage)\n\t\t\t\t}, 200)\n\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tif(loadingTimeout)\n\t\t\t\t\t\tclearTimeout(loadingTimeout)\n\t\t\t\t\tloadingTimeout = null;\n\t\t\t\t\tlet image = $('<img />');\n\t\t\t\t\timage.attr('src', img.src);\n\t\t\t\t\timage.addClass('img-fluid');\n\n\t\t\t\t\t// backward compatibility for bootstrap v3\n\t\t\t\t\timage.css('width', '100%');\n\n\t\t\t\t\t$containerForImage.html(image);\n\t\t\t\t\tif (this._$modalArrows)\n\t\t\t\t\t\tthis._$modalArrows.css('display', '') // remove display to default to css property\n\n\t\t\t\t\tthis._resize(img.width, img.height);\n\t\t\t\t\tthis._toggleLoading(false);\n\t\t\t\t\treturn this._config.onContentLoaded.call(this);\n\t\t\t\t};\n\t\t\t\timg.onerror = () => {\n\t\t\t\t\tthis._toggleLoading(false);\n\t\t\t\t\treturn this._error(this._config.strings.fail+` ${src}`);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\timg.src = src;\n\t\t\treturn img;\n\t\t}\n\n\t\t_swipeGesure() {\n\t\t if (this._touchendX < this._touchstartX) {\n\t\t return this.navigateRight();\n\t\t }\n\t\t if (this._touchendX > this._touchstartX) {\n\t\t return this.navigateLeft();\n\t\t }\n\t\t}\n\n\t\t_resize( width, height ) {\n\n\t\t\theight = height || width\n\t\t\tthis._wantedWidth = width\n\t\t\tthis._wantedHeight = height\n\n\t\t\tlet imageAspecRatio = width / height;\n\n\t\t\t// if width > the available space, scale down the expected width and height\n\t\t\tlet widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right\n\n\t\t\t// force 10px margin if window size > 575px\n\t\t\tlet addMargin = this._config.doc.body.clientWidth > 575 ? 20 : 0\n\t\t\tlet discountMargin = this._config.doc.body.clientWidth > 575 ? 0 : 20\n\n\t\t\tlet maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth - addMargin, this._config.maxWidth)\n\n\t\t\tif((width + widthBorderAndPadding) > maxWidth) {\n\t\t\t\theight = (maxWidth - widthBorderAndPadding - discountMargin) / imageAspecRatio;\n\t\t\t\twidth = maxWidth\n\t\t\t} else\n\t\t\t\twidth = (width + widthBorderAndPadding)\n\n\t\t\tlet headerHeight = 0,\n\t\t\t footerHeight = 0\n\n\t\t\t// as the resize is performed the modal is show, the calculate might fail\n\t\t\t// if so, default to the default sizes\n\t\t\tif (this._footerIsShown)\n\t\t\t\tfooterHeight = this._$modalFooter.outerHeight(true) || 55\n\n\t\t\tif (this._titleIsShown)\n\t\t\t\theaderHeight = this._$modalHeader.outerHeight(true) || 67\n\n\t\t\tlet borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top\n\n\t\t\t//calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins\n\t\t\tlet margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom'));\n\n\t\t\tlet maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight, this._config.maxHeight - borderPadding - headerHeight - footerHeight);\n\n\t\t\tif(height > maxHeight) {\n\t\t\t\t// if height > the available height, scale down the width\n\t\t\t\twidth = Math.ceil(maxHeight * imageAspecRatio) + widthBorderAndPadding;\n\t\t\t}\n\n\t\t\tthis._$lightboxContainer.css('height', maxHeight)\n\t\t\tthis._$modalDialog.css('flex', 1).css('maxWidth', width);\n\n\t\t\tlet modal = this._$modal.data('bs.modal');\n\t\t\tif (modal) {\n\t\t\t\t// v4 method is mistakenly protected\n\t\t\t\ttry {\n\t\t\t\t\tmodal._handleUpdate();\n\t\t\t\t} catch(Exception) {\n\t\t\t\t\tmodal.handleUpdate();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tstatic _jQueryInterface(config) {\n\t\t\tconfig = config || {}\n\t\t\treturn this.each(() => {\n\t\t\t\tlet $this = $(this)\n\t\t\t\tlet _config = $.extend(\n\t\t\t\t\t{},\n\t\t\t\t\tLightbox.Default,\n\t\t\t\t\t$this.data(),\n\t\t\t\t\ttypeof config === 'object' && config\n\t\t\t\t)\n\n\t\t\t\tnew Lightbox(this, _config)\n\t\t\t})\n\t\t}\n\t}\n\n\n\n\t$.fn[NAME] = Lightbox._jQueryInterface\n\t$.fn[NAME].Constructor = Lightbox\n\t$.fn[NAME].noConflict = () => {\n\t\t$.fn[NAME] = JQUERY_NO_CONFLICT\n\t\treturn Lightbox._jQueryInterface\n\t}\n\n\treturn Lightbox\n\n})(jQuery)\n\nexport default Lightbox\n"]} ekko-lightbox.css 0000644 00000015747 15024757010 0010044 0 ustar 00 .ekko-lightbox{display:-ms-flexbox!important;display:flex!important;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-right:0!important}.ekko-lightbox-container{position:relative}.ekko-lightbox-container>div.ekko-lightbox-item{position:absolute;top:0;left:0;bottom:0;right:0;width:100%}.ekko-lightbox iframe{width:100%;height:100%}.ekko-lightbox-nav-overlay{z-index:1;position:absolute;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex}.ekko-lightbox-nav-overlay a{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0;transition:opacity .5s;color:#fff;font-size:30px;z-index:1}.ekko-lightbox-nav-overlay a>*{-ms-flex-positive:1;flex-grow:1}.ekko-lightbox-nav-overlay a>:focus{outline:none}.ekko-lightbox-nav-overlay a span{padding:0 30px}.ekko-lightbox-nav-overlay a:last-child span{text-align:right}.ekko-lightbox-nav-overlay a:hover{text-decoration:none}.ekko-lightbox-nav-overlay a:focus{outline:none}.ekko-lightbox-nav-overlay a.disabled{cursor:default;visibility:hidden}.ekko-lightbox a:hover{opacity:1;text-decoration:none}.ekko-lightbox .modal-dialog{display:none}.ekko-lightbox .modal-footer{text-align:left}.ekko-lightbox-loader{position:absolute;top:0;left:0;bottom:0;right:0;width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.ekko-lightbox-loader>div{width:40px;height:40px;position:relative;text-align:center}.ekko-lightbox-loader>div>div{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;animation:a 2s infinite ease-in-out}.ekko-lightbox-loader>div>div:last-child{animation-delay:-1s}.modal-dialog .ekko-lightbox-loader>div>div{background-color:#333}@keyframes a{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}} /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVra28tbGlnaHRib3guY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQ0UsOEJBQXlCLEFBQXpCLHVCQUF5QixBQUN6QixzQkFBb0IsQUFBcEIsbUJBQW9CLEFBQ3BCLHFCQUF3QixBQUF4Qix1QkFBd0IsQUFDeEIseUJBQTZCLENBQzlCLEFBQ0QseUJBQ0UsaUJBQW1CLENBQ3BCLEFBQ0QsZ0RBQ0Usa0JBQW1CLEFBQ25CLE1BQU8sQUFDUCxPQUFRLEFBQ1IsU0FBVSxBQUNWLFFBQVMsQUFDVCxVQUFZLENBQ2IsQUFDRCxzQkFDRSxXQUFZLEFBQ1osV0FBYSxDQUNkLEFBQ0QsMkJBQ0UsVUFBYSxBQUNiLGtCQUFtQixBQUNuQixNQUFPLEFBQ1AsT0FBUSxBQUNSLFdBQVksQUFDWixZQUFhLEFBQ2Isb0JBQWMsQUFBZCxZQUFjLENBQ2YsQUFDRCw2QkFDRSxXQUFRLEFBQVIsT0FBUSxBQUNSLG9CQUFjLEFBQWQsYUFBYyxBQUNkLHNCQUFvQixBQUFwQixtQkFBb0IsQUFDcEIsVUFBVyxBQUNYLHVCQUF5QixBQUN6QixXQUFZLEFBQ1osZUFBZ0IsQUFDaEIsU0FBYSxDQUNkLEFBQ0QsK0JBQ0Usb0JBQWEsQUFBYixXQUFhLENBQ2QsQUFDRCxvQ0FDRSxZQUFjLENBQ2YsQUFDRCxrQ0FDRSxjQUFnQixDQUNqQixBQUNELDZDQUNFLGdCQUFrQixDQUNuQixBQUNELG1DQUNFLG9CQUFzQixDQUN2QixBQUNELG1DQUNFLFlBQWMsQ0FDZixBQUNELHNDQUNFLGVBQWdCLEFBQ2hCLGlCQUFtQixDQUNwQixBQUNELHVCQUNFLFVBQVcsQUFDWCxvQkFBc0IsQ0FDdkIsQUFDRCw2QkFDRSxZQUFjLENBQ2YsQUFDRCw2QkFDRSxlQUFpQixDQUNsQixBQUNELHNCQUNFLGtCQUFtQixBQUNuQixNQUFPLEFBQ1AsT0FBUSxBQUNSLFNBQVUsQUFDVixRQUFTLEFBQ1QsV0FBWSxBQUNaLG9CQUFjLEFBQWQsYUFBYyxBQUVkLDBCQUF1QixBQUF2QixzQkFBdUIsQUFFdkIscUJBQXdCLEFBQXhCLHVCQUF3QixBQUV4QixzQkFBb0IsQUFBcEIsa0JBQW9CLENBQ3JCLEFBQ0QsMEJBQ0UsV0FBWSxBQUNaLFlBQWEsQUFDYixrQkFBbUIsQUFDbkIsaUJBQW1CLENBQ3BCLEFBQ0QsOEJBQ0UsV0FBWSxBQUNaLFlBQWEsQUFDYixrQkFBbUIsQUFDbkIsc0JBQXVCLEFBQ3ZCLFdBQWEsQUFDYixrQkFBbUIsQUFDbkIsTUFBTyxBQUNQLE9BQVEsQUFDUixtQ0FBNkMsQ0FDOUMsQUFDRCx5Q0FDRSxtQkFBcUIsQ0FDdEIsQUFDRCw0Q0FDRSxxQkFBdUIsQ0FDeEIsQUFVRCxhQUNFLE1BRUUsbUJBQW9CLEFBQ3BCLDBCQUE0QixDQUM3QixBQUNELElBQ0UsbUJBQW9CLEFBQ3BCLDBCQUE0QixDQUM3QixDQUNGIiwiZmlsZSI6ImVra28tbGlnaHRib3guY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmVra28tbGlnaHRib3gge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLXJpZ2h0OiAwcHghaW1wb3J0YW50O1xufVxuLmVra28tbGlnaHRib3gtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmVra28tbGlnaHRib3gtY29udGFpbmVyID4gZGl2LmVra28tbGlnaHRib3gtaXRlbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5la2tvLWxpZ2h0Ym94IGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSB7XG4gIHotaW5kZXg6IDEwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhIHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAzMHB4O1xuICB6LWluZGV4OiAxMDA7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhID4gKiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGEgPiAqOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGEgc3BhbiB7XG4gIHBhZGRpbmc6IDAgMzBweDtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGE6bGFzdC1jaGlsZCBzcGFuIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmVra28tbGlnaHRib3gtbmF2LW92ZXJsYXkgYTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhLmRpc2FibGVkIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uZWtrby1saWdodGJveCBhOmhvdmVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmVra28tbGlnaHRib3ggLm1vZGFsLWRpYWxvZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZWtrby1saWdodGJveCAubW9kYWwtZm9vdGVyIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5la2tvLWxpZ2h0Ym94LWxvYWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgLyogZXN0YWJsaXNoIGZsZXggY29udGFpbmVyICovXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC8qIG1ha2UgbWFpbiBheGlzIHZlcnRpY2FsICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBjZW50ZXIgaXRlbXMgdmVydGljYWxseSwgaW4gdGhpcyBjYXNlICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYge1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5la2tvLWxpZ2h0Ym94LWxvYWRlciA+IGRpdiA+IGRpdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC42O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYW5pbWF0aW9uOiBzay1ib3VuY2UgMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG59XG4uZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYgPiBkaXY6bGFzdC1jaGlsZCB7XG4gIGFuaW1hdGlvbi1kZWxheTogLTFzO1xufVxuLm1vZGFsLWRpYWxvZyAuZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYgPiBkaXYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIHNrLWJvdW5jZSB7XG4gIDAlLFxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2stYm91bmNlIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cbiJdfQ== */ ekko-lightbox.min.js.map 0000644 00000035307 15024757010 0011220 0 ustar 00 {"version":3,"sources":["ekko-lightbox.js"],"names":["$","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","NAME","JQUERY_NO_CONFLICT","fn","Default","title","footer","maxWidth","maxHeight","showArrows","wrapping","type","alwaysShowClose","loadingMessage","leftArrow","rightArrow","strings","close","fail","doc","document","onShow","onShown","onHide","onHidden","onNavigate","onContentLoaded","Lightbox","$element","config","_this","this","_config","extend","_$modalArrows","_galleryIndex","_galleryName","_padding","_border","_titleIsShown","_footerIsShown","_wantedWidth","_wantedHeight","_touchstartX","_touchendX","_modalId","Math","floor","random","_$element","jQuery","_isBootstrap3","modal","VERSION","h4","btn","header","body","dialog","append","_$modal","_$modalDialog","find","first","_$modalContent","_$modalBody","_$modalHeader","_$modalFooter","_$lightboxContainer","_$lightboxBodyOne","_$lightboxBodyTwo","_calculateBorders","_calculatePadding","data","_$galleryItems","index","on","_navigationalBinder","bind","event","preventDefault","navigateLeft","navigateRight","updateNavigation","_toggleLoading","_handle","call","off","window","remove","_resize","changedTouches","screenX","_swipeGesure","get","value","navigateTo","$nav","addClass","removeClass","keyCode","src","_isImage","_getYoutubeId","_getVimeoId","_getInstagramId","indexOf","string","match","_this2","$toUse","$current","hasClass","setTimeout","empty","_containerToUse","_updateTitleAndFooter","currentRemote","attr","currentType","_detectRemoteType","_error","_preloadImage","_preloadImageByIndex","_showYoutubeVideo","_showVimeoVideo","_showInstagramVideo","_showHtml5Video","_loadRemoteContent","matches","show","css","top","_totalCssByAttribute","right","bottom","left","attribute","parseInt","caption","html","remote","$containerForElement","id","query","substr","width","height","_showVideoIframe","url","_this3","disableExternalCheck","_isExternal","load","proxy","trigger","toLowerCase","location","protocol","replace","RegExp","http:","https:","host","message","console","error","startIndex","numberOfTimes","next","$containerForImage","_this4","img","Image","loadingTimeout","onload","clearTimeout","image","onerror","imageAspecRatio","widthBorderAndPadding","addMargin","clientWidth","discountMargin","min","headerHeight","footerHeight","outerHeight","borderPadding","margins","parseFloat","ceil","_handleUpdate","Exception","handleUpdate","_this5","each","$this","_jQueryInterface","noConflict"],"mappings":"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","file":"ekko-lightbox.min.js"} ekko-lightbox.min.js 0000644 00000034541 15024757010 0010443 0 ustar 00 +function(a){"use strict";function b(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}();(function(a){var d="ekkoLightbox",e=a.fn[d],f={title:"",footer:"",maxWidth:9999,maxHeight:9999,showArrows:!0,wrapping:!0,type:null,alwaysShowClose:!1,loadingMessage:'<div class="ekko-lightbox-loader"><div><div></div><div></div></div></div>',leftArrow:"<span>❮</span>",rightArrow:"<span>❯</span>",strings:{close:"Close",fail:"Failed to load image:",type:"Could not detect remote target type. Force the type using data-type"},doc:document,onShow:function(){},onShown:function(){},onHide:function(){},onHidden:function(){},onNavigate:function(){},onContentLoaded:function(){}},g=function(){function d(c,e){var g=this;b(this,d),this._config=a.extend({},f,e),this._$modalArrows=null,this._galleryIndex=0,this._galleryName=null,this._padding=null,this._border=null,this._titleIsShown=!1,this._footerIsShown=!1,this._wantedWidth=0,this._wantedHeight=0,this._touchstartX=0,this._touchendX=0,this._modalId="ekkoLightbox-"+Math.floor(1e3*Math.random()+1),this._$element=c instanceof jQuery?c:a(c),this._isBootstrap3=3==a.fn.modal.Constructor.VERSION[0];var h='<h4 class="modal-title">'+(this._config.title||" ")+"</h4>",i='<button type="button" class="close" data-dismiss="modal" aria-label="'+this._config.strings.close+'"><span aria-hidden="true">×</span></button>',j='<div class="modal-header'+(this._config.title||this._config.alwaysShowClose?"":" hide")+'">'+(this._isBootstrap3?i+h:h+i)+"</div>",k='<div class="modal-footer'+(this._config.footer?"":" hide")+'">'+(this._config.footer||" ")+"</div>",l='<div class="modal-body"><div class="ekko-lightbox-container"><div class="ekko-lightbox-item fade in show"></div><div class="ekko-lightbox-item fade"></div></div></div>',m='<div class="modal-dialog" role="document"><div class="modal-content">'+j+l+k+"</div></div>";a(this._config.doc.body).append('<div id="'+this._modalId+'" class="ekko-lightbox modal fade" tabindex="-1" tabindex="-1" role="dialog" aria-hidden="true">'+m+"</div>"),this._$modal=a("#"+this._modalId,this._config.doc),this._$modalDialog=this._$modal.find(".modal-dialog").first(),this._$modalContent=this._$modal.find(".modal-content").first(),this._$modalBody=this._$modal.find(".modal-body").first(),this._$modalHeader=this._$modal.find(".modal-header").first(),this._$modalFooter=this._$modal.find(".modal-footer").first(),this._$lightboxContainer=this._$modalBody.find(".ekko-lightbox-container").first(),this._$lightboxBodyOne=this._$lightboxContainer.find("> div:first-child").first(),this._$lightboxBodyTwo=this._$lightboxContainer.find("> div:last-child").first(),this._border=this._calculateBorders(),this._padding=this._calculatePadding(),this._galleryName=this._$element.data("gallery"),this._galleryName&&(this._$galleryItems=a(document.body).find('*[data-gallery="'+this._galleryName+'"]'),this._galleryIndex=this._$galleryItems.index(this._$element),a(document).on("keydown.ekkoLightbox",this._navigationalBinder.bind(this)),this._config.showArrows&&this._$galleryItems.length>1&&(this._$lightboxContainer.append('<div class="ekko-lightbox-nav-overlay"><a href="#">'+this._config.leftArrow+'</a><a href="#">'+this._config.rightArrow+"</a></div>"),this._$modalArrows=this._$lightboxContainer.find("div.ekko-lightbox-nav-overlay").first(),this._$lightboxContainer.on("click","a:first-child",function(a){return a.preventDefault(),g.navigateLeft()}),this._$lightboxContainer.on("click","a:last-child",function(a){return a.preventDefault(),g.navigateRight()}),this.updateNavigation())),this._$modal.on("show.bs.modal",this._config.onShow.bind(this)).on("shown.bs.modal",function(){return g._toggleLoading(!0),g._handle(),g._config.onShown.call(g)}).on("hide.bs.modal",this._config.onHide.bind(this)).on("hidden.bs.modal",function(){return g._galleryName&&(a(document).off("keydown.ekkoLightbox"),a(window).off("resize.ekkoLightbox")),g._$modal.remove(),g._config.onHidden.call(g)}).modal(this._config),a(window).on("resize.ekkoLightbox",function(){g._resize(g._wantedWidth,g._wantedHeight)}),this._$lightboxContainer.on("touchstart",function(){g._touchstartX=event.changedTouches[0].screenX}).on("touchend",function(){g._touchendX=event.changedTouches[0].screenX,g._swipeGesure()})}return c(d,null,[{key:"Default",get:function(){return f}}]),c(d,[{key:"element",value:function(){return this._$element}},{key:"modal",value:function(){return this._$modal}},{key:"navigateTo",value:function(b){return b<0||b>this._$galleryItems.length-1?this:(this._galleryIndex=b,this.updateNavigation(),this._$element=a(this._$galleryItems.get(this._galleryIndex)),void this._handle())}},{key:"navigateLeft",value:function(){if(this._$galleryItems&&1!==this._$galleryItems.length){if(0===this._galleryIndex){if(!this._config.wrapping)return;this._galleryIndex=this._$galleryItems.length-1}else this._galleryIndex--;return this._config.onNavigate.call(this,"left",this._galleryIndex),this.navigateTo(this._galleryIndex)}}},{key:"navigateRight",value:function(){if(this._$galleryItems&&1!==this._$galleryItems.length){if(this._galleryIndex===this._$galleryItems.length-1){if(!this._config.wrapping)return;this._galleryIndex=0}else this._galleryIndex++;return this._config.onNavigate.call(this,"right",this._galleryIndex),this.navigateTo(this._galleryIndex)}}},{key:"updateNavigation",value:function(){if(!this._config.wrapping){var a=this._$lightboxContainer.find("div.ekko-lightbox-nav-overlay");0===this._galleryIndex?a.find("a:first-child").addClass("disabled"):a.find("a:first-child").removeClass("disabled"),this._galleryIndex===this._$galleryItems.length-1?a.find("a:last-child").addClass("disabled"):a.find("a:last-child").removeClass("disabled")}}},{key:"close",value:function(){return this._$modal.modal("hide")}},{key:"_navigationalBinder",value:function(a){return a=a||window.event,39===a.keyCode?this.navigateRight():37===a.keyCode?this.navigateLeft():void 0}},{key:"_detectRemoteType",value:function(a,b){return b=b||!1,!b&&this._isImage(a)&&(b="image"),!b&&this._getYoutubeId(a)&&(b="youtube"),!b&&this._getVimeoId(a)&&(b="vimeo"),!b&&this._getInstagramId(a)&&(b="instagram"),(!b||["image","youtube","vimeo","instagram","video","url"].indexOf(b)<0)&&(b="url"),b}},{key:"_isImage",value:function(a){return a&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)}},{key:"_containerToUse",value:function(){var a=this,b=this._$lightboxBodyTwo,c=this._$lightboxBodyOne;return this._$lightboxBodyTwo.hasClass("in")&&(b=this._$lightboxBodyOne,c=this._$lightboxBodyTwo),c.removeClass("in show"),setTimeout(function(){a._$lightboxBodyTwo.hasClass("in")||a._$lightboxBodyTwo.empty(),a._$lightboxBodyOne.hasClass("in")||a._$lightboxBodyOne.empty()},500),b.addClass("in show"),b}},{key:"_handle",value:function(){var a=this._containerToUse();this._updateTitleAndFooter();var b=this._$element.attr("data-remote")||this._$element.attr("href"),c=this._detectRemoteType(b,this._$element.attr("data-type")||!1);if(["image","youtube","vimeo","instagram","video","url"].indexOf(c)<0)return this._error(this._config.strings.type);switch(c){case"image":this._preloadImage(b,a),this._preloadImageByIndex(this._galleryIndex,3);break;case"youtube":this._showYoutubeVideo(b,a);break;case"vimeo":this._showVimeoVideo(this._getVimeoId(b),a);break;case"instagram":this._showInstagramVideo(this._getInstagramId(b),a);break;case"video":this._showHtml5Video(b,a);break;default:this._loadRemoteContent(b,a)}return this}},{key:"_getYoutubeId",value:function(a){if(!a)return!1;var b=a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);return!(!b||11!==b[2].length)&&b[2]}},{key:"_getVimeoId",value:function(a){return!!(a&&a.indexOf("vimeo")>0)&&a}},{key:"_getInstagramId",value:function(a){return!!(a&&a.indexOf("instagram")>0)&&a}},{key:"_toggleLoading",value:function(b){return b=b||!1,b?(this._$modalDialog.css("display","none"),this._$modal.removeClass("in show"),a(".modal-backdrop").append(this._config.loadingMessage)):(this._$modalDialog.css("display","block"),this._$modal.addClass("in show"),a(".modal-backdrop").find(".ekko-lightbox-loader").remove()),this}},{key:"_calculateBorders",value:function(){return{top:this._totalCssByAttribute("border-top-width"),right:this._totalCssByAttribute("border-right-width"),bottom:this._totalCssByAttribute("border-bottom-width"),left:this._totalCssByAttribute("border-left-width")}}},{key:"_calculatePadding",value:function(){return{top:this._totalCssByAttribute("padding-top"),right:this._totalCssByAttribute("padding-right"),bottom:this._totalCssByAttribute("padding-bottom"),left:this._totalCssByAttribute("padding-left")}}},{key:"_totalCssByAttribute",value:function(a){return parseInt(this._$modalDialog.css(a),10)+parseInt(this._$modalContent.css(a),10)+parseInt(this._$modalBody.css(a),10)}},{key:"_updateTitleAndFooter",value:function(){var a=this._$element.data("title")||"",b=this._$element.data("footer")||"";return this._titleIsShown=!1,a||this._config.alwaysShowClose?(this._titleIsShown=!0,this._$modalHeader.css("display","").find(".modal-title").html(a||" ")):this._$modalHeader.css("display","none"),this._footerIsShown=!1,b?(this._footerIsShown=!0,this._$modalFooter.css("display","").html(b)):this._$modalFooter.css("display","none"),this}},{key:"_showYoutubeVideo",value:function(a,b){var c=this._getYoutubeId(a),d=a.indexOf("&")>0?a.substr(a.indexOf("&")):"",e=this._$element.data("width")||560,f=this._$element.data("height")||e/(560/315);return this._showVideoIframe("//www.youtube.com/embed/"+c+"?badge=0&autoplay=1&html5=1"+d,e,f,b)}},{key:"_showVimeoVideo",value:function(a,b){var c=this._$element.data("width")||500,d=this._$element.data("height")||c/(560/315);return this._showVideoIframe(a+"?autoplay=1",c,d,b)}},{key:"_showInstagramVideo",value:function(a,b){var c=this._$element.data("width")||612,d=c+80;return a="/"!==a.substr(-1)?a+"/":a,b.html('<iframe width="'+c+'" height="'+d+'" src="'+a+'embed/" frameborder="0" allowfullscreen></iframe>'),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_showVideoIframe",value:function(a,b,c,d){return c=c||b,d.html('<div class="embed-responsive embed-responsive-16by9"><iframe width="'+b+'" height="'+c+'" src="'+a+'" frameborder="0" allowfullscreen class="embed-responsive-item"></iframe></div>'),this._resize(b,c),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_showHtml5Video",value:function(a,b){var c=this._$element.data("width")||560,d=this._$element.data("height")||c/(560/315);return b.html('<div class="embed-responsive embed-responsive-16by9"><video width="'+c+'" height="'+d+'" src="'+a+'" preload="auto" autoplay controls class="embed-responsive-item"></video></div>'),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_loadRemoteContent",value:function(b,c){var d=this,e=this._$element.data("width")||560,f=this._$element.data("height")||560,g=this._$element.data("disableExternalCheck")||!1;return this._toggleLoading(!1),g||this._isExternal(b)?(c.html('<iframe src="'+b+'" frameborder="0" allowfullscreen></iframe>'),this._config.onContentLoaded.call(this)):c.load(b,a.proxy(function(){return d._$element.trigger("loaded.bs.modal")})),this._$modalArrows&&this._$modalArrows.css("display","none"),this._resize(e,f),this}},{key:"_isExternal",value:function(a){var b=a.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof b[1]&&b[1].length>0&&b[1].toLowerCase()!==location.protocol||"string"==typeof b[2]&&b[2].length>0&&b[2].replace(new RegExp(":("+{"http:":80,"https:":443}[location.protocol]+")?$"),"")!==location.host}},{key:"_error",value:function(a){return console.error(a),this._containerToUse().html(a),this._resize(300,300),this}},{key:"_preloadImageByIndex",value:function(b,c){if(this._$galleryItems){var d=a(this._$galleryItems.get(b),!1);if("undefined"!=typeof d){var e=d.attr("data-remote")||d.attr("href");return("image"===d.attr("data-type")||this._isImage(e))&&this._preloadImage(e,!1),c>0?this._preloadImageByIndex(b+1,c-1):void 0}}}},{key:"_preloadImage",value:function(b,c){var d=this;c=c||!1;var e=new Image;return c&&!function(){var f=setTimeout(function(){c.append(d._config.loadingMessage)},200);e.onload=function(){f&&clearTimeout(f),f=null;var b=a("<img />");return b.attr("src",e.src),b.addClass("img-fluid"),b.css("width","100%"),c.html(b),d._$modalArrows&&d._$modalArrows.css("display",""),d._resize(e.width,e.height),d._toggleLoading(!1),d._config.onContentLoaded.call(d)},e.onerror=function(){return d._toggleLoading(!1),d._error(d._config.strings.fail+(" "+b))}}(),e.src=b,e}},{key:"_swipeGesure",value:function(){return this._touchendX<this._touchstartX?this.navigateRight():this._touchendX>this._touchstartX?this.navigateLeft():void 0}},{key:"_resize",value:function(b,c){c=c||b,this._wantedWidth=b,this._wantedHeight=c;var d=b/c,e=this._padding.left+this._padding.right+this._border.left+this._border.right,f=this._config.doc.body.clientWidth>575?20:0,g=this._config.doc.body.clientWidth>575?0:20,h=Math.min(b+e,this._config.doc.body.clientWidth-f,this._config.maxWidth);b+e>h?(c=(h-e-g)/d,b=h):b+=e;var i=0,j=0;this._footerIsShown&&(j=this._$modalFooter.outerHeight(!0)||55),this._titleIsShown&&(i=this._$modalHeader.outerHeight(!0)||67);var k=this._padding.top+this._padding.bottom+this._border.bottom+this._border.top,l=parseFloat(this._$modalDialog.css("margin-top"))+parseFloat(this._$modalDialog.css("margin-bottom")),m=Math.min(c,a(window).height()-k-l-i-j,this._config.maxHeight-k-i-j);c>m&&(b=Math.ceil(m*d)+e),this._$lightboxContainer.css("height",m),this._$modalDialog.css("flex",1).css("maxWidth",b);var n=this._$modal.data("bs.modal");if(n)try{n._handleUpdate()}catch(o){n.handleUpdate()}return this}}],[{key:"_jQueryInterface",value:function(b){var c=this;return b=b||{},this.each(function(){var e=a(c),f=a.extend({},d.Default,e.data(),"object"==typeof b&&b);new d(c,f)})}}]),d}();return a.fn[d]=g._jQueryInterface,a.fn[d].Constructor=g,a.fn[d].noConflict=function(){return a.fn[d]=e,g._jQueryInterface},g})(jQuery)}(jQuery); //# sourceMappingURL=ekko-lightbox.min.js.map
| ver. 1.4 |
.
| PHP 7.3.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings