{"version":3,"file":"venobox.min.js","sources":["../src/venobox.esm.js"],"sourcesContent":["/**\n * VenoBox 2.1.8\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 = '<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;\n\nlet startX = 0;\nlet endX = 0;\nlet diff = 0;\nlet threshold = 50;\nlet startouch = false;\nlet imagesHolder = false;\nlet imgLoader = false;\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    initialScale: 0.9,\n    transitionSpeed: 200\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.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('+ current_item.settings.initialScale +')'; \n    vboxChild.style.transition = 'transform '+ current_item.settings.transitionSpeed +'ms';\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: current_item.settings.transitionSpeed,\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    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 = '<div class=\"venoratio venoratio-' + ratio + '\"><iframe webkitallowfullscreen mozallowfullscreen allowfullscreen allow=\"autoplay\" frameborder=\"0\" src=\"'+player+videoObj.id+queryvars+'\"></iframe></div>';\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 = '<div class=\"venoratio venoratio-' + ratio + '\"><video src=\"' + dest + '\"' + stringAutoplay + ' controls>Your browser does not support the video tag.</video></div>';\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 = '<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            const ajaxImgLoader = new Image();\n            ajaxImgLoader.onload = function(){\n                imgCounter++;\n                if ( imgCounter == images.length ) {\n                    content.classList.remove(\"vbox-loading\");\n                    checkState('animated');\n                }\n            };\n            ajaxImgLoader.onerror = function(){\n                imgCounter++;\n                if ( imgCounter == images.length ) {\n                    content.classList.remove(\"vbox-loading\");\n                    checkState('animated');\n                }\n            };\n            ajaxImgLoader.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    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        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', '<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\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 = '<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    // DOM manipulation only initialized on constructor, so this is SSR framework safe (ex. SvelteKit)\n    imagesHolder = imagesHolder || document.createElement('div');\n    imgLoader = imgLoader || new Image();\n\n    /**\n     *  Loop items.\n     */\n    forEach(selectors, function(obj){\n        if (obj instanceof Element) {\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        }\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\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","clonecontent","startX","endX","diff","startouch","imagesHolder","imgLoader","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","initialScale","transitionSpeed","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","document","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","ajaxImgLoader","Image","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","createElement","Element","blur","init","jQuery","fn","pluginoptions","this"],"mappings":"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"}