{"version":3,"file":"venobox.min.js","sources":["../src/venobox.esm.js"],"sourcesContent":["/**\n * VenoBox 2.0.4\n * Copyright 2013-2021 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, startY, thenext, theprev, thisborder, thisgall, title, throttle;\n\nconst svgOpen = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" fill=\"currentColor\">';\nconst svgClose = '</svg>';\nconst downloadIcon = svgOpen + '<path d=\"M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z\"/><path d=\"M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z\"/>' + svgClose;\nconst shareIcon = svgOpen + '<path fill-rule=\"evenodd\" d=\"M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1h-2z\"/><path fill-rule=\"evenodd\" d=\"M7.646.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 1.707V10.5a.5.5 0 0 1-1 0V1.707L5.354 3.854a.5.5 0 1 1-.708-.708l3-3z\"/>' + svgClose;\nconst linkIcon = svgOpen + '<path fill-rule=\"evenodd\" d=\"M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>' + 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();\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-rec', 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};\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 = '<div class=\"sk-center ' + spinarray[0] + '\">';\n    let i = 0;\n    for (i = 0; i < spinarray[2]; i++) {\n        spinner += '<div class=\"' + spinarray[1] + '\"></div>';\n    }\n    spinner += '</div>';\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.getAttribute(\"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}\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        current_item.settings.onPreClose(current_item, gallIndex, thenext, theprev);\n        if (current_item.settings.onPreClose === false) {\n            return false;\n        }\n    }\n    document.body.removeEventListener('keydown', keyboardHandler);\n    document.body.classList.remove('vbox-open');\n\n    current_item.focus();\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\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\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    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 = '<div class=\"venoratio venoratio-' + ratio + '\"><iframe src=\"' + dest + '\"></iframe></div>';\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\n    let stringAutoplay;                    \n    // check if it's a video file - thanks to @alexxandar\n    if (dest.search(/.+\\.mp4|og[gv]|webm/) !== -1) {\n        stringAutoplay = autoplay ? \" autoplay\" : \"\";\n        newcontent = '<div class=\"venoratio venoratio-' + ratio + '\"><video src=\"' + dest + '\"' + stringAutoplay + ' controls>Your browser does not support the video tag.</video></div>';\n    } else {\n        let player;\n        let videoObj = parseVideo(dest);\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.com/embed/';\n        }\n        newcontent = '<div class=\"venoratio venoratio-' + ratio + '\"><iframe webkitallowfullscreen mozallowfullscreen allowfullscreen allow=\"autoplay\" frameborder=\"0\" src=\"'+player+videoObj.id+queryvars+'\"></iframe></div>';\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 = '<div class=\"vbox-inline\">' + inlineContent.innerHTML + '</div>';\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 = '<div class=\"vbox-inline\">'+ xhr.response +'</div>';\n        loadAjaxImages();\n    };\n    xhr.onerror = function() {\n        newcontent = '<div class=\"vbox-inline\"></div>';\n        content.classList.remove(\"vbox-loading\");\n        checkState('animated');\n    };\n    xhr.send();\n}\n\n/**\n * Preload image\n */\nfunction loadImage(dest){\n    \n    imgLoader.onload = function(){\n        // image  has been loaded\n        newcontent = '<div class=\"vbox-child\"><img src=\"' + dest + '\"></div>';\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        startY = endY = e.pageY;\n        startX = endX = e.pageX;\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.pageX;\n        endY = 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\n\nfunction setShareButtons(href){\n    // Navigator share\n    if (navigator.canShare) {\n        const shareData = {\n            url: href\n        };\n        blockshare.insertAdjacentHTML('beforeend', '<div class=\"vbox-link-btn vbox-share-mobile\">'+shareIcon+'</div>');\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', '<a target=\"_blank\" href=\"'+href+'\" download>'+downloadIcon+'</a>');\n\n    // Copy link\n    blockshare.insertAdjacentHTML('beforeend', '<div class=\"vbox-tooltip\"><div class=\"vbox-link-btn vbox-share-copy\"><span class=\"vbox-tooltip-text\" id=\"myTooltip\"></span>'+linkIcon+'</div ></div>');\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 = '<div class=\"vbox-tooltip-inner\">Copied</div>';\n        }, function() {\n            console.log('copy failed');\n        });\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        infinigall = false;\n        numeratio = 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    // activate swipe\n    if ((prevok || nextok) && el.settings.navTouch) {\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    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\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    let 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\n    let startopacity = content.style.opacity;\n\n    content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n    checknav(destination);\n\n    animate({\n        duration: current_item.settings.navSpeed,\n        timing: timingLinear,\n        draw: function(progress) {\n\n            content.style.opacity = startopacity - progress/startopacity;\n\n            if (progress === 1){\n                content.classList.remove(\"swipe-left\", \"swipe-right\", \"vbox-animated\");\n                content.style.marginLeft = 0;\n                content.style.transition = '';\n\n                checkState('loading');\n\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        obj.settings.onPreOpen(obj);\n    }\n    if (!obj.settings.onPreOpen) {\n        return false;\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 = '<a class=\"vbox-next\"><span>Next</span></a><a class=\"vbox-prev\"><span>Prev</span></a>';\n    let vbheader = '<div class=\"vbox-title\"></div><div class=\"vbox-left-corner\"><div class=\"vbox-num\">0/0</div></div><div class=\"vbox-close\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"currentColor\" class=\"vbox-close-icon\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M13.854 2.146a.5.5 0 0 1 0 .708l-11 11a.5.5 0 0 1-.708-.708l11-11a.5.5 0 0 1 .708 0Z\"/><path fill-rule=\"evenodd\" d=\"M2.146 2.146a.5.5 0 0 0 0 .708l11 11a.5.5 0 0 0 .708-.708l-11-11a.5.5 0 0 0-.708 0Z\"/></svg></div>';\n    let vbfooter = '<div class=\"vbox-share\"></div>';\n    let preloader = '<div class=\"vbox-preloader\"><div class=\"vbox-preloader-inner\"></div></div>';\n    core = '<div class=\"vbox-overlay\"><div class=\"vbox-backdrop\"></div>' + preloader + '<div class=\"vbox-container\"><div class=\"vbox-content\"></div></div>' + vbheader + navigation + vbfooter + '</div>';\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","startY","thenext","theprev","thisborder","thisgall","title","throttle","imagesHolder","document","createElement","startX","endX","diff","startouch","imgLoader","Image","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","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","close","body","classList","contains","removeEventListener","keyboardHandler","remove","focus","style","opacity","next","navigateGall","prev","e","keyCode","setTimeout","checkState","state","innerHTML","vboxChild","querySelector","add","backgroundColor","transform","transition","childImageLock","addEventListener","preventDefault","scrollTo","setProperty","contentLoaded","loadVid","dest","stringAutoplay","search","player","videoObj","url","type","match","vid","regVim","id","parseVideo","queryvars","result","firstsplit","decodeURIComponent","split","undefined","sParameterName","sURLVariables","encodeURI","getUrlParameter","loadAjaxImages","string","querySelectorAll","imgCounter","getimg","srcimg","src","onload","onerror","dragStart","speed","pageY","pageX","dragEnd","subject","change","Math","abs","marginLeft","drag","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","clearTimeout","closeBtn","target","VenoBox","options","venobox","extended","value","extend","selectors","blur","init","jQuery","fn","pluginoptions","this"],"mappings":"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"}