!function(t,e){"use strict";function r(r,a,i,l,u){function f(){B=t.devicePixelRatio>1,i=c(i),a.delay>=0&&setTimeout(function(){s(!0)},a.delay),(a.delay<0||a.combined)&&(l.e=function(t,e){var n,i=0;return function(o,l){function u(){i=+new Date,e.call(r,o)}var f=+new Date-i;n&&clearTimeout(n),f>t||!a.enableThrottle||l?u():n=setTimeout(u,t-f)}}(a.throttle,function(t){"resize"===t.type&&(z=w=-1),s(t.all)}),l.a=function(t){t=c(t),i.push.apply(i,t)},l.g=function(){return i=n(i).filter(function(){return!n(this).data(a.loadedName)})},l.f=function(t){for(var e=0;e<t.length;e++){var r=i.filter(function(){return this===t[e]});r.length&&s(!1,r)}},s(),n(a.appendScroll).on("scroll."+u+" resize."+u,l.e))}function c(t){var i=a.defaultImage,o=a.placeholder,l=a.imageBase,u=a.srcsetAttribute,f=a.loaderAttribute,c=a._f||{};t=n(t).filter(function(){var t=n(this),r=m(this);return!t.data(a.handledName)&&(t.attr(a.attribute)||t.attr(u)||t.attr(f)||c[r]!==e)}).data("plugin_"+a.name,r);for(var s=0,d=t.length;s<d;s++){var A=n(t[s]),g=m(t[s]),h=A.attr(a.imageBaseAttribute)||l;g===I&&h&&A.attr(u)&&A.attr(u,b(A.attr(u),h)),c[g]===e||A.attr(f)||A.attr(f,c[g]),g===I&&i&&!A.attr(N)?A.attr(N,i):g===I||!o||A.css(C)&&"none"!==A.css(C)||A.css(C,"url('"+o+"')")}return t}function s(t,e){if(i.length){for(var o=e||i,l=!1,u=a.imageBase||"",f=a.srcsetAttribute,c=a.handledName,s=0;s<o.length;s++)if(t||e||A(o[s])){var g=n(o[s]),h=m(o[s]),b=g.attr(a.attribute),v=g.attr(a.imageBaseAttribute)||u,p=g.attr(a.loaderAttribute);g.data(c)||a.visibleOnly&&!g.is(":visible")||!((b||g.attr(f))&&(h===I&&(v+b!==g.attr(N)||g.attr(f)!==g.attr(E))||h!==I&&v+b!==g.css(C))||p)||(l=!0,g.data(c,!0),d(g,h,v,p))}l&&(i=n(i).filter(function(){return!n(this).data(c)}))}else a.autoDestroy&&r.destroy()}function d(t,e,r,i){++y;var o=function(){p("onError",t),v(),o=n.noop};p("beforeLoad",t);var l=a.attribute,u=a.srcsetAttribute,f=a.sizesAttribute,c=a.retinaAttribute,s=a.removeAttribute,d=a.loadedName,A=t.attr(c);if(i){var g=function(){s&&t.removeAttr(a.loaderAttribute),t.data(d,!0),p(L,t),setTimeout(v,1),g=n.noop};t.off(D).one(D,o).one(T,g),p(i,t,function(e){e?(t.off(T),g()):(t.off(D),o())})||t.trigger(D)}else{var h=n(new Image);h.one(D,o).one(T,function(){t.hide(),e===I?t.attr(F,h.attr(F)).attr(E,h.attr(E)).attr(N,h.attr(N)):t.css(C,"url('"+h.attr(N)+"')"),t[a.effect](a.effectTime),s&&(t.removeAttr(l+" "+u+" "+c+" "+a.imageBaseAttribute),f!==F&&t.removeAttr(f)),t.data(d,!0),p(L,t),h.remove(),v()});var m=(B&&A?A:t.attr(l))||"";h.attr(F,t.attr(f)).attr(E,t.attr(u)).attr(N,m?r+m:null),h.complete&&h.trigger(T)}}function A(t){var e=t.getBoundingClientRect(),r=a.scrollDirection,n=a.threshold,i=h()+n>e.top&&-n<e.bottom,o=g()+n>e.left&&-n<e.right;return"vertical"===r?i:("horizontal"===r||i)&&o}function g(){return z>=0?z:z=n(t).width()}function h(){return w>=0?w:w=n(t).height()}function m(t){return t.tagName.toLowerCase()}function b(t,e){if(e){var r=t.split(",");t="";for(var a=0,n=r.length;a<n;a++)t+=e+r[a].trim()+(a!==n-1?",":"")}return t}function v(){--y,i.length||y||p("onFinishedAll")}function p(t,e,n){return!!(t=a[t])&&(t.apply(r,[].slice.call(arguments,1)),!0)}var y=0,z=-1,w=-1,B=!1,L="afterLoad",T="load",D="error",I="img",N="src",E="srcset",F="sizes",C="background-image";"event"===a.bind||o?f():n(t).on(T+"."+u,f)}function a(a,o){var l=this,u=n.extend({},l.config,o),f={},c=u.name+"-"+ ++i;return l.config=function(t,r){return r===e?u[t]:(u[t]=r,l)},l.addItems=function(t){return f.a&&f.a("string"===n.type(t)?n(t):t),l},l.getItems=function(){return f.g?f.g():{}},l.update=function(t){return f.e&&f.e({},!t),l},l.force=function(t){return f.f&&f.f("string"===n.type(t)?n(t):t),l},l.loadAll=function(){return f.e&&f.e({all:!0},!0),l},l.destroy=function(){return n(u.appendScroll).off("."+c,f.e),n(t).off("."+c),f={},e},r(l,u,a,f,c),u.chainable?a:l}var n=t.jQuery||t.Zepto,i=0,o=!1;n.fn.Lazy=n.fn.lazy=function(t){return new a(this,t)},n.Lazy=n.lazy=function(t,r,i){if(n.isFunction(r)&&(i=r,r=[]),n.isFunction(i)){t=n.isArray(t)?t:[t],r=n.isArray(r)?r:[r];for(var o=a.prototype.config,l=o._f||(o._f={}),u=0,f=t.length;u<f;u++)(o[t[u]]===e||n.isFunction(o[t[u]]))&&(o[t[u]]=i);for(var c=0,s=r.length;c<s;c++)l[r[c]]=t[0]}},a.prototype.config={name:"lazy",chainable:!0,autoDestroy:!0,bind:"load",threshold:500,visibleOnly:!1,appendScroll:t,scrollDirection:"both",imageBase:null,defaultImage:"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",placeholder:null,delay:-1,combined:!1,attribute:"data-src",srcsetAttribute:"data-srcset",sizesAttribute:"data-sizes",retinaAttribute:"data-retina",loaderAttribute:"data-loader",imageBaseAttribute:"data-imagebase",removeAttribute:!0,handledName:"handled",loadedName:"loaded",effect:"show",effectTime:0,enableThrottle:!0,throttle:250,beforeLoad:e,afterLoad:e,onError:e,onFinishedAll:e},n(t).on("load",function(){o=!0})}(window);
(()=>{function t(i){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(i)}function i(i,e,a){return(e=function(i){var e=function(i){if("object"!=t(i)||!i)return i;var e=i[Symbol.toPrimitive];if(void 0!==e){var a=e.call(i,"string");if("object"!=t(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(i);return"symbol"==t(e)?e:e+""}(e))in i?Object.defineProperty(i,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[e]=a,i}!function(e){function a(){e(".zoom-instagram-widget__items").each(function(){e(this).find(".zoom-instagram-widget__item").each(function(){var t=e(this);if(!t.hasClass("wpz-insta-loaded")&&!t.data("shimmer-init")){t.data("shimmer-init",!0);var i=t.find("img.zoom-instagram-link, img.zoom-instagram-link-new").first();0!==i.length?i[0].complete&&i[0].naturalWidth>0?t.addClass("wpz-insta-loaded"):(i.on("load.shimmer",function(){t.addClass("wpz-insta-loaded")}),i.on("error.shimmer",function(){t.addClass("wpz-insta-loaded")})):t.addClass("wpz-insta-loaded")}})})}e(document).ready(function(){a()}),window.wpzInstaImageShimmerInit=a,e(window).on("load",function(){var n=!1;function o(){e(".wpzinsta-pro-load-more-btn").off("click.loadmore").on("click.loadmore",function(n){n.preventDefault();var o=e(this),s=o.closest(".wpzinsta-pro-load-more-wrapper"),r=o.closest(".zoom-instagram"),d=r.find(".zoom-instagram-widget__items");if("true"!==s.attr("data-disabled")&&!o.prop("disabled")&&!o.hasClass("loading")){var l=o.attr("data-feed-id"),c=o.attr("data-item-amount"),p=o.attr("data-image-size"),m=o.attr("data-allowed-post-types"),g=o.attr("data-next-url"),f=o.attr("data-nonce"),u=parseInt(o.attr("data-cache-offset")||"-1",10);if(u<0&&!g)o.hide();else{o.addClass("loading").prop("disabled",!0),s.addClass("loading");var w=o.find(".button-text").text();o.find(".button-text").text("Loading...");var h=-1!==window.location.search.indexOf("wpz-insta-widget-preview"),z={action:"wpzoom_instagram_load_more",feed_id:l,item_amount:c,image_size:p,allowed_post_types:m,next:g,_wpnonce:f};u>=0&&(z.cache_offset=u),h&&(z.preview=1),e.ajax({url:wpzInstaAjax.ajaxurl,type:"POST",dataType:"json",data:z,success:function(n){if(n.success&&n.data.html){var s=d.find("li").length;if(d.append(n.data.html),n.data.has_more?(void 0!==n.data.cache_offset&&n.data.cache_offset>=0?o.attr("data-cache-offset",n.data.cache_offset):o.attr("data-cache-offset","-1"),n.data.next_url&&o.attr("data-next-url",n.data.next_url)):o.hide(),d.zoomLoadAsyncImages(),a(),d.hasClass("layout-masonry"))if("function"==typeof e.fn.masonry){var l=d.find("li").slice(s);d.data("masonry")||d.masonry({itemSelector:".zoom-instagram-widget__item",columnWidth:".masonry-items-sizer",percentPosition:!0,gutter:parseInt(d.data("spacing")||10)}),d.masonry("appended",l)}else setTimeout(function(){d.zoomInstagramWidget({onlyNewItems:!0,startIndex:s})},100);else setTimeout(function(){d.zoomInstagramWidget({onlyNewItems:!0,startIndex:s})},100);if("1"===d.attr("data-lightbox")&&n.data.lightbox_html){var c=r.find(".wpz-insta-lightbox-wrapper .swiper-wrapper");if(c.length>0){c.append(n.data.lightbox_html);var p=c.parent();p.length>0&&p.get(0).swiper&&p.get(0).swiper.update(),c.find(".image-wrapper > .swiper").each(function(){if(!this.swiper){var t=e(this),a=t.closest(".image-wrapper");new Swiper(this,i(i(i(i(i(i(i(i(i(i({lazy:{threshold:50},watchSlidesVisibility:!0,preloadImages:!1},"lazy",!0),"direction","horizontal"),"loop",!1),"spaceBetween",20),"nested",!0),"watchOverflow",!0),"pagination",{el:t.find("> .swiper-pagination").get(0),type:"bullets",clickable:!0,hideOnClick:!1}),"navigation",{nextEl:t.find("> .swiper-button-next").get(0),prevEl:t.find("> .swiper-button-prev").get(0)}),"keyboard",{enabled:!0,onlyInViewport:!0}),"on",{init:function(){"function"==typeof window.wpzInstaUpdateProductTagVisibility&&window.wpzInstaUpdateProductTagVisibility(a,0)},activeIndexChange:function(){var t=this.slides[this.activeIndex],i=e(t).find("video").get(0);i&&i.play(),"function"==typeof window.wpzInstaUpdateProductTagVisibility&&window.wpzInstaUpdateProductTagVisibility(a,this.activeIndex)}}))}});var m=d.find("li").slice(s).find(".zoom-instagram-link");m.length>0&&(m.magnificPopup({items:{type:"inline",src:c.closest(".wpz-insta-lightbox-wrapper")},closeBtnInside:!1,mainClass:"wpzoom-lightbox",midClick:!0,callbacks:{open:function(){var i=e.magnificPopup.instance.st.el,a=this.content.find("> .swiper").get(0).swiper;if(this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"] video')&&this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"] video').trigger("play"),"object"===t(a)){var n=this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"]').index();a.slideTo(n)}},afterClose:function(){p.find("video").each(function(){this.pause(),this.currentTime=0})}}}),m.addClass("magnific-active"))}else d.zoomLightbox()}r.trigger("wpz-insta:loaded-more",[n.data])}else console.error("Load more failed:",n.data||"Unknown error"),o.hide()},error:function(t,i,e){console.error("AJAX load more error:",e),o.hide()},complete:function(){o.removeClass("loading").prop("disabled",!1),s.removeClass("loading"),o.find(".button-text").text(w)}})}}})}function s(){e(".zoom-instagram-widget__items").each(function(){var t=e(this);t.hasClass("layout-masonry")&&"function"==typeof e.fn.masonry?t.data("masonry")?t.masonry("layout"):t.masonry({itemSelector:".zoom-instagram-widget__item",columnWidth:".masonry-items-sizer",percentPosition:!0,gutter:parseInt(t.data("spacing")||10)}):t.zoomInstagramWidget()}),n=!1}a(),o(),e.fn.zoomLoadAsyncImages=function(){return-1!==window.location.search.indexOf("wpz-insta-widget-preview")?this:e(this).each(function(){var t=e(this),i=t.data("image-width"),a=t.data("image-resolution"),n=t.find("li").filter(function(){return e(this).data("media-id")}).map(function(){return{"media-id":e(this).attr("data-media-id"),nonce:e(this).attr("data-nonce"),"regenerate-thumbnails":e(this)[0].hasAttribute("data-regenerate-thumbnails")}});n.length&&function(e,n){n=n||3;for(var o=0;o<e.length;o+=n)e.slice(o,o+n).forEach(function(e){wp.ajax.post("wpzoom_instagram_get_image_async",{"media-id":e["media-id"],nonce:e.nonce,"image-resolution":a,"image-width":i,"regenerate-thumbnails":e["regenerate-thumbnails"]}).done(function(i){t.find('li[data-media-id="'+e["media-id"]+'"] .zoom-instagram-link').css("background-image","url("+i.image_src+")")}).fail(function(){})})}(n.toArray(),3)})},e.fn.zoomLightbox=function(){return e(this).each(function(){var a=e(this).closest(".widget").find(".wpz-insta-lightbox-wrapper > .swiper");if(0===a.length&&(a=e(this).closest(".zoom-instagram").find(".wpz-insta-lightbox-wrapper > .swiper")),0===a.length&&(a=e(this).parent().parent().find(".wpz-insta-lightbox-wrapper > .swiper")),a.closest(".wpz-insta-lightbox-wrapper"),a.length>0&&"undefined"!=typeof Swiper){var n=function(t,i){var a=t.find(".wpz-insta-lightbox-tags");0!==a.length&&a.find(".wpz-insta-lightbox-tag").each(function(){var t=e(this),a=parseInt(t.attr("data-album-index"),10);-1===a||a===i?t.addClass("wpz-insta-lightbox-tag--visible"):t.removeClass("wpz-insta-lightbox-tag--visible")})},o=a.find(".image-wrapper > .swiper");new Swiper(a.get(0),i(i(i(i(i(i(i(i(i({lazy:{threshold:50},watchSlidesVisibility:!0,preloadImages:!1},"lazy",!0),"direction","horizontal"),"loop",!1),"spaceBetween",20),"autoHeight",!1),"watchOverflow",!0),"navigation",{nextEl:a.find("> .swiper-button-next").get(0),prevEl:a.find("> .swiper-button-prev").get(0)}),"keyboard",{enabled:!0,onlyInViewport:!0}),"on",{activeIndexChange:function(){var t=this.slides[this.activeIndex],i=e(t),a=i.find("video").get(0);a&&a.play(),"function"==typeof window.wpzInstaInitProductCarousel&&window.wpzInstaInitProductCarousel(i)}})),o.each(function(){var t=e(this),a=t.closest(".image-wrapper");new Swiper(t.get(0),i(i(i(i(i(i(i(i(i(i({lazy:{threshold:50},watchSlidesVisibility:!0,preloadImages:!1},"lazy",!0),"direction","horizontal"),"loop",!1),"spaceBetween",20),"nested",!0),"watchOverflow",!0),"pagination",{el:t.find("> .swiper-pagination").get(0),type:"bullets",clickable:!0,hideOnClick:!1}),"navigation",{nextEl:t.find("> .swiper-button-next").get(0),prevEl:t.find("> .swiper-button-prev").get(0)}),"keyboard",{enabled:!0,onlyInViewport:!0}),"on",{init:function(){n(a,0)},activeIndexChange:function(){var t=this.slides[this.activeIndex],i=e(t).find("video").get(0);i&&i.play(),n(a,this.activeIndex)}}))}),window.wpzInstaUpdateProductTagVisibility=n;var s=e(this).closest(".widget").find(".zoom-instagram-widget__items");0===s.length&&(s=e(this).closest(".zoom-instagram").find(".zoom-instagram-widget__items")),0===s.length&&(s=e(this)),s.find(".zoom-instagram-link").magnificPopup({items:{type:"inline",src:a.closest(".wpz-insta-lightbox-wrapper")},closeBtnInside:!1,mainClass:"wpzoom-lightbox",midClick:!0,callbacks:{open:function(){var i=e.magnificPopup.instance.st.el,a=this.content.find("> .swiper").get(0).swiper;this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"] video')&&this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"] video').trigger("play"),"object"===t(a)&&a.slideTo(this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"]').index());var n=this.content.find('> .swiper > .swiper-wrapper > .swiper-slide[data-uid="'+i.data("mfp-src")+'"]');"function"==typeof window.wpzInstaInitProductCarousel&&window.wpzInstaInitProductCarousel(n)},afterClose:function(){a.find("video").each(function(){this.pause(),this.currentTime=0})}}}),s.find(".zoom-instagram-link").addClass("magnific-active")}})},window.wpzInstaInitProductCarousel=function(t){t.find(".wpz-insta-lightbox-product--carousel").each(function(){var t=e(this);if(!t.data("carousel-initialized")){var i=t.find(".wpz-insta-lightbox-product__carousel-inner"),a=i.find(".wpz-insta-lightbox-product__card"),n=t.find(".wpz-insta-lightbox-product__carousel-prev"),o=t.find(".wpz-insta-lightbox-product__carousel-next"),s=t.find(".wpz-insta-lightbox-product__carousel-dots");if(a.length<=1)return n.hide(),o.hide(),void s.hide();var r=0,d=a.length;s.empty();for(var l=function(t){var i=e('<span class="wpz-insta-lightbox-product__carousel-dot"></span>');0===t&&i.addClass("active"),i.on("click",function(){m(t)}),s.append(i)},c=0;c<d;c++)l(c);n.on("click",function(){r>0&&m(r-1)}),o.on("click",function(){r<d-1&&m(r+1)}),p(),t.data("carousel-initialized",!0)}function p(){i.css("transform","translateX(-"+100*r+"%)"),s.find(".wpz-insta-lightbox-product__carousel-dot").removeClass("active").eq(r).addClass("active"),n.prop("disabled",0===r),o.prop("disabled",r===d-1)}function m(t){t>=0&&t<d&&(r=t,p())}})},e.fn.zoomInstagramWidget=function(t){return e(this).each(function(){var i,a,n=e(this),o=t||{},s=n.data("images-per-row"),r=n.data("image-width"),d=n.data("image-spacing"),l=(n.data("image-lazy-loading"),n.width());l/r<s?(i=s,a=Math.floor((l-1-(s-1)*d)/s)):(i=Math.floor((l-1)/r),a=Math.floor((l-1-(i-1)*d)/i)),(o.onlyNewItems&&void 0!==o.startIndex?n.find("li").slice(o.startIndex):n.find("li")).each(function(t){var a=(o.onlyNewItems&&void 0!==o.startIndex?o.startIndex+t:t)+1;a%i==1?e(this).css("clear","left"):e(this).css("clear","none"),a%i==0?e(this).css("margin-right","0"):(e(this).css("margin-right",d+"px"),e(this).css("margin-bottom",d+"px"))}),n.find("a.zoom-instagram-link").css({width:a,height:a}),n.find("a.zoom-instagram-link-old").lazy(),n.find(".zoom-instagram-link-new").lazy(),n.removeClass("zoom-instagram-widget__items--no-js")})},e(window).on("resize orientationchange",function(){n||(n=!0,(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)})(s))}),e(".zoom-instagram-widget__items").each(function(){var t=e(this);t.hasClass("layout-masonry")&&"function"==typeof e.fn.masonry?t.masonry({itemSelector:".zoom-instagram-widget__item",columnWidth:".masonry-items-sizer",percentPosition:!0,gutter:parseInt(t.data("spacing")||10)}):t.zoomInstagramWidget()}),e(".zoom-instagram-widget__items").zoomLoadAsyncImages(),e('.zoom-instagram-widget__items[data-lightbox="1"]').zoomLightbox();var r=_.debounce(function(){var t=e(".zoom-instagram-widget__items");t.length&&(t.each(function(){var t=e(this);t.hasClass("layout-masonry")&&"function"==typeof e.fn.masonry?t.masonry({itemSelector:".zoom-instagram-widget__item",columnWidth:".masonry-items-sizer",percentPosition:!0,gutter:parseInt(t.data("spacing")||10)}):t.zoomInstagramWidget()}),e(".zoom-instagram-widget__items").zoomLoadAsyncImages())},1500);e(document).on("panels_setup_preview",r),e(document).on("wpz-insta:loaded-more",function(){o()}),e(window).on("elementor/frontend/init",function(){elementorFrontend.hooks.addAction("frontend/element_ready/widget",function(t){"wpzoom-elementor-instagram-widget.default"==t.data("widget_type")&&t.find(".zoom-instagram-widget__items").each(function(){var t=e(this);t.hasClass("layout-masonry")&&"function"==typeof e.fn.masonry?t.masonry({itemSelector:".zoom-instagram-widget__item",columnWidth:".masonry-items-sizer",percentPosition:!0,gutter:parseInt(t.data("spacing")||10)}):t.zoomInstagramWidget()})})})})}(jQuery),document.body.addEventListener("click",function(t){var i=t.target.closest(".wpz-insta-link-product-btn");if(i&&(t.preventDefault(),t.stopPropagation(),"function"==typeof window.parent.postMessage)){var e=i.closest(".zoom-instagram-widget__item"),a=e&&e.getAttribute("data-media-type")||"image",n="",o=e?e.querySelector("img.zoom-instagram-link"):null;o&&(n=o.getAttribute("src")||o.getAttribute("data-src")||""),window.parent.postMessage({action:"wpz-insta-open-product-link",mediaId:i.getAttribute("data-media-id")||"",feedId:i.getAttribute("data-feed-id")||"",productId:i.getAttribute("data-product-id")||"",mediaType:a,imageUrl:n},"*")}},!0)})();
(()=>{var __webpack_modules__={265(){(()=>{"use strict";var __webpack_modules__={"./src/index.ts":(__unused_webpack_module,exports,__webpack_require__)=>{eval("\nexports.__esModule=true;\nexports.Zuck=void 0;\nvar utils_1=__webpack_require__(/*! ./utils */ \"./src/utils.ts\");\nvar options_1=__webpack_require__(/*! ./options */ \"./src/options.ts\");\nvar modal_1=__webpack_require__(/*! ./modal */ \"./src/modal.ts\");\nvar Zuck=function (timeline, options){\n    if(!timeline.id){\n        timeline.setAttribute('id', (0, utils_1.generateId)());\n    }\n    var id=timeline.id;\n    var _a=(0, options_1.loadOptions)(options), option=_a.option, callbackOption=_a.callback, templateOption=_a.template, languageOption=_a.language;\n    var data=option('stories')||[];\n    var internalData={};\n    /* data functions */\n    var saveLocalData=function (key, data){\n        try {\n            if(option('localStorage')&&(0, utils_1.hasWindow)()){\n                var keyName=\"zuck-\".concat(id, \"-\").concat(key);\n                window.localStorage[keyName]=JSON.stringify(data);\n            }\n        }\n        catch (e){ }\n    };\n    var getLocalData=function (key){\n        if(option('localStorage')&&(0, utils_1.hasWindow)()){\n            var keyName=\"zuck-\".concat(id, \"-\").concat(key);\n            return window.localStorage[keyName]\n                ? JSON.parse(window.localStorage[keyName])\n:undefined;\n        }\n        else {\n            return undefined;\n        }\n    };\n    internalData.seenItems=getLocalData('seenItems')||{};\n    var playVideoItem=function (storyViewer, elements, unmute){\n        var itemElement=elements===null||elements===void 0 ? void 0:elements[1];\n        var itemPointer=elements===null||elements===void 0 ? void 0:elements[0];\n        if(!itemElement||!itemPointer){\n            return false;\n        }\n        var cur=internalData.currentVideoElement;\n        if(cur){\n            cur.pause();\n        }\n        if(itemElement.getAttribute('data-type')==='video'){\n            var video_1=itemElement.querySelector('video');\n            if(!video_1){\n                internalData.currentVideoElement=undefined;\n                return false;\n            }\n            var setDuration=function (){\n                var duration=video_1.duration;\n                var itemPointerProgress=itemPointer.querySelector('.progress');\n                if(+video_1.dataset.length){\n                    duration=+video_1.dataset.length;\n                }\n                if(duration&&itemPointerProgress){\n                    itemPointerProgress.style.animationDuration=\"\".concat(duration, \"s\");\n                }\n            };\n            setDuration();\n            video_1.addEventListener('loadedmetadata', setDuration);\n            internalData.currentVideoElement=video_1;\n            video_1.play();\n            try {\n                unmuteVideoItem(video_1, storyViewer);\n            }\n            catch (e){\n                console.warn('Could not unmute video', unmute);\n            }\n        }\n        else {\n            internalData.currentVideoElement=undefined;\n        }\n    };\n    var findStoryIndex=function (id){\n        return data.findIndex(function (item){ return item.id===id; });\n    };\n    var pauseVideoItem=function (){\n        var video=internalData.currentVideoElement;\n        if(video){\n            try {\n                video.pause();\n            }\n            catch (e){ }\n        }\n    };\n    var unmuteVideoItem=function (video, storyViewer){\n        video.muted=false;\n        video.volume=1.0;\n        video.removeAttribute('muted');\n        video.play();\n        if(video.paused){\n            video.muted=true;\n            video.play();\n        }\n        if(storyViewer){\n            storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('paused');\n        }\n    };\n    var parseItems=function (story, forceUpdate){\n        var storyId=(story===null||story===void 0 ? void 0:story.getAttribute('data-id'))||'';\n        var storyIndex=findStoryIndex(storyId);\n        var storyItems=document.querySelectorAll(\"#\".concat(id, \" [data-id=\\\"\").concat(storyId, \"\\\"] .items > li\"));\n        var items=[];\n        if(!option('reactive')||forceUpdate){\n            storyItems.forEach(function (_a){\n                var firstElementChild=_a.firstElementChild;\n                var a=firstElementChild;\n                var img=a===null||a===void 0 ? void 0:a.firstElementChild;\n                var li=a===null||a===void 0 ? void 0:a.parentElement;\n                var item={\n                    id: (a===null||a===void 0 ? void 0:a.getAttribute('data-id'))||(li===null||li===void 0 ? void 0:li.getAttribute('data-id')),\n                    src: a===null||a===void 0 ? void 0:a.getAttribute('href'),\n                    length: (0, utils_1.safeNum)(a===null||a===void 0 ? void 0:a.getAttribute('data-length')),\n                    type: a===null||a===void 0 ? void 0:a.getAttribute('data-type'),\n                    time: (a===null||a===void 0 ? void 0:a.getAttribute('data-time'))||(li===null||li===void 0 ? void 0:li.getAttribute('data-time')),\n                    link: (a===null||a===void 0 ? void 0:a.getAttribute('data-link'))||'',\n                    linkText: a===null||a===void 0 ? void 0:a.getAttribute('data-linkText'),\n                    preview: img===null||img===void 0 ? void 0:img.getAttribute('src'),\n                    seen: li===null||li===void 0 ? void 0:li.classList.contains('seen')\n                };\n                var all=a===null||a===void 0 ? void 0:a.attributes;\n                var reserved=[\n                    'data-id',\n                    'href',\n                    'data-length',\n                    'data-type',\n                    'data-time',\n                    'data-link',\n                    'data-linkText'\n                ];\n                if(all){\n                    for (var z=0; z < all.length; z++){\n                        if(reserved.indexOf(all[z].nodeName)===-1){\n                            item[all[z].nodeName.replace('data-', '')]=all===null||all===void 0 ? void 0:all[z].nodeValue;\n                        }\n                    }\n                }\n                // destruct the remaining attributes as options\n                items.push(item);\n            });\n            data[storyIndex].items=items;\n            var callback=callbackOption('onDataUpdate');\n            if(callback){\n                callback(data, function (){ });\n            }\n        }\n    };\n    var parseStory=function (story){\n        var _a, _b;\n        var storyId=(story===null||story===void 0 ? void 0:story.getAttribute('data-id'))||'';\n        var storyIndex=findStoryIndex(storyId);\n        var seen=false;\n        if(internalData.seenItems[storyId]){\n            seen=true;\n        }\n        try {\n            var storyData={};\n            if(storyIndex!==-1){\n                storyData=data[storyIndex];\n            }\n            storyData.id=storyId;\n            storyData.photo=story===null||story===void 0 ? void 0:story.getAttribute('data-photo');\n            storyData.name=(_a=story===null||story===void 0 ? void 0:story.querySelector('.name'))===null||_a===void 0 ? void 0:_a.innerText;\n            storyData.link=(_b=story===null||story===void 0 ? void 0:story.querySelector('.item-link'))===null||_b===void 0 ? void 0:_b.getAttribute('href');\n            storyData.lastUpdated=(0, utils_1.safeNum)((story===null||story===void 0 ? void 0:story.getAttribute('data-last-updated'))||\n                (story===null||story===void 0 ? void 0:story.getAttribute('data-time')));\n            storyData.seen=seen;\n            if(!storyData.items){\n                storyData.items=[];\n            }\n            if(storyIndex===-1){\n                data.push(storyData);\n            }\n            else {\n                data[storyIndex]=storyData;\n            }\n        }\n        catch (e){\n            data[storyIndex]={\n                items: []\n            };\n        }\n        if(story){\n            story.onclick=function (e){\n                e.preventDefault();\n                modal.show(storyId);\n            };\n        }\n        var callback=callbackOption('onDataUpdate');\n        if(callback){\n            callback(data, function (){ });\n        }\n    };\n    var add=function (data, append){\n        var _a, _b, _c, _d;\n        var storyId=data['id']||'';\n        var storyEl=document.querySelector(\"#\".concat(id, \" [data-id=\\\"\").concat(storyId, \"\\\"]\"));\n        var items=data['items'];\n        var story=null;\n        var preview=undefined;\n        if(items===null||items===void 0 ? void 0:items[0]){\n            preview=((_a=items===null||items===void 0 ? void 0:items[0])===null||_a===void 0 ? void 0:_a.preview)||'';\n        }\n        if(internalData.seenItems[storyId]===true){\n            data.seen=true;\n        }\n        if(data){\n            data.currentPreview=preview;\n        }\n        if(!storyEl){\n            var storyItem=document.createElement('div');\n            storyItem.innerHTML=templateOption('timelineItem')(data);\n            story=storyItem.firstElementChild;\n        }\n        else {\n            story=storyEl;\n        }\n        if(data.seen===false){\n            internalData.seenItems[storyId]=false;\n            saveLocalData('seenItems', internalData.seenItems);\n        }\n        story===null||story===void 0 ? void 0:story.setAttribute('data-id', storyId);\n        if(data['photo']){\n            story===null||story===void 0 ? void 0:story.setAttribute('data-photo', data['photo']);\n        }\n        story===null||story===void 0 ? void 0:story.setAttribute('data-time', (_b=data['time'])===null||_b===void 0 ? void 0:_b.toString());\n        if(data['lastUpdated']){\n            story===null||story===void 0 ? void 0:story.setAttribute('data-last-updated', (_c=data['lastUpdated'])===null||_c===void 0 ? void 0:_c.toString());\n        }\n        else {\n            story===null||story===void 0 ? void 0:story.setAttribute('data-last-updated', (_d=data['time'])===null||_d===void 0 ? void 0:_d.toString());\n        }\n        parseStory(story);\n        if(!storyEl&&!option('reactive')){\n            if(append){\n                timeline.appendChild(story);\n            }\n            else {\n                (0, utils_1.prepend)(timeline, story);\n            }\n        }\n        items===null||items===void 0 ? void 0:items.forEach(function (item){\n            addItem(storyId, item, append);\n        });\n        if(!append){\n            updateStorySeenPosition();\n        }\n    };\n    var update=add;\n    var next=function (){\n        modal.next();\n    };\n    var remove=function (storyId){\n        var _a;\n        var story=document.querySelector(\"#\".concat(id, \" > [data-id=\\\"\").concat(storyId, \"\\\"]\"));\n        (_a=story===null||story===void 0 ? void 0:story.parentNode)===null||_a===void 0 ? void 0:_a.removeChild(story);\n    };\n    var addItem=function (storyId, data, append){\n        var story=document.querySelector(\"#\".concat(id, \" > [data-id=\\\"\").concat(storyId, \"\\\"]\"));\n        if(!option('reactive')){\n            var li=document.createElement('li');\n            var el=story===null||story===void 0 ? void 0:story.querySelectorAll('.items')[0];\n            if(data['id']){\n                li.className=data['seen'] ? 'seen':'';\n                li.setAttribute('data-id', data['id']);\n            }\n            li.innerHTML=templateOption('timelineStoryItem')(data);\n            if(append){\n                el===null||el===void 0 ? void 0:el.appendChild(li);\n            }\n            else {\n                (0, utils_1.prepend)(el, li);\n            }\n        }\n        parseItems(story);\n    };\n    var removeItem=function (storyId, itemId){\n        var _a;\n        var item=document.querySelector(\"#\".concat(id, \" > [data-id=\\\"\").concat(storyId, \"\\\"] [data-id=\\\"\").concat(itemId, \"\\\"]\"));\n        if(!option('reactive')){\n            (_a=item===null||item===void 0 ? void 0:item.parentNode)===null||_a===void 0 ? void 0:_a.removeChild(item);\n            data.forEach(function (story){\n                if(story.id===storyId){\n                    story.items=story.items.filter(function (item){ return item.id!==itemId; });\n                }\n            });\n        }\n    };\n    var nextItem=function (direction, event){\n        var currentStory=internalData.currentStory;\n        var currentStoryIndex=findStoryIndex(internalData.currentStory);\n        var currentItem=data[currentStoryIndex].currentItem;\n        var storyViewer=document.querySelector(\"#zuck-modal .story-viewer[data-story-id=\\\"\".concat(currentStory, \"\\\"]\"));\n        var directionNumber=direction==='previous' ? -1:1;\n        if(!storyViewer){\n            return false;\n        }\n        var currentItemElements=storyViewer.querySelectorAll(\"[data-index=\\\"\".concat(currentItem, \"\\\"]\"));\n        var currentPointer=currentItemElements[0];\n        var currentItemElement=currentItemElements[1];\n        var navigateItem=currentItem + directionNumber;\n        var nextItems=storyViewer.querySelectorAll(\"[data-index=\\\"\".concat(navigateItem, \"\\\"]\"));\n        var nextPointer=nextItems[0];\n        var nextItem=nextItems[1];\n        if(storyViewer&&nextPointer&&nextItem){\n            var navigateItemCallback=function (){\n                if(direction==='previous'){\n                    currentPointer===null||currentPointer===void 0 ? void 0:currentPointer.classList.remove('seen');\n                    currentItemElement===null||currentItemElement===void 0 ? void 0:currentItemElement.classList.remove('seen');\n                }\n                else {\n                    currentPointer===null||currentPointer===void 0 ? void 0:currentPointer.classList.add('seen');\n                    currentItemElement===null||currentItemElement===void 0 ? void 0:currentItemElement.classList.add('seen');\n                }\n                currentPointer===null||currentPointer===void 0 ? void 0:currentPointer.classList.remove('active');\n                currentItemElement===null||currentItemElement===void 0 ? void 0:currentItemElement.classList.remove('active');\n                nextPointer===null||nextPointer===void 0 ? void 0:nextPointer.classList.remove('seen');\n                nextPointer===null||nextPointer===void 0 ? void 0:nextPointer.classList.add('active');\n                nextItem===null||nextItem===void 0 ? void 0:nextItem.classList.remove('seen');\n                nextItem===null||nextItem===void 0 ? void 0:nextItem.classList.add('active');\n                storyViewer\n                    .querySelectorAll('.time')\n                    .forEach(function (el){\n                    el.innerText=(0, utils_1.timeAgo)(Number(nextItem.getAttribute('data-time')), option('language'));\n                });\n                data[currentStoryIndex].currentItem=\n                    data[currentStoryIndex].currentItem + directionNumber;\n                var nextVideo=nextItem.querySelector('video');\n                if(nextVideo){\n                    nextVideo.currentTime=0;\n                }\n                playVideoItem(storyViewer, nextItems, event);\n            };\n            var callback=callbackOption('onNavigateItem');\n            callback = !callback\n                ? callbackOption('onNextItem')\n:callbackOption('onNavigateItem');\n            callback(currentStory, nextItem.getAttribute('data-story-id'), navigateItemCallback);\n        }\n        else if(storyViewer){\n            if(direction!=='previous'){\n                modal.next();\n            }\n        }\n        return true;\n    };\n    var navigateItem=nextItem;\n    var updateStorySeenPosition=function (){\n        document\n            .querySelectorAll(\"#\".concat(id, \" .story.seen\"))\n            .forEach(function (el){\n            var storyId=el===null||el===void 0 ? void 0:el.getAttribute('data-id');\n            var storyIndex=findStoryIndex(storyId);\n            if(storyId){\n                var newData=data[storyIndex];\n                var timeline_1=el===null||el===void 0 ? void 0:el.parentNode;\n                if(!option('reactive')&&timeline_1){\n                    timeline_1.removeChild(el);\n                }\n                update(newData, true);\n            }\n        });\n    };\n    var init=function (){\n        if(timeline&&timeline.querySelector('.story')){\n            timeline.querySelectorAll('.story').forEach(function (story){\n                parseStory(story);\n                parseItems(story);\n            });\n        }\n        if(option('backNative')&&(0, utils_1.hasWindow)()){\n            if(window.location.hash===\"#!\".concat(id)){\n                window.location.hash='';\n            }\n            window.addEventListener('popstate', function (){\n                if(window.location.hash!==\"#!\".concat(id)){\n                    window.location.hash='';\n                }\n            }, false);\n        }\n        if(!option('reactive')){\n            var seenItems_1=getLocalData('seenItems');\n            if(seenItems_1){\n                Object.entries(seenItems_1).forEach(function (_a){\n                    var key=_a[1];\n                    if(key&&data[key]){\n                        data[key].seen=seenItems_1[key] ? true:false;\n                    }\n                });\n            }\n        }\n        option('stories').forEach(function (item){\n            add(item, true);\n        });\n        updateStorySeenPosition();\n        var avatars=option('avatars') ? 'user-icon':'story-preview';\n        var list=option('list') ? 'list':'carousel';\n        var rtl=option('rtl') ? 'rtl':'';\n        timeline.className +=\" stories \".concat(avatars, \" \").concat(list, \" \").concat(\"\".concat(option('skin')).toLowerCase(), \" \").concat(rtl);\n        return {\n            id: id,\n            option: option,\n            callback: callbackOption,\n            template: templateOption,\n            language: languageOption,\n            navigateItem: navigateItem,\n            saveLocalData: saveLocalData,\n            getLocalData: getLocalData,\n            data: data,\n            internalData: internalData,\n            add: add,\n            update: update,\n            next: next,\n            remove: remove,\n            addItem: addItem,\n            removeItem: removeItem,\n            nextItem: nextItem,\n            findStoryIndex: findStoryIndex,\n            updateStorySeenPosition: updateStorySeenPosition,\n            playVideoItem: playVideoItem,\n            pauseVideoItem: pauseVideoItem,\n            unmuteVideoItem: unmuteVideoItem\n        };\n    };\n    var zuck=init();\n    var modal=(0, modal_1.modal)(zuck);\n    return zuck;\n};\nexports.Zuck=Zuck;\nexports[\"default\"]=exports.Zuck;\n\n\n//# sourceURL=webpack://Zuck/./src/index.ts?")},"./src/modal.ts":(__unused_webpack_module,exports,__webpack_require__)=>{eval("\nexports.__esModule=true;\nexports.modal=void 0;\nvar utils_1=__webpack_require__(/*! ./utils */ \"./src/utils.ts\");\nvar modal=function (zuck){\n    var id=zuck.id;\n    var modalZuckContainer=document.querySelector('#zuck-modal');\n    if(!modalZuckContainer&&!zuck.hasModal){\n        zuck.hasModal=true;\n        modalZuckContainer=document.createElement('div');\n        modalZuckContainer.id='zuck-modal';\n        if(zuck.option('cubeEffect')){\n            modalZuckContainer.className='with-cube';\n        }\n        modalZuckContainer.innerHTML='<div id=\"zuck-modal-content\"></div>';\n        modalZuckContainer.style.display='none';\n        modalZuckContainer.setAttribute('tabIndex', '1');\n        modalZuckContainer.onkeyup=function (_a){\n            var keyCode=_a.keyCode;\n            var code=keyCode;\n            if(code===27){\n                modalZuckContainer.modal.close();\n            }\n            else if(code===13||code===32){\n                modalZuckContainer.modal.next();\n            }\n        };\n        if(zuck.option('openEffect')){\n            modalZuckContainer===null||modalZuckContainer===void 0 ? void 0:modalZuckContainer.classList.add('with-effects');\n        }\n        if(zuck.option('rtl')){\n            modalZuckContainer===null||modalZuckContainer===void 0 ? void 0:modalZuckContainer.classList.add('rtl');\n        }\n        (0, utils_1.onTransitionEnd)(modalZuckContainer, function (){\n            var modalContent=document.querySelector('#zuck-modal-content');\n            if(modalZuckContainer===null||modalZuckContainer===void 0 ? void 0:modalZuckContainer.classList.contains('closed')){\n                if(modalContent){\n                    modalContent.innerHTML='';\n                }\n                modalZuckContainer.style.display='none';\n                modalZuckContainer.classList.remove('closed');\n                modalZuckContainer.classList.remove('animated');\n            }\n        });\n        document.body.appendChild(modalZuckContainer);\n    }\n    var translate=function (element, to, duration, ease){\n        var _a;\n        if(to===undefined||(to&&isNaN(to))){\n            return;\n        }\n        var direction=to > 0 ? 1:-1;\n        var modalWidth=((_a=document.querySelector('#zuck-modal'))===null||_a===void 0 ? void 0:_a.offsetWidth)||1;\n        var to3d=(Math.abs(to) / modalWidth) * 90 * direction;\n        if(zuck.option('cubeEffect')){\n            var scaling=to3d===0 ? 'scale(0.95)':'scale(0.930,0.930)';\n            var modalContent=document.querySelector('#zuck-modal-content');\n            if(modalContent){\n                modalContent.style.transform=scaling;\n            }\n            if(to3d < -90||to3d > 90){\n                return false;\n            }\n        }\n        var transform = !zuck.option('cubeEffect')\n            ? \"translate3d(\".concat(to, \"px, 0, 0)\")\n:\"rotateY(\".concat(to3d, \"deg)\");\n        if(element){\n            if(ease){\n                element.style.transitionTimingFunction=ease;\n            }\n            element.style.transitionDuration=\"\".concat(duration, \"ms\");\n            element.style.transform=transform;\n        }\n    };\n    var fullScreen=function (elem, cancel){\n        var anyDocument=document;\n        var anyElem=elem;\n        try {\n            if(cancel){\n                if(anyDocument.fullscreenElement||\n                    anyDocument.webkitFullscreenElement||\n                    anyDocument.mozFullScreenElement||\n                    anyDocument.msFullscreenElement){\n                    if(anyDocument.exitFullscreen){\n                        anyDocument.exitFullscreen()[\"catch\"](function (){ });\n                    }\n                    else if(anyDocument.mozCancelFullScreen){\n                        anyDocument.mozCancelFullScreen()[\"catch\"](function (){ });\n                    }\n                }\n            }\n            else {\n                if(anyElem.requestFullscreen){\n                    anyElem.requestFullscreen();\n                }\n                else if(anyElem.msRequestFullscreen){\n                    anyElem.msRequestFullscreen();\n                }\n                else if(anyElem.mozRequestFullScreen){\n                    anyElem.mozRequestFullScreen();\n                }\n                else if(anyElem.webkitRequestFullscreen){\n                    anyElem.webkitRequestFullscreen();\n                }\n            }\n        }\n        catch (e){\n            console.warn(\"[Zuck.js] Can't access fullscreen\");\n        }\n    };\n    var moveStoryItem=function (direction){\n        var modalContainer=document.querySelector('#zuck-modal');\n        var modalSlider=document.querySelector(\"#zuck-modal-slider-\".concat(id));\n        var target='';\n        var useless='';\n        var transform=0;\n        var slideItems={\n            previous: document.querySelector('#zuck-modal .story-viewer.previous'),\n            next: document.querySelector('#zuck-modal .story-viewer.next'),\n            viewing: document.querySelector('#zuck-modal .story-viewer.viewing')\n        };\n        if((!slideItems.previous&&!direction)||\n            (!slideItems.next&&direction)){\n            if(!zuck.option('rtl')){\n                return false;\n            }\n        }\n        if(!direction){\n            target='previous';\n            useless='next';\n        }\n        else {\n            target='next';\n            useless='previous';\n        }\n        var transitionTime=600;\n        if(zuck.option('cubeEffect')){\n            if(target==='previous'){\n                transform=(0, utils_1.safeNum)(modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.slideWidth);\n            }\n            else if(target==='next'){\n                transform=(0, utils_1.safeNum)(modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.slideWidth) * -1;\n            }\n        }\n        else {\n            transform=(0, utils_1.findPos)(slideItems[target])[0] * -1;\n        }\n        translate(modalSlider, transform, transitionTime, null);\n        setTimeout(function (){\n            var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n            // set page data when transition complete\n            if(zuck.option('rtl')){\n                var tmp=target;\n                target=useless;\n                useless=tmp;\n            }\n            if(target!==''&&slideItems[target]&&useless!==''){\n                var currentStory=(_a=slideItems[target])===null||_a===void 0 ? void 0:_a.getAttribute('data-story-id');\n                zuck.internalData.currentStory=currentStory;\n                var oldStory=document.querySelector(\"#zuck-modal .story-viewer.\".concat(useless));\n                if(oldStory){\n                    (_b=oldStory===null||oldStory===void 0 ? void 0:oldStory.parentNode)===null||_b===void 0 ? void 0:_b.removeChild(oldStory);\n                }\n                if(slideItems.viewing){\n                    (_c=slideItems.viewing)===null||_c===void 0 ? void 0:_c.classList.add('stopped');\n                    (_d=slideItems.viewing)===null||_d===void 0 ? void 0:_d.classList.add(useless);\n                    (_e=slideItems.viewing)===null||_e===void 0 ? void 0:_e.classList.remove('viewing');\n                }\n                if(slideItems[target]){\n                    (_f=slideItems[target])===null||_f===void 0 ? void 0:_f.classList.remove('stopped');\n                    (_g=slideItems[target])===null||_g===void 0 ? void 0:_g.classList.remove(target);\n                    (_h=slideItems[target])===null||_h===void 0 ? void 0:_h.classList.add('viewing');\n                }\n                var newTimelineItem=getStoryMorningGlory(target);\n                if(newTimelineItem){\n                    createStoryViewer(newTimelineItem, target);\n                }\n                var storyId=zuck.internalData.currentStory;\n                var storyIndex=zuck.findStoryIndex(storyId);\n                var storyWrap=document.querySelector(\"#zuck-modal [data-story-id=\\\"\".concat(storyId, \"\\\"]\"));\n                var items=undefined;\n                if(storyWrap){\n                    items=storyWrap.querySelectorAll('[data-index].active');\n                    var duration=(_j=items===null||items===void 0 ? void 0:items[0])===null||_j===void 0 ? void 0:_j.firstElementChild;\n                    zuck.data[storyIndex].currentItem=(0, utils_1.safeNum)((_k=items===null||items===void 0 ? void 0:items[0])===null||_k===void 0 ? void 0:_k.getAttribute('data-index'));\n                    if(items===null||items===void 0 ? void 0:items[0]){\n                        items[0].innerHTML=zuck.template('viewerItemPointerProgress')(duration.style.cssText);\n                        (0, utils_1.onAnimationEnd)(duration, function (){\n                            zuck.nextItem();\n                        });\n                    }\n                }\n                translate(modalSlider, 0, 0, null);\n                if(items){\n                    var storyViewer=document.querySelector(\"#zuck-modal .story-viewer[data-story-id=\\\"\".concat(currentStory, \"\\\"]\"));\n                    zuck.playVideoItem(storyViewer, items);\n                }\n                zuck.callback('onView')(zuck.internalData.currentStory);\n            }\n        }, transitionTime + 50);\n    };\n    var createStoryViewer=function (storyData, className, forcePlay){\n        var modalSlider=document.querySelector(\"#zuck-modal-slider-\".concat(id));\n        var storyItems=storyData['items'];\n        storyData.time=storyItems&&(storyItems===null||storyItems===void 0 ? void 0:storyItems[0]['time']);\n        var htmlItems='';\n        var pointerItems='';\n        var storyId=storyData['id'];\n        var slides=document.createElement('div');\n        var currentItem=storyData['currentItem']||0;\n        var exists=document.querySelector(\"#zuck-modal .story-viewer[data-story-id=\\\"\".concat(storyId, \"\\\"]\"));\n        if(exists){\n            return false;\n        }\n        slides.className='slides';\n        storyItems.forEach(function (item, i){\n            if(currentItem > i){\n                storyData.items[i].seen=true;\n                item.seen=true;\n            }\n            pointerItems +=zuck.template('viewerItemPointer')(i, currentItem, item);\n            htmlItems +=zuck.template('viewerItemBody')(i, currentItem, item);\n        });\n        slides.innerHTML=htmlItems;\n        var video=slides.querySelector('video');\n        var addMuted=function (video){\n            if(video.muted){\n                storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.add('muted');\n            }\n            else {\n                storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('muted');\n            }\n        };\n        if(video){\n            video.onwaiting=function (){\n                if(video.paused){\n                    storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.add('paused');\n                    storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.add('loading');\n                }\n            };\n            video.onplay=function (){\n                addMuted(video);\n                storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('stopped');\n                storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('paused');\n                storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('loading');\n            };\n            video.onload=\n                video.onplaying=\n                    video.oncanplay=\n                        function (){\n                            addMuted(video);\n                            storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('loading');\n                        };\n            video.onvolumechange=function (){\n                addMuted(video);\n            };\n        }\n        var storyViewerWrap=document.createElement('div');\n        storyViewerWrap.innerHTML=zuck.template('viewerItem')(storyData, storyItems[currentItem]);\n        var storyViewer=storyViewerWrap.firstElementChild;\n        var storyViewerPointerWrap=storyViewer.querySelector('.slides-pointers .wrap');\n        storyViewer.className=\"story-viewer muted \".concat(className, \" \").concat(!forcePlay ? 'stopped':'', \" \").concat(zuck.option('backButton') ? 'with-back-button':'');\n        if(storyId){\n            storyViewer.setAttribute('data-story-id', storyId);\n        }\n        if(storyViewerPointerWrap){\n            storyViewerPointerWrap.innerHTML=pointerItems;\n        }\n        storyViewer\n            .querySelectorAll('.close, .back')\n            .forEach(function (el){\n            el.onclick=function (e){\n                e.preventDefault();\n                modalZuckContainer.modal.close();\n            };\n        });\n        storyViewer.appendChild(slides);\n        if(className==='viewing'){\n            zuck.playVideoItem(storyViewer, storyViewer.querySelectorAll(\"[data-index=\\\"\".concat(currentItem, \"\\\"].active\")), undefined);\n        }\n        storyViewer\n            .querySelectorAll('.slides-pointers [data-index] > .progress')\n            .forEach(function (el){\n            (0, utils_1.onAnimationEnd)(el, function (){\n                zuck.nextItem(undefined);\n            });\n        });\n        if(!modalSlider){\n            return;\n        }\n        if(className==='previous'){\n            (0, utils_1.prepend)(modalSlider, storyViewer);\n        }\n        else {\n            modalSlider.appendChild(storyViewer);\n        }\n    };\n    var createStoryTouchEvents=function (modalSlider){\n        var modalContainer=document.querySelector('#zuck-modal');\n        var enableMouseEvents=true;\n        var position=null;\n        var touchOffset=null;\n        var isScrolling=null;\n        var delta=null;\n        var timer=undefined;\n        var nextTimer=undefined;\n        var touchStart=function (event){\n            var storyViewer=document.querySelector('#zuck-modal .viewing');\n            var storyViewerWrap=document.querySelector('#zuck-modal .story-viewer');\n            if(event.target.nodeName==='A'){\n                return;\n            }\n            var touches=event.touches\n                ? event.touches[0]\n:event;\n            var pos=(0, utils_1.findPos)(document.querySelector('#zuck-modal .story-viewer.viewing'));\n            if(modalContainer){\n                modalContainer.slideWidth=storyViewerWrap===null||storyViewerWrap===void 0 ? void 0:storyViewerWrap.offsetWidth;\n                modalContainer.slideHeight=storyViewerWrap===null||storyViewerWrap===void 0 ? void 0:storyViewerWrap.offsetHeight;\n            }\n            position={\n                x: pos[0],\n                y: pos[1]\n            };\n            var clientX=touches.clientX;\n            var clientY=touches.clientY;\n            touchOffset={\n                x: clientX,\n                y: clientY,\n                time: Date.now(),\n                valid: true\n            };\n            if(clientY < 80||clientY > (0, utils_1.safeNum)(modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.slideHeight) - 80){\n                touchOffset.valid=false;\n            }\n            else {\n                event.preventDefault();\n                isScrolling=undefined;\n                delta={};\n                if(enableMouseEvents){\n                    modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('mousemove', touchMove);\n                    modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('mouseup', touchEnd);\n                    modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('mouseleave', touchEnd);\n                }\n                modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('touchmove', touchMove);\n                modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('touchend', touchEnd);\n                if(storyViewer){\n                    storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.add('paused');\n                }\n                zuck.pauseVideoItem();\n                timer=setTimeout(function (){\n                    if(storyViewer){\n                        storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.add('longPress');\n                    }\n                }, 600);\n                nextTimer=setTimeout(function (){\n                    clearInterval(nextTimer);\n                    nextTimer=undefined;\n                }, 250);\n            }\n        };\n        var touchMove=function (event){\n            var touches=event.touches\n                ? event.touches[0]\n:event;\n            var clientX=touches.clientX;\n            var clientY=touches.clientY;\n            if(touchOffset&&touchOffset.valid){\n                delta={\n                    x: clientX - touchOffset.x,\n                    y: clientY - touchOffset.y\n                };\n                if(typeof isScrolling==='undefined'){\n                    isScrolling = !!(isScrolling||Math.abs(delta.x) < Math.abs(delta.y));\n                }\n                if(!isScrolling&&touchOffset){\n                    event.preventDefault();\n                    translate(modalSlider, (0, utils_1.safeNum)(position===null||position===void 0 ? void 0:position.x) + (0, utils_1.safeNum)(delta===null||delta===void 0 ? void 0:delta.x), 0, null);\n                }\n            }\n        };\n        var touchEnd=function (event){\n            var storyViewer=document.querySelector('#zuck-modal .viewing');\n            var lastTouchOffset=touchOffset;\n            var duration=touchOffset ? Date.now() - touchOffset.time:undefined;\n            var isValid=(Number(duration) < 300&&Math.abs((0, utils_1.safeNum)(delta===null||delta===void 0 ? void 0:delta.x)) > 25)||\n                Math.abs((0, utils_1.safeNum)(delta===null||delta===void 0 ? void 0:delta.x)) > (0, utils_1.safeNum)(modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.slideWidth) / 3;\n            var direction=(0, utils_1.safeNum)(delta===null||delta===void 0 ? void 0:delta.x) < 0;\n            var index=direction\n                ? document.querySelector('#zuck-modal .story-viewer.next')\n:document.querySelector('#zuck-modal .story-viewer.previous');\n            var isOutOfBounds=(direction&&!index)||(!direction&&!index);\n            if(touchOffset&&!touchOffset.valid){\n            }\n            else {\n                if(delta){\n                    if(!isScrolling){\n                        if(isValid&&!isOutOfBounds){\n                            moveStoryItem(direction);\n                        }\n                        else {\n                            translate(modalSlider, (0, utils_1.safeNum)(position===null||position===void 0 ? void 0:position.x), 300);\n                        }\n                    }\n                    touchOffset=undefined;\n                    if(enableMouseEvents){\n                        modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.removeEventListener('mousemove', touchMove);\n                        modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.removeEventListener('mouseup', touchEnd);\n                        modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.removeEventListener('mouseleave', touchEnd);\n                    }\n                    modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.removeEventListener('touchmove', touchMove);\n                    modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.removeEventListener('touchend', touchEnd);\n                }\n                var video=zuck.internalData.currentVideoElement;\n                if(timer){\n                    clearInterval(timer);\n                }\n                if(storyViewer){\n                    zuck.playVideoItem(storyViewer, storyViewer.querySelectorAll('.active'), undefined);\n                    storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('longPress');\n                    storyViewer===null||storyViewer===void 0 ? void 0:storyViewer.classList.remove('paused');\n                }\n                if(nextTimer){\n                    clearInterval(nextTimer);\n                    nextTimer=undefined;\n                    var navigateItem=function (){\n                        if(!direction){\n                            if((0, utils_1.safeNum)(lastTouchOffset===null||lastTouchOffset===void 0 ? void 0:lastTouchOffset.x) > document.body.offsetWidth / 3||\n                                !zuck.option('previousTap')){\n                                if(zuck.option('rtl')){\n                                    zuck.navigateItem('previous', event);\n                                }\n                                else {\n                                    zuck.navigateItem('next', event);\n                                }\n                            }\n                            else {\n                                if(zuck.option('rtl')){\n                                    zuck.navigateItem('next', event);\n                                }\n                                else {\n                                    zuck.navigateItem('previous', event);\n                                }\n                            }\n                        }\n                    };\n                    var storyViewerViewing=document.querySelector('#zuck-modal .viewing');\n                    if(storyViewerViewing&&video){\n                        if(storyViewerViewing===null||storyViewerViewing===void 0 ? void 0:storyViewerViewing.classList.contains('muted')){\n                            zuck.unmuteVideoItem(video, storyViewerViewing);\n                        }\n                        else {\n                            navigateItem();\n                        }\n                    }\n                    else {\n                        navigateItem();\n                        return false;\n                    }\n                }\n            }\n        };\n        modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('touchstart', touchStart);\n        if(enableMouseEvents){\n            modalSlider===null||modalSlider===void 0 ? void 0:modalSlider.addEventListener('mousedown', touchStart);\n        }\n    };\n    var getStoryMorningGlory=function (what){\n        // my wife told me to stop singing Wonderwall. I SAID MAYBE.\n        var currentStory=zuck.internalData.currentStory;\n        if(currentStory&&what!==''){\n            var element=document.querySelector(\"#\".concat(id, \" [data-id=\\\"\").concat(currentStory, \"\\\"]\"));\n            var foundStory=what==='previous'\n                ? element.previousElementSibling\n:element.nextElementSibling;\n            if(foundStory){\n                var storyId=foundStory.getAttribute('data-id');\n                var storyIndex=zuck.findStoryIndex(storyId);\n                var data=zuck.data[storyIndex]||false;\n                return data;\n            }\n        }\n        return false;\n    };\n    var show=function (storyId){\n        var modalContainer=document.querySelector('#zuck-modal');\n        var callback=function (){\n            var modalContent=document.querySelector('#zuck-modal-content');\n            modalContent.innerHTML=\"<div id=\\\"zuck-modal-slider-\".concat(id, \"\\\" class=\\\"slider\\\"></div>\");\n            if(!modalContent||!storyId){\n                return;\n            }\n            var storyIndex=zuck.findStoryIndex(storyId);\n            var storyData=zuck.data[storyIndex];\n            var currentItem=storyData.currentItem||0;\n            var modalSlider=document.querySelector(\"#zuck-modal-slider-\".concat(id));\n            createStoryTouchEvents(modalSlider);\n            zuck.internalData.currentStory=storyId;\n            storyData.currentItem=currentItem;\n            if(zuck.option('backNative')&&(0, utils_1.hasWindow)()){\n                window.location.hash=\"#!\".concat(id);\n            }\n            var previousItemData=getStoryMorningGlory('previous');\n            if(previousItemData){\n                createStoryViewer(previousItemData, 'previous');\n            }\n            createStoryViewer(storyData, 'viewing', true);\n            var nextItemData=getStoryMorningGlory('next');\n            if(nextItemData){\n                createStoryViewer(nextItemData, 'next');\n            }\n            if(zuck.option('autoFullScreen')){\n                modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.classList.add('fullscreen');\n            }\n            var tryFullScreen=function (){\n                if((modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.classList.contains('fullscreen'))&&\n                    zuck.option('autoFullScreen')&&\n                    document.body.offsetWidth <=1024){\n                    fullScreen(modalContainer);\n                }\n                modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.focus();\n            };\n            var storyViewerWrap=document.querySelector('#zuck-modal .story-viewer');\n            if(zuck.option('openEffect')&&modalContainer){\n                var storyEl=document.querySelector(\"#\".concat(id, \" [data-id=\\\"\").concat(storyId, \"\\\"] .item-preview\"));\n                var pos=(0, utils_1.findPos)(storyEl);\n                modalContainer.style.marginLeft=\"\".concat(pos[0] + (0, utils_1.safeNum)(storyEl===null||storyEl===void 0 ? void 0:storyEl.offsetWidth) / 2, \"px\");\n                modalContainer.style.marginTop=\"\".concat(pos[1] + (0, utils_1.safeNum)(storyEl===null||storyEl===void 0 ? void 0:storyEl.offsetHeight) / 2, \"px\");\n                modalContainer.style.display='block';\n                modalContainer.slideWidth=(storyViewerWrap===null||storyViewerWrap===void 0 ? void 0:storyViewerWrap.offsetWidth)||0;\n                setTimeout(function (){\n                    modalContainer===null||modalContainer===void 0 ? void 0:modalContainer.classList.add('animated');\n                }, 10);\n                setTimeout(function (){\n                    tryFullScreen();\n                }, 300); // because effects\n            }\n            else {\n                if(modalContainer){\n                    modalContainer.style.display='block';\n                    modalContainer.slideWidth=(storyViewerWrap===null||storyViewerWrap===void 0 ? void 0:storyViewerWrap.offsetWidth)||0;\n                }\n                tryFullScreen();\n            }\n            zuck.callback('onView')(storyId);\n        };\n        zuck.callback('onOpen')(storyId, callback);\n    };\n    var next=function (){\n        var callback=function (){\n            var lastStory=zuck.internalData.currentStory;\n            var lastStoryIndex=zuck.findStoryIndex(lastStory);\n            var lastStoryTimelineElement=document.querySelector(\"#\".concat(id, \" [data-id=\\\"\").concat(lastStory, \"\\\"]\"));\n            if(lastStoryTimelineElement){\n                lastStoryTimelineElement===null||lastStoryTimelineElement===void 0 ? void 0:lastStoryTimelineElement.classList.add('seen');\n                zuck.data[lastStoryIndex].seen=true;\n                zuck.internalData.seenItems[lastStory]=true;\n                zuck.saveLocalData('seenItems', zuck.internalData.seenItems);\n                zuck.updateStorySeenPosition();\n            }\n            var stories=document.querySelector('#zuck-modal .story-viewer.next');\n            if(!stories){\n                modalZuckContainer.modal.close();\n            }\n            else {\n                if(zuck.option('rtl')){\n                    moveStoryItem(false);\n                }\n                else {\n                    moveStoryItem(true);\n                }\n            }\n        };\n        zuck.callback('onEnd')(zuck.internalData.currentStory, callback);\n    };\n    var close=function (){\n        var modalContainer=document.querySelector('#zuck-modal');\n        var modalContent=document.querySelector('#zuck-modal-content');\n        var callback=function (){\n            if(zuck.option('backNative')&&(0, utils_1.hasWindow)()){\n                window.location.hash='';\n            }\n            fullScreen(modalContainer, true);\n            if(modalContainer){\n                if(zuck.option('openEffect')){\n                    modalContainer.classList.add('closed');\n                }\n                else {\n                    if(modalContent){\n                        modalContent.innerHTML='';\n                    }\n                    modalContainer.style.display='none';\n                }\n            }\n        };\n        zuck.callback('onClose')(zuck.internalData.currentStory, callback);\n    };\n    modalZuckContainer.modal={\n        show: show,\n        next: next,\n        close: close\n    };\n    return modalZuckContainer.modal;\n};\nexports.modal=modal;\n\n\n//# sourceURL=webpack://Zuck/./src/modal.ts?")},"./src/options.ts":(__unused_webpack_module,exports,__webpack_require__)=>{eval('\nexports.__esModule=true;\nexports.loadOptions=exports.option=exports.optionsDefault=void 0;\nvar utils_1=__webpack_require__(/*! ./utils */ "./src/utils.ts");\nvar optionsDefault=function (option){ return ({\n    rtl: false,\n    skin: \'snapgram\',\n    avatars: true,\n    stories: [],\n    backButton: true,\n    backNative: false,\n    paginationArrows: false,\n    previousTap: true,\n    autoFullScreen: false,\n    openEffect: true,\n    cubeEffect: false,\n    list: false,\n    localStorage: true,\n    callbacks: {\n        onOpen: function (storyId, callback){\n            // on open story viewer\n            callback();\n        },\n        onView: function (storyId, callback){\n            // on view story\n            callback===null||callback===void 0 ? void 0:callback();\n        },\n        onEnd: function (storyId, callback){\n            // on end story\n            callback();\n        },\n        onClose: function (storyId, callback){\n            // on close story viewer\n            callback();\n        },\n        onNextItem: function (storyId, nextStoryId, callback){\n            // on navigate item of story\n            callback();\n        },\n        onNavigateItem: function (storyId, nextStoryId, callback){\n            // use to update state on your reactive framework\n            callback();\n        },\n        onDataUpdate: function (data, callback){\n            // use to update state on your reactive framework\n            callback();\n        }\n    },\n    template: {\n        timelineItem: function (itemData){\n            return "\\n        <div class=\\"story ".concat(itemData[\'seen\']===true ? \'seen\':\'\', "\\">\\n          <a class=\\"item-link\\" ").concat(itemData[\'link\'] ? "href=\\"".concat(itemData[\'link\']||\'\', "\\""):\'\', ">\\n            <span class=\\"item-preview\\">\\n              <img lazy=\\"eager\\" src=\\"").concat(option(\'avatars\')||!itemData[\'currentPreview\']\n                ? itemData[\'photo\']\n:itemData[\'currentPreview\'], "\\" />\\n            </span>\\n            <span class=\\"info\\" itemProp=\\"author\\" itemScope itemType=\\"http://schema.org/Person\\">\\n              <strong class=\\"name\\" itemProp=\\"name\\">").concat(itemData[\'name\'], "</strong>\\n              <span class=\\"time\\">").concat((0, utils_1.timeAgo)(itemData[\'lastUpdated\']||itemData[\'time\'], option(\'language\'))||\'\', "</span>\\n            </span>\\n          </a>\\n\\n          <ul class=\\"items\\"></ul>\\n        </div>");\n        },\n        timelineStoryItem: function (itemData){\n            var reserved=[\n                \'id\',\n                \'seen\',\n                \'src\',\n                \'link\',\n                \'linkText\',\n                \'loop\',\n                \'time\',\n                \'type\',\n                \'length\',\n                \'preview\'\n            ];\n            var attributes="";\n            for (var dataKey in itemData){\n                if(reserved.indexOf(dataKey)===-1){\n                    if(itemData[dataKey]!==undefined&&itemData[dataKey]!==false){\n                        attributes +=" data-".concat(dataKey, "=\\"").concat(itemData[dataKey], "\\"");\n                    }\n                }\n            }\n            reserved.forEach(function (dataKey){\n                if(itemData[dataKey]!==undefined&&itemData[dataKey]!==false){\n                    attributes +=" data-".concat(dataKey, "=\\"").concat(itemData[dataKey], "\\"");\n                }\n            });\n            return "<a href=\\"".concat(itemData[\'src\'], "\\" ").concat(attributes, ">\\n                <img loading=\\"auto\\" src=\\"").concat(itemData[\'preview\'], "\\" />\\n              </a>");\n        },\n        viewerItem: function (storyData, currentStoryItem){\n            return "<div class=\\"story-viewer\\">\\n                <div class=\\"head\\">\\n                  <div class=\\"left\\">\\n                    ".concat(option(\'backButton\') ? \'<a class="back">&lsaquo;</a>\':\'\', "\\n\\n                    <span class=\\"item-preview\\">\\n                      <img lazy=\\"eager\\" class=\\"profilePhoto\\" src=\\"").concat(storyData[\'photo\'], "\\" />\\n                    </span>\\n\\n                    <div class=\\"info\\">\\n                      <strong class=\\"name\\">").concat(storyData[\'name\'], "</strong>\\n                      <span class=\\"time\\">").concat((0, utils_1.timeAgo)(storyData[\'time\'], option(\'language\'))||\'\', "</span>\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\"right\\">\\n                    <span class=\\"time\\">\\n                      ").concat((0, utils_1.timeAgo)(currentStoryItem[\'time\'], option(\'language\'))||\n                \'\', "\\n                    </span>\\n                    <span class=\\"loading\\"></span>\\n                    <a class=\\"close\\" tabIndex=\\"2\\">&times;</a>\\n                  </div>\\n                </div>\\n\\n                <div class=\\"slides-pointers\\">\\n                  <div class=\\"wrap\\"></div>\\n                </div>\\n\\n                ").concat(option(\'paginationArrows\')\n                ? "\\n                    <div class=\\"slides-pagination\\">\\n                      <span class=\\"previous\\">&lsaquo;</span>\\n                      <span class=\\"next\\">&rsaquo;</span>\\n                    </div>"\n:\'\', "\\n              </div>");\n        },\n        viewerItemPointerProgress: function (style){\n            return "<span class=\\"progress\\" style=\\"".concat(style, "\\"></span>");\n        },\n        viewerItemPointer: function (index, currentIndex, item){\n            return "<span\\n                class=\\"\\n                  ".concat(currentIndex===index ? \'active\':\'\', "\\n                  ").concat(item[\'seen\']===true ? \'seen\':\'\', "\\n                \\"\\n                data-index=\\"").concat(index, "\\" data-item-id=\\"").concat(item[\'id\'], "\\">\\n                  ").concat(option(\'template\')[\'viewerItemPointerProgress\']("animation-duration:".concat((0, utils_1.safeNum)(item[\'length\']) ? item[\'length\']:\'3\', "s")), "\\n              </span>");\n        },\n        viewerItemBody: function (index, currentIndex, item){\n            return "<div\\n                class=\\"\\n                  item\\n                  ".concat(item[\'seen\']===true ? \'seen\':\'\', "\\n                  ").concat(currentIndex===index ? \'active\':\'\', "\\n                \\"\\n                data-time=\\"").concat(item[\'time\'], "\\"\\n                data-type=\\"").concat(item[\'type\'], "\\"\\n                data-index=\\"").concat(index, "\\"\\n                data-item-id=\\"").concat(item[\'id\'], "\\">\\n                ").concat(item[\'type\']===\'video\'\n                ? "<video class=\\"media\\" data-length=\\"".concat(item.length, "\\" ").concat(item.loop ? \'loop\':\'\', " muted webkit-playsinline playsinline preload=\\"auto\\" src=\\"").concat(item[\'src\'], "\\" ").concat(item[\'type\'], "></video>\\n                    <b class=\\"tip muted\\">").concat(option(\'language\')[\'unmute\'], "</b>")\n:"<img loading=\\"auto\\" class=\\"media\\" src=\\"".concat(item[\'src\'], "\\" ").concat(item[\'type\'], " />\\n                "), "\\n\\n                ").concat(item[\'link\']\n                ? "<a class=\\"tip link\\" href=\\"".concat(item[\'link\'], "\\" rel=\\"noopener\\" target=\\"_blank\\">\\n                        ").concat(item[\'linkText\']||option(\'language\')[\'visitLink\'], "\\n                      </a>")\n:\'\', "\\n              </div>");\n        }\n    },\n    language: {\n        unmute: \'Touch to unmute\',\n        keyboardTip: \'Press space to see next\',\n        visitLink: \'Visit link\',\n        time: {\n            ago: \'ago\',\n            hour: \'hour ago\',\n            hours: \'hours ago\',\n            minute: \'minute ago\',\n            minutes: \'minutes ago\',\n            fromnow: \'from now\',\n            seconds: \'seconds ago\',\n            yesterday: \'yesterday\',\n            tomorrow: \'tomorrow\',\n            days: \'days ago\'\n        }\n    }\n});};\nexports.optionsDefault=optionsDefault;\nvar option=function (options, _name){\n    var self=function (name){\n        return typeof (options===null||options===void 0 ? void 0:options[name])!==\'undefined\'\n            ? options===null||options===void 0 ? void 0:options[name]\n:(0, exports.optionsDefault)(self)[name];\n    };\n    return self(_name);\n};\nexports.option=option;\nvar loadOptions=function (options){\n    return {\n        option: function (name){\n            return (0, exports.option)(options, name);\n        },\n        callback: function (name){\n            var customOpts=(0, exports.option)(options, \'callbacks\');\n            return typeof customOpts[name]!==undefined\n                ? customOpts[name]\n:(0, exports.option)(undefined, \'callbacks\')[name];\n        },\n        template: function (name){\n            var customOpts=(0, exports.option)(options, \'template\');\n            return typeof customOpts[name]!==undefined\n                ? customOpts[name]\n:(0, exports.option)(undefined, \'template\')[name];\n        },\n        language: function (name){\n            var customOpts=(0, exports.option)(options, \'language\');\n            return typeof customOpts[name]!==undefined\n                ? customOpts[name]\n:(0, exports.option)(undefined, \'language\')[name];\n        }\n    };\n};\nexports.loadOptions=loadOptions;\n\n\n//# sourceURL=webpack://Zuck/./src/options.ts?')},"./src/utils.ts":(__unused_webpack_module,exports)=>{eval("\nexports.__esModule=true;\nexports.timeAgo=exports.findPos=exports.generateId=exports.prepend=exports.onTransitionEnd=exports.onAnimationEnd=exports.safeNum=exports.hasWindow=void 0;\nvar hasWindow=function (){\n    return typeof window!=='undefined';\n};\nexports.hasWindow=hasWindow;\nvar safeNum=function (num){\n    return num ? Number(num):0;\n};\nexports.safeNum=safeNum;\nvar onAnimationEnd=function (el, func){\n    el.addEventListener('animationend', func);\n};\nexports.onAnimationEnd=onAnimationEnd;\nvar onTransitionEnd=function (el, func){\n    if(!el.transitionEndEvent){\n        el.transitionEndEvent=true;\n        el.addEventListener('transitionend', func);\n    }\n};\nexports.onTransitionEnd=onTransitionEnd;\nvar prepend=function (parent, child){\n    if(!child||!parent){\n        return;\n    }\n    if(parent===null||parent===void 0 ? void 0:parent.firstChild){\n        parent.insertBefore(child, parent===null||parent===void 0 ? void 0:parent.firstChild);\n    }\n    else {\n        parent.appendChild(child);\n    }\n};\nexports.prepend=prepend;\nvar generateId=function (){\n    return 'stories-' + Math.random().toString(36).substr(2, 9);\n};\nexports.generateId=generateId;\nvar findPos=function (obj, offsetY, offsetX, stop){\n    var curleft=0;\n    var curtop=0;\n    if(obj){\n        if(obj.offsetParent){\n            do {\n                curleft +=obj.offsetLeft;\n                curtop +=obj.offsetTop;\n                if(obj===stop){\n                    break;\n                }\n            } while ((obj=obj.offsetParent));\n        }\n        if(offsetY){\n            curtop=curtop - offsetY;\n        }\n        if(offsetX){\n            curleft=curleft - offsetX;\n        }\n    }\n    return [curleft, curtop];\n};\nexports.findPos=findPos;\nvar timeAgo=function (time, languageObject){\n    var language=(languageObject===null||languageObject===void 0 ? void 0:languageObject.time)||undefined;\n    var timeNumber=time instanceof Date ? time.getTime():(0, exports.safeNum)(time) * 1000;\n    var dateObj=new Date(timeNumber);\n    var dateStr=dateObj.getTime();\n    var seconds=(new Date().getTime() - dateStr) / 1000;\n    var formats=[\n        [60, \" \".concat((language===null||language===void 0 ? void 0:language.seconds)||''), 1],\n        [120, \"1 \".concat((language===null||language===void 0 ? void 0:language.minute)||''), ''],\n        [3600, \" \".concat((language===null||language===void 0 ? void 0:language.minutes)||''), 60],\n        [7200, \"1 \".concat((language===null||language===void 0 ? void 0:language.hour)||''), ''],\n        [86400, \" \".concat((language===null||language===void 0 ? void 0:language.hours)||''), 3600],\n        [172800, \" \".concat((language===null||language===void 0 ? void 0:language.yesterday)||''), ''],\n        [604800, \" \".concat((language===null||language===void 0 ? void 0:language.days)||''), 86400]\n    ];\n    var currentFormat=1;\n    if(seconds < 0){\n        seconds=Math.abs(seconds);\n        currentFormat=2;\n    }\n    var result=false;\n    formats.forEach(function (format){\n        var formatKey=format[0];\n        if(seconds < formatKey&&!result){\n            if(typeof format[2]==='string'){\n                result=format[currentFormat];\n            }\n            else if(format!==null){\n                result=Math.floor(seconds / format[2]) + format[1];\n            }\n        }\n    });\n    if(!result){\n        var day=dateObj.getDate();\n        var month=dateObj.getMonth();\n        var year=dateObj.getFullYear();\n        return \"\".concat(day, \"/\").concat(month + 1, \"/\").concat(year);\n    }\n    else {\n        return result;\n    }\n};\nexports.timeAgo=timeAgo;\n\n\n//# sourceURL=webpack://Zuck/./src/utils.ts?")}},__webpack_module_cache__={};function __nested_webpack_require_66663__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var e=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](e,e.exports,__nested_webpack_require_66663__),e.exports}var __nested_webpack_exports__=__nested_webpack_require_66663__("./src/index.ts");this.y=__nested_webpack_exports__.default})()}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var e=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(e.exports,e,e.exports,__webpack_require__),e.exports}(()=>{"use strict";var t=__webpack_require__(265);!function(n){var e='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"/></svg>',o='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/></svg>';function i(){var t=n("#zuck-modal .wpz-insta-mute-btn");t.length&&(n("#zuck-modal .story-viewer.viewing .slides .item.active").find("video").length>0?(t.show(),t.html(v?e:o),t.attr("aria-label",v?"Unmute":"Mute")):t.hide())}function a(){n("#zuck-modal video").each(function(){this.muted=v,v||(this.volume=1)}),n("#zuck-modal .story-viewer").removeClass("muted"),i()}function r(t){t&&(t.preventDefault(),t.stopPropagation()),v=!v,a()}!function(){var t="wpz-insta-stories-modal-fix";if(!document.getElementById(t)){var n=document.createElement("style");if(n.id=t,n.textContent="\n\t\t\t/* Body scroll lock when stories modal is open */\n\t\t\tbody.wpz-insta-stories-open {\n\t\t\t\toverflow: hidden !important;\n\t\t\t\tposition: fixed !important;\n\t\t\t\twidth: 100% !important;\n\t\t\t\theight: 100% !important;\n\t\t\t}\n\n\t\t\t/* Full-screen overlay background */\n\t\t\t.wpz-insta-stories-overlay {\n\t\t\t\tposition: fixed !important;\n\t\t\t\ttop: 0 !important;\n\t\t\t\tleft: 0 !important;\n\t\t\t\tright: 0 !important;\n\t\t\t\tbottom: 0 !important;\n\t\t\t\twidth: 100% !important;\n\t\t\t\theight: 100% !important;\n\t\t\t\tbackground: #000 !important;\n\t\t\t\tz-index: 99999 !important;\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t\t.wpz-insta-stories-overlay.active {\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\n\t\t\t/* Fix iOS Safari viewport height issue */\n\t\t\t#zuck-modal {\n\t\t\t\tposition: fixed !important;\n\t\t\t\ttop: 0 !important;\n\t\t\t\tleft: 0 !important;\n\t\t\t\tright: 0 !important;\n\t\t\t\tbottom: 0 !important;\n\t\t\t\twidth: 100% !important;\n\t\t\t\theight: 100% !important;\n\t\t\t\theight: 100dvh !important;\n\t\t\t\tmin-height: -webkit-fill-available !important;\n\t\t\t\tz-index: 100000 !important;\n\t\t\t\tbackground: #000 !important;\n\t\t\t}\n\t\t\t#zuck-modal-content,\n\t\t\t#zuck-modal-content .story-viewer,\n\t\t\t#zuck-modal-content .story-viewer > .slides,\n\t\t\t#zuck-modal-content .story-viewer > .slides > * {\n\t\t\t\theight: 100% !important;\n\t\t\t\theight: 100dvh !important;\n\t\t\t\tmin-height: -webkit-fill-available !important;\n\t\t\t}\n\t\t\t/* Ensure the slider also uses full height */\n\t\t\t#zuck-modal .slider {\n\t\t\t\theight: 100% !important;\n\t\t\t\theight: 100dvh !important;\n\t\t\t\tmin-height: -webkit-fill-available !important;\n\t\t\t}\n\t\t\t#zuck-modal .slider > * {\n\t\t\t\theight: 100% !important;\n\t\t\t\theight: 100dvh !important;\n\t\t\t\tmin-height: -webkit-fill-available !important;\n\t\t\t}\n\n\t\t\t/* Custom mute/unmute button styling */\n\t\t\t#zuck-modal .story-viewer .head .right .wpz-insta-mute-btn {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\talign-items: flex-start;\n\t\t\t\tjustify-content: center;\n\t\t\t\twidth: 42px;\n\t\t\t\theight: 42px;\n\t\t\t\tbackground: none;\n\t\t\t\tborder: none;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\tcursor: pointer;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin-right: 8px;\n\t\t\t\tvertical-align: middle;\n\t\t\t\ttransition: background 0.2s ease;\n\t\t\t}\n\t\t\t#zuck-modal .story-viewer .head .right .wpz-insta-mute-btn:hover {\n\t\t\t\tbackground: rgba(0, 0, 0, 0.5);\n\t\t\t}\n\t\t\t#zuck-modal .story-viewer .head .right .wpz-insta-mute-btn svg {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tfill: #fff;\n\t\t\t}\n\t\t\t/* Hide the default Zuck.js mute tip since we have our own button */\n\t\t\t#zuck-modal .story-viewer .tip.muted {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\t\t",document.head.appendChild(n),!document.getElementById("wpz-insta-stories-overlay")){var e=document.createElement("div");e.id="wpz-insta-stories-overlay",e.className="wpz-insta-stories-overlay",document.body.appendChild(e)}}}();var s=new Set,l=null;function d(t){if(!t.wpzMuteEnforced){t.wpzMuteEnforced=!0;var n=Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"muted");Object.defineProperty(t,"muted",{get:function(){return n.get.call(this)},set:function(t){v?n.set.call(this,!0):n.set.call(this,t)},configurable:!0});var e=Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"volume");Object.defineProperty(t,"volume",{get:function(){return e.get.call(this)},set:function(t){v?e.set.call(this,0):e.set.call(this,t)},configurable:!0}),n.set.call(t,v),e.set.call(t,v?0:1)}}var c=null,u=0,m=!1,v=!0;function p(){-1===window.location.search.indexOf("wpz-insta-widget-preview")&&n(".wpz-insta-stories").each(function(){var m,p,f,y,w,g,k,h,I,_,S,b,x,z=n(this),E=z.get(0);if(!s.has(E)){var V=z.attr("data-stories");if(V){var D;try{D=JSON.parse(V)}catch(t){return void console.error("Instagram Stories: Failed to parse stories data",t)}if(D&&D.items&&0!==D.items.length){s.add(E);var C=++u,L=[{id:"wpz-feed-"+C+"-"+(D.id||"story"),photo:D.photo||"",name:D.name||"",link:D.link||"",lastUpdated:D.lastUpdated||Math.floor(Date.now()/1e3),seen:!1,items:D.items.map(function(t,n){return{id:t.id||"item-"+n,type:t.type||"photo",src:t.src||"",preview:t.preview||t.src||"",length:t.length||("video"===t.type?0:5),link:t.link||"",linkText:t.linkText||"View on Instagram",time:t.time||Math.floor(Date.now()/1e3),seen:!1}})}],q="wpz-insta-zuck-"+C,T=n("<div>").attr("id",q).addClass("wpz-insta-zuck-container").css({position:"absolute",left:"-9999px",top:"-9999px",width:"1px",height:"1px",overflow:"hidden"});n("body").append(T);var O=new t.y(T.get(0),{skin:"snapgram",avatars:!0,list:!1,cubeEffect:!0,autoFullScreen:!1,backButton:!0,backNative:!1,previousTap:!0,localStorage:!1,stories:L,language:{unmute:"undefined"!=typeof wpzInstaStories&&(null===(m=wpzInstaStories)||void 0===m||null===(m=m.i18n)||void 0===m?void 0:m.unmute)||"Touch to unmute",keyboardTip:"undefined"!=typeof wpzInstaStories&&(null===(p=wpzInstaStories)||void 0===p||null===(p=p.i18n)||void 0===p?void 0:p.keyboardTip)||"Press space to see next",visitLink:"undefined"!=typeof wpzInstaStories&&(null===(f=wpzInstaStories)||void 0===f||null===(f=f.i18n)||void 0===f?void 0:f.visitLink)||"Visit link",time:{ago:"undefined"!=typeof wpzInstaStories&&(null===(y=wpzInstaStories)||void 0===y||null===(y=y.i18n)||void 0===y?void 0:y.ago)||"ago",hour:"undefined"!=typeof wpzInstaStories&&(null===(w=wpzInstaStories)||void 0===w||null===(w=w.i18n)||void 0===w?void 0:w.hour)||"hour",hours:"undefined"!=typeof wpzInstaStories&&(null===(g=wpzInstaStories)||void 0===g||null===(g=g.i18n)||void 0===g?void 0:g.hours)||"hours",minute:"undefined"!=typeof wpzInstaStories&&(null===(k=wpzInstaStories)||void 0===k||null===(k=k.i18n)||void 0===k?void 0:k.minute)||"minute",minutes:"undefined"!=typeof wpzInstaStories&&(null===(h=wpzInstaStories)||void 0===h||null===(h=h.i18n)||void 0===h?void 0:h.minutes)||"minutes",fromnow:"undefined"!=typeof wpzInstaStories&&(null===(I=wpzInstaStories)||void 0===I||null===(I=I.i18n)||void 0===I?void 0:I.fromnow)||"from now",seconds:"undefined"!=typeof wpzInstaStories&&(null===(_=wpzInstaStories)||void 0===_||null===(_=_.i18n)||void 0===_?void 0:_.seconds)||"seconds",yesterday:"undefined"!=typeof wpzInstaStories&&(null===(S=wpzInstaStories)||void 0===S||null===(S=S.i18n)||void 0===S?void 0:S.yesterday)||"yesterday",tomorrow:"undefined"!=typeof wpzInstaStories&&(null===(b=wpzInstaStories)||void 0===b||null===(b=b.i18n)||void 0===b?void 0:b.tomorrow)||"tomorrow",days:"undefined"!=typeof wpzInstaStories&&(null===(x=wpzInstaStories)||void 0===x||null===(x=x.i18n)||void 0===x?void 0:x.days)||"days"}},callbacks:{onOpen:function(t,s){var u;if((u=document.getElementById("wpz-insta-stories-overlay"))&&u.classList.add("active"),document.body.classList.add("wpz-insta-stories-open"),document.body.dataset.scrollY=window.scrollY,c&&c!==O){var m=n("#zuck-modal-content");m.length&&m.html("")}c=O;var p=O.findStoryIndex(t);-1!==p&&O.data[p]&&(O.data[p].currentItem=0,O.data[p].seen=!1,O.data[p].items&&O.data[p].items.forEach(function(t){t.seen=!1})),s(),function(){if(!l){l=new MutationObserver(function(t){t.forEach(function(t){if("attributes"===t.type&&"class"===t.attributeName){var n=t.target;n.classList&&n.classList.contains("muted")&&n.classList.contains("story-viewer")&&n.classList.remove("muted")}"childList"===t.type&&t.addedNodes.length>0&&t.addedNodes.forEach(function(t){t.nodeType===Node.ELEMENT_NODE&&("VIDEO"===t.tagName&&d(t),(t.querySelectorAll?t.querySelectorAll("video"):[]).forEach(function(t){d(t)}))})})});var t=document.getElementById("zuck-modal");t&&(l.observe(t,{attributes:!0,attributeFilter:["class"],childList:!0,subtree:!0}),t.querySelectorAll("video").forEach(d))}}(),setTimeout(function(){!function(){var t=n("#zuck-modal");if(t.length)if(t.find(".wpz-insta-mute-btn").length)i();else{var a=t.find(".story-viewer .head .right");if(a.length){var s=a.find(".close"),l=n("<button>").addClass("wpz-insta-mute-btn").attr("type","button").attr("aria-label",v?"Unmute":"Mute").html(v?e:o).on("click",r);s.length?s.before(l):a.append(l)}}}(),a()},100)},onView:function(t){setTimeout(a,50)},onEnd:function(t,n){n()},onClose:function(t,n){l&&(l.disconnect(),l=null),function(){var t=document.getElementById("wpz-insta-stories-overlay");t&&t.classList.remove("active"),document.body.classList.remove("wpz-insta-stories-open");var n=document.body.dataset.scrollY;n&&window.scrollTo(0,parseInt(n,10))}(),c=null;var e=O.findStoryIndex(t);-1!==e&&O.data[e]&&(O.data[e].currentItem=0,O.data[e].seen=!1,O.data[e].items&&O.data[e].items.forEach(function(t){t.seen=!1})),n()},onNavigateItem:function(t,n,e){e(),setTimeout(a,50)}}});z.data("zuck",O),z.data("zuck-container-id",q),z.on("click.wpzInstaStories",function(t){t.preventDefault(),t.stopPropagation();var e=n("#"+q).find(".story > a");e.length&&e.get(0).click()}),z.on("keydown.wpzInstaStories",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),n(this).trigger("click"))})}}}})}n(document).on("keydown.wpzInstaStories",function(t){n("#zuck-modal").is(":visible")&&c&&("ArrowRight"!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),c.navigateItem("next",t)),"ArrowLeft"!==t.key&&"ArrowUp"!==t.key||(t.preventDefault(),c.navigateItem("previous",t)))}),function(){if(!m){m=!0;var t=0,e=0,o=0,i=!1;document.addEventListener("touchstart",function(a){if(n("#zuck-modal").is(":visible")&&n(a.target).closest(".story-viewer").length){var r=a.touches[0];t=r.clientX,e=r.clientY,o=e,i=!0}},{passive:!0}),document.addEventListener("touchmove",function(a){if(i)if(n("#zuck-modal").is(":visible")){var r=a.touches[0],s=Math.abs(r.clientX-t),l=r.clientY-e;o=r.clientY,s>30&&s>Math.abs(l)&&(a.preventDefault(),a.stopPropagation())}else i=!1},{passive:!1}),document.addEventListener("touchend",function(a){if(i){var r=n("#zuck-modal");if(r.is(":visible")){var s=o-e,l=Math.abs(a.changedTouches[0].clientX-t);if(i=!1,s>100&&s>l){var d=r.find(".close");d.length&&d.get(0).click()}}else i=!1}},{passive:!0})}}(),n(document).ready(p),n(window).on("load",p),window.wpzInstaInitStories=p}(jQuery)})()})();
(function ($){
'use strict';
if(typeof wpvr_analytics==='undefined'){
return;
}
var config=wpvr_analytics;
function generateUUIDv4(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c){
var r=(Math.random() * 16) | 0;
var v=c==='x' ? r:(r & 0x3) | 0x8;
return v.toString(16);
});
}
function getCookie(name){
var match=document.cookie.match(new RegExp('(?:^|;)' + name.replace(/([.$?*|{}()[\]\\/+^])/g, '\\$1') + '=([^;]*)'));
return match ? decodeURIComponent(match[1]):null;
}
function setCookie(name, value, seconds){
var expires=new Date(Date.now() + seconds * 1000).toUTCString();
document.cookie=name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=/; SameSite=Lax';
}
var sessionToken=config.session_token||getCookie('wpvr_session_token');
if(!sessionToken||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(sessionToken)){
sessionToken=generateUUIDv4();
setCookie('wpvr_session_token', sessionToken, 30 * 60);
}
var eventBuffer=[];
function track(eventData){
if(!eventData||!eventData.event_type){
return;
}
eventData.tour_id=parseInt(config.tour_id, 10);
eventData.timestamp=Date.now();
eventBuffer.push(eventData);
}
function flushBuffer(){
if(!eventBuffer.length){
return;
}
if(!parseInt(config.tour_id, 10)){
return;
}
var payload=eventBuffer.slice();
eventBuffer=[];
$.post(config.ajax_url, {
action:        'wpvr_track_analytics_event',
security:      config.nonce,
session_token: sessionToken,
events:        payload
});
}
function flushBeacon(){
if(!eventBuffer.length){
return;
}
if(typeof navigator.sendBeacon!=='function'){
flushBuffer();
return;
}
var body=new URLSearchParams();
body.append('action',        'wpvr_track_analytics_event');
body.append('security',      config.nonce);
body.append('session_token', sessionToken);
for (var i=0; i < eventBuffer.length; i++){
body.append('events[]', JSON.stringify(eventBuffer[i]));
}
navigator.sendBeacon(config.ajax_url, body);
eventBuffer=[];
}
var flushInterval=setInterval(flushBuffer, config.heartbeat_interval||5000);
window.addEventListener('beforeunload', flushBeacon);
document.addEventListener('visibilitychange', function (){
if(document.visibilityState==='hidden'){
flushBeacon();
}});
var currentSceneId=null;
var dwellTimer=null;
var dwellSeconds=0;
var dwellPaused=false;
var dwellStartTime=null;
var inactiveSince=null;
var MAX_INACTIVE_SECS=30 * 60;
var lastHeartbeatAt=null;
var sceneEnteredAt=null;
function startDwell(){
if(dwellTimer){
return;
}
dwellStartTime=Date.now();
lastHeartbeatAt=Date.now();
dwellTimer=setInterval(function (){
if(dwellPaused){
return;
}
dwellSeconds +=5;
lastHeartbeatAt=Date.now();
if(inactiveSince&&(Date.now() - inactiveSince) / 1000 >=MAX_INACTIVE_SECS){
stopDwell();
return;
}
track({ event_type: 'dwell_heartbeat', dwell_seconds: 5, scene_id: currentSceneId });
}, 5000);
}
function pauseDwell(){
dwellPaused=true;
if(!inactiveSince){
inactiveSince=Date.now();
}}
function resumeDwell(){
dwellPaused=false;
inactiveSince=null;
}
function stopDwell(){
if(dwellTimer){
clearInterval(dwellTimer);
dwellTimer=null;
}}
document.addEventListener('visibilitychange', function (){
if(document.visibilityState==='hidden'){
pauseDwell();
}else{
resumeDwell();
}});
window.addEventListener('blur',  pauseDwell);
window.addEventListener('focus', resumeDwell);
document.addEventListener('wpvr:tour_loaded', function (e){
var detail=(e&&e.detail)||{};
if(detail.tour_id){
config.tour_id=parseInt(detail.tour_id, 10);
}
track({ event_type: 'tour_load' });
sceneEnteredAt=Date.now();
lastHeartbeatAt=Date.now();
startDwell();
});
document.addEventListener('wpvr:scene_changed', function (e){
var detail=(e.detail)||{};
if(detail.from&&currentSceneId&&!dwellPaused){
var ref=lastHeartbeatAt||sceneEnteredAt||dwellStartTime;
if(ref){
var partialSec=Math.round((Date.now() - ref) / 1000);
if(partialSec >=1){
track({ event_type: 'dwell_heartbeat', dwell_seconds: partialSec, scene_id: detail.from });
lastHeartbeatAt=Date.now();
}}
}
if(detail.to){
sceneEnteredAt=Date.now();
lastHeartbeatAt=Date.now();
currentSceneId=detail.to;
track({ event_type: 'scene_view', scene_id: detail.to });
}
if(detail.from&&detail.to){
track({
event_type:      'scene_transition',
scene_id:        detail.to,
source_scene_id: detail.from
});
}});
document.addEventListener('wpvr:hotspot_hovered', function (e){
var detail=(e.detail)||{};
track({
event_type:  'hotspot_hover',
hotspot_id:  detail.hotspot_id||null,
scene_id:    detail.scene_id||null
});
});
document.addEventListener('wpvr:hotspot_clicked', function (e){
var detail=(e.detail)||{};
track({
event_type:   'hotspot_click',
hotspot_id:   detail.hotspot_id||null,
scene_id:     detail.scene_id||null,
hotspot_type: detail.hotspot_type||null
});
});
document.addEventListener('wpvr:hotspot_clicked', function (e){
var detail=(e.detail)||{};
if(!detail.url){
return;
}
var url=detail.url;
var isCTA=/^(https?:|tel:|mailto:)/i.test(url);
if(isCTA&&detail.hotspot_type==='url'){
track({
event_type:  'cta_click',
hotspot_id:  detail.hotspot_id||null,
scene_id:    detail.scene_id||null
});
}});
var lastWcHotspot=null;
var lastWcScene=null;
document.addEventListener('wpvr:hotspot_clicked', function (e){
var detail=(e.detail)||{};
if(detail.hotspot_type==='wc_product'){
lastWcHotspot=detail.hotspot_id||null;
lastWcScene=detail.scene_id||null;
}});
if(typeof wc_add_to_cart_params!=='undefined'){
$(document).on('added_to_cart', function (){
if(lastWcHotspot){
track({
event_type: 'add_to_cart',
hotspot_id: lastWcHotspot,
scene_id:   lastWcScene
});
lastWcHotspot=null;
lastWcScene=null;
}});
}
document.addEventListener('wpvr:lead_captured', function (e){
var detail=(e.detail)||{};
track({
event_type:  'lead_capture',
hotspot_id:  detail.hotspot_id||null,
scene_id:    detail.scene_id||null
});
});
var pannellumViewer=null;
setInterval(function (){
if(!pannellumViewer&&window._wpvrViewers){
if(config.tour_id){
pannellumViewer=window._wpvrViewers[config.tour_id]||null;
}
if(!pannellumViewer){
var keys=Object.keys(window._wpvrViewers);
if(keys.length){
pannellumViewer=window._wpvrViewers[keys[0]]||null;
if(pannellumViewer&&!parseInt(config.tour_id, 10)){
config.tour_id=parseInt(keys[0], 10);
}}
}}
if(!pannellumViewer||typeof pannellumViewer.getPitch!=='function'){
return;
}
var pitch=pannellumViewer.getPitch();
var yaw=pannellumViewer.getYaw();
var pitchBucket=Math.floor(pitch / 10) * 10;
var yawBucket=Math.floor(yaw   / 10) * 10;
pitchBucket=Math.max(-90, Math.min(80,  pitchBucket));
yawBucket=Math.max(-180, Math.min(170, yawBucket));
track({ event_type: 'dwell_heartbeat', dwell_seconds: 0, scene_id: currentSceneId, pitch_bucket: pitchBucket, yaw_bucket: yawBucket });
}, 5000);
window.wpvrTracker={
track: track,
flush: flushBuffer
};}(jQuery));