{"version":3,"sources":["simpleLightbox.js"],"names":["root","factory","define","amd","module","exports","SimpleLightbox","this","assign","target","i","arguments","length","obj","key","hasOwnProperty","addClass","element","className","removeClass","replace","RegExp","trim","parseHtml","html","div","document","createElement","innerHTML","childNodes","matches","el","selector","matchesSelector","msMatchesSelector","call","options","init","apply","defaults","elementClass","elementLoadingClass","htmlClass","closeBtnClass","nextBtnClass","prevBtnClass","loadingTextClass","closeBtnCaption","nextBtnCaption","prevBtnCaption","loadingCaption","bindToItems","closeOnOverlayClick","closeOnEscapeKey","nextOnImageClick","showCaptions","captionAttribute","urlAttribute","startAt","loadingTimeout","appendTarget","beforeSetContent","beforeClose","afterClose","beforeDestroy","afterDestroy","videoRegex","prototype","elements","self","$items","get","slice","querySelectorAll","eventRegistry","lightbox","thumbnails","items","captions","forEach","index","push","getAttribute","addEvent","e","preventDefault","showPosition","eventName","callback","scope","addEventListener","removeEvents","item","removeEventListener","next","currentPosition","prev","normalizePosition","position","newPosition","direction","setupLightboxHtml","prepareItem","setContent","show","loading","on","setTimeout","$el","$content","clearTimeout","url","test","$imageCont","$currentImage","querySelector","appendChild","originalUrl","split","loadImage","setImageDimensions","image","Image","onload","src","o","modalInDom","documentElement","setupLightboxEvents","content","style","maxHeight","window","innerHeight","offsetHeight","$target","close","keyCode","runHook","parentNode","removeChild","undefined","destroy","name","open","instance","registerAsJqueryPlugin","$","fn","simpleLightbox","lightboxInstance","each","data","extend","jQuery"],"mappings":"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","file":"../simpleLightbox.js","sourcesContent":["(function (root, factory) {\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define([], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n module.exports = factory();\r\n } else {\r\n root.SimpleLightbox = factory();\r\n }\r\n\r\n}(this, function () {\r\n\r\n function assign(target) {\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n\r\n var obj = arguments[i];\r\n\r\n if (obj) {\r\n for (var key in obj) {\r\n obj.hasOwnProperty(key) && (target[key] = obj[key]);\r\n }\r\n }\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function addClass(element, className) {\r\n\r\n if (element && className) {\r\n element.className += ' ' + className;\r\n }\r\n\r\n }\r\n\r\n function removeClass(element, className) {\r\n\r\n if (element && className) {\r\n element.className = element.className.replace(\r\n new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'), ' '\r\n ).trim();\r\n }\r\n\r\n }\r\n\r\n function parseHtml(html) {\r\n\r\n var div = document.createElement('div');\r\n div.innerHTML = html.trim();\r\n\r\n return div.childNodes[0];\r\n\r\n }\r\n\r\n function matches(el, selector) {\r\n\r\n return (el.matches || el.matchesSelector || el.msMatchesSelector).call(el, selector);\r\n\r\n }\r\n\r\n function getWindowHeight() {\r\n\r\n return 'innerHeight' in window\r\n ? window.innerHeight\r\n : document.documentElement.offsetHeight;\r\n\r\n }\r\n\r\n function SimpleLightbox(options) {\r\n\r\n this.init.apply(this, arguments);\r\n\r\n }\r\n\r\n SimpleLightbox.defaults = {\r\n\r\n // add custom classes to lightbox elements\r\n elementClass: '',\r\n elementLoadingClass: 'slbLoading',\r\n htmlClass: 'slbActive',\r\n closeBtnClass: '',\r\n nextBtnClass: '',\r\n prevBtnClass: '',\r\n loadingTextClass: '',\r\n\r\n // customize / localize controls captions\r\n closeBtnCaption: 'Close',\r\n nextBtnCaption: 'Next',\r\n prevBtnCaption: 'Previous',\r\n loadingCaption: 'Loading...',\r\n\r\n bindToItems: true, // set click event handler to trigger lightbox on provided $items\r\n closeOnOverlayClick: true,\r\n closeOnEscapeKey: true,\r\n nextOnImageClick: true,\r\n showCaptions: false,\r\n\r\n captionAttribute: 'title', // choose data source for library to glean image caption from\r\n urlAttribute: 'href', // where to expect large image\r\n\r\n startAt: 0, // start gallery at custom index\r\n loadingTimeout: 100, // time after loading element will appear\r\n\r\n appendTarget: 'body', // append elsewhere if needed\r\n\r\n beforeSetContent: null, // convenient hooks for extending library behavoiur\r\n beforeClose: null,\r\n afterClose: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n\r\n videoRegex: new RegExp(/youtube.com|vimeo.com/) // regex which tests load url for iframe content\r\n\r\n };\r\n\r\n assign(SimpleLightbox.prototype, {\r\n\r\n init: function (options) {\r\n\r\n options = this.options = assign({}, SimpleLightbox.defaults, options);\r\n\r\n var self = this;\r\n var elements;\r\n\r\n if (options.$items) {\r\n elements = options.$items.get();\r\n }\r\n\r\n if (options.elements) {\r\n elements = [].slice.call(\r\n typeof options.elements === 'string'\r\n ? document.querySelectorAll(options.elements)\r\n : options.elements\r\n );\r\n }\r\n\r\n this.eventRegistry = { lightbox: [], thumbnails: [] };\r\n this.items = [];\r\n this.captions = [];\r\n\r\n if (elements) {\r\n\r\n elements.forEach(function (element, index) {\r\n\r\n self.items.push(element.getAttribute(options.urlAttribute));\r\n self.captions.push(element.getAttribute(options.captionAttribute));\r\n\r\n if (options.bindToItems) {\r\n\r\n self.addEvent(element, 'click', function (e) {\r\n\r\n e.preventDefault();\r\n self.showPosition(index);\r\n\r\n }, 'thumbnails');\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (options.items) {\r\n this.items = options.items;\r\n }\r\n\r\n if (options.captions) {\r\n this.captions = options.captions;\r\n }\r\n\r\n },\r\n\r\n addEvent: function (element, eventName, callback, scope) {\r\n\r\n this.eventRegistry[scope || 'lightbox'].push({\r\n element: element,\r\n eventName: eventName,\r\n callback: callback\r\n });\r\n\r\n element.addEventListener(eventName, callback);\r\n\r\n return this;\r\n\r\n },\r\n\r\n removeEvents: function (scope) {\r\n\r\n this.eventRegistry[scope].forEach(function (item) {\r\n item.element.removeEventListener(item.eventName, item.callback);\r\n });\r\n\r\n this.eventRegistry[scope] = [];\r\n\r\n return this;\r\n\r\n },\r\n\r\n next: function () {\r\n\r\n return this.showPosition(this.currentPosition + 1);\r\n\r\n },\r\n\r\n prev: function () {\r\n\r\n return this.showPosition(this.currentPosition - 1);\r\n\r\n },\r\n\r\n normalizePosition: function (position) {\r\n\r\n if (position >= this.items.length) {\r\n position = 0;\r\n } else if (position < 0) {\r\n position = this.items.length - 1;\r\n }\r\n\r\n return position;\r\n\r\n },\r\n\r\n showPosition: function (position) {\r\n\r\n var newPosition = this.normalizePosition(position);\r\n\r\n if (typeof this.currentPosition !== 'undefined') {\r\n this.direction = newPosition > this.currentPosition ? 'next' : 'prev';\r\n }\r\n\r\n this.currentPosition = newPosition;\r\n\r\n return this.setupLightboxHtml()\r\n .prepareItem(this.currentPosition, this.setContent)\r\n .show();\r\n\r\n },\r\n\r\n loading: function (on) {\r\n\r\n var self = this;\r\n var options = this.options;\r\n\r\n if (on) {\r\n\r\n this.loadingTimeout = setTimeout(function () {\r\n\r\n addClass(self.$el, options.elementLoadingClass);\r\n\r\n self.$content.innerHTML =\r\n '

' +\r\n options.loadingCaption +\r\n '

';\r\n self.show();\r\n\r\n }, options.loadingTimeout);\r\n\r\n } else {\r\n\r\n removeClass(this.$el, options.elementLoadingClass);\r\n clearTimeout(this.loadingTimeout);\r\n\r\n }\r\n\r\n },\r\n\r\n prepareItem: function (position, callback) {\r\n\r\n var self = this;\r\n var url = this.items[position];\r\n\r\n this.loading(true);\r\n\r\n if (this.options.videoRegex.test(url)) {\r\n\r\n callback.call(self, parseHtml(\r\n '
')\r\n );\r\n\r\n } else {\r\n\r\n var $imageCont = parseHtml(\r\n '
'\r\n );\r\n\r\n this.$currentImage = $imageCont.querySelector('.slbImage');\r\n \r\n if (this.options.showCaptions && this.captions[position]) {\r\n $imageCont.appendChild(parseHtml(\r\n '
' + this.captions[position] + '
')\r\n );\r\n }\r\n var originalUrl = this.items[position];\r\n originalUrl = originalUrl.split('?')[0];\r\n $imageCont.appendChild(parseHtml(\r\n 'Download ')\r\n );\r\n\r\n this.loadImage(url, function () {\r\n\r\n self.setImageDimensions();\r\n\r\n callback.call(self, $imageCont);\r\n\r\n self.loadImage(self.items[self.normalizePosition(self.currentPosition + 1)]);\r\n\r\n });\r\n\r\n }\r\n\r\n return this;\r\n\r\n },\r\n\r\n loadImage: function (url, callback) {\r\n\r\n if (!this.options.videoRegex.test(url)) {\r\n\r\n var image = new Image();\r\n callback && (image.onload = callback);\r\n image.src = url;\r\n\r\n }\r\n\r\n },\r\n\r\n setupLightboxHtml: function () {\r\n\r\n var o = this.options;\r\n \r\n if (!this.$el) {\r\n \r\n this.$el = parseHtml(\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n (this.items.length > 1\r\n ? '
' +\r\n '' +\r\n '' +\r\n '
'\r\n : ''\r\n ) +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n );\r\n\r\n this.$content = this.$el.querySelector('.slbContent');\r\n\r\n }\r\n\r\n this.$content.innerHTML = '';\r\n\r\n return this;\r\n\r\n },\r\n\r\n show: function () {\r\n\r\n if (!this.modalInDom) {\r\n\r\n document.querySelector(this.options.appendTarget).appendChild(this.$el);\r\n addClass(document.documentElement, this.options.htmlClass);\r\n this.setupLightboxEvents();\r\n this.modalInDom = true;\r\n\r\n }\r\n\r\n return this;\r\n\r\n },\r\n\r\n setContent: function (content) {\r\n\r\n var $content = typeof content === 'string'\r\n ? parseHtml(content)\r\n : content\r\n ;\r\n\r\n this.loading(false);\r\n\r\n this.setupLightboxHtml();\r\n\r\n removeClass(this.$content, 'slbDirectionNext');\r\n removeClass(this.$content, 'slbDirectionPrev');\r\n\r\n if (this.direction) {\r\n addClass(this.$content, this.direction === 'next'\r\n ? 'slbDirectionNext'\r\n : 'slbDirectionPrev'\r\n );\r\n }\r\n\r\n if (this.options.beforeSetContent) {\r\n this.options.beforeSetContent($content, this);\r\n }\r\n\r\n this.$content.appendChild($content);\r\n\r\n return this;\r\n\r\n },\r\n\r\n setImageDimensions: function () {\r\n\r\n if (this.$currentImage) {\r\n this.$currentImage.style.maxHeight = getWindowHeight() + 'px';\r\n }\r\n\r\n },\r\n\r\n setupLightboxEvents: function () {\r\n\r\n var self = this;\r\n\r\n if (this.eventRegistry.lightbox.length) {\r\n return this;\r\n }\r\n\r\n this.addEvent(this.$el, 'click', function (e) {\r\n\r\n var $target = e.target;\r\n\r\n if (matches($target, '.slbCloseBtn') || (self.options.closeOnOverlayClick && matches($target, '.slbWrap'))) {\r\n\r\n self.close();\r\n\r\n } else if (matches($target, '.slbArrow')) {\r\n\r\n matches($target, '.next') ? self.next() : self.prev();\r\n\r\n } else if (self.options.nextOnImageClick && self.items.length > 1 && matches($target, '.slbImage')) {\r\n\r\n self.next();\r\n\r\n }\r\n\r\n }).addEvent(document, 'keyup', function (e) {\r\n\r\n self.options.closeOnEscapeKey && e.keyCode === 27 && self.close();\r\n\r\n if (self.items.length > 1) {\r\n (e.keyCode === 39 || e.keyCode === 68) && self.next();\r\n (e.keyCode === 37 || e.keyCode === 65) && self.prev();\r\n }\r\n\r\n }).addEvent(window, 'resize', function () {\r\n\r\n self.setImageDimensions();\r\n\r\n });\r\n\r\n return this;\r\n\r\n },\r\n\r\n close: function () {\r\n\r\n if (this.modalInDom) {\r\n\r\n this.runHook('beforeClose');\r\n this.removeEvents('lightbox');\r\n this.$el && this.$el.parentNode.removeChild(this.$el);\r\n removeClass(document.documentElement, this.options.htmlClass);\r\n this.modalInDom = false;\r\n this.runHook('afterClose');\r\n\r\n }\r\n\r\n this.direction = undefined;\r\n this.currentPosition = this.options.startAt;\r\n\r\n },\r\n\r\n destroy: function () {\r\n\r\n this.close();\r\n this.runHook('beforeDestroy');\r\n this.removeEvents('thumbnails');\r\n this.runHook('afterDestroy');\r\n\r\n },\r\n\r\n runHook: function (name) {\r\n\r\n this.options[name] && this.options[name](this);\r\n\r\n }\r\n\r\n });\r\n\r\n SimpleLightbox.open = function (options) {\r\n\r\n var instance = new SimpleLightbox(options);\r\n\r\n return options.content\r\n ? instance.setContent(options.content).show()\r\n : instance.showPosition(instance.options.startAt);\r\n\r\n };\r\n\r\n SimpleLightbox.registerAsJqueryPlugin = function ($) {\r\n\r\n $.fn.simpleLightbox = function (options) {\r\n\r\n var lightboxInstance;\r\n var $items = this;\r\n\r\n return this.each(function () { \r\n if (!$.data(this, 'simpleLightbox')) {\r\n lightboxInstance = lightboxInstance || new SimpleLightbox($.extend({}, options, { $items: $items }));\r\n $.data(this, 'simpleLightbox', lightboxInstance);\r\n }\r\n });\r\n\r\n };\r\n\r\n $.SimpleLightbox = SimpleLightbox;\r\n\r\n };\r\n\r\n if (typeof window !== 'undefined' && window.jQuery) {\r\n SimpleLightbox.registerAsJqueryPlugin(window.jQuery);\r\n }\r\n\r\n return SimpleLightbox;\r\n\r\n}));"]}