{"version":3,"sources":["iframe-lightbox.js"],"names":["root","document","getAttribute","IframeLightbox","elem","settings","options","dataPaddingBottom","this","trigger","dataScrolling","el","dataTouch","containerClass","body","rate","getElementsByClassName","content","scrolling","touch","src","onIframeLoaded","href","onLoaded","onCreated","paddingBottom","onClosed","dataset","prototype","onOpened","docElem","documentElement","docBody","iframeLightboxWindowIsBindedClass","iframeLightboxOpenClass","iframeLightboxLinkIsBindedClass","isLoadedClass","isOpenedClass","isShowingClass","isTouch","navigator","userAgent","match","undefined","init","context","timestamp","_this","open","e","stopPropagation","preventDefault","timeout","last","wait","call","arguments","func","apply","handleIframeLightboxLink","later","setTimeout","debounce","logic","classList","add","create","addEventListener","backdrop","appendChild","contentHolder","btnClose","createElement","setAttribute","close","contains","which","clearBody","remove","loadIframe","html","push","iframe","onload","now","iframeSrc","innerHTML","join","getElementById","iframeId","style","removeAttribute","callCallback","caller","bind","window"],"mappings":"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","file":"iframe-lightbox.min.js","sourcesContent":["/*!\n * @see {@link https://github.com/englishextra/iframe-lightbox}\n * modified Simple lightbox effect in pure JS\n * @see {@link https://github.com/squeral/lightbox}\n * @see {@link https://github.com/squeral/lightbox/blob/master/lightbox.js}\n * @params {Object} elem Node element\n * @params {Object} settings object\n * el.lightbox = new IframeLightbox(elem, settings)\n * passes jshint\n */\n/*jslint browser: true */\n/*jslint node: true */\n/*jshint -W014 */\n(function (root, document) {\n\t\"use strict\";\n\tvar docElem = document.documentElement || \"\";\n\tvar docBody = document.body || \"\";\n\tvar containerClass = \"iframe-lightbox\";\n\tvar iframeLightboxWindowIsBindedClass = \"iframe-lightbox-window--is-binded\";\n\tvar iframeLightboxOpenClass = \"iframe-lightbox--open\";\n\tvar iframeLightboxLinkIsBindedClass = \"iframe-lightbox-link--is-binded\";\n\tvar isLoadedClass = \"is-loaded\";\n\tvar isOpenedClass = \"is-opened\";\n\tvar isShowingClass = \"is-showing\";\n\tvar isMobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);\n\tvar isTouch = isMobile !== null || document.createTouch !== undefined || \"ontouchstart\" in root || \"onmsgesturechange\" in root || navigator.msMaxTouchPoints;\n\tvar IframeLightbox = function (elem, settings) {\n\t\tvar options = settings || {};\n\t\tthis.trigger = elem;\n\t\tthis.el = document.getElementsByClassName(containerClass)[0] || \"\";\n\t\tthis.body = this.el ? this.el.getElementsByClassName(\"body\")[0] : \"\";\n\t\tthis.content = this.el ? this.el.getElementsByClassName(\"content\")[0] : \"\";\n\t\tthis.src = elem.dataset.src || \"\";\n\t\tthis.href = elem.getAttribute(\"href\") || \"\";\n\t\tthis.dataPaddingBottom = elem.dataset.paddingBottom || \"\";\n\t\tthis.dataScrolling = elem.dataset.scrolling || \"\";\n\t\tthis.dataTouch = elem.dataset.touch || \"\";\n\t\tthis.rate = options.rate || 500;\n\t\tthis.scrolling = options.scrolling;\n\t\tthis.touch = options.touch;\n\t\tthis.onOpened = options.onOpened;\n\t\tthis.onIframeLoaded = options.onIframeLoaded;\n\t\tthis.onLoaded = options.onLoaded;\n\t\tthis.onCreated = options.onCreated;\n\t\tthis.onClosed = options.onClosed;\n\t\tthis.init();\n\t};\n\tIframeLightbox.prototype.init = function () {\n\t\tvar _this = this;\n\t\tif (!this.el) {\n\t\t\tthis.create();\n\t\t}\n\t\tvar debounce = function (func, wait) {\n\t\t\tvar timeout,\n\t\t\targs,\n\t\t\tcontext,\n\t\t\ttimestamp;\n\t\t\treturn function () {\n\t\t\t\tcontext = this;\n\t\t\t\targs = [].slice.call(arguments, 0);\n\t\t\t\ttimestamp = new Date();\n\t\t\t\tvar later = function () {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc.apply(context, args);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (!timeout) {\n\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t\tvar logic = function () {\n\t\t\t_this.open();\n\t\t};\n\t\tvar handleIframeLightboxLink = function (e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tdebounce(logic, this.rate).call();\n\t\t};\n\t\tif (!this.trigger.classList.contains(iframeLightboxLinkIsBindedClass)) {\n\t\t\tthis.trigger.classList.add(iframeLightboxLinkIsBindedClass);\n\t\t\tthis.trigger.addEventListener(\"click\", handleIframeLightboxLink);\n\t\t\tif (isTouch && (_this.touch || _this.dataTouch)) {\n\t\t\t\tthis.trigger.addEventListener(\"touchstart\", handleIframeLightboxLink);\n\t\t\t}\n\t\t}\n\t};\n\tIframeLightbox.prototype.create = function () {\n\t\tvar _this = this,\n\t\tbackdrop = document.createElement(\"div\");\n\t\tbackdrop.classList.add(\"backdrop\");\n\t\tthis.el = document.createElement(\"div\");\n\t\tthis.el.classList.add(containerClass);\n\t\tthis.el.appendChild(backdrop);\n\t\tthis.content = document.createElement(\"div\");\n\t\tthis.content.classList.add(\"content\");\n\t\tthis.body = document.createElement(\"div\");\n\t\tthis.body.classList.add(\"body\");\n\t\tthis.content.appendChild(this.body);\n\t\tthis.contentHolder = document.createElement(\"div\");\n\t\tthis.contentHolder.classList.add(\"content-holder\");\n\t\tthis.contentHolder.appendChild(this.content);\n\t\tthis.el.appendChild(this.contentHolder);\n\t\tthis.btnClose = document.createElement(\"a\");\n\t\tthis.btnClose.classList.add(\"btn-close\");\n\t\t/* jshint -W107 */\n\t\tthis.btnClose.setAttribute(\"href\", \"javascript:void(0);\");\n\t\t/* jshint +W107 */\n\t\tthis.el.appendChild(this.btnClose);\n\t\tdocBody.appendChild(this.el);\n\t\tbackdrop.addEventListener(\"click\", function () {\n\t\t\t_this.close();\n\t\t});\n\t\tthis.btnClose.addEventListener(\"click\", function () {\n\t\t\t_this.close();\n\t\t});\n\t\tif (!docElem.classList.contains(iframeLightboxWindowIsBindedClass)) {\n\t\t\tdocElem.classList.add(iframeLightboxWindowIsBindedClass);\n\t\t\troot.addEventListener(\"keyup\", function (ev) {\n\t\t\t\tif (27 === (ev.which || ev.keyCode)) {\n\t\t\t\t\t_this.close();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tvar clearBody = function () {\n\t\t\tif (_this.isOpen()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_this.el.classList.remove(isShowingClass);\n\t\t\t_this.body.innerHTML = \"\";\n\t\t};\n\t\tthis.el.addEventListener(\"transitionend\", clearBody, false);\n\t\tthis.el.addEventListener(\"webkitTransitionEnd\", clearBody, false);\n\t\tthis.el.addEventListener(\"mozTransitionEnd\", clearBody, false);\n\t\tthis.el.addEventListener(\"msTransitionEnd\", clearBody, false);\n\t\tthis.callCallback(this.onCreated, this);\n\t};\n\tIframeLightbox.prototype.loadIframe = function () {\n\t\tvar _this = this;\n\t\tthis.iframeId = containerClass + Date.now();\n\t\tthis.iframeSrc = this.src || this.href || \"\";\n\t\tvar html = [];\n\t\thtml.push('');\n\t\thtml.push('
');\n\t\tthis.body.innerHTML = html.join(\"\");\n\t\t(function (iframeId, body) {\n\t\t\tvar iframe = document.getElementById(iframeId);\n\t\t\tiframe.onload = function () {\n\t\t\t\tthis.style.opacity = 1;\n\t\t\t\tbody.classList.add(isLoadedClass);\n\t\t\t\tif (_this.scrolling || _this.dataScrolling) {\n\t\t\t\t\tiframe.removeAttribute(\"scrolling\");\n\t\t\t\t\tiframe.style.overflow = \"scroll\";\n\t\t\t\t} else {\n\t\t\t\t\tiframe.setAttribute(\"scrolling\", \"no\");\n\t\t\t\t\tiframe.style.overflow = \"hidden\";\n\t\t\t\t}\n\t\t\t\t_this.callCallback(_this.onIframeLoaded, _this);\n\t\t\t\t_this.callCallback(_this.onLoaded, _this);\n\t\t\t};\n\t\t})(this.iframeId, this.body);\n\t};\n\tIframeLightbox.prototype.open = function () {\n\t\tthis.loadIframe();\n\t\tif (this.dataPaddingBottom) {\n\t\t\tthis.content.style.paddingBottom = this.dataPaddingBottom;\n\t\t} else {\n\t\t\tthis.content.removeAttribute(\"style\");\n\t\t}\n\t\tthis.el.classList.add(isShowingClass);\n\t\tthis.el.classList.add(isOpenedClass);\n\t\tdocElem.classList.add(iframeLightboxOpenClass);\n\t\tdocBody.classList.add(iframeLightboxOpenClass);\n\t\tthis.callCallback(this.onOpened, this);\n\t};\n\tIframeLightbox.prototype.close = function () {\n\t\tthis.el.classList.remove(isOpenedClass);\n\t\tthis.body.classList.remove(isLoadedClass);\n\t\tdocElem.classList.remove(iframeLightboxOpenClass);\n\t\tdocBody.classList.remove(iframeLightboxOpenClass);\n\t\tthis.callCallback(this.onClosed, this);\n\t};\n\tIframeLightbox.prototype.isOpen = function () {\n\t\treturn this.el.classList.contains(isOpenedClass);\n\t};\n\tIframeLightbox.prototype.callCallback = function (func, data) {\n\t\tif (typeof func !== \"function\") {\n\t\t\treturn;\n\t\t}\n\t\tvar caller = func.bind(this);\n\t\tcaller(data);\n\t};\n\troot.IframeLightbox = IframeLightbox;\n})(\"undefined\" !== typeof window ? window : this, document);\n"]}