{"version":3,"file":"venobox.min.js","sources":["../src/venobox.esm.js"],"sourcesContent":["/**\n * VenoBox 2.1.6\n * Copyright 2013-2024 Nicola Franchini\n * @license: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE\n */\nlet backdrop, blocknum, blockshare, blocktitle, core, container, content, current_item, current_index, diffX, diffY, endY, elPreloader, elPreloaderInner;\nlet gallIndex, images, infinigall, items, navigationDisabled, newcontent, numeratio, nextok, prevok, overlay;\nlet set_maxWidth, set_overlayColor, set_ratio, set_autoplay, set_href, set_customclass, set_fitview, startY, thenext, theprev, thisborder, thisgall, title, throttle;\n\nconst svgOpen = '';\nconst svgClose = '';\nconst downloadIcon = svgOpen + '' + svgClose;\nconst shareIcon = svgOpen + '' + svgClose;\nconst linkIcon = svgOpen + '' + svgClose;\nconst imagesHolder = document.createElement('div');\n\nlet startX = 0;\nlet endX = 0;\nlet diff = 0;\nlet threshold = 50;\nlet startouch = false;\nlet imgLoader = new Image();\nlet clonecontent;\nlet canDrag = false;\n\nconst spinners = {\n 'bounce': ['sk-bounce', 'sk-bounce-dot', 2],\n 'chase': ['sk-chase', 'sk-chase-dot', 6],\n 'circle': ['sk-circle', 'sk-circle-dot', 12],\n 'circle-fade': ['sk-circle-fade', 'sk-circle-fade-dot', 12],\n 'flow': ['sk-flow', 'sk-flow-dot', 3],\n 'fold': ['sk-fold', 'sk-fold-cube', 4],\n 'grid': ['sk-grid', 'sk-grid-cube', 9],\n 'plane': ['sk-plane', '', 0],\n 'pulse': ['sk-pulse', '', 5],\n 'swing': ['sk-swing', 'sk-swing-dot', 2],\n 'wander': ['sk-wander', 'sk-wander-cube', 3],\n 'wave': ['sk-wave', 'sk-wave-rect', 5]\n};\n\n// Default settings\nconst defaults = {\n selector: '.venobox',\n autoplay : false,\n bgcolor: '#fff',\n border: '0',\n customClass: false,\n infinigall: false,\n maxWidth: '100%',\n navigation: true,\n navKeyboard: true,\n navTouch: true,\n navSpeed: 300,\n numeration: false,\n overlayClose: true,\n overlayColor: 'rgba(23,23,23,0.95)',\n popup: false,\n ratio: '16x9', // '1x1' | '4x3' | '16x9' | '21x9'\n share: false,\n shareStyle: 'pill', // 'bar' | 'block' | 'pill' | 'transparent'\n spinner: 'bounce', // 'plane' | 'chase' | 'bounce' | 'wave' | 'pulse' | 'flow' | 'swing' | 'circle' | 'circle-fade' | 'grid' | 'fold' | 'wander'\n spinColor : '#d2d2d2',\n titleattr: 'title',\n titlePosition: 'top', // 'top' || 'bottom'\n titleStyle: 'bar', // 'bar' | 'block' | 'pill' | 'transparent'\n toolsBackground: '#1C1C1C', // 'transparent'\n toolsColor: '#d2d2d2',\n onPreOpen: function(){ return true; }, // Return the selected object - set return false to prevent opening\n onPostOpen: function(){}, // Return: current_item, gallIndex, thenext, theprev\n onPreClose: function(){ return true; }, // Return: current_item, gallIndex, thenext, theprev - set return false to prevent closing\n onNavComplete: function(){}, // Return: current_item, gallIndex, thenext, theprev\n onContentLoaded: function(){}, // Return: newcontent\n onInit: function(){}, // Return: plugin obj\n jQuerySelectors: false,\n focusItem: false,\n fitView: false\n};\n\n/**\n * Generate spinner html\n * @param {Array} spinarray Selected spinner\n */\nfunction createspinner(spinarray){\n if (!spinarray) {\n return 'Loading...';\n }\n let spinner = '
';\n let i = 0;\n for (i = 0; i < spinarray[2]; i++) {\n spinner += '
';\n }\n spinner += '
';\n return spinner;\n}\n\n/**\n * A simple forEach() implementation for Arrays, Objects and NodeLists\n * @param {Array|Object|NodeList} collection Collection of items to iterate\n * @param {Function} callback Callback function for each iteration\n * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n */\nfunction forEach(collection, callback, scope) {\n if (Object.prototype.toString.call(collection) === '[object Object]') {\n let prop;\n for (prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection);\n }\n }\n } else {\n let i = 0;\n let len = collection.length;\n for (i = 0; i < len; i++) {\n callback.call(scope, collection[i], i, collection);\n }\n }\n}\n\n/**\n* Merge defaults with user options\n* @param {Object} defaults Default settings\n* @param {Object} options User options\n* @returns {Object} Merged values of defaults and options\n*/\nfunction extend( defaults, options ) {\n let extended = {};\n\n forEach(defaults, function (value, prop) {\n extended[prop] = defaults[prop];\n });\n\n forEach(options, function (value, prop) {\n extended[prop] = options[prop];\n });\n return extended;\n}\n\n/**\n * Linear animation timing\n */\nfunction timingLinear(timeFraction){\n return timeFraction;\n}\n\n/**\n * Animate with callback\n * https://javascript.info/js-animation\n */\nfunction animate({timing, draw, duration}) {\n let start = performance.now();\n requestAnimationFrame(function animate(time) {\n // timeFraction goes from 0 to 1\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1) {\n timeFraction = 1;\n }\n // calculate the current animation state\n let progress = timing(timeFraction);\n draw(progress); // draw it\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n}\n\n/**\n * Parse Youtube or Vimeo videos and get host & ID\n */\nfunction parseVideo(url) {\n let type, match, vid;\n let regYt = /(https?:\\/\\/)?((www\\.)?(youtube(-nocookie)?|youtube.googleapis)\\.com.*(v\\/|v=|vi=|vi\\/|e\\/|embed\\/|user\\/.*\\/u\\/\\d+\\/)|youtu\\.be\\/)([_0-9a-z-]+)/i;\n match = url.match(regYt);\n if (match && match[7]) {\n type = 'youtube';\n vid = match[7];\n } else {\n let regVim = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/))?([0-9]+)/;\n match = url.match(regVim);\n if (match && match[5]) {\n type = 'vimeo';\n vid = match[5];\n }\n }\n return {\n type: type,\n id: vid\n };\n}\n\n/**\n * Get additional url parameters\n */\nfunction getUrlParameter(url) {\n let result = '';\n let sPageURL = decodeURIComponent(url);\n let firstsplit = sPageURL.split('?');\n\n if (firstsplit[1] !== undefined) {\n let sURLVariables = firstsplit[1].split('&');\n let sParameterName;\n let i;\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n result = result + '&'+ sParameterName[0]+'='+ sParameterName[1];\n }\n }\n return encodeURI(result);\n}\n\n/**\n * Get all images from string\n */\nfunction getImages(string) {\n imagesHolder.innerHTML = string;\n return imagesHolder.querySelectorAll('img');\n}\n\n/**\n * Update item settings.\n */\nfunction updateVars(obj){\n if (!obj) {\n return false;\n }\n navigationDisabled = true;\n current_item = obj;\n nextok = false;\n prevok = false;\n set_maxWidth = obj.getAttribute(\"data-maxwidth\") || obj.settings.maxWidth;\n set_overlayColor = obj.getAttribute(\"data-overlay\") || obj.settings.overlayColor;\n set_ratio = obj.getAttribute(\"data-ratio\") || obj.settings.ratio;\n set_autoplay = obj.hasAttribute(\"data-autoplay\") || obj.settings.autoplay;\n set_href = obj.getAttribute(\"data-href\") || obj.getAttribute('href');\n set_customclass = obj.getAttribute(\"data-customclass\") || obj.settings.customClass;\n title = obj.getAttribute(obj.settings.titleattr) || '';\n thisborder = obj.getAttribute(\"data-border\") || obj.settings.border;\n set_fitview = obj.hasAttribute(\"data-fitview\") || obj.settings.fitView;\n}\n\n/**\n * Close modal.\n */\nfunction close() {\n if (!current_item || !document.body.classList.contains('vbox-open')) {\n return false;\n }\n if (current_item.settings.onPreClose && typeof current_item.settings.onPreClose === 'function') {\n if (current_item.settings.onPreClose(current_item, gallIndex, thenext, theprev) === false) {\n return false;\n }\n }\n\n document.body.removeEventListener('keydown', keyboardHandler);\n document.body.classList.remove('vbox-open');\n\n if (current_item.settings.focusItem) {\n current_item.focus();\n }\n\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n overlay.style.opacity = 1 - progress;\n if (progress === 1){\n overlay.remove();\n }\n }\n });\n}\n\n/**\n * Navigate gallery.\n */\nfunction next() {\n navigateGall(thenext);\n}\nfunction prev() {\n navigateGall(theprev);\n}\n\n/**\n * Keyboard navigation.\n */\nfunction keyboardHandler(e) {\n if (e.keyCode === 27) { // esc\n close();\n }\n if (!throttle) {\n if (e.keyCode == 37 && prevok === true) { // <\n navigateGall(theprev);\n }\n if (e.keyCode == 39 && nextok === true) { // >\n navigateGall(thenext);\n }\n /* prevent keyboard processing until timer completed */\n throttle = setTimeout(() => {\n throttle = null;\n }, 100);\n }\n}\n\n/**\n * Append and fade-in new content\n */\nfunction contentLoaded(){\n\n navigationDisabled = false;\n\n content.style.opacity = 0;\n\n content.innerHTML = newcontent;\n dragListeners();\n\n let vboxChild = content.querySelector(\":first-child\");\n\n vboxChild.classList.add('vbox-child');\n\n vboxChild.style.backgroundColor = current_item.settings.bgcolor;\n // vboxChild.style.maxWidth = set_maxWidth;\n vboxChild.style.transform = 'scale(0.9)';\n vboxChild.style.transition = 'transform 200ms';\n\n // Fix weird drag\n let childImageLock = content.querySelector('.vbox-child img');\n\n if (childImageLock) {\n childImageLock.addEventListener('dragstart', function(e) {\n e.preventDefault();\n });\n }\n\n // reset content scroll\n container.scrollTo(0, 0);\n vboxChild.style.transform = 'scale(1)';\n\n overlay.style.setProperty('--vbox-padding', thisborder);\n overlay.style.setProperty('--vbox-max-width', set_maxWidth);\n\n // Reset custom classes.\n forEach(overlay.classList, function(obj){\n if (obj !== 'vbox-overlay') {\n overlay.classList.remove(obj);\n }\n });\n\n // Set custom class.\n if (set_customclass){\n overlay.classList.add(set_customclass);\n }\n\n // Set fitview class.\n if (set_fitview){\n content.classList.add('vbox-fit');\n } else {\n content.classList.remove('vbox-fit');\n }\n\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n content.style.opacity = progress;\n if (progress === 1){\n elPreloader.classList.add('vbox-hidden');\n }\n }\n });\n if (current_item.settings.onContentLoaded && typeof current_item.settings.onContentLoaded === 'function') {\n current_item.settings.onContentLoaded(newcontent);\n }\n}\n\n/**\n * Check animation state\n * @param {string} state 'loading' | 'animated'\n */\nfunction checkState(state) {\n if (!content.classList.contains('vbox-' + state)) {\n contentLoaded();\n }\n}\n\n/**\n * Load iFrame\n */\nfunction loadIframe(dest, ratio){\n content.classList.add(\"vbox-loading\");\n newcontent = '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n}\n\n/**\n * Load videos\n */\nfunction loadVid(dest, ratio, autoplay){\n\n content.classList.add(\"vbox-loading\");\n let stringAutoplay; \n let videoObj = parseVideo(dest);\n\n if (videoObj.type == 'vimeo' || videoObj.type == 'youtube') {\n let player;\n\n // set rel=0 to hide related videos at the end of YT + optional autoplay\n stringAutoplay = autoplay ? \"?rel=0&autoplay=1\" : \"?rel=0\";\n let queryvars = stringAutoplay + getUrlParameter(dest);\n\n if (videoObj.type == 'vimeo') {\n player = 'https://player.vimeo.com/video/';\n } else if (videoObj.type == 'youtube') {\n player = 'https://www.youtube-nocookie.com/embed/';\n }\n newcontent = '
';\n } else {\n // // check if it's a video file - thanks to @alexxandar\n // if (/\\.(mp4|ogg|ogv|mov|webm)$/i.test(dest)) {\n stringAutoplay = autoplay ? \" autoplay\" : \"\";\n newcontent = '
';\n // }\n }\n\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n}\n\n/**\n * Load inline content\n */\nfunction loadInline(dest){\n let inlineContent = document.querySelector(dest);\n if (inlineContent) {\n content.classList.add(\"vbox-loading\");\n newcontent = '
' + inlineContent.innerHTML + '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n}\n\n/**\n * Preload images from ajax call\n */\nfunction loadAjaxImages(){\n images = getImages(newcontent);\n if (images.length) {\n let imgCounter = 0;\n forEach(images, function(getimg){\n let srcimg = getimg.src;\n imgLoader = new Image();\n imgLoader.onload = function(){\n imgCounter++;\n if ( imgCounter == images.length ) {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n };\n imgLoader.onerror = function(){\n imgCounter++;\n if ( imgCounter == images.length ) {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n };\n imgLoader.src = srcimg;\n });\n } else {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n}\n\n/**\n * Load Ajax\n */\nfunction loadAjax(dest){\n content.classList.add(\"vbox-loading\");\n let xhr = new XMLHttpRequest();\n xhr.open(\"GET\", dest, true);\n xhr.onload = function() {\n newcontent = '
'+ xhr.response +'
';\n loadAjaxImages();\n };\n xhr.onerror = function() {\n newcontent = '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n };\n xhr.send();\n}\n\n/**\n * Preload image\n */\nfunction loadImage(dest){\n // imgLoader = new Image();\n imgLoader.onload = function(){\n // image has been loaded\n newcontent = '
';\n content.classList.remove('vbox-loading');\n checkState('animated');\n };\n imgLoader.src = dest;\n}\n\n/**\n * Start Drag\n */\nfunction dragStart(e) {\n if (!navigationDisabled) {\n let speed = current_item.settings.navSpeed * 0.84;\n content.style.transition = \"margin \" + speed + \"ms ease-out, opacity \" + speed + \"ms ease-out\";\n startX = endX = e.type === \"touchstart\" ? e.touches[0].pageX : e.pageX;\n startY = endY = e.type === \"touchstart\" ? e.touches[0].pageY : e.pageY;\n startouch = true;\n }\n}\n\n/**\n * End Drag\n */\nfunction dragEnd(e) {\n if (startouch) {\n startouch = false;\n let subject = current_item;\n let change = false;\n diff = endX - startX;\n\n if (diff < 0 && nextok) {\n subject = thenext;\n change = true;\n }\n if (diff > 0 && prevok) {\n subject = theprev;\n change = true;\n }\n\n if (Math.abs(diff) >= threshold && change) {\n navigateGall(subject);\n } else {\n content.style.marginLeft = 0;\n content.style.opacity = 1;\n }\n }\n}\n\n/**\n * Drag items\n */\nfunction drag(e) {\n if (startouch && !navigationDisabled) {\n endX = e.type === \"touchmove\" ? e.touches[0].pageX : e.pageX;\n endY = e.type === \"touchmove\" ? e.touches[0].pageY : e.pageY;\n diffX = endX - startX;\n diffY = endY - startY;\n\n let absdiffX = Math.abs(diffX);\n let absdiffY = Math.abs(diffY);\n \n if (absdiffX > absdiffY && absdiffX <= 180) {\n let diffopac = (1 - absdiffX / 180) * 1.5;\n e.preventDefault();\n content.style.marginLeft = diffX + \"px\";\n content.style.opacity = diffopac;\n }\n }\n}\n\nfunction setShareButtons(href){\n // Navigator share\n if (navigator.canShare) {\n const shareData = {\n url: href\n };\n blockshare.insertAdjacentHTML('beforeend', '');\n const mobileShareBtn = blockshare.querySelector('.vbox-share-mobile');\n mobileShareBtn.addEventListener('click', function(e){\n e.preventDefault();\n navigator.share(shareData);\n });\n }\n\n // Download\n blockshare.insertAdjacentHTML('beforeend', ''+downloadIcon+'');\n\n // Copy link\n blockshare.insertAdjacentHTML('beforeend', '
');\n const shareCopyBtn = blockshare.querySelector('.vbox-share-copy');\n shareCopyBtn.addEventListener('click', function(e){\n e.preventDefault();\n let tooltip = document.getElementById(\"myTooltip\");\n navigator.clipboard.writeText(href).then(function() {\n tooltip.innerHTML = '
Copied
';\n }, function() {\n console.log('copy failed');\n });\n });\n}\n\nfunction dragListeners(){\n // activate swipe\n if (canDrag) {\n content.classList.add('vbox-grab');\n content.addEventListener(\"touchstart\", dragStart, false);\n content.addEventListener(\"touchend\", dragEnd, false);\n content.addEventListener(\"touchmove\", drag, false);\n content.addEventListener(\"mousedown\", dragStart, false);\n content.addEventListener(\"mouseup\", dragEnd, false);\n content.addEventListener(\"mouseout\", dragEnd, false);\n content.addEventListener(\"mousemove\", drag, false);\n } else {\n content.classList.remove('vbox-grab');\n content.removeEventListener(\"touchstart\", dragStart, false);\n content.removeEventListener(\"touchend\", dragEnd, false);\n content.removeEventListener(\"touchmove\", drag, false);\n content.removeEventListener(\"mousedown\", dragStart, false);\n content.removeEventListener(\"mouseup\", dragEnd, false);\n content.removeEventListener(\"mouseout\", dragEnd, false);\n content.removeEventListener(\"mousemove\", drag, false);\n }\n}\n\n/**\n * Check navigation\n * @param {object} el Current item\n */\nfunction checknav(el){\n\n if (!el) {\n return false;\n }\n\n thisgall = el.dataset.gall;\n numeratio = el.settings.numeration;\n infinigall = el.settings.infinigall;\n blockshare.innerHTML = '';\n\n let vbtype = el.dataset.vbtype;\n\n if (el.settings.share && vbtype !== 'iframe' && vbtype !== 'inline' && vbtype !== 'ajax' ) {\n setShareButtons(el.href);\n }\n\n items = document.querySelectorAll('.vbox-item[data-gall=\"' + thisgall + '\"]');\n\n current_index = Array.prototype.indexOf.call(items, el);\n\n if (items.length < 2) {\n numeratio = false;\n }\n if (items.length < 3) {\n infinigall = false;\n }\n\n thenext = items[current_index + 1];\n theprev = items[current_index - 1];\n\n if (!thenext && infinigall) {\n thenext = items[0];\n }\n\n if (!theprev && infinigall) {\n theprev = items[items.length - 1];\n }\n\n // Update gallery numeration\n if (items.length >= 1) {\n gallIndex = current_index + 1;\n blocknum.innerHTML = gallIndex + ' / ' + items.length;\n } else {\n gallIndex = 1;\n }\n if (numeratio) {\n blocknum.classList.remove('vbox-hidden');\n } else {\n blocknum.classList.add('vbox-hidden');\n }\n\n // Update title\n if (title !== '') {\n blocktitle.classList.remove('vbox-hidden');\n } else {\n blocktitle.classList.add('vbox-hidden');\n }\n blocktitle.innerHTML = title;\n\n // update navigation arrows\n prevok = false;\n nextok = false;\n\n if (thenext || infinigall) {\n nextok = true;\n }\n\n if (current_index > 0 || infinigall) {\n prevok = true;\n }\n\n canDrag = (prevok || nextok) && el.settings.navTouch;\n\n let vbox_next = overlay.querySelector('.vbox-next');\n let vbox_prev = overlay.querySelector('.vbox-prev');\n\n if (prevok) {\n vbox_prev.classList.remove('vbox-hidden');\n } else {\n vbox_prev.classList.add('vbox-hidden');\n }\n\n if (nextok) {\n vbox_next.classList.remove('vbox-hidden');\n } else {\n vbox_next.classList.add('vbox-hidden');\n }\n\n if (!el.settings.navigation) {\n vbox_next.classList.add('vbox-hidden');\n vbox_prev.classList.add('vbox-hidden');\n }\n} // Checknav\n\n/**\n * Update overlay and tools style.\n */\nfunction updateOverlay(destination){\n\n if (!destination) {\n return false;\n }\n\n backdrop.style.backgroundColor = set_overlayColor;\n\n // Custom preloader color.\n elPreloaderInner.innerHTML = createspinner(spinners[destination.settings.spinner]);\n\n overlay.style.setProperty('--sk-color', destination.settings.spinColor);\n\n elPreloader.classList.remove('vbox-hidden');\n\n blockshare.classList.remove('vbox-top', 'vbox-bottom');\n blocktitle.classList.remove('vbox-top', 'vbox-bottom');\n\n if (destination.settings.titlePosition == 'top') {\n blocktitle.classList.add('vbox-top');\n blockshare.classList.add('vbox-bottom');\n } else {\n blocktitle.classList.add('vbox-bottom');\n blockshare.classList.add('vbox-top');\n }\n\n let titleWidth = destination.settings.titleStyle === 'bar' ? '100%' : 'auto';\n let titleRadius = destination.settings.titleStyle === 'pill' ? '5em' : '0';\n let shareWidth = destination.settings.shareStyle === 'bar' ? '100%' : 'auto';\n let shareRadius = destination.settings.shareStyle === 'pill' ? '5em' : '0';\n let titlebg = destination.settings.titleStyle === 'transparent' ? 'transparent' : destination.settings.toolsBackground;\n let sharebg = destination.settings.shareStyle === 'transparent' ? 'transparent' : destination.settings.toolsBackground;\n\n overlay.style.setProperty('--vbox-title-width', titleWidth);\n overlay.style.setProperty('--vbox-title-radius', titleRadius);\n overlay.style.setProperty('--vbox-share-width', shareWidth);\n overlay.style.setProperty('--vbox-share-radius', shareRadius);\n overlay.style.setProperty('--vbox-tools-color', destination.settings.toolsColor);\n overlay.style.setProperty('--vbox-title-background', titlebg);\n overlay.style.setProperty('--vbox-share-background', sharebg);\n}\n\n/**\n * Load content\n */\nfunction loadContent(){\n if (!current_item) {\n return false;\n }\n let vbtype = current_item.dataset.vbtype;\n switch (vbtype) {\n case 'iframe':\n loadIframe(set_href, set_ratio);\n break;\n case 'inline':\n loadInline(set_href);\n break;\n case 'ajax':\n loadAjax(set_href);\n break;\n case 'video':\n loadVid(set_href, set_ratio, set_autoplay);\n break;\n default:\n loadImage(set_href);\n }\n}\n\n/**\n * Gallery navigation.\n */\nfunction navigateGall(destination) {\n\n if (!destination || navigationDisabled || !document.body.classList.contains('vbox-open')) {\n return false;\n }\n\n updateVars(destination);\n updateOverlay(destination);\n\n // swipe out item\n const speed = (current_item.settings.navSpeed * 0.84);\n content.style.transition = 'margin '+ speed + 'ms ease-out, opacity '+ speed + 'ms ease-out';\n\n if (destination === theprev) {\n content.classList.add(\"swipe-right\");\n }\n if (destination === thenext) {\n content.classList.add(\"swipe-left\");\n }\n\n elPreloader.classList.remove('vbox-hidden');\n const startopacity = content.style.opacity;\n content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n clonecontent = content.cloneNode(false);\n clonecontent.classList.add('cloned');\n clonecontent.classList.remove(\"swipe-left\", \"swipe-right\");\n clonecontent.style.opacity = 0;\n clonecontent.style.marginLeft = '0';\n clonecontent.style.marginRight = '0';\n\n const oldcontent = content;\n container.append(clonecontent);\n content = clonecontent;\n content.classList.remove('cloned');\n\n checknav(destination);\n\n animate({\n duration: current_item.settings.navSpeed,\n timing: timingLinear,\n draw: function(progress) {\n\n oldcontent.style.opacity = startopacity - progress/startopacity;\n\n if (progress === 1){\n oldcontent.remove();\n content.classList.remove(\"vbox-animated\");\n checkState('loading');\n navigationDisabled = false;\n\n if (current_item.settings.onNavComplete && typeof current_item.settings.onNavComplete === 'function') {\n current_item.settings.onNavComplete(current_item, gallIndex, thenext, theprev);\n }\n }\n }\n });\n loadContent();\n}\n\n/**\n * Open item.\n */\n function open(obj) {\n\n if (document.body.classList.contains('vbox-open') || !obj) {\n return false;\n }\n\n if (obj.settings.onPreOpen && typeof obj.settings.onPreOpen === 'function') {\n if (obj.settings.onPreOpen(obj) === false) {\n return false;\n }\n }\n\n updateVars(obj);\n\n document.body.insertAdjacentHTML('beforeend', core);\n document.body.classList.add('vbox-open');\n\n overlay = document.querySelector(\".vbox-overlay\");\n backdrop = overlay.querySelector(\".vbox-backdrop\");\n container = overlay.querySelector(\".vbox-container\");\n content = container.querySelector(\".vbox-content\");\n blocknum = overlay.querySelector(\".vbox-num\");\n blockshare = overlay.querySelector(\".vbox-share\");\n blocktitle = overlay.querySelector(\".vbox-title\");\n elPreloader = overlay.querySelector(\".vbox-preloader\");\n elPreloaderInner = elPreloader.querySelector(\".vbox-preloader-inner\");\n\n overlay.style.opacity = 0;\n\n updateOverlay(obj);\n checknav(obj);\n\n content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n // fade in overlay\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n overlay.style.opacity = progress;\n if (progress === 1){\n content.classList.remove('vbox-animated');\n navigationDisabled = false;\n checkState('loading');\n if (current_item.settings.onPostOpen && typeof current_item.settings.onPostOpen === 'function') {\n current_item.settings.onPostOpen(current_item, gallIndex, thenext, theprev);\n }\n }\n }\n });\n\n loadContent();\n\n // Keyboard actions\n if (obj.settings.navKeyboard) {\n document.body.addEventListener('keydown', keyboardHandler);\n\n // Reset the throttle timer\n document.body.addEventListener('keyup', () => {\n if (throttle) {\n clearTimeout(throttle);\n throttle = null;\n }\n });\n }\n\n // Prev gallery\n document.querySelector('.vbox-prev').addEventListener('click', function(){\n navigateGall(theprev);\n });\n\n // Newxt gallery\n document.querySelector('.vbox-next').addEventListener('click', function(){\n navigateGall(thenext);\n });\n\n // Close modal.\n overlay.addEventListener('click', function(e){\n let closeBtn = document.querySelector('.vbox-close');\n if (closeBtn) {\n if (closeBtn.contains(e.target) || closeBtn === e.target || (current_item.settings.overlayClose &&\n (e.target.classList.contains('vbox-overlay') ||\n e.target.classList.contains('vbox-content') ||\n e.target.classList.contains('vbox-backdrop') ||\n e.target.classList.contains('vbox-close') ||\n e.target.classList.contains('vbox-preloader') ||\n e.target.classList.contains('vbox-container'))\n )) {\n close();\n }\n }\n });\n}\n\n/**\n * Initialize Plugin\n */\nfunction init(venobox, settings) {\n\n if (settings.onInit && typeof settings.onInit === 'function') {\n settings.onInit(venobox);\n }\n\n let selectors = settings.jQuerySelectors || document.querySelectorAll(settings.selector);\n let navigation = 'NextPrev';\n let vbheader = '
0/0
';\n let vbfooter = '
';\n let preloader = '
';\n core = '
' + preloader + '
' + vbheader + navigation + vbfooter + '
';\n\n /**\n * Loop items.\n */\n forEach(selectors, function(obj){\n if (obj.classList.contains(\"vbox-item\")) {\n return true;\n }\n obj.settings = settings;\n obj.classList.add(\"vbox-item\");\n\n // Open Link\n obj.addEventListener(\"click\", function(e){\n e.preventDefault();\n // Remove focus from link to avoid multiple calls with enter key\n obj.blur();\n open(obj);\n return false;\n }); // Click;\n }); // forEach\n\n if (settings.popup) {\n let popup = document.querySelector(settings.popup);\n popup.settings = settings;\n open(popup);\n }\n} // init\n\n/**\n * VenoBox constructor\n */\nconst VenoBox = function (options) {\n const venobox = {};\n\n // Merge user options with defaults\n let settings = extend( defaults, options || {} );\n\n venobox.close = close;\n venobox.next = next;\n venobox.prev = prev;\n venobox.open = open;\n venobox.settings = settings;\n\n init(venobox, settings);\n\n // Public APIs\n return venobox;\n};\n\n/* jQuery bridge for $().venobox() */\nif (typeof jQuery === 'function') {\n (function($){\n \"use strict\";\n $.fn.extend({\n // plugin name - venobox\n venobox: function(options) {\n const pluginoptions = options || {};\n pluginoptions.jQuerySelectors = this;\n // Init venobx\n new VenoBox({pluginoptions});\n } // venobox\n }); // extend\n })(jQuery);\n}\n\nexport default VenoBox;\n"],"names":["backdrop","blocknum","blockshare","blocktitle","core","container","content","current_item","current_index","diffX","diffY","endY","elPreloader","elPreloaderInner","gallIndex","images","infinigall","items","navigationDisabled","newcontent","numeratio","nextok","prevok","overlay","set_maxWidth","set_overlayColor","set_ratio","set_autoplay","set_href","set_customclass","set_fitview","startY","thenext","theprev","thisborder","thisgall","title","throttle","imagesHolder","document","createElement","clonecontent","startX","endX","diff","startouch","imgLoader","Image","canDrag","spinners","bounce","chase","circle","flow","fold","grid","plane","pulse","swing","wander","wave","defaults","selector","autoplay","bgcolor","border","customClass","maxWidth","navigation","navKeyboard","navTouch","navSpeed","numeration","overlayClose","overlayColor","popup","ratio","share","shareStyle","spinner","spinColor","titleattr","titlePosition","titleStyle","toolsBackground","toolsColor","onPreOpen","onPostOpen","onPreClose","onNavComplete","onContentLoaded","onInit","jQuerySelectors","focusItem","fitView","forEach","collection","callback","scope","Object","prototype","toString","call","prop","hasOwnProperty","i","len","length","timingLinear","timeFraction","animate","timing","draw","duration","start","performance","now","requestAnimationFrame","time","progress","updateVars","obj","getAttribute","settings","hasAttribute","close","body","classList","contains","removeEventListener","keyboardHandler","remove","focus","style","opacity","next","navigateGall","prev","e","keyCode","setTimeout","contentLoaded","innerHTML","add","addEventListener","dragStart","dragEnd","drag","vboxChild","querySelector","backgroundColor","transform","transition","childImageLock","preventDefault","scrollTo","setProperty","checkState","state","loadVid","dest","stringAutoplay","videoObj","url","type","match","vid","regVim","id","parseVideo","player","queryvars","result","firstsplit","decodeURIComponent","split","undefined","sParameterName","sURLVariables","encodeURI","getUrlParameter","loadAjaxImages","string","querySelectorAll","imgCounter","getimg","srcimg","src","onload","onerror","speed","touches","pageX","pageY","subject","change","Math","abs","marginLeft","absdiffX","diffopac","checknav","el","dataset","gall","vbtype","href","navigator","canShare","shareData","insertAdjacentHTML","tooltip","getElementById","clipboard","writeText","then","console","log","setShareButtons","Array","indexOf","vbox_next","vbox_prev","updateOverlay","destination","spinarray","createspinner","titleWidth","titleRadius","shareWidth","shareRadius","titlebg","sharebg","loadContent","inlineContent","loadInline","xhr","XMLHttpRequest","open","response","send","loadAjax","loadImage","startopacity","cloneNode","marginRight","oldcontent","append","clearTimeout","closeBtn","target","VenoBox","options","venobox","extended","value","extend","selectors","blur","init","jQuery","fn","pluginoptions","this"],"mappings":"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"}