1 2 3 <!DOCTYPE html> 4<html lang="en"> <head> 5<!--Content in content_for_header --> 6<!--LayoutHub-Embed--><link rel="stylesheet" type="text/css" href="data:text/css;base64," media="all"> 7<!--LH--><!--/LayoutHub-Embed--><!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 7-8
7 8<script async src="https://www.googletagmanager.com/gtag/js?id=
8UA-66610789-1
vendor: 12 bytes, line 8
8"></script>
9<script> 10
vendor: 134 bytes, lines 10-14
10window.dataLayer = window.dataLayer || []; 11 function gtag(){dataLayer.push(arguments);} 12 gtag('js', new Date()); 13 14 gtag('config', '
14UA-66610789-1
vendor: 4 bytes, line 14
14');
15</script>
15 <meta name="google-site-verification" content="zZmleHnD7lb_oMRTZc95OltAHSBLUH0mmN4F-mBQYic" /> <!-- Global site tag (gtag.js) - Google Ads: 10839608075 -->
vendor: 64 bytes, lines 15-16
15 16<script async src="https://www.googletagmanager.com/gtag/js?id=
16AW-10839608075
vendor: 12 bytes, line 16
16"></script>
17<script> 18
vendor: 134 bytes, lines 18-22
18window.dataLayer = window.dataLayer || []; 19 function gtag(){dataLayer.push(arguments);} 20 gtag('js', new Date()); 21 22 gtag('config', '
22AW-10839608075
vendor: 4 bytes, line 22
22');
23</script>
23 <meta charset="utf-8"> <meta http-equiv="cleartype" content="on"> <meta name="robots" content="index,follow"> <!-- Mobile Specific Metas --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="theme-color" content="#ffffff"> <title> 24 THE K-DEER BLOG</title> <link rel="preconnect dns-prefetch" href="https://fonts.shopifycdn.com" /> <link rel="preconnect dns-prefetch" href="https://cdn.shopify.com" /> <link rel="preconnect dns-prefetch" href="https://v.shopify.com" /> <link rel="preconnect dns-prefetch" href="https://cdn.shopifycloud.com" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.6/jquery.fancybox.css"> <!-- Stylesheets for Turbo 4.1.5 --> <link href="//www.k-deer.com/cdn/shop/t/179/assets/styles.scss.css?v=125213358974382108351759332019" rel="stylesheet" type="text/css" media="all" />
vendor: 4,501 bytes, lines 24-31
24<script> 25 window.lazySizesConfig = window.lazySizesConfig || {}; 26 27 lazySizesConfig.expand = 300; 28 lazySizesConfig.loadHidden = false; 29 30 /*! lazysizes - v4.1.4 */ 31 !function(a,b){var c=b(a,a.document);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}(window,function(a,b){"use strict";if(b.getElementsByClassName){var c,d,e=b.documentElement,f=a.Date,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h],k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,d,e,f,g){var h=b.createEvent("Event");return e||(e={}),e.instance=c,h.initEvent(d,!f,!g),h.detail=e,a.dispatchEvent(h),h},w=function(b,c){var e;!g&&(e=a.picturefill||d.pf)?(c&&c.src&&!b[i]("srcset")&&b.setAttribute("srcset",c.src),e({reevaluate:!0,elements:[b]})):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<d.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,c=0,e=d.throttleDelay,g=d.ricTimeout,h=function(){b=!1,c=f.now(),a()},i=m&&g>49?function(){m(h,{timeout:g}),g!==d.ricTimeout&&(g=d.ricTimeout)}:A(function(){k(h)},!0);return function(a){var d;(a=a===!0)&&(g=33),b||(b=!0,d=e-(f.now()-c),0>d&&(d=0),a||9>d?i():k(i,d))}},C=function(a){var b,c,d=99,e=function(){b=null,a()},g=function(){var a=f.now()-c;d>a?k(g,d-a):(m||e)(e)};return function(){c=f.now(),b||(b=k(g,d))}};!function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};d=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in d||(d[b]=c[b]);a.lazySizesConfig=d,k(function(){d.init&&F()})}();var D=function(){var g,l,m,o,p,y,D,F,G,H,I,J,K,L,M=/^img$/i,N=/^iframe$/i,O="onscroll"in a&&!/(gle|ing)bot/.test(navigator.userAgent),P=0,Q=0,R=0,S=-1,T=function(a){R--,a&&a.target&&u(a.target,T),(!a||0>R||!a.target)&&(R=0)},U=function(a,c){var d,f=a,g="hidden"==x(b.body,"visibility")||"hidden"!=x(a.parentNode,"visibility")&&"hidden"!=x(a,"visibility");for(F-=c,I+=c,G-=c,H+=c;g&&(f=f.offsetParent)&&f!=b.body&&f!=e;)g=(x(f,"opacity")||1)>0,g&&"visible"!=x(f,"overflow")&&(d=f.getBoundingClientRect(),g=H>d.left&&G<d.right&&I>d.top-1&&F<d.bottom+1);return g},V=function(){var a,f,h,j,k,m,n,p,q,r=c.elements;if((o=d.loadMode)&&8>R&&(a=r.length)){f=0,S++,null==K&&("expand"in d||(d.expand=e.clientHeight>500&&e.clientWidth>500?500:370),J=d.expand,K=J*d.expFactor),K>Q&&1>R&&S>2&&o>2&&!b.hidden?(Q=K,S=0):Q=o>1&&S>1&&6>R?J:P;for(;a>f;f++)if(r[f]&&!r[f]._lazyRace)if(O)if((p=r[f][i]("data-expand"))&&(m=1*p)||(m=Q),q!==m&&(y=innerWidth+m*L,D=innerHeight+m,n=-1*m,q=m),h=r[f].getBoundingClientRect(),(I=h.bottom)>=n&&(F=h.top)<=D&&(H=h.right)>=n*L&&(G=h.left)<=y&&(I||H||G||F)&&(d.loadHidden||"hidden"!=x(r[f],"visibility"))&&(l&&3>R&&!p&&(3>o||4>S)||U(r[f],m))){if(ba(r[f]),k=!0,R>9)break}else!k&&l&&!j&&4>R&&4>S&&o>2&&(g[0]||d.preloadAfterLoad)&&(g[0]||!p&&(I||H||G||F||"auto"!=r[f][i](d.sizesAttr)))&&(j=g[0]||r[f]);else ba(r[f]);j&&!k&&ba(j)}},W=B(V),X=function(a){s(a.target,d.loadedClass),t(a.target,d.loadingClass),u(a.target,Z),v(a.target,"lazyloaded")},Y=A(X),Z=function(a){Y({target:a.target})},$=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},_=function(a){var b,c=a[i](d.srcsetAttr);(b=d.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},aa=A(function(a,b,c,e,f){var g,h,j,l,o,p;
31(o=v(a,"lazybeforeunveil",b)).defaultPrevented||(e&&(c?s(a,d.autosizesClass):a.setAttribute("sizes",e)),h=a[i](d.srcsetAttr),g=a[i](d.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),o={target:a},p&&(u(a,T,!0),clearTimeout(m),m=k(T,2500),s(a,d.loadingClass),u(a,Z,!0)),l&&q.call(j.getElementsByTagName("source"),_),h?a.setAttribute("srcset",h):g&&!l&&(N.test(a.nodeName)?$(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,d.lazyClass),z(function(){(!p||a.complete&&a.naturalWidth>1)&&(p?T(o):R--,X(o))},!0)}),ba=function(a){var b,c=M.test(a.nodeName),e=c&&(a[i](d.sizesAttr)||a[i]("sizes")),f="auto"==e;(!f&&l||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,d.errorClass)||!r(a,d.lazyClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,R++,aa(a,b,f,e,c))},ca=function(){if(!l){if(f.now()-p<999)return void k(ca,999);var a=C(function(){d.loadMode=3,W()});l=!0,d.loadMode=3,W(),j("scroll",function(){3==d.loadMode&&(d.loadMode=2),a()},!0)}};return{_:function(){p=f.now(),c.elements=b.getElementsByClassName(d.lazyClass),g=b.getElementsByClassName(d.lazyClass+" "+d.preloadClass),L=d.hFac,j("scroll",W,!0),j("resize",W,!0),a.MutationObserver?new MutationObserver(W).observe(e,{childList:!0,subtree:!0,attributes:!0}):(e[h]("DOMNodeInserted",W,!0),e[h]("DOMAttrModified",W,!0),setInterval(W,999)),j("hashchange",W,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(a){b[h](a,W,!0)}),/d$|^c/.test(b.readyState)?ca():(j("load",ca),b[h]("DOMContentLoaded",W),k(ca,2e4)),c.elements.length?(V(),z._lsFlush()):W()},checkElems:W,unveil:ba}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;g>f;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),e=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width,d&&d!==a._lazysizesWidth&&c(a,f,e,d)))},f=function(){var b,c=a.length;if(c)for(b=0;c>b;b++)e(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(d.autosizesClass),j("resize",g)},checkElems:g,updateElem:e}}(),F=function(){F.i||(F.i=!0,E._(),D._())};return c={cfg:d,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}}); 32 33 /*! lazysizes - v4.1.4 */ 34 !function(a,b){var c=function(){b(a.lazySizes),a.removeEventListener("lazyunveilread",c,!0)};b=b.bind(null,a,a.document),"object"==typeof module&&module.exports?b(require("lazysizes")):a.lazySizes?c():a.addEventListener("lazyunveilread",c,!0)}(window,function(a,b,c){"use strict";function d(){this.ratioElems=b.getElementsByClassName("lazyaspectratio"),this._setupEvents(),this.processImages()}if(a.addEventListener){var e,f,g,h=Array.prototype.forEach,i=/^picture$/i,j="data-aspectratio",k="img["+j+"]",l=function(b){return a.matchMedia?(l=function(a){return!a||(matchMedia(a)||{}).matches})(b):a.Modernizr&&Modernizr.mq?!b||Modernizr.mq(b):!b},m=c.aC,n=c.rC,o=c.cfg;d.prototype={_setupEvents:function(){var a=this,c=function(b){b.naturalWidth<36?a.addAspectRatio(b,!0):a.removeAspectRatio(b,!0)},d=function(){a.processImages()};b.addEventListener("load",function(a){a.target.getAttribute&&a.target.getAttribute(j)&&c(a.target)},!0),addEventListener("resize",function(){var b,d=function(){h.call(a.ratioElems,c)};return function(){clearTimeout(b),b=setTimeout(d,99)}}()),b.addEventListener("DOMContentLoaded",d),addEventListener("load",d)},processImages:function(a){var c,d;a||(a=b),c="length"in a&&!a.nodeName?a:a.querySelectorAll(k);for(d=0;d<c.length;d++)c[d].naturalWidth>36?this.removeAspectRatio(c[d]):this.addAspectRatio(c[d])},getSelectedRatio:function(a){var b,c,d,e,f,g=a.parentNode;if(g&&i.test(g.nodeName||""))for(d=g.getElementsByTagName("source"),b=0,c=d.length;c>b;b++)if(e=d[b].getAttribute("data-media")||d[b].getAttribute("media"),o.customMedia[e]&&(e=o.customMedia[e]),l(e)){f=d[b].getAttribute(j);break}return f||a.getAttribute(j)||""},parseRatio:function(){var a=/^\s*([+\d\.]+)(\s*[\/x]\s*([+\d\.]+))?\s*$/,b={};return function(c){var d;return!b[c]&&(d=c.match(a))&&(d[3]?b[c]=d[1]/d[3]:b[c]=1*d[1]),b[c]}}(),addAspectRatio:function(b,c){var d,e=b.offsetWidth,f=b.offsetHeight;return c||m(b,"lazyaspectratio"),36>e&&0>=f?void((e||f&&a.console)&&console.log("Define width or height of image, so we can calculate the other dimension")):(d=this.getSelectedRatio(b),d=this.parseRatio(d),void(d&&(e?b.style.height=e/d+"px":b.style.width=f*d+"px")))},removeAspectRatio:function(a){n(a,"lazyaspectratio"),a.style.height="",a.style.width="",a.removeAttribute(j)}},f=function(){g=a.jQuery||a.Zepto||a.shoestring||a.$,g&&g.fn&&!g.fn.imageRatio&&g.fn.filter&&g.fn.add&&g.fn.find?g.fn.imageRatio=function(){return e.processImages(this.find(k).add(this.filter(k))),this}:g=!1},f(),setTimeout(f),e=new d,a.imageRatio=e,"object"==typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd&&define(e)}}); 35 36 /*! lazysizes - v4.1.5 */ 37 !function(a,b){var c=function(){b(a.lazySizes),a.removeEventListener("lazyunveilread",c,!0)};b=b.bind(null,a,a.document),"object"==typeof module&&module.exports?b(require("lazysizes")):a.lazySizes?c():a.addEventListener("lazyunveilread",c,!0)}(window,function(a,b,c){"use strict";if(a.addEventListener){var d=/\s+/g,e=/\s*\|\s+|\s+\|\s*/g,f=/^(.+?)(?:\s+\[\s*(.+?)\s*\])(?:\s+\[\s*(.+?)\s*\])?$/,g=/^\s*\(*\s*type\s*:\s*(.+?)\s*\)*\s*$/,h=/\(|\)|'/,i={contain:1,cover:1},j=function(a){var b=c.gW(a,a.parentNode);return(!a._lazysizesWidth||b>a._lazysizesWidth)&&(a._lazysizesWidth=b),a._lazysizesWidth},k=function(a){var b;return b=(getComputedStyle(a)||{getPropertyValue:function(){}}).getPropertyValue("background-size"),!i[b]&&i[a.style.backgroundSize]&&(b=a.style.backgroundSize),b},l=function(a,b){if(b){var c=b.match(g);c&&c[1]?a.setAttribute("type",c[1]):a.setAttribute("media",lazySizesConfig.customMedia[b]||b)}},m=function(a,c,g){var h=b.createElement("picture"),i=c.getAttribute(lazySizesConfig.sizesAttr),j=c.getAttribute("data-ratio"),k=c.getAttribute("data-optimumx");c._lazybgset&&c._lazybgset.parentNode==c&&c.removeChild(c._lazybgset),Object.defineProperty(g,"_lazybgset",{value:c,writable:!0}),Object.defineProperty(c,"_lazybgset",{value:h,writable:!0}),a=a.replace(d," ").split(e),h.style.display="none",g.className=lazySizesConfig.lazyClass,1!=a.length||i||(i="auto"),a.forEach(function(a){var c,d=b.createElement("source");i&&"auto"!=i&&d.setAttribute("sizes",i),(c=a.match(f))?(d.setAttribute(lazySizesConfig.srcsetAttr,c[1]),l(d,c[2]),l(d,c[3])):d.setAttribute(lazySizesConfig.srcsetAttr,a),h.appendChild(d)}),i&&(g.setAttribute(lazySizesConfig.sizesAttr,i),c.removeAttribute(lazySizesConfig.sizesAttr),c.removeAttribute("sizes")),k&&g.setAttribute("data-optimumx",k),j&&g.setAttribute("data-ratio",j),h.appendChild(g),c.appendChild(h)}
37,n=function(a){if(a.target._lazybgset){var b=a.target,d=b._lazybgset,e=b.currentSrc||b.src;if(e){var f=c.fire(d,"bgsetproxy",{src:e,useSrc:h.test(e)?JSON.stringify(e):e});f.defaultPrevented||(d.style.backgroundImage="url("+f.detail.useSrc+")")}b._lazybgsetLoading&&(c.fire(d,"_lazyloaded",{},!1,!0),delete b._lazybgsetLoading)}};addEventListener("lazybeforeunveil",function(a){var d,e,f;!a.defaultPrevented&&(d=a.target.getAttribute("data-bgset"))&&(f=a.target,e=b.createElement("img"),e.alt="",e._lazybgsetLoading=!0,a.detail.firesLoad=!0,m(d,f,e),setTimeout(function(){c.loader.unveil(e),c.rAF(function(){c.fire(e,"_lazyloaded",{},!0,!0),e.complete&&n({target:e})})}))}),b.addEventListener("load",n,!0),a.addEventListener("lazybeforesizes",function(a){if(a.detail.instance==c&&a.target._lazybgset&&a.detail.dataAttr){var b=a.target._lazybgset,d=k(b);i[d]&&(a.target._lazysizesParentFit=d,c.rAF(function(){a.target.setAttribute("data-parent-fit",d),a.target._lazysizesParentFit&&delete a.target._lazysizesParentFit}))}},!0),b.documentElement.addEventListener("lazybeforesizes",function(a){!a.defaultPrevented&&a.target._lazybgset&&a.detail.instance==c&&(a.detail.width=j(a.target._lazybgset))})}});</script>
37 <link rel="shortcut icon" type="image/x-icon" href="//www.k-deer.com/cdn/shop/files/k-circle-4_180x180.png?v=1639674522"> <link rel="apple-touch-icon" href="//www.k-deer.com/cdn/shop/files/k-circle-4_180x180.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="57x57" href="//www.k-deer.com/cdn/shop/files/k-circle-4_57x57.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="60x60" href="//www.k-deer.com/cdn/shop/files/k-circle-4_60x60.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="72x72" href="//www.k-deer.com/cdn/shop/files/k-circle-4_72x72.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="76x76" href="//www.k-deer.com/cdn/shop/files/k-circle-4_76x76.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="114x114" href="//www.k-deer.com/cdn/shop/files/k-circle-4_114x114.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="180x180" href="//www.k-deer.com/cdn/shop/files/k-circle-4_180x180.png?v=1639674522"/> <link rel="apple-touch-icon" sizes="228x228" href="//www.k-deer.com/cdn/shop/files/k-circle-4_228x228.png?v=1639674522"/> <link rel="canonical" href="https://www.k-deer.com/blogs/news" />
37<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
37<meta name="google-site-verification" content="m_p0XpKf1UsjfN50A1w-sTOLRT2PXJc_OvqdNZGzyd4"> 38<meta name="google-site-verification" content="nrnbujyskzxbceb0aE4c1N_V3cKBGRomMn3z1FTa7Wc"> 39<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/6682621/digital_wallets/dialog"> 40<meta id="in-context-paypal-metadata" data-shop-id="6682621" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 41<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/blogs/news.atom" /> 42<link rel="next" href="/blogs/news?page=2">
43<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
vendor: 1 bytes, line 43
43
44<script id="shopify-features" type="application/json">{"accessToken":"4866a921a90e3c71d66b04c83274ca1e","betas":["rich-media-storefront-analytics"],"domain":"www.k-deer.com","predictiveSearch":true,"shopId":6682621,"locale":"en"}</script>
vendor: 1 bytes, line 44
44
45<script>var Shopify = Shopify || {}; 46Shopify.shop = "k-deer.myshopify.com"; 47Shopify.locale = "en"; 48Shopify.currency = {"active":"USD","rate":"1.0"}; 49Shopify.country = "US"; 50Shopify.theme = {"name":"Closing","id":123226914886,"schema_name":"Turbo","schema_version":"4.1.5","theme_store_id":null,"role":"main"}; 51Shopify.theme.handle = "null"; 52Shopify.theme.style = {"id":null,"handle":null}; 53Shopify.cdnHost = "www.k-deer.com/cdn"; 54Shopify.routes = Shopify.routes || {}; 55Shopify.routes.root = "/"; 56Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 57Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 58Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 59Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 59
59
60<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 60
60
61<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 61
61
62<script> 63 window.Shopify = window.Shopify || {}; 64 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 65 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 66 window.Shopify.SignInWithShop.eligible = true; 67</script>
vendor: 1 bytes, line 67
67
68<script id="shop-js-analytics" type="application/json">{"pageType":"blog"}</script>
vendor: 1 bytes, line 68
68
69<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 69
69
70<script type="module"> 71 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 72 73 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 74 75</script>
vendor: 1 bytes, line 75
75
76<script> 77 window.Shopify = window.Shopify || {}; 78 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 79 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 80</script>
vendor: 1 bytes, line 80
80
81<script id="__st">var __st={"a":6682621,"offset":-14400,"reqid":"32d7b876-564d-4fed-adbc-0fc84d4dbff7-1791061569","pageurl":"www.k-deer.com\/blogs\/news","s":"blogs-7254591","u":"dbcbbd2583cc","p":"blog","rtyp":"blog","rid":7254591};</script>
vendor: 1 bytes, line 81
81
82<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 82
82
83<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 83
83
84<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.k-deer.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 84
84
85<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion <126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion <150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion <27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//www.k-deer.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
85<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 85
85
86<script> 87 window.Shopify = window.Shopify || {}; 88 window.Shopify.MCP = window.Shopify.MCP || {}; 89 window.Shopify.MCP.enabled = true; 90 window.Shopify.MCP.shop = "k-deer.myshopify.com"; 91 window.Shopify.MCP.mcpEndpoint = "https:\/\/www.k-deer.com\/api\/mcp"; 92 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 93</script>
vendor: 1 bytes, line 93
93
94<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/www.k-deer.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 95</script>
vendor: 1 bytes, line 95
95
96<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.k-deer.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 97</script>
vendor: 1 bytes, line 97
97
98<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 99 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 100</script>
vendor: 1 bytes, line 100
100
101<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 102</script>
102 103<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.k-deer.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 104<style id="shopify-accelerated-checkout-cart"> 105 #shopify-buyer-consent { 106 margin-top: 1em; 107 display: inline-block; 108 width: 100%; 109} 110 111#shopify-buyer-consent.hidden { 112 display: none; 113} 114 115#shopify-subscription-policy-button { 116 background: none; 117 border: none; 118 padding: 0; 119 text-decoration: underline; 120 font-size: inherit; 121 cursor: pointer; 122} 123 124#shopify-subscription-policy-button::before { 125 box-shadow: none; 126} 127 128 </style> 129
130<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
130 131 132 133 134<input type='hidden' id='appify_acasp' value='6682621' /> 135 136<input type='hidden' id='accessibility_icon_theme' Position='0' BackgroundColor='#000000' TextColor='#FFFFFF' LinkColor='#FF0000' TitleColor='#FF0000' theme='0' desc_txt='Decrease text' inc_txt='Increase text' gry_scl='Grayscale' invrt_clr='Invert colors' hghlght_lnk='Highlight links' Hghlght_hed='Highlight headers' dsbl='Disable' readlang='en' langtitle='English'readselected='Read Selected' readpage='Read Page'/> 137 138<link rel='stylesheet' type='text/css' href='/apps/accessibility/assets/Css/acastore.min.css?v=3012'></link> 139
140<script src='/apps/accessibility/assets/js/OriginalJs/mainappifyaca.js?v=3012' type='text/javascript'></script>
140 141 142 143 144 145 146 147<style type="text/css" id="nitro-fontify"> 148</style> 149 150 151 152 153<meta name="author" content="K-DEER"> 154<meta property="og:url" content="https://www.k-deer.com/blogs/news"> 155<meta property="og:site_name" content="K-DEER"> <meta property="og:type" content="article"> <meta property="og:title" content="THE K-DEER BLOG"> <meta property="og:image" content="https://www.k-deer.com/cdn/shop/articles/hug_with_dad_600x.jpg?v=1709677345"> <meta property="og:image:secure_url" content="https://www.k-deer.com/cdn/shop/articles/hug_with_dad_600x.jpg?v=1709677345"> <meta property="og:image:width" content="2724"> <meta property="og:image:height" content="2724"> <meta property="og:image:alt" content="Checking in... March 27, 2023"> 156 157 158 159 160 161 162 163 164<meta name="twitter:card" content="summary"> 165 166 167 168 169 <!-- Start of k-deer Zendesk Widget script -->
169<script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=7febbc03-5699-4156-b790-d55ee9c7415a"></script>
169 <!-- End of k-deer Zendesk Widget script --> <!-- START Rakuten Marketing Tracking -->
169<script type="text/javascript"> 170 171 (function (url) { 172 173 /*Tracking Bootstrap Set Up DataLayer objects/properties here*/ 174 175 if(!window.DataLayer){ 176 177 window.DataLayer = {}; 178 179 } 180 181 if(!DataLayer.events){ 182 183 DataLayer.events = {}; 184 185 } 186 187 DataLayer.events.SPIVersion = DataLayer.events.SPIVersion || "3.3"; 188 189 DataLayer.events.SiteSection = "1"; 190 191 192 193 var loc, ct = document.createElement("script"); 194 195 ct.type = "text/javascript"; 196 197 ct.async = true; ct.src = url; loc = document.getElementsByTagName('script')[0]; 198 199 loc.parentNode.insertBefore(ct, loc); 200 201 }(document.location.protocol + "//tag.rmp.rakuten.com/117277.ct.js"));</script>
201 202 203<!-- END Rakuten Marketing Tracking --> <div id="shopify-section-filter-menu-settings" class="shopify-section"><style type="text/css"> 204/* Filter Menu Color and Image Section CSS */</style> 205<link href="//www.k-deer.com/cdn/shop/t/179/assets/filter-menu.scss.css?v=178881306433376313511709827104" rel="stylesheet" type="text/css" media="all" />
206<script src="//www.k-deer.com/cdn/shop/t/179/assets/filter-menu.js?v=181055312902103895121656342003" type="text/javascript"></script>
206 207 208 209 210 211 212</div>
213<script type="text/javascript" src="https://www.webyze.com/ProductColors/productcolors-a95949ac254dd511f12556df096b3208d8192776.js?shop=k-deer.myshopify.com" async></script>
213 214
215<script type="text/javascript"> 216(function(a,b,c,d,e,f,g){e['ire_o']=c;e[c]=e[c]||function(){(e[c].a=e[c].a||[]).push(arguments)};f=d.createElement(b);g=d.getElementsByTagName(b)[0];f.async=1;f.src=a;g.parentNode.insertBefore(f,g);})('//d.impactradius-event.com/A2372835-9af2-4200-a365-13df3c1b911f1.js','script','ire',document,window); 217</script>
217 <!-- "snippets/shogun-head.liquid" was not rendered, the associated app was uninstalled --> 218 219<!-- "snippets/pagefly-header.liquid" was not rendered, the associated app was uninstalled --> <!--Gem_Page_Header_Script--> 220<!-- "snippets/gem-app-header-scripts.liquid" was not rendered, the associated app was uninstalled --> 221<!--End_Gem_Page_Header_Script--> 222<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
223<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 6682621,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "blog"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 223
223
224<script> 225 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 226</script>
vendor: 1 bytes, line 226
226
227<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
227).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 6682621,storefrontBaseUrl: "https://www.k-deer.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.k-deer.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"47382598","configuration":"{\"tagID\":\"2616444462761\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"70910022","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["MARKETING"],"name":"Meta pixel (migrated)"}
227,{"id":"106463302","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Google Analytics tag (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"K-DEER","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"k-deer.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.k-deer.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.k-deer.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"123226914886","themePublished":"true","eventMetadataId":"ebd085db-d91e-46db-b1b5-b65678b78d69","pageType":"blog","resourceId":"7254591","shopId":"6682621","storefrontBaseUrl":"https:\/\/www.k-deer.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
227<script> 228 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 229 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 230 window.ShopifyAnalytics.meta.currency = 'USD'; 231 var meta = {"page":{"pageType":"blog","resourceType":"blog","resourceId":7254591,"requestId":"32d7b876-564d-4fed-adbc-0fc84d4dbff7-1791061569"}}; 232 for (var attr in meta) { 233 window.ShopifyAnalytics.meta[attr] = meta[attr]; 234 } 235</script>
vendor: 1 bytes, line 235
235
236<script class="analytics"> 237 (function () { 238 var customDocumentWrite = function(content) { 239 var jquery = null; 240 241 if (window.jQuery) { 242 jquery = window.jQuery; 243 } else if (window.Checkout && window.Checkout.$) { 244 jquery = window.Checkout.$; 245 } 246 247 if (jquery) { 248 jquery('body').append(content); 249 } 250 }; 251 252 var hasLoggedConversion = function(token) { 253 if (token) { 254 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 255 } 256 return false; 257 } 258 259 var setCookieIfConversion = function(token) { 260 if (token) { 261 var twoMonthsFromNow = new Date(Date.now()); 262 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 263 264 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 265 } 266 } 267 268 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 269 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 270 if (trekkie.integrations) { 271 return; 272 } 273 trekkie.methods = [ 274 'identify', 275 'page', 276 'ready', 277 'track', 278 'trackForm', 279 'trackLink' 280 ]; 281 trekkie.factory = function(method) { 282 return function() { 283 var args = Array.prototype.slice.call(arguments); 284 args.unshift(method); 285 trekkie.push(args); 286 if (method == 'track' || method == 'page') { 287 var pageUrl; 288 try { 289 pageUrl = window.location.href; 290 } catch (e) {} 291 var pageReferrer; 292 try { 293 pageReferrer = document.referrer; 294 } catch (e) {} 295 try { 296 if (window.__TREKKIE_SHIM_QUEUE == null) { 297 window.__TREKKIE_SHIM_QUEUE = []; 298 } 299 window.__TREKKIE_SHIM_QUEUE.push({ 300 from: 'trekkie-stub', 301 method: method, 302 args: args.slice(1), 303 pageContext: { 304 url: pageUrl, 305 referrer: pageReferrer 306 } 307 }); 308 } catch (e) { 309 // no-op 310 } 311 } 312 return trekkie; 313 }; 314 }; 315 for (var i = 0; i < trekkie.methods.length; i++) { 316 var key = trekkie.methods[i]; 317 trekkie[key] = trekkie.factory(key); 318 } 319 trekkie.load = function(config) { 320 trekkie.config = config || {}; 321 trekkie.config.initialDocumentCookie = document.cookie; 322 var first = document.getElementsByTagName('script')[0]; 323var script = document.createElement('script'); 324script.type = 'text/javascript'; 325script.onerror = function(e) { 326 var scriptFallback = document.createElement('script'); 327 scriptFallback.type = 'text/javascript'; 328 scriptFallback.onerror = function(error) { 329 var Monorail = { 330 produce: function produce(monorailDomain, schemaId, payload) { 331 var currentMs = new Date().getTime(); 332 var event = { 333 schema_id: schemaId, 334 payload: payload, 335 metadata: { 336 event_created_at_ms: currentMs, 337 event_sent_at_ms: currentMs 338 } 339 }; 340 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 341 }, 342 sendRequest: function sendRequest(endpointUrl, payload) { 343 // Try the sendBeacon API 344 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 345 var blobData = new window.Blob([payload], { 346 type: 'text/plain' 347 }); 348 349 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 350 return true; 351 } // sendBeacon was not successful 352 353 } // XHR beacon 354 355 var xhr = new XMLHttpRequest(); 356 357 try { 358 xhr.open('POST', endpointUrl); 359 xhr.setRequestHeader('Content-Type', 'text/plain'); 360 xhr.send(payload); 361 } catch (e) { 362 console.log(e); 363 } 364 365 return false; 366 }, 367 isIos12: function isIos12() { 368 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 369 } 370 }; 371 Monorail.produce('monorail-edge.shopifysvc.com', 372 'trekkie_storefront_load_errors/1.1', 373 {shop_id: 6682621, 374 theme_id: 123226914886, 375 app_name: "storefront", 376 context_url: window.location.href, 377 source_url: "//www.k-deer.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 378 379 }; 380 scriptFallback.async = true; 381 scriptFallback.src = '//www.k-deer.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 382 first.parentNode.insertBefore(scriptFallback, first); 383}; 384script.async = true; 385script.src = '//www.k-deer.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 386first.parentNode.insertBefore(script, first); 387 388 }; 389 trekkie.load( 390 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":6682621,"isMerchantRequest":null,"themeId":123226914886,"themeCityHash":"12131506509077164361","contentLanguage":"en","currency":"USD","eventMetadataId":"ebd085db-d91e-46db-b1b5-b65678b78d69"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 391 ); 392 393 var loaded = false;
394 trekkie.ready(function() { 395 if (loaded) return; 396 loaded = true; 397 398 window.ShopifyAnalytics.lib = window.trekkie; 399 400 var originalDocumentWrite = document.write; 401 document.write = customDocumentWrite; 402 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 403 document.write = originalDocumentWrite; 404 405 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 406 var token = match? match[1]: undefined; 407 if (!hasLoggedConversion(token)) { 408 setCookieIfConversion(token); 409 410 } 411 }); 412 413 window.ShopifyAnalytics.lib.page(null,{"pageType":"blog","resourceType":"blog","resourceId":7254591,"requestId":"32d7b876-564d-4fed-adbc-0fc84d4dbff7-1791061569","shopifyEmitted":true}); 414 415 var eventsListenerScript = document.createElement('script'); 416 eventsListenerScript.async = true; 417 eventsListenerScript.src = "//www.k-deer.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 418 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 419})();</script>
419 420
420<script> 421 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 422 window.ga = function ga() { 423 (window.ga.q = window.ga.q || []).push(arguments); 424 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 425 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 426 } 427 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 428 }; 429 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 430 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 431 } 432 } 433</script>
vendor: 1 bytes, line 433
433
434<script 435 defer 436 src="https://www.k-deer.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 437 data-application="storefront-renderer" 438 data-shop-id="6682621" 439 data-render-region="gcp-us-central1" 440 data-page-type="blog" 441 data-theme-instance-id="123226914886" 442 data-theme-name="Turbo" 443 data-theme-version="4.1.5" 444 data-monorail-region="shop_domain" 445 data-resource-timing-sampling-rate="10" 446 data-shs="true" 447 data-shs-beacon="true" 448 data-shs-export-with-fetch="true" 449 data-shs-logs-sample-rate="1" 450 data-shs-beacon-endpoint="https://www.k-deer.com/api/collect" 451></script>
451 452<meta name="shopify-y" content="feac0907-9d1e-4b3b-b1d0-14d18eb20ce3" data-expiration="1822619169000"><meta name="shopify-s" content="ed3c4aca-d9c1-4c01-a4da-78d339909fbf" data-expiration="1791063369000"><meta name="new-cookie-storage-activated" content="t"> 453</head> <noscript> <style> 454 .product_section .product_form, 455 .product_gallery { 456 opacity: 1; 457 } 458 459 .multi_select, 460 form .select { 461 display: block !important; 462 } 463 464 .image-element__wrap { 465 display: none; 466 }</style></noscript> <body class="blog" 467 data-money-format="$ {{amount}}" data-shop-url="https://www.k-deer.com"> <!-- "snippets/socialshopwave-helper.liquid" was not rendered, the associated app was uninstalled -->
467<script type="text/javascript"> 468 469 ire('identify', {customerId: '', customerEmail: ''});</script>
469 <div id="shopify-section-header" class="shopify-section header-section"> 470 471 472<header id="header" class="mobile_nav-fixed--true"> <div class="top_bar clearfix hidden"> <a class="mobile_nav dropdown_link" data-dropdown-rel="menu" data-no-instant="true"> <div> <span></span> <span></span> <span></span> <span></span></div> <span class="menu_title">Menu</span></a> <a href="https://www.k-deer.com" title="K-DEER" class="mobile_logo logo"> <img src="//www.k-deer.com/cdn/shop/files/400x100_shopify_logo_transparent_ombre-01-01-01_410x.png?v=1637182909" alt="K-DEER" class="lazyload" /></a> <div class="top_bar--right"></div></div> <div class="dropdown_container" data-dropdown="menu"> <div class="dropdown"> <ul class="menu" id="mobile_menu"> <li data-no-instant> <a href="/account/login" id="customer_login_link">Login</a></li> <li><a href="/pages/wishlist">wishlist</a></li></ul></div></div> 473</header> 474 475 476 477 478<header class="feature_image secondary_logo--true"> <div class="header header-fixed--true header-background--solid"> <div class="top_bar clearfix hidden"> <ul class="menu left"></ul> <ul class="menu right"> <li><a href="/pages/wishlist"><i class="ssw-icon-heart"></i></a></li> <li> <a href="/account" class="icon-user" title="My Account "> <span>Login</span></a></li></ul></div> <div class="main_nav_wrapper"> <div class="main_nav clearfix menu-position--inline logo-align--center"> <div class="nav"> <ul class="menu align_left clearfix"></ul></div> <div class="logo text-align--center"> <a href="https://www.k-deer.com" title="K-DEER"> <img src="//www.k-deer.com/cdn/shop/files/400x100_shopify_logo_transparent_ombre-01-01-01_410x.png?v=1637182909" class="secondary_logo" alt="K-DEER" /> <img src="//www.k-deer.com/cdn/shop/files/400x100_shopify_logo_transparent_ombre-01-01-01_410x.png?v=1637182909" class="primary_logo lazyload" alt="K-DEER" /></a></div> <div class="nav"> <ul class="menu align_right clearfix"></ul></div></div></div></div> 479</header> 480 481<style> 482 .main_nav div.logo a { 483 padding-top: 20px; 484 padding-bottom: 20px; 485 } 486 487 div.logo img { 488 max-width: 205px; 489 } 490 491 .nav { 492 493 width: 42%; 494 float: left; 495 496 } 497 498 499 .nav ul.menu { 500 padding-top: 13px; 501 padding-bottom: 13px; 502 } 503 504 .sticky_nav ul.menu, .sticky_nav .mini_cart { 505 padding-top: 6px; 506 padding-bottom: 6px; 507 } 508 509 510 511 #header .top_bar .icon-search { 512 right: 15px; 513 } 514 515 516 517 body { 518 overscroll-behavior-y: none; 519 } 520 521 522 523 524 @font-face { 525 font-family: "Work Sans"; 526 font-weight: 600; 527 font-style: normal; 528 src: url("//www.k-deer.com/cdn/fonts/work_sans/worksans_n6.75811c3bd5161ea6e3ceb2d48ca889388f9bd5fe.woff2") format("woff2"), 529 url("//www.k-deer.com/cdn/fonts/work_sans/worksans_n6.defcf26f28f3fa3df4555714d3f2e0f1217d7772.woff") format("woff"); 530} 531 532 .mobile_nav-fixed--true, 533 .empty_cart, .promo_banner, .title, .menu a, .menu a:visited, 534 .menu a:active, #header span.menu_title, .menu a span, 535 select.currencies, .mini_cart span{ 536 537 font-family: Larsseit-Regular; 538 font-weight: 400; 539 font-style: normal; 540 541 } 542</style> 543 544 545</div> <div class="mega-menu-container"> <div id="shopify-section-mega-menu-1" class="shopify-section mega-menu-section"> <div class="dropdown_container mega-menu mega-menu-1" data-dropdown="shop-by"> <div class="dropdown menu"> <div class="dropdown_content "> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link"> <a href="/collections/restocking" > 546 547 548 549 550 551 552 553 554 555 556 557 558<div class="image-element__wrap" style=" max-width: 643px;"> <img alt="" 559 560 data-src="//www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1600x.jpg?v=1655916144" 561 data-sizes="auto" 562 data-aspectratio="643/642" 563 data-srcset="//www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_5000x.jpg?v=1655916144 5000w, 564 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_4500x.jpg?v=1655916144 4500w, 565 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_4000x.jpg?v=1655916144 4000w, 566 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_3500x.jpg?v=1655916144 3500w, 567 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_3000x.jpg?v=1655916144 3000w, 568 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_2500x.jpg?v=1655916144 2500w, 569 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_2000x.jpg?v=1655916144 2000w, 570 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1800x.jpg?v=1655916144 1800w, 571 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1600x.jpg?v=1655916144 1600w, 572 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1400x.jpg?v=1655916144 1400w, 573 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1200x.jpg?v=1655916144 1200w, 574 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1000x.jpg?v=1655916144 1000w, 575 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_800x.jpg?v=1655916144 800w, 576 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_600x.jpg?v=1655916144 600w, 577 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_400x.jpg?v=1655916144 400w, 578 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_200x.jpg?v=1655916144 200w" 579 height="642" 580 width="643" 581 style=";" 582 class="lazyload transition--fade-in " 583 /> 584</div> 585 586 587 588<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_2000x.jpg?v=1655916144" alt="" class=""> 589</noscript> <p>Restocking - Sign up for back in stock notifications!</p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a >COLLECTIONS</a></li></ul> <ul> <li> <a href="/collections/the-loved-collection">The Loved Collection</a></li> <li> <a href="/collections/signature-stripes">Signature Stripes</a></li> <li> <a href="/collections/prints">Prints</a></li> <li> <a href="/collections/solids">Solids</a></li> <li> <a href="/collections/the-pocket-collection">Pockets</a></li> <li> <a href="/collections/all">Shop All</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/bottoms-1">BOTTOMS</a></li></ul> <ul> <li> <a href="/collections/leggings">Leggings</a></li> <li> <a href="/collections/sneaker-length">Sneaker</a></li> <li> <a href="/collections/capris">Capris</a></li> <li> <a href="/collections/skorts">Skirts & Skorts</a></li> <li> <a href="/collections/short-shorts">Shorts</a></li> <li> <a href="/collections/bum-bums">Bum Bums</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/tops-1">TOPS</a></li></ul> <ul> <li> <a href="/collections/long-sleeves">Long Sleeves</a></li> <li> <a href="/collections/tees">Tees</a></li> <li> <a href="/collections/tanks">Tanks</a></li> <li> <a href="/collections/crops">Crops</a></li> <li> <a href="/collections/bras">Bras</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/swimwear">SWIMWEAR</a></li></ul> <ul> <li> <a href="/collections/two-pieces">Two Pieces</a></li> <li> <a href="/collections/one-pieces">One Pieces</a></li></ul></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/kids">KIDS</a></li></ul> <ul> <li> <a href="/collections/kids">Bottoms</a></li> <li> <a href="/collections/mom-and-me">Mini Me's</a></li></ul></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/shorts">MENS</a></li></ul> <ul> <li> <a href="/collections/shorts">Shorts</a></li></ul></div> <div class="mega-menu__richtext"></div></div></div></div></div> <ul class="mobile-mega-menu hidden" data-mobile-dropdown="shop-by"> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" > <a href="/collections/restocking" > 590 591 592 593 594 595 596 597 598 599 600 601 602<div class="image-element__wrap" style=" max-width: 643px;"> <img alt="" 603 604 data-src="//www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1600x.jpg?v=1655916144" 605 data-sizes="auto" 606 data-aspectratio="643/642" 607 data-srcset="//www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_5000x.jpg?v=1655916144 5000w, 608 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_4500x.jpg?v=1655916144 4500w, 609 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_4000x.jpg?v=1655916144 4000w, 610 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_3500x.jpg?v=1655916144 3500w, 611 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_3000x.jpg?v=1655916144 3000w, 612 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_2500x.jpg?v=1655916144 2500w, 613 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_2000x.jpg?v=1655916144 2000w, 614 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1800x.jpg?v=1655916144 1800w, 615 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1600x.jpg?v=1655916144 1600w, 616 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1400x.jpg?v=1655916144 1400w, 617 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1200x.jpg?v=1655916144 1200w, 618 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_1000x.jpg?v=1655916144 1000w, 619 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_800x.jpg?v=1655916144 800w, 620 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_600x.jpg?v=1655916144 600w, 621 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_400x.jpg?v=1655916144 400w, 622 //www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_200x.jpg?v=1655916144 200w" 623 height="642" 624 width="643" 625 style=";" 626 class="lazyload transition--fade-in " 627 /> 628</div> 629 630 631 632<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_Deer_040821_3155_small_97fcd105-00f0-4a46-b959-7ce2198c11ee_2000x.jpg?v=1655916144" alt="" class=""> 633</noscript> <p>Restocking - Sign up for back in stock notifications!</p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="" class="parent-link--false"> 634 COLLECTIONS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/the-loved-collection">The Loved Collection</a></li> <li> <a href="/collections/signature-stripes">Signature Stripes</a></li> <li> <a href="/collections/prints">Prints</a></li> <li> <a href="/collections/solids">Solids</a></li> <li> <a href="/collections/the-pocket-collection">Pockets</a></li> <li> <a href="/collections/all">Shop All</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/bottoms-1" class="parent-link--true"> 635 BOTTOMS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/leggings">Leggings</a></li> <li> <a href="/collections/sneaker-length">Sneaker</a></li> <li> <a href="/collections/capris">Capris</a></li> <li> <a href="/collections/skorts">Skirts & Skorts</a></li> <li> <a href="/collections/short-shorts">Shorts</a></li> <li> <a href="/collections/bum-bums">Bum Bums</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/tops-1" class="parent-link--true"> 636 TOPS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/long-sleeves">Long Sleeves</a></li> <li> <a href="/collections/tees">Tees</a></li> <li> <a href="/collections/tanks">Tanks</a></li> <li> <a href="/collections/crops">Crops</a></li> <li> <a href="/collections/bras">Bras</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/swimwear" class="parent-link--true"> 637 SWIMWEAR <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/two-pieces">Two Pieces</a></li> <li> <a href="/collections/one-pieces">One Pieces</a></li></ul></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/kids" class="parent-link--true"> 638 KIDS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/kids">Bottoms</a></li> <li> <a href="/collections/mom-and-me">Mini Me's</a></li></ul></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/shorts" class="parent-link--true"> 639 MENS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/shorts">Shorts</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div></ul> 640 641 642</div> <div id="shopify-section-mega-menu-2" class="shopify-section mega-menu-section"> <div class="dropdown_container mega-menu mega-menu-2" data-dropdown="signature-stripes"> <div class="dropdown menu"> <div class="dropdown_content "> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link"> <a href="/collections/stripes" > 643 644 645 646 647 648 649 650 651 652 653 654 655<div class="image-element__wrap" style=" max-width: 659px;"> <img alt="Shop all signature stripes" 656 657 data-src="//www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1600x.jpg?v=1614291759" 658 data-sizes="auto" 659 data-aspectratio="659/659" 660 data-srcset="//www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_5000x.jpg?v=1614291759 5000w, 661 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_4500x.jpg?v=1614291759 4500w, 662 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_4000x.jpg?v=1614291759 4000w, 663 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_3500x.jpg?v=1614291759 3500w, 664 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_3000x.jpg?v=1614291759 3000w, 665 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_2500x.jpg?v=1614291759 2500w, 666 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_2000x.jpg?v=1614291759 2000w, 667 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1800x.jpg?v=1614291759 1800w, 668 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1600x.jpg?v=1614291759 1600w, 669 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1400x.jpg?v=1614291759 1400w, 670 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1200x.jpg?v=1614291759 1200w, 671 //www.k-deer.com/cdn/s
671hop/files/K_DEER_23082_TP_1000x.jpg?v=1614291759 1000w, 672 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_800x.jpg?v=1614291759 800w, 673 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_600x.jpg?v=1614291759 600w, 674 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_400x.jpg?v=1614291759 400w, 675 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_200x.jpg?v=1614291759 200w" 676 height="659" 677 width="659" 678 style=";" 679 class="lazyload transition--fade-in " 680 /> 681</div> 682 683 684 685<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_2000x.jpg?v=1614291759" alt="Shop all signature stripes" class=""> 686</noscript> <p>Shop All</p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link"> <a href="/collections/meet-mabel" > 687 688 689 690 691 692 693 694 695 696 697 698 699<div class="image-element__wrap" style=" max-width: 2624px;"> <img alt="Shop featured stripe Mabel. Mabel is purple, pink, orange, and yellow with black stripes." 700 701 data-src="//www.k-deer.com/cdn/shop/files/mabel_1600x.jpg?v=1635887928" 702 data-sizes="auto" 703 data-aspectratio="2624/2625" 704 data-srcset="//www.k-deer.com/cdn/shop/files/mabel_5000x.jpg?v=1635887928 5000w, 705 //www.k-deer.com/cdn/shop/files/mabel_4500x.jpg?v=1635887928 4500w, 706 //www.k-deer.com/cdn/shop/files/mabel_4000x.jpg?v=1635887928 4000w, 707 //www.k-deer.com/cdn/shop/files/mabel_3500x.jpg?v=1635887928 3500w, 708 //www.k-deer.com/cdn/shop/files/mabel_3000x.jpg?v=1635887928 3000w, 709 //www.k-deer.com/cdn/shop/files/mabel_2500x.jpg?v=1635887928 2500w, 710 //www.k-deer.com/cdn/shop/files/mabel_2000x.jpg?v=1635887928 2000w, 711 //www.k-deer.com/cdn/shop/files/mabel_1800x.jpg?v=1635887928 1800w, 712 //www.k-deer.com/cdn/shop/files/mabel_1600x.jpg?v=1635887928 1600w, 713 //www.k-deer.com/cdn/shop/files/mabel_1400x.jpg?v=1635887928 1400w, 714 //www.k-deer.com/cdn/shop/files/mabel_1200x.jpg?v=1635887928 1200w, 715 //www.k-deer.com/cdn/shop/files/mabel_1000x.jpg?v=1635887928 1000w, 716 //www.k-deer.com/cdn/shop/files/mabel_800x.jpg?v=1635887928 800w, 717 //www.k-deer.com/cdn/shop/files/mabel_600x.jpg?v=1635887928 600w, 718 //www.k-deer.com/cdn/shop/files/mabel_400x.jpg?v=1635887928 400w, 719 //www.k-deer.com/cdn/shop/files/mabel_200x.jpg?v=1635887928 200w" 720 height="2625" 721 width="2624" 722 style=";" 723 class="lazyload transition--fade-in " 724 /> 725</div> 726 727 728 729<noscript> <img src="//www.k-deer.com/cdn/shop/files/mabel_2000x.jpg?v=1635887928" alt="Shop featured stripe Mabel. Mabel is purple, pink, orange, and yellow with black stripes." class=""> 730</noscript> <p>Meet Mabel</p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link"> <a href="/collections/last-chance-stripes" > 731 732 733 734 735 736 737 738 739 740 741 742 743<div class="image-element__wrap" style=" max-width: 592px;"> <img alt="" 744 745 data-src="//www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1600x.jpg?v=1635887984" 746 data-sizes="auto" 747 data-aspectratio="592/591" 748 data-srcset="//www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_5000x.jpg?v=1635887984 5000w, 749 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_4500x.jpg?v=1635887984 4500w, 750 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_4000x.jpg?v=1635887984 4000w, 751 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_3500x.jpg?v=1635887984 3500w, 752 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_3000x.jpg?v=1635887984 3000w, 753 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_2500x.jpg?v=1635887984 2500w, 754 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_2000x.jpg?v=1635887984 2000w, 755 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1800x.jpg?v=1635887984 1800w, 756 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1600x.jpg?v=1635887984 1600w, 757 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1400x.jpg?v=1635887984 1400w, 758 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1200x.jpg?v=1635887984 1200w, 759 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1000x.jpg?v=1635887984 1000w, 760 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_800x.jpg?v=1635887984 800w, 761 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_600x.jpg?v=1635887984 600w, 762 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_400x.jpg?v=1635887984 400w, 763 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_200x.jpg?v=1635887984 200w" 764 height="591" 765 width="592" 766 style=";" 767 class="lazyload transition--fade-in " 768 /> 769</div> 770 771 772 773<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_2000x.jpg?v=1635887984" alt="" class=""> 774</noscript> <p>Shop Last Chance Stripes</p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link">
774 <a href="/pages/charity-info" > 775 776 777 778 779 780 781 782 783 784 785 786 787<div class="image-element__wrap" style=" max-width: 748px;"> <img alt="" 788 789 data-src="//www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1600x.jpg?v=1614291759" 790 data-sizes="auto" 791 data-aspectratio="748/748" 792 data-srcset="//www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_5000x.jpg?v=1614291759 5000w, 793 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_4500x.jpg?v=1614291759 4500w, 794 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_4000x.jpg?v=1614291759 4000w, 795 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_3500x.jpg?v=1614291759 3500w, 796 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_3000x.jpg?v=1614291759 3000w, 797 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_2500x.jpg?v=1614291759 2500w, 798 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_2000x.jpg?v=1614291759 2000w, 799 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1800x.jpg?v=1614291759 1800w, 800 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1600x.jpg?v=1614291759 1600w, 801 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1400x.jpg?v=1614291759 1400w, 802 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1200x.jpg?v=1614291759 1200w, 803 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1000x.jpg?v=1614291759 1000w, 804 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_800x.jpg?v=1614291759 800w, 805 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_600x.jpg?v=1614291759 600w, 806 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_400x.jpg?v=1614291759 400w, 807 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_200x.jpg?v=1614291759 200w" 808 height="748" 809 width="748" 810 style=";" 811 class="lazyload transition--fade-in " 812 /> 813</div> 814 815 816 817<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_2000x.jpg?v=1614291759" alt="" class=""> 818</noscript> <p>About the Signature Stripes Collection</p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"> <p>Our Signature Stripes are named after inspiring women and support causes that are close to their hearts. 5% of e-commerce sales are donated to these causes to help make a difference.</p></div> <div class="mega-menu__richtext"></div></div></div></div></div> <ul class="mobile-mega-menu hidden" data-mobile-dropdown="signature-stripes"> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" > <a href="/collections/stripes" > 819 820 821 822 823 824 825 826 827 828 829 830 831<div class="image-element__wrap" style=" max-width: 659px;"> <img alt="Shop all signature stripes" 832 833 data-src="//www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1600x.jpg?v=1614291759" 834 data-sizes="auto" 835 data-aspectratio="659/659" 836 data-srcset="//www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_5000x.jpg?v=1614291759 5000w, 837 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_4500x.jpg?v=1614291759 4500w, 838 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_4000x.jpg?v=1614291759 4000w, 839 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_3500x.jpg?v=1614291759 3500w, 840 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_3000x.jpg?v=1614291759 3000w, 841 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_2500x.jpg?v=1614291759 2500w, 842 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_2000x.jpg?v=1614291759 2000w, 843 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1800x.jpg?v=1614291759 1800w, 844 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1600x.jpg?v=1614291759 1600w, 845 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1400x.jpg?v=1614291759 1400w, 846 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1200x.jpg?v=1614291759 1200w, 847 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_1000x.jpg?v=1614291759 1000w, 848 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_800x.jpg?v=1614291759 800w, 849 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_600x.jpg?v=1614291759 600w, 850 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_400x.jpg?v=1614291759 400w, 851 //www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_200x.jpg?v=1614291759 200w" 852 height="659" 853 width="659" 854 style=";" 855 class="lazyload transition--fade-in " 856 /> 857</div> 858 859 860 861<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_DEER_23082_TP_2000x.jpg?v=1614291759" alt="Shop all signature stripes" class=""> 862</noscript> <p>Shop All</p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" > <a href="/collections/meet-mabel" > 863 864 865 866 867 868 869 870 871 872 873 874 875<div class="image-element__wrap" style=" max-width: 2624px;"> <img alt="Shop featured stripe Mabel. Mabel is purple, pink, orange, and yellow with black stripes." 876 877 data-src="//www.k-deer.com/cdn/shop/files/mabel_1600x.jpg?v=1635887928" 878 data-sizes="auto" 879 data-aspectratio="2624/2625" 880 data-srcset="//www.k-deer.com/cdn/shop/files/mabel_5000x.jpg?v=1635887928 5000w, 881 //www.k-deer.com/cdn/shop/files/mabel_4500x.jpg?v=1635887928 4500w, 882 //www.k-deer.com/cdn/shop/files/mabel_4000x.jpg?v=1635887928 4000w, 883 //www.k-deer.com/cdn/shop/files/mabel_3500x.jpg?v=1635887928 3500w, 884 //www.k-deer.com/cdn/shop/files/mabel_3000x.jpg?v=1635887928 3000w, 885 //www.k-deer.com/cdn/shop/files/mabel_2500x.jpg?v=1635887928 2500w, 886 //www.k-deer.com/cdn/shop/files/mabel_2000x.jpg?v=1635887928 2000w, 887 //www.k-deer.com/cdn/shop/files/mabel_1800x.jpg?v=1635887928 1800w, 888 //www.k-deer.com/cdn/shop/files/mabel_1600x.jpg?v=1635887928 1600w, 889 //www.k-deer.com/cdn/shop/files/mabel_1400x.jpg?v=1635887928 1400w, 890 //www.k-deer.com/cdn/shop/files/mabel_1200x.jpg?v=1635887928 1200w, 891 //www.k-deer.com/cdn/shop/files/mabel_1000x.jpg?v=1635887928 1000w, 892 //www.k-deer.com/cdn/shop/files/mabel_800x.jpg?v=1635887928 800w, 893 //www.k-deer.com/cdn/shop/files/mabel_600x.jpg?v=1635887928 600w, 894 //www.k-deer.com/cdn/shop/files/mabel_400x.jpg?v=1635887928 400w, 895 //www.k-deer.com/cdn/shop/files/mabel_200x.jpg?v=1635887928 200w" 896 height="2625" 897 width="2624" 898 style=";" 899 class="lazyload transition--fade-in " 900 /> 901</div> 902 903 904 905<noscript> <img src="//www.k-deer.com/cdn/shop/files/mabel_2000x.jpg?v=1635887928" alt="Shop featured stripe Mabel. Mabel is purple, pink, orange, and yellow with black stripes." class=""> 906</noscript> <p>Meet Mabel</p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" > <a href="/collections/last-chance-stripes" > 907 908 909 910 911 912 913 914 915 916 917 918 919<div class="image-element__wrap" style=" max-width: 592px;"> <img alt="" 920 921 data-src="//www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1600x.jpg?v=1635887984" 922 data-sizes="auto" 923 data-aspectratio="592/591" 924 data-srcset="//www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_5000x.jpg?v=1635887984 5000w, 925 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_4500x.jpg?v=1635887984 4500w, 926 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_4000x.jpg?v=1635887984 4000w, 927 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_3500x.jpg?v=1635887984 3500w, 928 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_3000x.jpg?v=1635887984 3000w, 929 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_2500x.jpg?v=1635887984 2500w, 930 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_2000x.jpg?v=1635887984 2000w, 931 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1800x.jpg?v=1635887984 1800w, 932 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1600x.jpg?v=1635887984 1600w, 933 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1400x.jpg?v=1635887984 1400w, 934 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1200x.jpg?v=1635887984 1200w, 935 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_1000x.jpg?v=1635887984 1000w, 936 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_800x.jpg?v=1635887984 800w, 937 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_600x.jpg?v=1635887984 600w, 938 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_400x.jpg?v=1635887984 400w, 939 //www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_200x.jpg?v=1635887984 200w" 940 height="591" 941 width="592" 942 style=";" 943 class="lazyload transition--fade-in " 944 /> 945</div> 946 947 948 949<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_DEER_080818_0635_web_2000x.jpg?v=1635887984" alt="" class=""> 950</noscript> <p>Shop Last Chance Stripes</p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" >
950 <a href="/pages/charity-info" > 951 952 953 954 955 956 957 958 959 960 961 962 963<div class="image-element__wrap" style=" max-width: 748px;"> <img alt="" 964 965 data-src="//www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1600x.jpg?v=1614291759" 966 data-sizes="auto" 967 data-aspectratio="748/748" 968 data-srcset="//www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_5000x.jpg?v=1614291759 5000w, 969 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_4500x.jpg?v=1614291759 4500w, 970 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_4000x.jpg?v=1614291759 4000w, 971 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_3500x.jpg?v=1614291759 3500w, 972 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_3000x.jpg?v=1614291759 3000w, 973 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_2500x.jpg?v=1614291759 2500w, 974 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_2000x.jpg?v=1614291759 2000w, 975 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1800x.jpg?v=1614291759 1800w, 976 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1600x.jpg?v=1614291759 1600w, 977 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1400x.jpg?v=1614291759 1400w, 978 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1200x.jpg?v=1614291759 1200w, 979 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_1000x.jpg?v=1614291759 1000w, 980 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_800x.jpg?v=1614291759 800w, 981 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_600x.jpg?v=1614291759 600w, 982 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_400x.jpg?v=1614291759 400w, 983 //www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_200x.jpg?v=1614291759 200w" 984 height="748" 985 width="748" 986 style=";" 987 class="lazyload transition--fade-in " 988 /> 989</div> 990 991 992 993<noscript> <img src="//www.k-deer.com/cdn/shop/files/K_Deer_021920_6296_small_ccd3c5e1-077c-4910-a80c-f1e1e4331110_2000x.jpg?v=1614291759" alt="" class=""> 994</noscript> <p>About the Signature Stripes Collection</p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"> <p>Our Signature Stripes are named after inspiring women and support causes that are close to their hearts. 5% of e-commerce sales are donated to these causes to help make a difference.</p></li> <li class="mobile-mega-menu_block" ></li></div></ul> 995 996 997</div> <div id="shopify-section-mega-menu-3" class="shopify-section mega-menu-section"> <div class="dropdown_container mega-menu mega-menu-3" data-dropdown="about"> <div class="dropdown menu"> <div class="dropdown_content "> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link"> <a href="/pages/fitness-instructor" > 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010<div class="image-element__wrap" style=" max-width: 300px;"> <img alt="Apply for the K-DEER fitness instructor program." 1011 1012 data-src="//www.k-deer.com/cdn/shop/files/fitnessinstructor_1600x.jpg?v=1613757352" 1013 data-sizes="auto" 1014 data-aspectratio="300/300" 1015 data-srcset="//www.k-deer.com/cdn/shop/files/fitnessinstructor_5000x.jpg?v=1613757352 5000w, 1016 //www.k-deer.com/cdn/shop/files/fitnessinstructor_4500x.jpg?v=1613757352 4500w, 1017 //www.k-deer.com/cdn/shop/files/fitnessinstructor_4000x.jpg?v=1613757352 4000w,
1018 //www.k-deer.com/cdn/shop/files/fitnessinstructor_3500x.jpg?v=1613757352 3500w, 1019 //www.k-deer.com/cdn/shop/files/fitnessinstructor_3000x.jpg?v=1613757352 3000w, 1020 //www.k-deer.com/cdn/shop/files/fitnessinstructor_2500x.jpg?v=1613757352 2500w, 1021 //www.k-deer.com/cdn/shop/files/fitnessinstructor_2000x.jpg?v=1613757352 2000w, 1022 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1800x.jpg?v=1613757352 1800w, 1023 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1600x.jpg?v=1613757352 1600w, 1024 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1400x.jpg?v=1613757352 1400w, 1025 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1200x.jpg?v=1613757352 1200w, 1026 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1000x.jpg?v=1613757352 1000w, 1027 //www.k-deer.com/cdn/shop/files/fitnessinstructor_800x.jpg?v=1613757352 800w, 1028 //www.k-deer.com/cdn/shop/files/fitnessinstructor_600x.jpg?v=1613757352 600w, 1029 //www.k-deer.com/cdn/shop/files/fitnessinstructor_400x.jpg?v=1613757352 400w, 1030 //www.k-deer.com/cdn/shop/files/fitnessinstructor_200x.jpg?v=1613757352 200w" 1031 height="300" 1032 width="300" 1033 style=";" 1034 class="lazyload transition--fade-in " 1035 /> 1036</div> 1037 1038 1039 1040<noscript> <img src="//www.k-deer.com/cdn/shop/files/fitnessinstructor_2000x.jpg?v=1613757352" alt="Apply for the K-DEER fitness instructor program." class=""> 1041</noscript> <p>Instructor Appreciation</p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a >ABOUT US</a></li></ul> <ul> <li> <a href="/pages/story-of-k-deer">Our Story</a></li> <li> <a href="/pages/charity-info">Giving Back</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a >INFO</a></li></ul> <ul> <li> <a href="/pages/faq">FAQ</a></li> <li> <a href="/pages/fabric-and-fit">Fabric & Fit</a></li> <li> <a href="/pages/size-charts">Size Chart</a></li> <li> <a href="https://return.doddle.com/KDEER">Returns</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a >COMMUNITY</a></li></ul> <ul> <li> <a href="/blogs/news">Blog</a></li> <li> <a href="/pages/press-page">Press</a></li> <li> <a href="/pages/reviews">Reviews</a></li> <li> <a href="/pages/reward">Rewards</a></li> <li> <a href="/pages/fitness-instructor">Instructor Appreciation</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__richtext"></div></div></div></div></div> <ul class="mobile-mega-menu hidden" data-mobile-dropdown="about"> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" > <a href="/pages/fitness-instructor" > 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054<div class="image-element__wrap" style=" max-width: 300px;"> <img alt="Apply for the K-DEER fitness instructor program." 1055 1056 data-src="//www.k-deer.com/cdn/shop/files/fitnessinstructor_1600x.jpg?v=1613757352" 1057 data-sizes="auto" 1058 data-aspectratio="300/300" 1059 data-srcset="//www.k-deer.com/cdn/shop/files/fitnessinstructor_5000x.jpg?v=1613757352 5000w, 1060 //www.k-deer.com/cdn/shop/files/fitnessinstructor_4500x.jpg?v=1613757352 4500w, 1061 //www.k-deer.com/cdn/shop/files/fitnessinstructor_4000x.jpg?v=1613757352 4000w, 1062 //www.k-deer.com/cdn/shop/files/fitnessinstructor_3500x.jpg?v=1613757352 3500w, 1063 //www.k-deer.com/cdn/shop/files/fitnessinstructor_3000x.jpg?v=1613757352 3000w, 1064 //www.k-deer.com/cdn/shop/files/fitnessinstructor_2500x.jpg?v=1613757352 2500w, 1065 //www.k-deer.com/cdn/shop/files/fitnessinstructor_2000x.jpg?v=1613757352 2000w, 1066 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1800x.jpg?v=1613757352 1800w,
1067 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1600x.jpg?v=1613757352 1600w, 1068 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1400x.jpg?v=1613757352 1400w, 1069 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1200x.jpg?v=1613757352 1200w, 1070 //www.k-deer.com/cdn/shop/files/fitnessinstructor_1000x.jpg?v=1613757352 1000w, 1071 //www.k-deer.com/cdn/shop/files/fitnessinstructor_800x.jpg?v=1613757352 800w, 1072 //www.k-deer.com/cdn/shop/files/fitnessinstructor_600x.jpg?v=1613757352 600w, 1073 //www.k-deer.com/cdn/shop/files/fitnessinstructor_400x.jpg?v=1613757352 400w, 1074 //www.k-deer.com/cdn/shop/files/fitnessinstructor_200x.jpg?v=1613757352 200w" 1075 height="300" 1076 width="300" 1077 style=";" 1078 class="lazyload transition--fade-in " 1079 /> 1080</div> 1081 1082 1083 1084<noscript> <img src="//www.k-deer.com/cdn/shop/files/fitnessinstructor_2000x.jpg?v=1613757352" alt="Apply for the K-DEER fitness instructor program." class=""> 1085</noscript> <p>Instructor Appreciation</p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="" class="parent-link--false"> 1086 ABOUT US <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/pages/story-of-k-deer">Our Story</a></li> <li> <a href="/pages/charity-info">Giving Back</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="" class="parent-link--false"> 1087 INFO <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/pages/faq">FAQ</a></li> <li> <a href="/pages/fabric-and-fit">Fabric & Fit</a></li> <li> <a href="/pages/size-charts">Size Chart</a></li> <li> <a href="https://return.doddle.com/KDEER">Returns</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="" class="parent-link--false"> 1088 COMMUNITY <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/blogs/news">Blog</a></li> <li> <a href="/pages/press-page">Press</a></li> <li> <a href="/pages/reviews">Reviews</a></li> <li> <a href="/pages/reward">Rewards</a></li> <li> <a href="/pages/fitness-instructor">Instructor Appreciation</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" ></li></div></ul> 1089 1090 1091</div> <div id="shopify-section-mega-menu-4" class="shopify-section mega-menu-section"> <div class="dropdown_container mega-menu mega-menu-4" data-dropdown="sale"> <div class="dropdown menu"> <div class="dropdown_content "> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="mega-menu__image-caption-link"> <a href="/collections/sale" > 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104<div class="image-element__wrap" style=" max-width: 300px;"> <img alt="Shop Sale" 1105 1106 data-src="//www.k-deer.com/cdn/shop/files/Sale-icon-2_1600x.png?v=1630523967" 1107 data-sizes="auto" 1108 data-aspectratio="300/300" 1109 data-srcset="//www.k-deer.com/cdn/shop/files/Sale-icon-2_5000x.png?v=1630523967 5000w, 1110 //www.k-deer.com/cdn/shop/files/Sale-icon-2_4500x.png?v=1630523967 4500w, 1111 //www.k-deer.com/cdn/shop/files/Sale-icon-2_4000x.png?v=1630523967 4000w, 1112 //www.k-deer.com/cdn/shop/files/Sale-icon-2_3500x.png?v=1630523967 3500w, 1113 //www.k-deer.com/cdn/shop/files/Sale-icon-2_3000x.png?v=1630523967 3000w, 1114 //www.k-deer.com/cdn/shop/files/Sale-icon-2_2500x.png?v=1630523967 2500w, 1115 //www.k-deer.com/cdn/shop/files/Sale-icon-2_2000x.png?v=1630523967 2000w, 1116 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1800x.png?v=1630523967 1800w, 1117 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1600x.png?v=1630523967 1600w, 1118 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1400x.png?v=1630523967 1400w, 1119 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1200x.png?v=1630523967 1200w, 1120 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1000x.png?v=1630523967 1000w, 1121 //www.k-deer.com/cdn/shop/files/Sale-icon-2_800x.png?v=1630523967 800w, 1122 //www.k-deer.com/cdn/shop/files/Sale-icon-2_600x.png?v=1630523967 600w, 1123 //www.k-deer.com/cdn/shop/files/Sale-icon-2_400x.png?v=1630523967 400w, 1124 //www.k-deer.com/cdn/shop/files/Sale-icon-2_200x.png?v=1630523967 200w" 1125 height="300" 1126 width="300" 1127 style=";" 1128 class="lazyload transition--fade-in " 1129 /> 1130</div> 1131 1132 1133 1134<noscript> <img src="//www.k-deer.com/cdn/shop/files/Sale-icon-2_2000x.png?v=1630523967" alt="Shop Sale" class=""> 1135</noscript> <p></p></a></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/bottoms-sale">BOTTOMS</a></li></ul> <ul> <li> <a href="/collections/sale-leggings-1">Leggings</a></li> <li> <a href="/collections/sale-sneaker-length-1">Sneaker</a></li> <li> <a href="/collections/sale-capris-1">Capris</a></li> <li> <a href="/collections/sale-short-shorts-1">Shorts</a></li> <li> <a href="/collections/sale-skorts">Skorts</a></li> <li> <a href="/collections/sale-bum-bums-1">Bum Bums</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/tops-sale">TOPS</a></li></ul> <ul> <li> <a href="/collections/sale-bras">Bras</a></li> <li> <a href="/collections/sale-crops">Crops</a></li> <li> <a href="/collections/sale-tanks">Tanks</a></li> <li> <a href="/collections/sale-short-sleeves">Tees</a></li> <li> <a href="/collections/sale-longsleeves">Long Sleeves</a></li></ul></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/swimwear">SWIMWEAR</a></li></ul> <ul> <li> <a href="/collections/two-pieces">Two Pieces</a></li> <li> <a href="/collections/one-pieces">One Pieces</a></li></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/kids-sales">KIDS</a></li></ul> <ul> <li> <a href="/collections/kids-sales">Bottoms</a></li></ul></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/mens-sale">MENS</a></li></ul> <ul></ul></div> <div class="mega-menu__richtext"></div></div> <div class="dropdown_column" > <div class="mega-menu__richtext"></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/sale-accessories">ACCESSORIES</a></li></ul> <ul></ul></div> <div class="dropdown_column__menu"> <ul class="dropdown_title"> <li> <a href="/collections/final-sale">FINAL SALE</a></li></ul> <ul> <li> <a href="/collections/final-sale/tops">Tops</a></li> <li> <a href="/collections/final-sale/bottoms">Bottoms</a></li></ul></div> <div class="mega-menu__richtext"></div></div></div></div></div> <ul class="mobile-mega-menu hidden" data-mobile-dropdown="sale"> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block" > <a href="/collections/sale" > 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148<div class="image-element__wrap" style=" max-width: 300px;"> <img alt="Shop Sale" 1149 1150 data-src="//www.k-deer.com/cdn/shop/files/Sale-icon-2_1600x.png?v=1630523967" 1151 data-sizes="auto" 1152 data-aspectratio="300/300" 1153 data-srcset="//www.k-deer.com/cdn/shop/files/Sale-icon-2_5000x.png?v=1630523967 5000w, 1154 //www.k-deer.com/cdn/shop/files/Sale-icon-2_4500x.png?v=1630523967 4500w, 1155 //www.k-deer.com/cdn/shop/files/Sale-icon-2_4000x.png?v=1630523967 4000w, 1156 //www.k-deer.com/cdn/shop/files/Sale-icon-2_3500x.png?v=1630523967 3500w, 1157 //www.k-deer.com/cdn/shop/files/Sale-icon-2_3000x.png?v=1630523967 3
1157000w, 1158 //www.k-deer.com/cdn/shop/files/Sale-icon-2_2500x.png?v=1630523967 2500w, 1159 //www.k-deer.com/cdn/shop/files/Sale-icon-2_2000x.png?v=1630523967 2000w, 1160 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1800x.png?v=1630523967 1800w, 1161 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1600x.png?v=1630523967 1600w, 1162 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1400x.png?v=1630523967 1400w, 1163 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1200x.png?v=1630523967 1200w, 1164 //www.k-deer.com/cdn/shop/files/Sale-icon-2_1000x.png?v=1630523967 1000w, 1165 //www.k-deer.com/cdn/shop/files/Sale-icon-2_800x.png?v=1630523967 800w, 1166 //www.k-deer.com/cdn/shop/files/Sale-icon-2_600x.png?v=1630523967 600w, 1167 //www.k-deer.com/cdn/shop/files/Sale-icon-2_400x.png?v=1630523967 400w, 1168 //www.k-deer.com/cdn/shop/files/Sale-icon-2_200x.png?v=1630523967 200w" 1169 height="300" 1170 width="300" 1171 style=";" 1172 class="lazyload transition--fade-in " 1173 /> 1174</div> 1175 1176 1177 1178<noscript> <img src="//www.k-deer.com/cdn/shop/files/Sale-icon-2_2000x.png?v=1630523967" alt="Shop Sale" class=""> 1179</noscript> <p></p></a></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/bottoms-sale" class="parent-link--true"> 1180 BOTTOMS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/sale-leggings-1">Leggings</a></li> <li> <a href="/collections/sale-sneaker-length-1">Sneaker</a></li> <li> <a href="/collections/sale-capris-1">Capris</a></li> <li> <a href="/collections/sale-short-shorts-1">Shorts</a></li> <li> <a href="/collections/sale-skorts">Skorts</a></li> <li> <a href="/collections/sale-bum-bums-1">Bum Bums</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/tops-sale" class="parent-link--true"> 1181 TOPS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/sale-bras">Bras</a></li> <li> <a href="/collections/sale-crops">Crops</a></li> <li> <a href="/collections/sale-tanks">Tanks</a></li> <li> <a href="/collections/sale-short-sleeves">Tees</a></li> <li> <a href="/collections/sale-longsleeves">Long Sleeves</a></li></ul></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/swimwear" class="parent-link--true"> 1182 SWIMWEAR <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/two-pieces">Two Pieces</a></li> <li> <a href="/collections/one-pieces">One Pieces</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/kids-sales" class="parent-link--true"> 1183 KIDS <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/kids-sales">Bottoms</a></li></ul></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/mens-sale" class="parent-link--true"> 1184 MENS <span class="right icon-down-arrow"></span></a> <ul></ul></li> <li class="mobile-mega-menu_block" ></li></div> <div> <li class="mobile-mega-menu_block mega-menu__richtext"></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/sale-accessories" class="parent-link--true"> 1185 ACCESSORIES <span class="right icon-down-arrow"></span></a> <ul></ul></li> <li class="mobile-mega-menu_block sublink"> <a data-no-instant href="/collections/final-sale" class="parent-link--true"> 1186 FINAL SALE <span class="right icon-down-arrow"></span></a> <ul> <li> <a href="/collections/final-sale/tops">Tops</a></li> <li> <a href="/collections/final-sale/bottoms">Bottoms</a></li></ul></li> <li class="mobile-mega-menu_block" ></li></div></ul> 1187 1188 1189</div></div> <!--LayoutHub-Workspace-Start--> 1190 1191<div id="shopify-section-blog-template" class="shopify-section blog-section"> 1192 1193 1194<a name="pagecontent" id="pagecontent"></a> 1195 1196<div class="container main content"> <div class="blog-header clearfix"> <div class="eight columns"> <h1 class="blog-title"> 1197 THE K-DEER BLOG</h1> <p class="subtitle"></p></h1></div> <div class="eight columns section_select medium-down--one-whole"></div> <div class="sixteen columns"> <div class="feature_divider"></div></div></div> <div class="twelve medium-down--one-whole columns equal-columns--outside-trim equal-columns--clear"> <div class="one-third column article medium-down--one-half small-down--one-whole"> <a href="/blogs/news/checking-in-march-27-2023" title="Checking in... March 27, 2023"> 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209<div class="image-element__wrap" style=" max-width: 2724px;"> <img alt="Checking in... March 27, 2023" 1210 1211 data-src="//www.k-deer.com/cdn/shop/articles/hug_with_dad_1600x.jpg?v=1709677345" 1212 data-sizes="auto" 1213 data-aspectratio="2724/2724" 1214 data-srcset="//www.k-deer.com/cdn/shop/articles/hug_with_dad_5000x.jpg?v=1709677345 5000w, 1215 //www.k-deer.com/cdn/shop/articles/hug_with_dad_4500x.jpg?v=1709677345 4500w, 1216 //www.k-deer.com/cdn/shop/articles/hug_with_dad_4000x.jpg?v=1709677345 4000w, 1217 //www.k-deer.com/cdn/shop/articles/hug_with_dad_3500x.jpg?v=1709677345 3500w, 1218 //www.k-deer.com/cdn/shop/articles/hug_with_dad_3000x.jpg?v=1709677345 3000w, 1219 //www.k-deer.com/cdn/shop/articles/hug_with_dad_2500x.jpg?v=1709677345 2500w, 1220 //www.k-deer.com/cdn/shop/articles/hug_with_dad_2000x.jpg?v=1709677345 2000w, 1221 //www.k-deer.com/cdn/shop/articles/hug_with_dad_1800x.jpg?v=1709677345 1800w, 1222 //www.k-deer.com/cdn/shop/articles/hug_with_dad_1600x.jpg?v=1709677345 1600w, 1223 //www.k-deer.com/cdn/shop/articles/hug_with_dad_1400x.jpg?v=1709677345 1400w, 1224 //www.k-deer.com/cdn/shop/articles/hug_with_dad_1200x.jpg?v=1709677345 1200w, 1225 //www.k-deer.com/cdn/shop/articles/hug_with_dad_1000x.jpg?v=1709677345 1000w, 1226 //www.k-deer.com/cdn/shop/articles/hug_with_dad_800x.jpg?v=1709677345 800w, 1227 //www.k-deer.com/cdn/shop/articles/hug_with_dad_600x.jpg?v=1709677345 600w, 1228 //www.k-deer.com/cdn/shop/articles/hug_with_dad_400x.jpg?v=1709677345 400w, 1229 //www.k-deer.com/cdn/shop/articles/hug_with_dad_200x.jpg?v=1709677345 200w" 1230 height="2724" 1231 width="2724" 1232 style=";" 1233 class="lazyload transition--fade-in " 1234 /> 1235</div> 1236 1237 1238 1239<noscript> <img src="//www.k-deer.com/cdn/shop/articles/hug_with_dad_2000x.jpg?v=1709677345" alt="Checking in... March 27, 2023" class=""> 1240</noscript></a> <h2><a href="/blogs/news/checking-in-march-27-2023">Checking in... March 27, 2023</a></h2> <p class="blog_meta"> <span>March 27, 2023</span> 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255<span>3 min read</span> <span> <a href="/blogs/news/checking-in-march-27-2023#comments">7 Comments</a></span></p> <a href="/blogs/news/checking-in-march-27-2023" title="Checking in... March 27, 2023" >Read More</a></div> <div class="one-third column article medium-down--one-half small-down--one-whole"> <a href="/blogs/news/success-com-article" title="Success.com Article"> 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267<div class="image-element__wrap" style=" max-width: 752px;"> <img alt="Success.com Article" 1268 1269 data-src="//www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_1600x.jpg?v=1671122857" 1270 data-sizes="auto" 1271 data-aspectratio="752/1280" 1272 data-srcset="//www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_5000x.jpg?v=1671122857 5000w, 1273 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_4500x.jpg?v=1671122857 4500w, 1274 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_4000x.jpg?v=1671122857 4000w, 1275 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_3500x.jpg?v=1671122857 3500w, 1276 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_3000x.jpg?v=1671122857 3000w, 1277 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_2500x.jpg?v=1671122857 2500w, 1278 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_2000x.jpg?v=1671122857 2000w, 1279 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_1800x.jpg?v=1671122857 1800w, 1280 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_1600x.jpg?v=1671122857 1600w, 1281 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_1400x.jpg?v=1671122857 1400w, 1282 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_1200x.jpg?v=1671122857 1200w, 1283 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_1000x.jpg?v=1671122857 1000w, 1284 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_800x.jpg?v=1671122857 800w, 1285 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_600x.jpg?v=1671122857 600w, 1286 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_400x.jpg?v=1671122857 400w, 1287 //www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_200x.jpg?v=1671122857 200w" 1288 height="1280" 1289 width="752" 1290 style=";" 1291 class="lazyload transition--fade-in " 1292 /> 1293</div> 1294 1295 1296 1297<noscript> <img src="//www.k-deer.com/cdn/shop/articles/C8443AFC-4235-4C9B-A17C-D361B5ADDF5B_2000x.jpg?v=1671122857" alt="Success.com Article"
1297class=""> 1298</noscript></a> <h2><a href="/blogs/news/success-com-article">Success.com Article</a></h2> <p class="blog_meta"> <span>December 15, 2022</span> 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313<span>1 min read</span> <span> <a href="/blogs/news/success-com-article#comments">2 Comments</a></span></p> <div class="excerpt"> <meta charset="UTF-8"><span>Read the Success.com Article</span><a href="https://www.success.com/not-all-stories-have-happy-endings-for-this-entrepreneur-it-was-still-worth-it/?fbclid=IwAR000MakErLUo6kx8jQKl8as0snqBwVdgZ4CaFLFiXHPWcGxVDwRWe5f3R8" target="_blank" title="Success.com K-DEER" rel="noopener noreferrer">HERE</a><span> </span></div> <a href="/blogs/news/success-com-article" title="Success.com Article" >Read More</a></div> <div class="one-third column article medium-down--one-half small-down--one-whole"> <a href="/blogs/news/a-final-farewell-for-now" title="A Final Farewell for Now..."> 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325<div class="image-element__wrap" style=" max-width: 4678px;"> <img alt="A Final Farewell for Now..." 1326 1327 data-src="//www.k-deer.com/cdn/shop/articles/DSC_6767_1600x.jpg?v=1659644262" 1328 data-sizes="auto" 1329 data-aspectratio="4678/4000" 1330 data-srcset="//www.k-deer.com/cdn/shop/articles/DSC_6767_5000x.jpg?v=1659644262 5000w, 1331 //www.k-deer.com/cdn/shop/articles/DSC_6767_4500x.jpg?v=1659644262 4500w, 1332 //www.k-deer.com/cdn/shop/articles/DSC_6767_4000x.jpg?v=1659644262 4000w, 1333 //www.k-deer.com/cdn/shop/articles/DSC_6767_3500x.jpg?v=1659644262 3500w, 1334 //www.k-deer.com/cdn/shop/articles/DSC_6767_3000x.jpg?v=1659644262 3000w, 1335 //www.k-deer.com/cdn/shop/articles/DSC_6767_2500x.jpg?v=1659644262 2500w, 1336 //www.k-deer.com/cdn/shop/articles/DSC_6767_2000x.jpg?v=1659644262 2000w, 1337 //www.k-deer.com/cdn/shop/articles/DSC_6767_1800x.jpg?v=1659644262 1800w, 1338 //www.k-deer.com/cdn/shop/articles/DSC_6767_1600x.jpg?v=1659644262 1600w, 1339 //www.k-deer.com/cdn/shop/articles/DSC_6767_1400x.jpg?v=1659644262 1400w, 1340 //www.k-deer.com/cdn/shop/articles/DSC_6767_1200x.jpg?v=1659644262 1200w, 1341 //www.k-deer.com/cdn/shop/articles/DSC_6767_1000x.jpg?v=1659644262 1000w, 1342 //www.k-deer.com/cdn/shop/articles/DSC_6767_800x.jpg?v=1659644262 800w, 1343 //www.k-deer.com/cdn/shop/articles/DSC_6767_600x.jpg?v=1659644262 600w, 1344 //www.k-deer.com/cdn/shop/articles/DSC_6767_400x.jpg?v=1659644262 400w, 1345 //www.k-deer.com/cdn/shop/articles/DSC_6767_200x.jpg?v=1659644262 200w" 1346 height="4000" 1347 width="4678" 1348 style=";" 1349 class="lazyload transition--fade-in " 1350 /> 1351</div> 1352 1353 1354 1355<noscript> <img src="//www.k-deer.com/cdn/shop/articles/DSC_6767_2000x.jpg?v=1659644262" alt="A Final Farewell for Now..." class=""> 1356</noscript></a> <h2><a href="/blogs/news/a-final-farewell-for-now">A Final Farewell for Now...</a></h2> <p class="blog_meta"> <span>August 04, 2022</span> 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371<span>2 min read</span> <span> <a href="/blogs/news/a-final-farewell-for-now#comments">20 Comments</a></span></p> <a href="/blogs/news/a-final-farewell-for-now" title="A Final Farewell for Now..." >Read More</a></div> <br class="clear" /> <div class="one-third column article medium-down--one-half small-down--one-whole"> <a href="/blogs/news/an-announcement-from-kristine-deer" title="From Our Founder, Kristine Deer"> 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383<div class="image-element__wrap" style=" max-width: 640px;"> <img alt="An Important Message from Kristine Deer" 1384 1385 data-src="//www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_1600x.jpg?v=1649779490" 1386 data-sizes="auto" 1387 data-aspectratio="640/640" 1388 data-srcset="//www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_5000x.jpg?v=1649779490 5000w, 1389 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_4500x.jpg?v=1649779490 4500w, 1390 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_4000x.jpg?v=1649779490 4000w, 1391 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_3500x.jpg?v=1649779490 3500w, 1392 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_3000x.jpg?v=1649779490 3000w, 1393 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_2500x.jpg?v=1649779490 2500w, 1394 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_2000x.jpg?v=1649779490 2000w, 1395 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_1800x.jpg?v=1649779490 1800w, 1396 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_1600x.jpg?v=1649779490 1600w, 1397 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_1400x.jpg?v=1649779490 1400w, 1398 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_1200x.jpg?v=1649779490 1200w, 1399 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_1000x.jpg?v=1649779490 1000w, 1400 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_800x.jpg?v=1649779490 800w, 1401 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_600x.jpg?v=1649779490 600w, 1402 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_400x.jpg?v=1649779490 400w, 1403 //www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_200x.jpg?v=1649779490 200w" 1404 height="640" 1405 width="640" 1406 style=";" 1407 class="lazyload transition--fade-in " 1408 /> 1409</div> 1410 1411 1412 1413<noscript> <img src="//www.k-deer.com/cdn/shop/articles/blog-title_dcce94bc-1277-464e-9af6-d7fcfc72933f_2000x.jpg?v=1649779490" alt="An Important Message from Kristine Deer" class=""> 1414</noscript></a> <h2><a href="/blogs/news/an-announcement-from-kristine-deer">From Our Founder, Kristine Deer</a></h2> <p class="blog_meta"> <span>April 12, 2022</span> 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429<span>1 min read</span> <span> <a href="/blogs/news/an-announcement-from-kristine-deer#comments">17 Comments</a></span></p> <a href="/blogs/news/an-announcement-from-kristine-deer" title="From Our Founder, Kristine Deer" >Read More</a></div> <div class="one-third column article medium-down--one-half small-down--one-whole"> <a href="/blogs/news/neda-week" title="An ED Recovery Journey"> 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441<div class="image-element__wrap" style=" max-width: 386px;"> <img alt="Abstract image of a rainbow" 1442 1443 data-src="//www.k-deer.com/cdn/shop/articles/blog_icon2_1600x.jpg?v=1645539137" 1444 data-sizes="auto" 1445 data-aspectratio="386/386" 1446 data-srcset="//www.k-deer.com/cdn/shop/articles/blog_icon2_5000x.jpg?v=1645539137 5000w, 1447 //www.k-deer.com/cdn/shop/articles/blog_icon2_4500x.jpg?v=1645539137 4500w, 1448 //www.k-deer.com/cdn/shop/articles/blog_icon2_4000x.jpg?v=1645539137 4000w, 1449 //www.k-deer.com/cdn/shop/articles/blog_icon2_3500x.jpg?v=1645539137 3500w, 1450 //www.k-deer.com/cdn/shop/articles/blog_icon2_3000x.jpg?v=1645539137 3000w, 1451 //www.k-deer.com/cdn/shop/articles/blog_icon2_2500x.jpg?v=1645539137 2500w, 1452 //www.k-deer.com/cdn/shop/articles/blog_icon2_2000x.jpg?v=1645539137 2000w, 1453 //www.k-deer.com/cdn/shop/articles/blog_icon2_1800x.jpg?v=1645539137 1800w, 1454 //www.k-deer.com/cdn/shop/articles/blog_icon2_1600x.jpg?v=1645539137 1600w, 1455 //www.k-deer.com/cdn/shop/articles/blog_icon2_1400x.jpg?v=1645539137 1400w, 1456 //www.k-deer.com/cdn/shop/articles/blog_icon2_1200x.jpg?v=1645539137 1200w, 1457 //www.k-deer.com/cdn/shop/articles/blog_icon2_1000x.jpg?v=1645539137 1000w, 1458 //www.k-deer.com/cdn/shop/articles/blog_icon2_800x.jpg?v=1645539137 800w, 1459 //www.k-deer.com/cdn/shop/articles/blog_icon2_600x.jpg?v=1645539137 600w, 1460 //www.k-deer.com/cdn/shop/articles/blog_icon2_400x.jpg?v=1645539137 400w, 1461 //www.k-deer.com/cdn/shop/articles/blog_icon2_200x.jpg?v=1645539137 200w" 1462 height="386" 1463 width="386" 1464 style=";" 1465 class="lazyload transition--fade-in " 1466 /> 1467</div> 1468 1469 1470 1471<noscript> <img src="//www.k-deer.com/cdn/shop/articles/blog_icon2_2000x.jpg?v=1645539137" alt="Abstract image of a rainbow" class=""> 1472</noscript></a> <h2><a href="/blogs/news/neda-week">An ED Recovery Journey</a></h2> <p class="blog_meta"> <span>February 22, 2022</span> 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487<span>3 min read</span> <span> <a href="/blogs/news/neda-week#comments">1 Comment</a></span></p> <a href="/blogs/news/neda-week" title="An ED Recovery Journey" >Read More</a></div> <div class="one-third column article medium-down--one-half small-down--one-whole"> <a href="/blogs/news/mental-health-check-in" title="Winter Mental Health Check-In with Kristine"> 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499<div class="image-element__wrap" style=" max-width: 640px;"> <img alt="Kristine Deer" 1500 1501 data-src="//www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_1600x.jpg?v=1645137924" 1502 data-sizes="auto" 1503 data-aspectratio="640/640" 1504 data-srcset="//www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_5000x.jpg?v=1645137924 5000w, 1505 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_4500x.jpg?v=1645137924 4500w, 1506 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_4000x.jpg?v=1645137924 4000w, 1507 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_3500x.jpg?v=1645137924 3500w, 1508 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_3000x.jpg?v=1645137924 3000w, 1509 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_2500x.jpg?v=1645137924 2500w, 1510 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_2000x.jpg?v=1645137924 2000w, 1511 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_1800x.jpg?v=1645137924 1800w, 1512 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_1600x.jpg?v=1645137924 1600w, 1513 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_1400x.jpg?v=1645137924 1400w, 1514 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_1200x.jpg?v=1645137924 1200w, 1515 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_1000x.jpg?v=1645137924 1000w, 1516 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_800x.jpg?v=1645137924 800w, 1517 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_600x.jpg?v=1645137924 600w, 1518 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_400x.jpg?v=1645137924 400w, 1519 //www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_200x.jpg?v=1645137924 200w" 1520 height="640" 1521 width="640" 1522 style=";" 1523 class="lazyload transition--fade-in " 1524 /> 1525</div> 1526 1527 1528 1529<noscript> <img src="//www.k-deer.com/cdn/shop/articles/Image_from_iOS_14_2000x.jpg?v=1645137924" alt="Kristine Deer" class=""> 1530</noscript></a> <h2><a href="/blogs/news/mental-health-check-in">Winter Mental Health Check-In with Kristine</a></h2> <p class="blog_meta"> <span>February 18, 2022</span> 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545<span>4 min read</span> <span> <a href="/blogs/news/mental-health-check-in#comments">2 Comments</a></span></p> <a href="/blogs/news/mental-health-check-in" title="Winter Mental Health Check-In with Kristine" >Read More</a></div> <br class="clear" /></div> <div class="sidebar four columns medium-down--one-whole"> <div class="sidebar_content toggle-all--false"> <div class="sidebar-block" > <form class="blog_search" action="/search"> <input type="hidden" name="type" value="article" /> <span class="icon-search search-submit"></span> <input type="text" name="q" class="search_box" placeholder="Search THE K-DEER BLOG..." autocapitalize="off" autocomplete="off" autocorrect="off" value="" /></form></div> <div class="sidebar-block" > <h4 class="toggle">Recent Articles<span class="right icon-down-arrow"></span></h4> <ul class="toggle_list"> <li> <a href="/blogs/news/checking-in-march-27-2023" title="Checking in... March 27, 2023">Checking in... March 27, 2023</a></li> <li> <a href="/blogs/news/success-com-article" title="Success.com Article">Success.com Article</a></li> <li> <a href="/blogs/news/a-final-farewell-for-now" title="A Final Farewell for Now...">A Final Farewell for Now...</a></li> <li> <a href="/blogs/news/an-announcement-from-kristine-deer" title="From Our Founder, Kristine Deer">From Our Founder, Kristine Deer</a></li> <li> <a href="/blogs/news/neda-week" title="An ED Recovery Journey">An ED Recovery Journey</a></li></ul></div> <div class="sidebar-block" > <h4 class="newsletter-block__title">Join Our Tribe</h4> <div class="newsletter-block__text"><p>Sign up to get the latest on sales, new releases and more …</p></div> <div class="newsletter"> <div class="popup-signup-show--false clearfix"> <span class="message"></span> <form action="https://k-deer.us9.list-manage.com/subscribe/post?u=6dd68b6017152e8d8a5f3cc64&id=39cf9e143e" method="post" name="mc-embedded-subscribe-form" id="contact_form" target="_blank"> <div class="input-row"></div> <div class="input-row"> <input type="email" value="" name="EMAIL" class="contact_email" placeholder="Enter your email address..."> <input type="submit" value="Sign Up" class="action_button sign_up" name="subscribe" /></div></form></div> 1546</div></div></div></div> <br class="clear" /> <div class="sixteen columns"> <div class="sixteen columns"> <div class="section clearfix"> <div class="paginate"> <span class="page current">1</span> <span class="page"><a href="/blogs/news?page=2" title="">2</a></span> <span class="page"><a href="/blogs/news?page=3" title="">3</a></span> <span class="deco">…</span> <span class="page"><a href="/blogs/news?page=16" title="">16</a></span> <span class="next"><a href="/blogs/news?page=2" title="">Next <span class="icon-right-arrow"></span></a></span></div></div></div></div> 1547 1548 1549</div> 1550 1551 1552</div><!--LayoutHub-Workspace-End--></div> <div id="shopify-section-footer" class="shopify-section footer-section"> 1553 1554<footer class="footer"> <div class="container footer-menu-wrap"> <div class="sixteen columns row footer_credits"> <p class="credits"> 1555 © 2026 <a href="/" title="">K-DEER</a>. <a href="https:\\www.elevencommerce.com" title="Eleven Commerce">Site Credit</a></p></div><!--end footer_credits--></div></div> 1556</footer> 1557 1558<style> 1559 1560 @font-face { 1561 font-family: "Work Sans"; 1562 font-weight: 600; 1563 font-style: normal; 1564 src: url("//www.k-deer.com/cdn/fonts/work_sans/worksans_n6.75811c3bd5161ea6e3ceb2d48ca889388f9bd5fe.woff2") format("woff2"), 1565 url("//www.k-deer.com/cdn/fonts/work_sans/worksans_n6.defcf26f28f3fa3df4555714d3f2e0f1217d7772.woff") format("woff"); 1566} 1567 1568 #shopify-section-footer .footer_menu h6, .footer_menu p a, .footer_content.footer-text h6, .toggle_content p{ 1569 1570 font-family: Larsseit-Bold; 1571 font-weight: 400; 1572 font-style: normal; 1573
1574 } 1575</style> 1576 1577</div> <div class="js-quick-shop"> <div class="quick-shop js-product_section"> <div class="quick-shop__container container section js-quick-shop-container"> <div class="quick-shop__gallery 1578 eight 1579 columns 1580 gallery-wrap 1581 js-gallery-wrap 1582 1583 bottom-thumbnails 1584 1585 gallery-arrows--true 1586 1587 "> <div class="gallery 1588 product_gallery 1589 js-gallery-modal 1590 product--gallery 1591 transparentBackground--true 1592 slideshow_animation--slide 1593 1594 " 1595 data-zoom="false"></div> <div class="gallery product_gallery_nav js-gallery-carousel product_gallery_nav--bottom-thumbnails"></div></div> <div class="quick-shop__text-wrap six columns text-modal-wrap"> <!--Product banners inserted with JS - populateProductInfo() --> <div class="sale_banner_product js-sale-banner"></div> <div class="new_banner_product js-new-banner"></div> <div class="new_banner_product js-pre-order-banner"></div> <h3 class="quick-shop__title js-product-title"></h3> <div class="feature_divider"></div> <p class="modal_price"> <span class="sold_out js-sold-out"></span> <span class="current_price js-current-price"><span class="money"></span></span> <span class="was_price js-was-price"><span class="money"></span></span> <span class="sale savings js-savings"></span></p> <span class="js-notify-form"></span> <p> <span class="js-regular-description"></span> <span class="js-product-details"></span></p> <span class="js-product-form"></span></div></div></div> 1596</div>
1596<script src="//www.k-deer.com/cdn/shop/t/179/assets/jquery.min.js?v=9503732020592794151656341947"></script>
1596
1596<script src="//www.k-deer.com/cdn/shop/t/179/assets/vendors.js?v=143560892723107968231656341969"></script>
1596
1596<script src="//www.k-deer.com/cdn/shop/t/179/assets/sections.js?v=130920438009301027651656342972"></script>
1596
1596<script src="//www.k-deer.com/cdn/shop/t/179/assets/utilities.js?v=128684396429140286481656342971"></script>
1596
1596<script src="//www.k-deer.com/cdn/shop/t/179/assets/app.js?v=64557289996256524571656342971"></script>
1596
1596<script src="//www.k-deer.com/cdn/shop/t/179/assets/instantclick.min.js?v=20092422000980684151656341945" data-no-instant></script>
1596
1596<script data-no-instant> 1597 1598 function inIframe() { 1599 try { 1600 return window.self !== window.top; 1601 } catch (e) { 1602 return true; 1603 } 1604 } 1605 1606 if (!inIframe()){ 1607 InstantClick.init(); 1608 InstantClick.on('change', function() { 1609 1610 $('head script[src*="shopify"]').each(function() { 1611 var script = document.createElement('script'); 1612 script.type = 'text/javascript'; 1613 script.src = $(this).attr('src'); 1614 1615 $('body').append( script ); 1616 }); 1617 1618 $('body').removeClass('fancybox-active'); 1619 $.fancybox.destroy(); 1620 1621 }); 1622 }</script>
1622
1622<script></script>
1622 <!----- YOU MUST INCLUDE THIS STATMENT WHEN USING A NEW THEME OR CRITEO TAGS WILL BREAK ----------> <!-- Begin Criteo OneTag -->
1623<script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script>
vendor: 1 bytes, line 1623
1623
1624<script type="text/javascript"> 1625 var site_type = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d"; 1626 window.criteo_q = window.criteo_q || []; 1627 window.criteo_q.push( 1628 { event: "setAccount", account: 58412 }, 1629 { event: "setSiteType", type: site_type}, 1630 { event: "setEmail", email: "d41d8cd98f00b204e9800998ecf8427e"}); 1631</script>
1631 1632
1633<script> 1634 1635 $(document).ajaxSuccess(function(event, xhr, settings) { 1636 1637 var basketdata = []; 1638 1639 if (settings.url == "/cart/add.js" || settings.url == "/cart/update.js") { 1640 1641 $.getJSON('/cart.js', function(data) { 1642 1643 basketdata = data.items.map(function(item) { 1644 1645 return { 1646 1647 id: item.product_id, 1648 1649 price: item.price / 100, 1650 1651 quantity: item.quantity 1652 1653 } 1654 1655 }); 1656 1657 window.criteo_q.push({ 1658 1659 event: "viewBasket", 1660 1661 product: basketdata 1662 1663 }); 1664 1665 }); 1666 1667 } 1668 1669 }); 1670 1671</script>
1671 1672<!-- End Criteo OneTag --> 1673 1674<!----- YOU MUST INCLUDE THIS STATMENT WHEN USING A NEW THEME OR CRITEO TAGS WILL BREAK ----------> 1675 1676<!-- **BEGIN** Hextom QAB Integration // Main Include - DO NOT MODIFY --> <!-- **BEGIN** Hextom QAB Integration // Main - DO NOT MODIFY -->
1677<script type="application/javascript"> 1678 window.hextom_qab_meta = { 1679 p1: [ 1680 1681 ], 1682 p2: { 1683 1684 } 1685 }; 1686</script>
1686 1687<!-- **END** Hextom QAB Integration // Main - DO NOT MODIFY --> <!-- **END** Hextom QAB Integration // Main Include - DO NOT MODIFY --> 1688<!--Gem_Page_Footer_Script--> 1689<!-- "snippets/gem-app-footer-scripts.liquid" was not rendered, the associated app was uninstalled --> 1690<!--End_Gem_Page_Footer_Script--><!--Content in content_for_footer --> 1691 1692 1693<!--LH--> 1694 1695 1696 1697 1698 1699<style>.ocu-hidden.ocu-hidden.ocu-hidden,.bold_hidden.bold_hidden.bold_hidden{display:none !important}</style>
1700<script> 1701!function(){ 1702if (window.performance) { 1703 const navEntries = window.performance.getEntriesByType && window.performance.getEntriesByType('navigation'); 1704 if (navEntries && navEntries.length > 0 && navEntries[0].type === 'back_forward') { 1705 location.reload(); 1706 } else if (window.performance.navigation && window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD) { 1707 location.reload(); 1708 } 1709} 1710 1711!function(){var e=[];window.Promise||e.push("Promise"),window.URLSearchParams||e.push("URL"),Element.prototype.closest||e.push("Element.prototype.closest"),Array.from||e.push("Array.from"),Object.assign||e.push("Object.assign"), Object.entries||e.push("Object.entries"),Object.values||e.push("Object.values"),Array.prototype.includes||e.push("Array.prototype.includes");try{new Event("event")}catch(t){e.push("Event")}try{Symbol}catch(t){e.push("Symbol")}if(e.length){var t=document.createElement("script");t.src="https://polyfill-fastly.net/v3/polyfill.min.js?features="+e.join(",")+"&flags=gated",t.async=!0,document.head.appendChild(t)}Object.setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e}}(); 1712 1713var originalURLSearchParams=URLSearchParams;var ajax,utils={store:Object.freeze(new Store),cookie:{options:{expires:86400,path:"/",encodeValue:!1},get:function(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0},set:function(e,t,n){var i=(n=n||this.options).expires;if("number"==typeof i&&i){var r=new Date;r.setTime(r.getTime()+1e3*i),i=n.expires=r}i&&i.toUTCString&&(n.expires=i.toUTCString());var o=e+"="+(t=encodeURIComponent(t));for(var s in n){o+="; "+s;var a=n[s];!0!==a&&(o+="="+a)}document.cookie=o},remove:function(e){this.set(e,null,{expires:-1})}},queryParams:function(e){var t={};return e.replace("?","").split("&").forEach(function(e){var n=e.split("=")[0],i=e.split("=")[1];t[n]=decodeURIComponent(i)}),t},shareableDiscount:function(e){e=e||{};var t=utils.queryParams(location.search)[e.key||"discount"];t&&(utils.cookie.set(e.name||"ocu-share-discount",t,utils.cookie.options),!e.clear||history.pushState(null,null,location.href.replace(/\?.+/,"")))},serializeForm:function(e){return new originalURLSearchParams(new FormData(e).fd || new FormData(e)).toString()},serializeFormEdge:function(e){var t,n=[];if("object"==typeof e&&"FORM"==e.nodeName){var r=e.elements.length;for(i=0;i<r;i++)if((t=e.elements[i]).name&&!t.disabled&&"file"!=t.type&&"reset"!=t.type&&"submit"!=t.type&&"button"!=t.type)if("select-multiple"==t.type)for(j=e.elements[i].options.length-1;j>=0;j--)t.options[j].selected&&(n[n.length]=encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[j].value));else("checkbox"!=t.type&&"radio"!=t.type||t.checked)&&(n[n.length]=encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}return n.join("&").replace(/%20/g,"+")},serialize:function(e,t,n,i){if(this.helpers.isFormData(t)&&(i=n,n=t,t=null),(t=t||{}).indices=t.indices||!1,n=n||new originalURLSearchParams,this.helpers.isUndefined(e))return n;if(this.helpers.isNull(e))n.append(i,"");else if(this.helpers.isArray(e))if(e.length)e.forEach(function(e,r){var o="object"==typeof e,s=i+"["+(t.indices&&o?r:"")+"]";this.serialize(e,t,n,s)}.bind(this));else{var r=i+"[]";n.append(r,"")}else this.helpers.isDate(e)?n.append(i,e.toISOString()):!this.helpers.isObject(e)||this.helpers.isFile(e)||this.helpers.isBlob(e)?n.append(i,e):Object.keys(e).forEach(function(r){var o=e[r];if(this.helpers.isArray(o))for(;2<r.length&&r.lastIndexOf("[]")===r.length-2;)r=r.substring(0,r.length-2);var s=i?i+"["+r+"]":r;this.serialize(o,t,n,s)}.bind(this));return n},inArray:function(e,t,n){return e.some(function(e){return e[t]===n})},filterObject:function(e,t){return t.reduce(function(t,n){return t[n]=e[n],t},{})},helpers:{isUndefined:function(e){return void 0===e},isNull:function(e){return null===e},isObject:function(e){return e===Object(e)},isArray:function(e){return Array.isArray(e)},isDate:function(e){return e instanceof Date},isBlob:function(e){return e&&"number"==typeof e.size&&"string"==typeof e.type&&"function"==typeof e.slice},isFile:function(e){return this.isBlob(e)&&("object"==typeof e.lastModifiedDate||"number"==typeof e.lastModified)&&"string"==typeof e.name},isFormData:function(e){return e instanceof FormData}}}; 1714 1715function PrecheckoutIntegrations(cartItems) { 1716 this.cartItems = cartItems; 1717} 1718 1719PrecheckoutIntegrations.prototype = { 1720 get advancedProductOptions() { 1721 const cartItems = this.cartItems; 1722 1723 return { 1724 get present() { 1725 return !!window.mwProductOptions; 1726 }, 1727 get relations() { 1728 return cartItems.reduce(function(acc, item) { 1729 if (item.properties && item.properties._mw_option_relation) { 1730 acc.push(+item.properties._mw_option_relation.split('_')[0]); 1731 } 1732 return acc; 1733 }, []); 1734 } 1735 }; 1736 }, 1737 1738 get zapiet() { 1739 return { 1740 get present() { 1741 return !!(window.Zapiet && document.querySelector('#storePickupApp')); 1742 }, 1743 get params() { 1744 const params = (Zapiet.Cart && Zapiet.Cart.getUrlParams()) || {}; 1745 1746 return Object.entries(params).reduce(function(acc, keyValue) { 1747 if (/^\s*$/.test(keyValue[1])) return acc; 1748 const param = {}; 1749 param[keyValue[0]] = keyValue[1]; 1750 return (acc.push(param), acc); 1751 }, []); 1752 }, 1753 merge: function(params) { 1754 return (params || []).concat(this.params); 1755 }, 1756 }; 1757 }, 1758 1759 get simpleInStorePickup() { 1760 return { 1761 get present() { 1762 const checkbox = document.querySelector('#in-store-pick-up'); 1763 return checkbox && checkbox.checked; 1764 }, 1765 get params() { 1766 const form = document.querySelector('form[action^="/cart"]'); 1767 if (!form) return []; 1768 const action = form.action.split(/\?|&/); 1769 const data = action.slice(7).slice(0, 3); 1770 const address = action.slice(-6); 1771 const params = data.concat(address); 1772 1773 return params.reduce(function(acc, item) {
1774 const keyValue = item.split('='); 1775 const param = {}; 1776 param[keyValue[0]] = decodeURIComponent(keyValue[1]); 1777 return (acc.push(param), acc); 1778 }, []); 1779 }, 1780 merge: function(params) { 1781 return (params || []).concat(this.params); 1782 } 1783 }; 1784 }, 1785 1786 get weglot() { 1787 return { 1788 get present() { 1789 return !!window.Weglot; 1790 }, 1791 get params() { 1792 const param = { locale: window.Weglot.getCurrentLang()} 1793 1794 return [param]; 1795 }, 1796 merge: function(params) { 1797 return (params || []).concat(this.params); 1798 } 1799 } 1800 }, 1801 1802 get bt() { 1803 return { 1804 get present() { 1805 return !!(window.BT && window.$); 1806 }, 1807 get addToCartBtn() { 1808 return document.querySelector('button[name="add"]'); 1809 }, 1810 startLoadingBtn: function() { 1811 BT.startLoadingBtn($(this.addToCartBtn)); 1812 }, 1813 endLoadingBtn: function() { 1814 BT.endLoadingBtn($(this.addToCartBtn)); 1815 } 1816 } 1817 }, 1818 1819 get exemptify() { 1820 return { 1821 get present() { 1822 const checkoutExemptifyBtn = document.querySelector('[name="checkout-exemptify"]'); 1823 const checkoutButtons = document.querySelectorAll('[data-ocu-checkout]'); 1824 return !!checkoutExemptifyBtn && checkoutButtons.length > 1; 1825 } 1826 }; 1827 }, 1828 1829 get tidio() { 1830 return { 1831 stateStorageKey: null, 1832 selector: { 1833 main: 'script[src*="code.tidio.co"]', 1834 fallback: 'script[src*="code.tidio"],script[src*="code"][src*="tidio"],script[src*="uploads/redirect"][src*="tidio"]' 1835 }, 1836 1837 get present() { 1838 return !!window.tidioChatApi; 1839 }, 1840 get storageKey() { 1841 return this.stateStorageKey || (this.stateStorageKey = 'tidio_state_' + (this.publickey || 'preview')); 1842 }, 1843 get publickey() { 1844 let scriptTag = document.querySelector(this.selector.main); 1845 if (!scriptTag) scriptTag = document.querySelector(this.selector.fallback); 1846 1847 const regex = /([a-z0-9]+)(\.js|$)/g; 1848 const matches = regex.exec(scriptTag.src); 1849 1850 if (matches && matches[1].length === 32) return matches[1]; 1851 }, 1852 saveKeyToStorage: function(key, value) { 1853 const serializedValue = JSON.stringify(value); 1854 localStorage.setItem(this.storageKey + '_' + key, serializedValue); 1855 1856 }, 1857 trackEvent: function(event, successCallback) { 1858 window.tidioChatApi.track('shopify.' + event, {}, successCallback || function() {}); 1859 }, 1860 track: function() { 1861 try { 1862 this.saveKeyToStorage('goToCheckout', true); 1863 this.trackEvent('go_to_checkout'); 1864 } catch (e) { 1865 console.log('tidio integration error', e.message); 1866 } 1867 } 1868 }; 1869 }, 1870 1871 get buttonLoading() { 1872 return { 1873 idTheme: null, 1874 typeButton: null, 1875 typeElement: null, 1876 context: null, 1877 init(target) { 1878 this.idTheme = this.supportTheme; 1879 1880 const button = target.querySelector('[name="add"], [name="checkout"]') || target; 1881 this.typeButton = button.getAttribute('name'); 1882 }, 1883 get present() { 1884 return !!(window.hasOwnProperty('Shopify') && window.Shopify !== undefined && Shopify.theme.id === this.idTheme); 1885 }, 1886 get buttonSelector() { 1887 return { 1888 checkout: 'button[name="checkout"]', 1889 add: 'button[name="add"]', 1890 }[this.typeButton]; 1891 }, 1892 get supportTheme() {
1893 const arrayThemesWithClasses = [120471879906]; 1894 const arrayThemesWithElements = [120430788673]; 1895 1896 if (arrayThemesWithClasses.indexOf(Shopify.theme.id) !== -1){ 1897 this.typeElement = 'class'; 1898 const index = arrayThemesWithClasses.indexOf(Shopify.theme.id); 1899 return arrayThemesWithClasses[index]; 1900 } 1901 1902 if (arrayThemesWithElements.indexOf(Shopify.theme.id) !== -1){ 1903 this.typeElement = 'element'; 1904 const index = arrayThemesWithElements.indexOf(Shopify.theme.id); 1905 return arrayThemesWithElements[index]; 1906 } 1907 }, 1908 get buttonElements() { 1909 return document.querySelectorAll(this.buttonSelector); 1910 }, 1911 get checkCondition() { 1912 return this.present && this.buttonElements.length > 0; 1913 }, 1914 get loaderSelector() { 1915 return { 1916 120471879906: 'btn--loading', 1917 }[this.idTheme]; 1918 }, 1919 get loaderElement() { 1920 return { 1921 120430788673: '<i class="fa fa-spinner fa-spin"></i>', 1922 }[this.idTheme]; 1923 }, 1924 startingLoadingAction() { 1925 const condition = { 1926 class: this.addingClasses, 1927 element: this.insertElements, 1928 }[this.typeElement].call(this); 1929 }, 1930 endingLoadingAction() { 1931 const condition = { 1932 class: this.deletingClasses, 1933 element: this.deleteElements, 1934 }[this.typeElement].call(this); 1935 }, 1936 addingClasses() { 1937 this.buttonElements.forEach((element) => { 1938 element.setAttribute('disabled', 'disabled'); 1939 element.classList.add(this.loaderSelector); 1940 }); 1941 }, 1942 deletingClasses() { 1943 this.buttonElements.forEach((element) => { 1944 element.classList.remove(this.loaderSelector); 1945 element.removeAttribute('disabled'); 1946 }); 1947 }, 1948 insertElements() { 1949 this.buttonElements.forEach((element) => { 1950 element.insertAdjacentHTML('beforeend', this.loaderElement); 1951 }); 1952 }, 1953 deleteElements() { 1954 this.buttonElements.forEach((element) => { 1955 element.removeChild(element.lastChild); 1956 }); 1957 }, 1958 startLoadingButton() { 1959 if (this.checkCondition) this.startingLoadingAction(); 1960 }, 1961 endLoadingButton() { 1962 if (this.checkCondition) this.endingLoadingAction(); 1963 }, 1964 } 1965 }, 1966 1967 get salesRocket() { 1968 return { 1969 get present() { 1970 return !!window.SalesRocket; 1971 }, 1972 setup: function() { 1973 if (!this.present || utils.store.get('salesRocketIntegrationApplied')) return; 1974 try { 1975 document 1976 .querySelector('.ws-cs-checkout-btn') 1977 .setAttribute('name', 'checkout'); 1978 utils.store.set('salesRocketIntegrationApplied', true); 1979 } catch (e) { 1980 console.error('salesRocketIntegrationError', e) 1981 utils.store.set('salesRocketIntegrationApplied', false); 1982 } 1983 } 1984 } 1985 }, 1986 1987 get bundlerBuilder() { 1988 return { 1989 selector: '/apps/bundles', 1990 get bundleBuilderInput () { 1991 return document.querySelector('#bb_proxy_prefix'); 1992 }, 1993 get present() { 1994 return this.bundleBuilderInput && 1995 this.bundleBuilderInput.value === this.selector && 1996 this.bundlerForm && 1997 !!this.bundlerForm.querySelector(`[formaction="${this.selector}/cart"]`); 1998 }, 1999 get bundlerForm() { 2000 return this.bundleBuilderInput.closest(`form[action*="${this.selector}"]`); 2001 }, 2002 submit() { 2003 this.bundlerForm.submit(); 2004 } 2005 } 2006 }, 2007 2008 get minMaxify() { 2009 return { 2010 get present() { 2011 return !!window.minMaxify; 2012 }, 2013 get isFunction() { 2014 return minMaxify.checkLimits instanceof Function; 2015 }, 2016 get invalid() { 2017 return this.present && this.isFunction && !minMaxify.checkLimits(); 2018 } 2019 }; 2020 } 2021}; 2022 2023if (!window.OCUApi) window.OCUApi = {}; 2024const FALSE_REDIRECT = { redirect_url: null }; 2025 2026window.OCUApi = Object.assign(OCUApi, {
2027 showUpsell: function(params) { 2028 const dispatcher = this.context.popupDispatcher; 2029 const context = this.context; 2030 dispatcher.context = this.context; 2031 dispatcher.target = params.form; 2032 2033 return new Promise((resolve, reject) => { 2034 const callback = function(res) { 2035 if (dispatcher._upsellAppInstance()) dispatcher._upsellAppInstance().hide(); 2036 context.integrations.zipifyPages.clear(); 2037 const response = r => ({ skip_cart: lqd.skip_cart, ...r }); 2038 resolve(response(res.detail.response || FALSE_REDIRECT)); 2039 }; 2040 2041 const { blockId, products } = params; 2042 2043 this.context.integrations.zipifyPages.setProducts(products); 2044 this.context.integrations.zipifyPages.setBlockId(blockId); 2045 2046 if (this.context.integrations.zipifyPages.isBlockOutsideProductPage()) { 2047 return this.context.integrations.zipifyPages.handleZPOutsidePage(this.context, callback); 2048 } 2049 2050 if (!dispatcher.isProductAction) { 2051 context.integrations.zipifyPages.clear(); 2052 return resolve(FALSE_REDIRECT); 2053 } 2054 2055 dispatcher.listenCustomEvent(callback); 2056 dispatcher._show(null, true); 2057 }); 2058 }, 2059 2060 initialize: function(params) { 2061 this.context = params.context; 2062 }, 2063 2064 onAccept: function() { 2065 }, 2066 2067 onDecline: function() { 2068 } 2069}); 2070 2071function PopupDispatcher() {} 2072 2073PopupDispatcher.prototype = { 2074 2075 proceed: function(event, target, context) { 2076 this.context = context; 2077 this.target = target; 2078 this.event = event; 2079 this.appropriateResponse = null; 2080 this.actualCart = null; 2081 this.listenCustomEvent(); 2082 this.bt = OCUIncart.integrations().bt; 2083 2084 this.buttonLoading = this._initButtonLoading(); 2085 this.buttonLoading.init(target); 2086 this._startLoading(); 2087 2088 const isProductLocation = this.isProductLocationOption(target); 2089 const isProductOnCart = isProductLocation && lqd.template_name === 'cart'; 2090 OCUIncart._is_product_action = this.isProductAction; 2091 2092 const isEventPermitted = (!event.isTrusted && this.secondAttempt) 2093 || isProductOnCart 2094 || this.context.helpers.isDisabledButton(this.event.target) 2095 || this.context.helpers.termsOfServiceConfirmation(this.event.target); 2096 2097 if (isEventPermitted) return this._clearFlow(); 2098 2099 if (this.isProductLocationOption(target)) return this.productLocation(event, target); 2100 2101 this.context.prevent(event, 'immediate'); 2102 return this.check(event, target); 2103 }, 2104 2105 check: function(event, target) { 2106 const self = this.context; 2107 return self.cart.get() 2108 .then(self.cart.update) 2109 .then(function(res) { 2110 OCUIncart.cart_items = res.data.items || res.data.cart.items; 2111 lqd.cart = res.data.items ? res.data : res.data.cart; 2112 2113 try { 2114 const app = self.helpers.isSubscriptionProductInCart(lqd.cart); 2115 if (app && this.isProductAction) return this.nativeClick(); 2116 if (app) return self.integrations[app].redirect(event, lqd.cart); 2117 } catch (e) { 2118 return this.checkout(); 2119 } 2120 2121 if (!utils.cookie.get('ocu_shown_popup')) { 2122 return this.show(event, target); 2123 } 2124 2125 this.checkout(); 2126 }.bind(this)) 2127 .catch(this.checkout.bind(this)); 2128 }, 2129 2130 show: function(event, target) { 2131 this.context.prevent(event); 2132 2133 if (utils.store.get('amazonPayInitiated')) return null; 2134 const form = target.closest('[action="/cart"], [action="/checkout"]'); 2135 if (form && !this.context.validate(form)) { 2136 clearTimeout(utils.store.get('fallback').id); 2137 utils.store.set('submitted', false); 2138 return form.reportValidity(); 2139 } 2140 2141 if (window.disableBodyScroll) disableBodyScroll();
2141 // fix locked scroll at mobile for themes with libs.min.js 2142 2143 return this._show(event, false); 2144 }, 2145 2146 _show: function (event, apiMode) { 2147 this.apiMode = apiMode; 2148 2149 const self = this.context; 2150 const isRechargeEnabled = lqd.integrate_with_recharge && !lqd.disabled_by_subscription_app; 2151 const precheckoutConfig = { 2152 utils: utils, 2153 Updater: Updater, 2154 is_recharge_enabled: isRechargeEnabled, 2155 is_skip_cart: lqd.skip_cart, 2156 product: lqd.product, 2157 integrations: { 2158 zipifyPages: self.integrations.zipifyPages 2159 } 2160 }; 2161 2162 return this[this.appropriateResponse ? '_emptyResolve' : 'getIncartConfig'](this.appropriateResponse) 2163 .then(function(response) { 2164 window.OCUIncart.preLoad && window.OCUIncart.preLoad.showLoader(); 2165 self.helpers.beforeCreate(); 2166 utils.store.set('isTargetBuyNow', self.helpers.isBuyNow(event)); 2167 2168 this.kind = response.data.kind; 2169 precheckoutConfig.config = response.data; 2170 const isProductPreloaded = lqd.skip_cart || utils.store.get('isTargetBuyNow') || this.apiMode; 2171 2172 if (precheckoutConfig.product && !isProductPreloaded) { 2173 precheckoutConfig.product.quantity = this._quantityOfProduct; 2174 precheckoutConfig.product.selectedPageProduct = this._selectedVariant(precheckoutConfig.product.variants); 2175 } 2176 2177 self.utils.beforePrecheckoutPopup(); 2178 OCUIncart._is_product_action = this.isProductAction; 2179 return this._upsellAppInstance().setData(precheckoutConfig); 2180 }.bind(this)) 2181 .catch(this[apiMode ? '_finalizeEvent' : 'checkout'].bind(this)); 2182 }, 2183 2184 getIncartConfig: function() { 2185 let query = '/pre_purchase/v1/checkout_offers/appropriate?'; 2186 const endpoint = window.OCUIncart && OCUIncart.appEndpoint; 2187 const headers = { 2188 'Content-Type': 'application/json', 2189 'Shop-Domain': lqd.permanent_domain 2190 }; 2191 const self = this.context; 2192 const cart = this.actualCart ? this.actualCart : lqd.cart; 2193 const isSameCart = self.helpers.isSameCart(cart); 2194 const isSameCartToken = self.helpers.isSameCartToken(cart); 2195 2196 if ((!isSameCart && !isSameCartToken) || !isSameCartToken) utils.cookie.remove('ocu_popup_ids') 2197 const isShownOfferIdPresent = utils.cookie.get('ocu_popup_ids'); 2198 2199 if (isShownOfferIdPresent) query += 'split_test_weight=' + isShownOfferIdPresent; 2200 2201 try { 2202 if (!this.apiMode) this._endLoading(); 2203 const payload = this._incartPayload(); 2204 return axios.post(endpoint + query, payload, { headers: headers }); 2205 } catch (e) { 2206 this.nativeClick(); 2207 return this._emptyResolve('skip'); 2208 } 2209 }, 2210 2211 checkout: function(event) { 2212 const ocuEvent = event && event.type === 'ocuNativeClick'; 2213 2214 if (event && !ocuEvent) { 2215 if (event.response) console.error(event.response.data.message); 2216 else console.error(event); 2217 } 2218 2219 const originalBehaviorState = this.isProductAction 2220 && !utils.store.get('isTargetBuyNow') 2221 && (ocuEvent && event.detail.type !== 'Upgrade') 2222 && !lqd.skip_cart; 2223 2224 this._endLoading(); 2225 window.OCUIncart.preLoad && window.OCUIncart.preLoad.hideLoader(); 2226 2227 if (this.bt && this.bt.present) this.bt.endLoadingBtn(); 2228 2229 if (originalBehaviorState) { 2230 this._upsellAppInstance().hide(); 2231 this.nativeClick(); 2232 return; 2233 } 2234 if (event && !(event instanceof Error)) this.context.prevent(event, true); 2235 const url = event && event.detail && event.detail.response; 2236 return this.context.checkout({ 2237 redirect: true, 2238 redirect_url: url && url.redirect_url 2239 }); 2240 }, 2241 2242 isProductLocationOption: function(target) { 2243 return lqd.isPopupTriggerPage 2244 && target.tagName.toLowerCase() === 'form' 2245 && this._isAddAction(target); 2246 }, 2247 2248 productLocation: function(event, target) { 2249 const variantId = this._formVariantId(target); 2250 if (this.popupAccepted) return this.nativeClick(); 2251 // if (!this._variantWasTrigger(variantId) && !this._productWasTrigger()) return this.breakHandling(event, target); // exit handling if product not trigger 2252 2253 this.context.prevent(event, true); 2254 if (this.bt && this.bt.present) this.bt.startLoadingBtn(); 2255 2256 target.disabled = true; 2257 this.verifyToken() 2258 .then(this[this.secondAttempt ? 'getActualCart' : '_emptyResolve'].bind(this)) 2259 .then((response) => this.actualCart = response && response.data) 2260 .then(function() { 2261 this.getIncartConfig({ product_id: lqd.product.id, variant_id: variantId }) 2262 .then(function(response) { 2263 if (response === 'skip') return; 2264 if (lqd.skip_cart || this.context.helpers.isBuyNow(this.event)) return this.addAndCheck(); 2265 this.appropriateResponse = response; 2266 this.check(this.event, this.target, null); 2267 }.bind(this)) 2268 .catch(this.nativeClick.bind(this)); 2269 }.bind(this)) 2270 }, 2271 2272 verifyToken: function() { 2273 // create cart token if no exist, for new session 2274 return !this.cartToken ? this.context.cart.bulkAdd() : this._emptyResolve(); 2275 }, 2276 2277 addAndCheck: function() { 2278 this.context.cart.add(this.target) 2279 .then(function(response) { 2280 this.check(this.event, this.target, response.data); 2281 }.bind(this)) 2282 .catch(this.checkout); 2283 }, 2284 2285 getActualCart: function() { 2286 return this.context.cart.get(); 2287 }, 2288 2289 nativeClick: function() { 2290 this._clearFlow(); 2291 this.secondAttempt = true; 2292 const button = this.target.querySelector('[type="submit"], [name="add"], [name="checkout"], [data-skip-cart]'); 2293 2294 this.context.helpers.removeExtraClassList(button); 2295 button.click(); 2296 if (this.bt && this.bt.present) this.bt.endLoadingBtn(); 2297 }, 2298 2299 getTriggerAction() { 2300 const templateTrigger = this.isAcceptableAction(this.targetAction) ? this.targetAction : 'cart'; 2301 return { 2302 cart: 'cart', 2303 product: 'product' 2304 }[templateTrigger]; 2305 }, 2306 2307 isAcceptableAction: function(type) { 2308 return lqd.isPopupTriggerPage && !!~OCUIncart.popupLocation.indexOf(type); 2309 }, 2310 2311 breakHandling: function(event, target) { 2312 if (!lqd.skip_cart) return this._clearFlow() 2313 this.context.prevent(event); 2314 return this.context.cart.add(target) 2315 .then(this.checkout.bind(this)) 2316 .catch(this.checkout.bind(this)); 2317 }, 2318 2319 listenCustomEvent: function(callback) { 2320 const cb = callback ? callback : this.checkout; 2321 document.addEventListener('ocuNativeClick', cb.bind(this), { once: true }); 2322 }, 2323 2324 removeCustomEvents: function() { 2325 document.removeEventListener('ocuNativeClick', this.checkout, true); 2326 }, 2327 2328 _upsellAppInstance: function() { 2329 return OCUIncart[this.kind + 'Upsells']; 2330 }, 2331 2332 _incartPayload() { 2333 const payload = this.context.helpers.getCartItems(this.actualCart ? this.actualCart.items : lqd.cart.items); 2334 const variant = this._productPageVariant; 2335 const shownPopupId = utils.cookie.get('ocu_shown_id'); 2336 2337 payload.cart_token = this.cartToken; 2338 payload.location = this.getTriggerAction();
2339 payload.currency = this.context.helpers.currencyRate(); 2340 2341 if (shownPopupId) payload.shown_popup_id = shownPopupId; 2342 if (payload.location === 'product') { 2343 2344 if (!variant) throw new Error('Variant not found'); 2345 2346 payload.line_items.push(variant) 2347 } 2348 2349 utils.store.set('productLocation', variant); 2350 2351 return payload; 2352 }, 2353 2354 _isAddAction: function(el) { 2355 return el && ((/cart\/add/.test(el.action)) || el.dataset.hasOwnProperty('zpAddToCartForm')); 2356 }, 2357 2358 _variantWasTrigger: function(id) { 2359 const funnels = OCUIncart.funnels; 2360 if (funnels.triggers.all) return true; 2361 return !!~funnels.triggers.variants.indexOf(id); 2362 }, 2363 2364 _productWasTrigger: function() { 2365 const triggers = OCUIncart.funnels.triggers; 2366 if (triggers.all) return true; 2367 return !!~triggers.products.indexOf(lqd.product.id); 2368 }, 2369 2370 _formVariantIds: function(target) { 2371 let form = this.context.cart.serialize(target); 2372 form = decodeURI(form); 2373 2374 const matches = form.match(/id(\[\])?=(\d+)/g); 2375 if (!matches) return []; 2376 2377 return matches.map(function(item) { 2378 const result = item.match(/(\d+)/); 2379 return result && +result[1]; 2380 }); 2381 }, 2382 2383 _formVariantId: function(target) { 2384 const ids = this._formVariantIds(target); 2385 2386 if (ids.length === 1) return ids[0]; 2387 2388 return ids.find(function(id) { 2389 return !!~OCUIncart.funnels.triggers.variants.indexOf(id); 2390 }); 2391 }, 2392 2393 _emptyResolve: function(response) { 2394 return new Promise(function(resolve) { resolve(response); }); 2395 }, 2396 2397 _finalizeEvent: function(response) { 2398 document.dispatchEvent(new CustomEvent('ocuNativeClick', { detail: { redirect_url: null } })); 2399 }, 2400 2401 _clearFlow() { 2402 window.OCUIncart.preLoad && window.OCUIncart.preLoad.hideLoader(); 2403 this.context.helpers.clearFallback(); 2404 utils.store.set('submitted', false); 2405 return null; 2406 }, 2407 _initButtonLoading: function() { 2408 return OCUIncart.integrations().buttonLoading; 2409 }, 2410 2411 _startLoading: function() { 2412 this.buttonLoading.startLoadingButton(); 2413 }, 2414 2415 _endLoading: function() { 2416 this.buttonLoading.endLoadingButton(); 2417 }, 2418 2419 2420 _selectedVariant: function(variants) { 2421 const variantOfProduct = this._productPageVariant.variant_id; 2422 let price = 0; 2423 let variantId = null;
2424 variants.forEach(function (variant) { 2425 if (variant.id === Number(variantOfProduct)) { 2426 price = variant.price; 2427 variantId = variant.id; 2428 } 2429 }); 2430 2431 return { price, variantId }; 2432 }, 2433 2434 get _productPageVariant() { 2435 if (!this.isProductAction) return {}; 2436 2437 const variant = this.target.querySelector('[name="id"], [name="id[]"]'); 2438 const quantity = this.target.querySelector('[name="quantity"]'); 2439 const currentVariant = lqd.product.variants.find(function(item) { 2440 return item.id === +variant.value && item.available; 2441 }); 2442 const isVariantAvailable = lqd.product.available || currentVariant; 2443 2444 const availableVariantId = isVariantAvailable && !Number.isNaN(+variant.value); 2445 2446 if (!availableVariantId) return null; 2447 2448 const productEntity = currentVariant || lqd.product; 2449 2450 return { 2451 variant_id: +variant.value, 2452 product_id: lqd.product.id, 2453 price: productEntity.price, 2454 quantity: (quantity && +quantity.value) || 1, 2455 is_product_location: true 2456 }; 2457 }, 2458 2459 get cartToken() { 2460 return lqd.cart.token || utils.cookie.get('cart'); 2461 }, 2462 2463 get isProductAction() { 2464 return this.getTriggerAction() === 'product'; 2465 }, 2466 2467 get destination() { 2468 if(utils.store.get('isTargetBuyNow')) return 'checkout'; 2469 return this.isProductAction ? 'cart' : 'checkout'; 2470 }, 2471 2472 get popupAccepted() { 2473 return OCUIncart.settings.popup_frequency === 'accept_or_decline' 2474 && utils.cookie.get('cart') === utils.cookie.get('ocu_popup_token') 2475 && !!utils.cookie.get('ocu_accepted'); 2476 }, 2477 2478 get targetAction() { 2479 if (!this.target) return 'cart'; 2480 const form = this.target && this.target.tagName.toLowerCase() === 'form' ? this.target : this.target.closest('form'); 2481 return this._isAddAction(form) ? 'product' : 'cart'; 2482 }, 2483 2484 get _quantityOfProduct() { 2485 const quantityInput = document.querySelector('[name="quantity"]'); 2486 return quantityInput ? quantityInput.value : "1"; 2487 } 2488} 2489 2490class CartDispatcher { 2491 constructor() { 2492 this.cartToken = (lqd && lqd.cart.token) || utils.cookie.get('cart'); 2493 this.selectors = { 2494 productPrice: null, 2495 totalProductsPrice: null, 2496 cartSubtotal: null, 2497 cartDiscount: null 2498 }; 2499 this.helpers = new Helpers(); 2500 this.cart = new Cart(); 2501 this.renderDiscounts = this.renderDiscounts.bind(this); 2502 this.renderOCUDiscounts = this.renderOCUDiscounts.bind(this); 2503 } 2504 2505 renderDiscounts(token, items, selectors) { 2506 if (selectors) this.fillSelectors(selectors); 2507 if (this.shouldGetDiscounts(items) || !this.areAttributesPresent(items)) return; 2508 2509 this.getDiscounts(token, items) 2510 .then(function(res) { 2511 const lineItems = res.data.discounts.lineItems; 2512 2513 lineItems.map(function(lineItem) { 2514 if (lineItem.price === lineItem.discountedPrice) return; 2515 2516 this.fillDiscountedPrice(lineItem); 2517 this.fillItemTotal(lineItem); 2518 }.bind(this)); 2519 2520 this.fillCartSubtotal(res.data.discounts.subtotal); 2521 this.fillCartDiscount(res.data.discounts.progressiveDiscount) 2522 }.bind(this)) 2523 .catch(function(error) { 2524 console.log(error) 2525 }) 2526 } 2527 2528 getDiscounts(token, items) { 2529 const url = '/pre_purchase/v1/cart_discounts'; 2530 const endpoint = window.OCUIncart && OCUIncart.appEndpoint; 2531 const headers = { 2532 'Content-Type': 'application/json', 2533 'Shop-Domain': lqd.permanent_domain 2534 }; 2535 const payload = this.helpers.getCartItems(items || lqd.cart.items); 2536 payload.cart_token = this.cartToken || token; 2537 payload.currency_rate = (window.Shopify && Shopify.currency && +Shopify.currency.rate) || 1; 2538 2539 if (!payload.cart_token) return Promise.reject(new Error('Cart Token is Missing')); 2540 2541 return axios.post(endpoint + url, payload, { headers: headers }); 2542 } 2543 2544 doesUrlMatch(requestURL) { 2545 const cartUrls = ['add', 'update', 'change', 'clear']; 2546 2547 return cartUrls.some(url => requestURL && requestURL.includes(`/cart/${url}`)); 2548 } 2549
2550 shouldCartRequest(requestURL) { 2551 if (!requestURL) return false; 2552 2553 const isNotICURequest = !/\/cart.(js|json)\?icu/.test(requestURL) // handle case with looping cart requests when In Cart Upsell & Cross Sell and OCU apps enabled 2554 2555 return requestURL.includes('/cart.js') && !requestURL.includes('/cart.js?ocu') && isNotICURequest; 2556 } 2557 2558 shouldRequest(requestURL) { 2559 if (!requestURL) return false; 2560 2561 return this.doesUrlMatch(requestURL) || this.shouldCartRequest(requestURL); 2562 } 2563 2564 shouldGetDiscounts(items) { 2565 const cartItems = this.helpers.getCartItems(items || lqd.cart.items).line_items; 2566 2567 return cartItems.every(function(cartItem) { 2568 if (!cartItem.properties) return; 2569 return cartItem.properties._ocu_offer_id === undefined; 2570 }.bind(this)); 2571 } 2572 2573 areAttributesPresent(items) { 2574 const cartItems = this.helpers.getCartItems(items || lqd.cart.items).line_items; 2575 2576 return cartItems.some(item => { 2577 const wasEl = document.querySelector(`${this.selectors.productPrice || '[data-ocu-price-block'}="${item.key}"]`); 2578 const totalEl = document.querySelector(`${this.selectors.totalProductsPrice || '[data-ocu-total-block'}="${item.key}"]`); 2579 const subtotalEl = document.querySelector(this.selectors.cartSubtotal || '[data-ocu-subtotal]'); 2580 const cartDiscountEl = document.querySelector(this.selectors.cartDiscount || '[data-ocu-cart-discount]'); 2581 2582 return !!wasEl || !!totalEl || !!subtotalEl || !!cartDiscountEl; 2583 }) 2584 } 2585 2586 fillDiscountedPrice(lineItem) { 2587 const wasPriceEls = document.querySelectorAll(`${this.selectors.productPrice || '[data-ocu-price-block'}="${lineItem.key}"]`); 2588 2589 wasPriceEls.forEach(wasPriceEl => { 2590 if (!wasPriceEl) return; 2591 2592 const formattedDiscountedPrice = this.getCurrency(lineItem.discountedPrice, OCUIncart.money_format); 2593 const formattedOriginalPrice = this.getCurrency(lineItem.price, OCUIncart.money_format); 2594 2595 wasPriceEl.innerHTML = `<del style="padding-right:16px">${formattedOriginalPrice}</del><span>${formattedDiscountedPrice}</span>`; 2596 }); 2597 } 2598 2599 fillItemTotal(lineItem) { 2600 const totalEls = document.querySelectorAll(`${this.selectors.totalProductsPrice || '[data-ocu-total-block'}="${lineItem.key}"]`); 2601 2602 totalEls.forEach(totalEl => { 2603 if (!totalEl) return; 2604 2605 totalEl.innerHTML = this.getCurrency(lineItem.discountedPrice * lineItem.quantity, OCUIncart.money_format); 2606 }); 2607 } 2608 2609 fillCartSubtotal(subtotal) { 2610 const subtotalEls = document.querySelectorAll(this.selectors.cartSubtotal || '[data-ocu-subtotal]'); 2611 2612 subtotalEls.forEach(subtotalEl => { 2613 if (!subtotalEl) return; 2614 2615 const withCurrency = subtotalEl.dataset.ocuSubtotal; 2616 2617 subtotalEl.innerHTML = this.getCurrency(subtotal, OCUIncart.money_format, withCurrency); 2618 }); 2619 } 2620 2621 fillCartDiscount(discount) { 2622 if (discount === 0) return; 2623 const cartDiscountEls = document.querySelectorAll(this.selectors.cartDiscount || '[data-ocu-cart-discount]'); 2624 2625 cartDiscountEls.forEach(cartDiscountEl => { 2626 if (!cartDiscountEl) return; 2627 2628 cartDiscountEl.innerHTML = `-${this.getCurrency(discount, OCUIncart.money_format)}`; 2629 }); 2630 } 2631 2632 getCurrency(price, format, withCurrency) { 2633 const currencyCode = (window.Shopify && Shopify.currency && +Shopify.currency.active) || 'USD'; 2634 const isCurrencyMissing = !format.match(currencyCode); 2635 const moneyFormat = isCurrencyMissing && withCurrency ? `${format} ${currencyCode}` : format; 2636 2637 return Shopify.formatMoney && Shopify.formatMoney(price, moneyFormat) || window.OCUApi.currency(price/100, moneyFormat, currencyCode); 2638 } 2639 2640 fillSelectors(selectors) { 2641 this.selectors.productPrice = `[${selectors.productPrice}`; 2642 this.selectors.totalProductsPrice = `[${selectors.totalProductsPrice}`; 2643 this.selectors.cartSubtotal = `[${selectors.cartSubtotal}]`; 2644 this.selectors.cartDiscount = `[${selectors.cartDiscount}]`; 2645 } 2646 2647 renderOCUDiscounts(selectors) { 2648 cart.get('?ocu') 2649 .then((res) => { 2650 this.renderDiscounts(res.data.token, res.data.items, selectors); 2651 }) 2652 } 2653} 2654 2655const cart = new Cart(); 2656const cartDispatcher = new CartDispatcher(); 2657const open = window.XMLHttpRequest.prototype.open; 2658const originSend = window.XMLHttpRequest.prototype.send; 2659 2660const openReplacement = function(method, url) { 2661 this.addEventListener('load', function () { 2662 if (cartDispatcher.shouldRequest(this._url)) { 2663 cart.get('?ocu') 2664 .then(function(res) { 2665 cartDispatcher.renderDiscounts(res.data.token, res.data.items); 2666 }); 2667 } 2668 }); 2669 2670 if (window.simplyInsurance) this._url = url; // integration with Simply Insurance 2671 return open.apply(this, arguments); 2672} 2673 2674const fetchReplacement = function(ns, fetch) { 2675 if (typeof fetch !== 'function') return; 2676 2677 ns.fetch = function() { 2678 const response = fetch.apply(this, arguments); 2679 2680 response.then(function(res) { 2681 if (cartDispatcher.shouldRequest(res.url)) { 2682 cart.get('?ocu') 2683 .then(function(res) { 2684 cartDispatcher.renderDiscounts(res.data.token, res.data.items); 2685 }); 2686 } 2687 }); 2688 2689 return response; 2690 } 2691} 2692 2693fetchReplacement(window, window.fetch); 2694 2695window.XMLHttpRequest.prototype.open = openReplacement; 2696 2697if (!window.OCUApi) window.OCUApi = {}; 2698window.OCUApi.renderOCUDiscounts = cartDispatcher.renderOCUDiscounts; 2699 2700class Currency { 2701 constructor() { 2702 this.currenciesWithoutDec = [ 2703 'BYR', 2704 'XAF', 2705 'XPF', 2706 'CLP', 2707 'KMF', 2708 'JPY', 2709 'PYG', 2710 'RWF', 2711 'KRW', 2712 'VND', 2713 'VUV', 2714 'XOF', 2715 'MGA', 2716 'UGX', 2717 'ISK' 2718 ]; 2719 2720 this.entities = { 2721 ' ': ' ', 2722 '£': '£', 2723 '€': '€', 2724 '$': '$' 2725 }; 2726 2727 this.types = { 2728 amount: [2, ',', '.'], 2729 amount_no_decimals: [2, ',', '.'], 2730 amount_with_comma_separator: [2, '.', ','], 2731 amount_no_decimals_with_comma_separator: [2, '.', ','], 2732 amount_with_space_separator: [2, ' ', ','], 2733 amount_no_decimals_with_space_separator: [2, ' ', ','], 2734 amount_with_apostrophe_separator: [2, '\'', '.'], 2735 get default() { 2736 return this.amount; 2737 } 2738 }; 2739 2740 this.currency = this.currency.bind(this); 2741 } 2742 2743 round(x, precision = 1) { 2744 let m = 10 ** precision; 2745 return Number.isInteger(x) ? (x * m) / m : Math.round(x * m) / m; 2746 } 2747 2748 thousand(x) { 2749 if (isNaN(x)) return x; 2750 if (x === 0) return x; 2751 if (x <999) return (Math.round(x * 100) / 100); 2752 if (x <9999) return this.round((Math.round(x * 10) / 10000), 0) + 'k'; 2753 if (x <1000000) return this.round((Math.round(x * 10) / 10000), 0) + 'k'; 2754 if (x <10000000) return this.round((Math.round(x * 10) / 10000000), 0) + 'm'; 2755 if (x <1000000000) return this.round(Math.round((x * 10 / 10000000)), 0) + 'm'; 2756 if (x >= 1000000000) return this.round(Math.round((x * 10 / 10000000000)), 0) + 'b'; 2757 } 2758 2759 replaceCharEntity(text) { 2760 const replacer = (key) => this.entities[key] !== null && this.entities[key] !== undefined ? this.entities[key] : key; 2761 return text && text.replace(/(&\w+;)/g, replacer) !== null && text.replace(/(&\w+;)/g, replacer) !== undefined ? text.replace(/(&\w+;)/g, replacer) : text; 2762 } 2763 2764 type(key) { 2765 const match = /\{\{\s*(\w+)\s*\}\}/.exec(key) && /\{\{\s*(\w+)\s*\}\}/.exec(key)[1]; 2766 return this.types[match] !== null && this.types[match] !== undefined ? this.types[match] : this.types.default; 2767 } 2768 2769 toFixed(value, precision) { 2770 let power = Math.pow(10, precision); 2771 2772 return (Math.round((value + 1e-8) * power) / power).toFixed(precision); 2773 } 2774 2775 formatNumber(number, opts, args) { 2776 if (!+number && +number !== 0) return '—'; 2777 let suffix; 2778 let k = args.includes('thousand'); 2779 const noCurrency = args.includes('noCurrency'); 2780 let currencyCode = args.find(arg => this.currenciesWithoutDec.includes(arg)) || noCurrency; 2781 const noPrecision = args.includes('noPrecision'); 2782 2783 if (k) { 2784 number = this.thousand(+number); 2785 suffix = /\d+\.?\d*([k-m])/.exec(number) && /\d+\.?\d*([k-m])/.exec(number)[1] || ''; 2786 number = parseFloat(number); 2787 } 2788 2789 opts = { 2790 precision: noPrecision ? 0 : opts[0], 2791 thousand: opts[1],
2792 decimal: opts[2] 2793 }; 2794 2795 let negative = number <0 ? '-' : ''; 2796 let base = parseInt(this.toFixed(Math.abs(number), opts.precision), 10) + ''; 2797 let mod = base.length > 3 ? base.length % 3 : 0; 2798 2799 let formatted = negative + 2800 (mod ? base.substr(0, mod) + opts.thousand : '') + 2801 base.substr(mod).replace(/(\d{3})(?=\d)/g, '$1' + opts.thousand) + 2802 (opts.precision > 0 ? opts.decimal + this.toFixed(Math.abs(number), opts.precision).split('.')[1] : ''); 2803 2804 if (suffix) formatted = formatted.replace(/([,.]00|0)$/, '') + suffix; 2805 2806 return currencyCode && !suffix ? formatted.split(opts.decimal)[0] : formatted; 2807 } 2808 2809 formatNumberForView(amount, format, ...args) { 2810 format = this.replaceCharEntity(format); 2811 2812 const noCurrency = args.includes('noCurrency'); 2813 const withCurrency = /\{\{\s*\w+\s*\}\}/; 2814 const withoutCurrency = /.*\{\{\s*\w+\s*\}\}.*/; 2815 const reg = noCurrency ? withoutCurrency : withCurrency; 2816 2817 return format && format.replace(reg, this.formatNumber(amount, this.type(format), args)); 2818 } 2819 2820 currency(amount, format, ...args) { 2821 return this.formatNumberForView(amount, format, ...args); 2822 } 2823} 2824 2825if (!window.OCUApi) window.OCUApi = {}; 2826window.OCUApi.currency = new Currency().currency; 2827 2828window.OCUIncart = { 2829 cart_items: [], 2830 subscription_tags: '', 2831 money_format: '$ {{amount}}', 2832 option_selection: '//www.k-deer.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js', 2833 integrations: function(cartItems) { 2834 return new PrecheckoutIntegrations(cartItems); 2835 }, 2836 2837 metafields: { 2838 main: 2839 { 2840 2841 general: {"settings":{"app_endpoint":"https://ocu.zipify.com","proxy_url":"/apps/oneclickupsell","sdp":"https://[email protected]/57","popup_locations":{"product":false,"cart":true},"popup_settings":{"popup_frequency":"accept_or_decline"}},"integrations":{"skip_cart":"false"},"triggers":{"pre_checkout":{"metafields":{"products":"pre_checkout_product_ids","variants":"pre_checkout_variant_ids","excluded":{"products":"pre_excluded_product_ids"}},"all_products":false}},"incarts":{"153190":{"priority":3,"offer_id":534115,"shopify_product_id":6852265934918,"hide_if_in_cart":true},"153193":{"priority":4,"offer_id":534128,"shopify_product_id":6850438398022,"hide_if_in_cart":true}}}, 2842 2843 pre_checkout_product_ids: [3983736373318,6675516817478,4774593167430,1932544704582,2705091971,1995428560966,3985633542214,10488604355,3983737028678,4427363909702,5715633283,5715598787,2016989249606,5715811715,6613935095878,2058850435142,3887078723,4601752027206,2058850140230,3929830883398,9057686403,2058858430534,4791267721286,4819902070854,1376133578822,8799901251,9057686147,10553295875,4468572867,5715693187,6690422390854,4468750147,6598674382918,10095604099,2058858397766,6630011666502,4774595461190,4846893006918,1995428069446,6715207057478,422834711,461920931,4419260809286,1343061852230,1995431411782,1750804496454,2016989151302,10095606211,6575668428870,4568062033990,4609896513606,5715673667,5715722051,2079250251846,74571612163,4539821916230,422834615,3983735357510,4468683843,4822297870406,5715763651,3971046735942,4794240925766,1037164611,1315127099462,4327625687110,6762744283206,10632745603,4468571203,4744201666630,11014328963,4530701566022,4419258581062,10097095171,6680349376582,10095601283,4327615955014,5715795395,6793824534598,5715795779,8772496387,4844316852294,4384959889478,10095603459,1772384256070,2016989446214,6732460163,4747730059334,4413654007878,4418926215238,3983734865990,6575656632390,8800067203,2058857513030,5715600963,461920647,4744194949190,1426677989446,5715599107,6619193671750,74571579395,74571546627,4502735747,7836200899,1772383305798,10488604291,4419256582214,1995428364358,1315126870086,4468683523,3735617603,462856451,10665800131,74571415555,2705091907,3983734243398,4325145083974,6545163550790,6793896132678,4339715473478,4567349002310,40017100803,10488604547,10875551875,4103205187,4469085315,4603248181318,4296764915782,1236117187,4413302767686,3983735586886,4347567964230,461921163,2016989216838,4327628144710,6793870868550,3956116226118,4568171610182,4822291021894,2079222464582,6758495715398,6628462231622,2704958851,4375438458950,10095607427,77549469699,10990077955,2016989184070,4468682499,2705056963,4344399233094,4265537830982,5715811395,5715632451,5716036675,3947302387782,4482205286470,3946182541382,1315126902854,3983737159750,4285712859206,4419258024006,6685219848262,9057685891,6725552144454,6426143619,1426677399622,6675546374214,10776234371,4854827581510,2016989380678,4339734478918,11014329155,4689419829318,4413652795462,6758503055430,1426678087750,9056351043,4293774704710,1236115331,9057685123,2704957955,3985511940166,2058849321030,1995432001606,5715812867,6597195333702,5715794819,2029786562630,3985550475334,1995428495430,2072103878726,4469086211,5715633795,5
2843715721603,2058847617094,6605151747,6227361411,4689428152390,4325263147078,4325267865670,6719870009414,4846923546694,7846328259,422834623,4325267112006,1037141315,2058858561606,1315127164998,6630017204294,4530725126214,10095602051,2058847354950,2058857152582,4701601890374,3983736143942,4689432936518,10497376643,6675584385094,4819904757830,4325148721222,6330545539,6758459408454,2704958979,3983736700998,8842379459,4854757392454,1995428266054,6758509871174,8772447875,7836201283,6675580682310,2058850631750,9057686531,6754023505990,3947302420550,1343061655622,10095604739,10095603139,6597193269318,1995431673926,1037157251,6598624346182,1724277522502,6713944703046,1750797910086,6613933621318,1380424286278,1995428823110,6628467998790,3985766973510,2058853089350,10497375811,463764071,2058847813702,6758462849094,4468586872902,7846011715,4384393068614,9057685699,6675549225030,4384976994374,10626594819,8772474755,4419237740614,4419215654982,1995429118022,4747580670022,4419214704710,3984800809030,6793859792966,4340667318342,10095604995,10573206979,10095606339,10573206723,6735133409350,4468454467,2705123843,6876950275,11014329539,1995428659270,4854844358726,4744211103814,5715674883,6793917857862,6619155693638,4603242119238,10553295555,10497376387,4846910505030,1426678054982,4265591898182,6572651544646,2058857381958,9057685443,3983735029830,4327610875974,1301687861318,9057686275,8787184835,4419262316614,1995430821958,3983735849030,6732484867,1995428134982,4413652107334,3984774987846,422834839,1995428298822,6543628959814,5715813955,4468583530566,5715599683,4285673472070,4285711384646,1995430953030,4419213721670,5715812355,4846690107462,6696625012806,9229876547,10786925891,10095602371,10990077699,4469086467,9057685955,1380365402182,1341434036294,1870594307,6227517635,4265545793606,4854796353606,1315127066694,5715694147,6690426617926,2058857611334,4468748099,4747728519238,7836201667,1995429281862,6597270077510,6551716102214,5715694787,7845990851,3929831047238,6696643559494,6719880921158,1426677694534,3114940931,6675577077830,6696650801222,4384390217798,3947302355014,4701577117766,4418927886406,8224994883,8787171011,4468747715,7846043715,6685223321670,4567442653254,4469027139,4284184494150,3984798810182,4339721306182,6690418360390,4297172779078,6675559776326,1995429150790,4603254964294,2058851156038,6753999552582,1426678120518,4264713388102,4701596745798,6613958099014,6568567144518,4327617855558,6551751458886,2058847551558,6753995423814,4565111013446,4468454787,4418898755654,6735065907270,7846043331,4703358124102,6648128045126,10488604483,4817987469382,5715811907,7836200579,10875552323,4384972177478,10786925827,1380424515654,1759300026438,2774754755,1380424351814,74573152259,3930389184582,5716027075,6793852321862,1644696272966,7846362883,3985756028998,6697519415366,6656567771206,6628460331078,4818000314438,4375443898438,1343061622854,2058849845318,4844319572038,4419239116870,6685226139718,2058853810246,6725563875398,4340665745478,10095607235,6551746641990,6575664758854,5715675075,4819897679942,1995428462662,4701584719942,10786926275,11014329027,1995428200518,6758512623686,6575666987078,461922539,6696655028294,4297257222214,897863619,6629995708486,6754014363718,10095605443,4504584323,4817993596998,3984774692934,6758488113222,2016989839430,1995432329286,3983734079558,8879093443,7836201475,3114961347,3985641963590,2070618832966,4744198520902,3946183065670,2582096579,1343061557318,4468749635,24225775619,74571481091,4489578691,4284182855750,6551699390534,6703713878086,3986970280006,4664377933894,5715693315,422834579,5715673539,4468573379,4601734004806,2079231705158,6568565047366,422834735,9089023683,9057686339,4703354978374,6758505250886,3985361174598,6680356749382,2079227084870,4819892764742,74571513859,4854362210374,1772383535174,1932539002950,5716036931,1995429052486,2058858528838,4375442391110,3983735193670,10553295363,422834727,422834771,4590720712774,2016989347910,2705124355,9052259843,4468571907,4468682883,4468924035,4717888241734,7154491011,5715600707,10488604163,7846012419,2058847322182,5715720579,10593491267,1750797123654,9057685827,8134469187,5715632707,7846043587,10875552067,461899575,6597167808582,1995428790342,6648135352390,4419241443398,74571874307,1343067095110,4711087374406,4468683267,11014328707,6680351703110,4609886715974,8772380035,4468684355,2058854793286,4565276262470,6598696501318,3983736569926,11014329603,1315126837318,4844308136006,74571186179,4468580614214,7846011907,1315127001158,9057686019,4774587727942,4846895562822,4419232956486,4701582557254,6651462811718,8134499843,10095605699,10095606531,1315127197766,6551711875142,6680344494150,3757357059,1315202203718,74573119491,3946183163974,1426678218822,6754008236102,6685214113862,4747591123014,5716045891,8134458883,6758466093126,10488604995,3984774922310,1772384485446,6543657861190,11014328771,3983733882950,4418929066054,897781891,3097449475,4539810
2843709574,74588749827,4451476045894,3983736864838,4469085955,6423117699,9089023235,3946183393350,4297174843462,2079241699398,1644695814214,6656559906886,10488604035,6696647065670,5715693507,897821635,10095602499,6793867657286,4384975224902,422835119,422834595,462856403,10875552259,74571907075,2072103354438,3984774430790,8134486979,1426677825606,1750797615174,9057685251,1426677563462,4468572163,4264717353030,4468574019,422835043,3985647370310,6330477699,10553296003,6675567575110,4468749315,3947302453318,1995429216326,3971039395910,6426125251,4344399921222,4325260329030,4822337290310,3985647009862,3984796450886,2058857644102,10553295619,8787518339,10488604419,4655774597190,3956116750406,5715721091,8772463427,422834603,1315127033926,10786926019,897863491,1995431051334,4701599989830,6543625453638,4469027587,2704957635,1995428692038,3735555971,10228905539,6651468054598,6680340365382,4468573699,7845990659,74571841539,422834715,3983737356358,4325266030662,4439464181830,3985638391878,1426677432390,40017068035,6793863299142,5715634051,1301690482758,4601799966790,5715694531,6543599927366,4609891369030,3097448899,9057685571,8225014083,4427359912006,10095601091,7846363011,4296766193734,3983734505542,2582096131,10990078339,1343061524550,5715599299,5715762243,1995428757574,1426677760070,4468923651,7845990595,10095602883,1772383830086,7846012291,7846012675,4530721751110,8800041155,5715765827,4468749891,10095603907,4482209448006,4332346179654,3983734669382,463764095,5716046147,6330509443,3881174433862,9148960643,74573185027,4339723567174,4265539862598,6647165255750,4103052355,3985418911814,6619169816646,10553295939,2058847256646,4468454339,2058847486022,4344395726918,4468453699,10665800259,1932548243526,4539786985542,5715722563,6613928378438,1343067258950,1750796599366,2058847518790,3985505779782,1995428921414,4591789015110,6563263774790,7846328131,4703362744390,3983734341702,4469086915,2058847158342,4327621689414,2016989413446,5715764931,9057685379,4413304635462,4325256593478,3985420222534,6793915859014,4482217541702,4103267267,6876964035,6644507443270,6703725772870,6758507774022,4339738443846,5715633539,4854351691846,6758468419654,6758496960582,1426678022214,6651465367622,6619191509062,9089023811,1315127230534,2072103387206,4469085187,6656550469702,3930388660294,9589459587,10665800003,1315126804550,4655777579078,10553295811,4375436427334,4384980172870,6330528195,6655871582278,6680347115590,4265551560774,4817977475142,1315126968390,6656552108102,7845991043,1995428724806,9057685315,1426677891142,9057685635,1995428036678,7846043843,1750798499910,4418936700998,10488604675,3971043950662,6713400066118,1301687894086,4325146525766,6793889808454,4339727040582,5715674499,4747589451846,1750798204998,3971024584774,4822276833350,2016989118534,4419257761862,4703349440582,74571939843,4744187150406,5715600067,2072103911494,4264707883078,6690410168390,5715810947,3984146691,3930387415110,5715674243,4468454019,4327623163974,6545207459910,4340664336454,6696640970822,2705091587,1315126935622,1750796894278,4293771132998,5715764291,1426678186054,6575669968966,4701570859078,6793875718214,7074891267,6753986805830,2705124163,1771974083,5715793987,1343061819462,4672098631750,10095601667,5715761475,6568561147974,5715793603,9690114499,2058848829510,2058855841862,6551689527366,1380424450118,1995429412934,2058847649862,2029786628166,4468454915,422834743,6876980547,6656543621190,422834723,2058850730054,9089023427,6675573047366,4603263057990,422835095,2058852401222,4264723480646,6685201432646,5715723523,1426677858374,6598627033158,1341434101830,3983769603,11014329219,5715795971,2072103747654,6758490505286,3946183262278,6735057092678,9057685507,5715762883,6685211656262,10095604483,3985529045062,5715693827,4822314975302,7846043139,6549289500742,6626757640262,2058847289414,1995429019718,1426677956678,4482196766790,10553295747,1426677628998,4539816509510,10497376451,5716026627,1426677497926,4601764544582,4565214560326,4413656006726,10095606915,7845990915,897863043,2705169539,8787512899,3929830981702,4822270738502,3946183327814,10488604931,1343061753926,5715723011,11014329283,6656564330566,9052259971,4744212807750,2058847420486,9057686595,2582097091,1644696043590,1750797353030,6719895732294,2016989315142,10097094531,3472309251,3097447491,4419260252230,2016989610054,10095606723,1772384026694,10990078467,6762747560006], 2844 2845 pre_checkout_variant_ids: [39854790377542,39890348834886,39854790312006,39890328846406,39890341888070,39890341986374,39890328944710,39854740996166,39890328879174,39854740930630,39890328911942,39854741061702,39854740963398,39890348802118,39890348736582,39890341953606,39890341822534,39890328813638,39854790443078,39890328780870,39890341920838,39854790344774,39854741028934,39890348769350,39890348867654,39854790279238,39890341855302,39854740897862,39854790410310,39890348703814], 2846 2847 pre_excluded_product_ids: [], 2848 2849 } 2850 || {}, 2851 get general() { 2852 return this.main.general || {}; 2853 }, 2854 get settings() { 2855 return this.general.settings || {}; 2856 }, 2857 get triggers() { 2858 return this.general.triggers ? this.general.triggers.pre_checkout : {}; 2859 },
2860 get types() { 2861 return this.triggers.metafields || { 2862 products: 'pre_checkout_product_ids', 2863 variants: 'pre_checkout_variant_ids' 2864 }; 2865 }, 2866 get products() { 2867 return this.getMetafields(this.types.products) || []; 2868 }, 2869 get variants() { 2870 return this.getMetafields(this.types.variants) || []; 2871 }, 2872 get proxy_url() { 2873 return this.settings.proxy_url || '/apps/secure-checkout'; 2874 }, 2875 get excluded() { 2876 const keys = this.triggers.metafields.excluded || { products: 'pre_excluded_product_ids' }; 2877 2878 return { 2879 products: [] 2880 }; 2881 }, 2882 getMetafields: function(key) { 2883 return this.main[key]; 2884 } 2885 }, 2886 get triggers() { 2887 const funnels = this.funnels; 2888 const cartItems = this.cart_items; 2889 const integrations = this.integrations(cartItems); 2890 const adp = integrations.advancedProductOptions; 2891 const isEmptyCart = this.isEmptyCart; 2892 2893 return { 2894 products: this.cart_items.map(function(item) { return item.product_id }), 2895 get variants() { 2896 const ids = cartItems.map(function(item) { return item.id }); 2897 if (!adp.present) return ids; 2898 return ids.concat(adp.relations); // Advanced Product Options integration 2899 }, 2900 get all() { 2901 if (!funnels.triggers.all) return; 2902 if (isEmptyCart) return true; 2903 2904 return !!this.products.filter(function(trigger) { 2905 return !~funnels.triggers.excluded.products.indexOf(trigger); 2906 }).length; 2907 } 2908 }; 2909 }, 2910 get funnels() { 2911 return { 2912 triggers: { 2913 all: this.metafields.triggers.all_products, 2914 excluded: this.metafields.excluded, 2915 variants: this.metafields.variants || [], 2916 products: this.metafields.products || [], 2917 }, 2918 get types() { 2919 const exclude = /all|excluded/; 2920 return Object.keys(this.triggers).filter(function(key) { 2921 return !exclude.test(key); 2922 }); 2923 }, 2924 get anyTriggers() { 2925 return this.types.some(function(type) { 2926 return !!this.triggers[type] 2927 }.bind(this)); 2928 } 2929 } 2930 }, 2931 get is_precheckout() { 2932 const funnels = this.funnels; 2933 const triggers = this.triggers; 2934 2935 if (triggers.all) return true; 2936 if (this._is_product_action && funnels.anyTriggers) return true; 2937 2938 return funnels.types.some(function(type) { 2939 return triggers[type].some(function(trigger) { 2940 return ~funnels.triggers[type].indexOf(trigger); 2941 }); 2942 }); 2943 }, 2944 get hasOfferInCart() { 2945 return this.cart_items.find(function(item) { 2946 return item && item.properties && item.properties._ocu_offer_id; 2947 }); 2948 }, 2949 get settings() { 2950 return this.metafields.settings.popup_settings; 2951 }, 2952 get proxy_url() { 2953 return this.metafields.proxy_url; 2954 }, 2955 2956 get appEndpoint() { 2957 return this.metafields.settings.app_endpoint; 2958 }, 2959 2960 get popup_location() { 2961 return this.metafields.general.settings.popup_locations; 2962 }, 2963 get popupLocation() { 2964 return Object.entries(this.popup_location) 2965 .map(function(item) { 2966 if (item[1]) return item[0]; 2967 }); 2968 }, 2969 get isEmptyCart() { 2970 return !this.cart_items.length && ~this.popupLocation.indexOf('product'); // check is empty cart and product location 2971 }, 2972 get permanent_domain() { 2973 return lqd.permanent_domain; 2974 } 2975}; 2976 2977var lqd = { 2978 cart: {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}, 2979 path: '' === 'true' ? 'd56719fefdd75e95ba06caea3d9a3732' : '5965fedc7708e03e1024db4bf2ed5fe6', 2980 template_name: 'blog', 2981 shop_currency: 'USD', 2982 skip_cart: OCUIncart.metafields.general.integrations.skip_cart === 'true', 2983 cart_products_json: JSON.parse("[]"),
2984 cart_collections_json: [], 2985 cart_variants_json: [], 2986 customer_id: "", 2987 customer: { id: "", email: '' }, 2988 proxy_url: OCUIncart.metafields.general.settings.proxy_url, 2989 permanent_domain: 'k-deer.myshopify.com', 2990 current_domain: 'www.k-deer.com', 2991 disabled_by_subscription_app: false, 2992 subscription_app_enabled: false, 2993 subscription_products_json: '', 2994 subscription_variants_json: '', 2995 subscription_products_size: 0, 2996 integrate_with_recharge: '' === 'true', 2997 product: null, 2998 product_tags: [], 2999 amazon_pay: '' === 'true', 3000 themePopup: '' === 'true' || '' === 'true', 3001 root_url: '/', 3002 themeSkipCart: 'ajax' === 'redirect_checkout' 3003 || '' === 'true' 3004 || '' === 'skip_cart', 3005 3006 get is_precheckout() { 3007 return OCUIncart.is_precheckout; 3008 }, 3009 get upsell_cart_include_subscription_upsells() { 3010 var self = this; 3011 3012 var hasSubscription = this.product_tags.reduce(function(acc, tag) { 3013 return acc || ~self.postcheckout_tags.indexOf(tag.toLowerCase()); 3014 }, false); 3015 3016 return hasSubscription; 3017 }, 3018 get isThemePopupTag() { 3019 return this.product && this.product.tags.some(function(tag) { 3020 return /cross-sell-\d/.test(tag); 3021 }); 3022 }, 3023 get isSkipCartPage() { 3024 return /index|collection|product/.test(this.template_name); 3025 }, 3026 get isSkipCartCondition() { 3027 return (this.skip_cart || this.themeSkipCart) && this.isSkipCartPage && !this.isThemePopupTag; 3028 }, 3029 get checkoutUrl() { 3030 return (this.root_url === '/' ? '' : this.root_url) + '/checkout'; 3031 }, 3032 get isPopupTriggerPage() { 3033 return OCUIncart.popupLocation && !!~OCUIncart.popupLocation.indexOf(lqd.template_name); 3034 } 3035}; 3036 3037lqd.cart_products_json = lqd.cart_products_json.filter(function(item) { 3038 return item.handle && !item.error; 3039}); 3040 3041utils.shareableDiscount({ clear:false }); 3042 3043if (lqd.is_precheckout) requireOptionSelectors(); 3044 3045var ocuCdn="https://d1u9wuqimc88kc.cloudfront.net"; 3046function Application() { 3047 ajax = axios.create({ timeout: 8000 }); 3048 ajax.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 3049 3050 new PublicMethod(); 3051 new SkipCart(); 3052 new HistoryApi(); 3053 3054 this.setAttributes(); 3055} 3056 3057Application.prototype = { 3058 checkout: null, 3059 ocuSelectors: utils.store.get('ocuSelectors'), 3060 integrations: new Integrations(), 3061 helpers: new Helpers(), 3062 // verify: new Verify(), 3063 cart: new Cart(), 3064 utils: new ApplicationsUtils(), 3065 popupDispatcher: new PopupDispatcher(), 3066 cartDispatcher: new CartDispatcher(), 3067 3068 setAttributes: function() { 3069 if (/register|account|login|reset_password|search|^$/.test(lqd.template_name)) return; 3070 3071 this.cartDispatcher.renderDiscounts(); 3072 3073 const forEach = Array.prototype.forEach; 3074 const checkoutButtons = document.querySelectorAll(this.ocuSelectors); 3075 const links = document.querySelectorAll('a'); // for ios 3076 3077 forEach.call(checkoutButtons, function(item) { 3078 if (item.name === 'update') return; 3079 item.dataset.ocuCheckout = true; 3080 }); 3081 3082 forEach.call(links, function(link) { 3083 var isNeededHref = utils.store.get('permalink').test(link.href); 3084 if (isNeededHref) link.dataset.ocuCheckoutLink = true; 3085 }); 3086 3087 this.listenEvents(); 3088 setTimeout(this.helpers.showCheckoutButton); 3089 }, 3090 3091 check: function(event, target) { 3092 this.prevent(event); 3093 3094 var form = target.closest('[action="/cart"], [action="/checkout"]'); 3095 if (form && !this.validate(form)) { 3096 clearTimeout(utils.store.get('fallback').id); 3097 utils.store.set('submitted', false); 3098 return form.reportValidity(); 3099 } 3100 if (!utils.store.get('cartChanged')) return this.handle(target); 3101 3102 // utils.store.listen('cartChanged').then(function() {this.handle(target)}.bind(this)); 3103 }, 3104 3105 handle: function(target) { 3106 this.integrations.discounts(); 3107 3108 if (utils.store.get('checkoutButtonState')) return; 3109 // if (utils.store.get('submitted')) return; // TODO fix_ff_multi_requests_2384 3110 utils.store.set('checkoutButtonState', true); 3111 3112 this.helpers.payPal(target); 3113 this.checkout({ redirect: true }); 3114 // this.verify.init(target); 3115 }, 3116 3117 init: function(event, target) { 3118 var self = this; 3119 3120 if (OCUApi.onCheckout && OCUApi.onCheckout()) return; 3121 3122 if (lqd.template_name === 'cart' && utils.store.get('submitted')) { 3123 event.stopPropagation(); 3124 return event.preventDefault(); 3125 } 3126 utils.store.set('submitted', true); 3127 3128 this.fallbackRedirect(); 3129 3130 if (window.RevyApp) this.handleMonkeyPatching(); 3131 3132 if (!this.allowUpsells(target)) return; 3133 3134 if (lqd.template_name === 'product' && target.name === 'add' && !target.closest('form[action$="/cart/add"]')) { 3135 const form = document.querySelector('form[action$="/cart/add"]'); 3136 3137 if (!form) return this.helpers.clearFallback(); 3138 3139 event.preventDefault(); 3140 event.stopPropagation(); 3141 return form.submit(); 3142 } 3143 const anyPrePurchases = window.OCUIncart && (OCUIncart.singleUpsells || OCUIncart.multipleUpsells); 3144 if (anyPrePurchases) { 3145 // self.prevent(event, true); 3146 return this.popupDispatcher.proceed(event, target, self); 3147 } 3148 3149 const addBtn = this.popupDispatcher._isAddAction(target); 3150 if (!anyPrePurchases && lqd.isPopupTriggerPage && addBtn) return clearTimeout(utils.store.get('fallback').id); 3151 3152 if (target.dataset.customBuyNow) { 3153 self.prevent(event); 3154 3155 var id = target.dataset.varientId; 3156 var qty = target.dataset.itemQuantity; 3157 var data = { id: id, quantity: qty }; 3158 var handle = function() { self.checkout({ redirect:true }) }; 3159 var onError = function() { alert('Network Error') }; 3160 3161 this.cart.add(null, null, data).then(handle).catch(onError); 3162 } 3163 3164 return this.check(event, target); 3165 }, 3166 3167 prevent: function(event, immediate) { 3168 event.preventDefault(); 3169 event.stopPropagation(); 3170 if (immediate) event.stopImmediatePropagation(); 3171 }, 3172 3173 validate: function(form) { 3174 var elems = form.querySelectorAll('[type="text"], [type="checkbox"], select, textarea'); 3175 3176 var requiredElems = Array.prototype.filter.call(elems, function(el) { 3177 if (el && ~utils.store.get('excludedRequiredFormIds').indexOf(el.form.id)) return false;
3178 3179 return el && el.required; 3180 }); 3181 3182 if (!requiredElems.length) return true; 3183 3184 return !requiredElems.some(function(el) { 3185 return !el.checkValidity(); 3186 }); 3187 }, 3188 3189 allowUpsells: function(el) { 3190 // if (window.mixed_cart) return; //integration with Recurring Orders & Subscriptions by Bold 3191 if (window.popup_upsell && !document.querySelector('#upsellclosebtn')) return; // integration with Product Upsell 3192 if (window.ol_checkout_ok instanceof Function && !ol_checkout_ok()) return; // integration with OrderLogic 3193 if (el.dataset.zpaSubmitButton === '') return; // integration with ZipifyPages CRM popup 3194 3195 return true; 3196 }, 3197 3198 fallbackRedirect: function() { 3199 var fallback = utils.store.get('fallback'); 3200 fallback.id = setTimeout(function() { this.checkout({ redirect:true }) }.bind(this), fallback.timeout); 3201 utils.store.set('fallback', fallback); 3202 }, 3203 3204 handleMonkeyPatching: function() { 3205 const send = utils.store.get('XHR').send; 3206 3207 if (XMLHttpRequest.prototype.send !== send) { 3208 XMLHttpRequest.prototype.send = send; 3209 } 3210 }, 3211 3212 handleClick: function(e) { 3213 if (lqd.template_name === 'page' && !e.isTrusted) return; 3214 3215 if (e.target.name === 'update' || e.target.closest('[name="update"]')) return; 3216 3217 if (!lqd.amazon_pay && e.target.closest('form[action^="https://payments.amazon"]')) return; 3218 3219 if (this.helpers.zpPreventRedirect(e.target)) return; 3220 3221 if (this.helpers.isBuyNow(e) && !lqd.isPopupTriggerPage) return new BuyNow(e); 3222 3223 if (this.helpers.isCartPopupRedirectsToCart(e)) return; 3224 3225 if (OCUIncart.integrations().minMaxify.invalid) return; 3226 3227 // if (this.helpers.checkDirectCheckoutButtons(e.target)) { 3228 // e.target.dataset.ocuCheckout = true; 3229 // utils.store.set('redirect_url', '/checkout'); 3230 // } 3231 3232 if (e.target.dataset.ocuCheckoutLink || e.target.closest('[data-ocu-checkout-link]')) { 3233 e.preventDefault(); 3234 var href = (e.target.dataset.ocuCheckoutLink ? e.target : e.target.closest('[data-ocu-checkout-link]')).href; 3235 if (utils.store.get('isPermalinkHandling')) return; 3236 utils.store.set('isPermalinkHandling', true); 3237 var result = this.integrations.handlePermalink(href, 'redirect'); 3238 return result.promise.then(result.callback); 3239 } 3240 3241 if ((e.target.dataset.skipCart === 'true' || e.target.closest('[data-skip-cart]')) && utils.store.get('submitted')) { 3242 e.preventDefault(); 3243 e.stopPropagation(); 3244 e.stopImmediatePropagation(); 3245 return; 3246 } 3247 3248 OCUIncart.integrations().salesRocket.setup(); 3249 3250 var target = this.helpers.checkSelector(e.target); 3251 if (lqd.isPopupTriggerPage) target = this.helpers.checkAddToCart(e.target) || target; 3252 if (target) this.init(e, target); 3253 }, 3254 3255 handleMousedown: function(e) { 3256 var self = this; 3257 3258 if (e.target.dataset.skipCart !== 'true' && !e.target.closest('[data-skip-cart]')) return; 3259 3260 if (e.target.name === 'update' || e.target.closest('[name="update"]')) return; // 283fa429 3261 3262 if (this.helpers.zpPreventRedirect(e.target)) return; 3263 3264 var amazonForm = e.target.closest('form[action^="https://payments.amazon"]'); 3265 if (amazonForm && lqd.amazon_pay) { 3266 e.preventDefault(); 3267 e.stopPropagation(); 3268 3269 var path = { 3270 ocu: lqd.proxy_url + '/amazon/forward', 3271 shopify: amazonForm.querySelector('[name="redirectURL"]').value 3272 }; 3273 3274 var handle = function() { 3275 self.checkout() 3276 .then(function(res) { location = path[res.status ? 'ocu' : 'shopify'] }) 3277 .catch(function(res) { location = path.shopify }) 3278 }; 3279 3280 var onError = function(form) { 3281 form.submit(); 3282 }; 3283 3284 if (!e.target.closest('form[action="/cart/add"]')) return handle(); 3285 3286 var cart = document.querySelector('form[action="/cart/add"]'); 3287 var button = amazonForm.querySelector('[type="submit"]'); 3288 return self.cart.add(cart, button, path).then(handle).catch(onError.bind(null, amazonForm)); 3289 } 3290 3291 var form = e.target.closest('form[action="/cart/add"]') || document.querySelector('form[action="/cart/add"]');
3292 var button = e.target.dataset.skipCart === 'true' ? e.target : e.target.closest('[data-skip-cart]'); 3293 3294 if (!form) return; 3295 3296 e.preventDefault(); 3297 e.stopPropagation(); 3298 utils.store.set('submitted', true); 3299 3300 var handle = function() { self.checkout({ redirect:true }) }; 3301 var onError = function(form) { form.submit(); }; 3302 return self.cart.add(form, button).then(handle).catch(onError.bind(null, form)); 3303 }, 3304 3305 handleFocus: function() { 3306 // handle cart drawers focus event for iOS select 3307 window.addEventListener('focus', function(e) { 3308 e.stopImmediatePropagation(); 3309 }, true); 3310 }, 3311 3312 listenEvents: function() { 3313 const touchEventConfig = { 3314 capture: true, 3315 passive: false 3316 }; 3317 3318 const onClick = function(e) { 3319 if (window.OCUDisableEvents) return; 3320 this.handleClick(e); 3321 }.bind(this); 3322 3323 document.addEventListener('mousedown', this.integrations.amazonPay.bind(this), true); 3324 document.addEventListener('touchstart', onClick, touchEventConfig); 3325 document.addEventListener('click', onClick, true); 3326 window.addEventListener('pagehide', this.helpers.disableButtons); 3327 3328 window.addEventListener('locationchange', function() { 3329 document.removeEventListener('click', onClick, true); 3330 document.addEventListener('click', onClick, true); 3331 }.bind(this)); 3332 3333 window.addEventListener('pageshow', function(e) { 3334 if (e.persisted) location.reload(); 3335 this.helpers.disableButtons(); 3336 }.bind(this)); 3337 3338 // if (lqd.template_name !== 'cart') return; 3339 // document.addEventListener('mousedown', this.cart.update.bind(this), true); 3340 // document.addEventListener('change', this.cart.state.bind(this)); 3341 } 3342}; 3343 3344function ZipifyPages() { 3345 const KEY = 'ocu_integration_data'; 3346 3347 this.setProducts = products => { 3348 this.products = products; 3349 } 3350 3351 this.setBlockId = id => { 3352 this.block_id = id; 3353 } 3354 3355 this.getProduct = () => this.product; 3356 3357 this.appendZipifyPagesProduct = items => { 3358 if (!this.products) return items; 3359 3360 const hash = this.products.find(product => product.discountHash)?.discountHash; 3361 3362 return items.map(item => { 3363 const matchedItem = this.products.find(product => product.productData.key === item.key); 3364 3365 if (!matchedItem) return item; 3366 if (!matchedItem?.discountData.includes('dynamic')) return item; 3367 3368 const zpPayload = { 3369 pages: true, 3370 discount_hash: hash, 3371 block_id: this.block_id 3372 }; 3373 3374 item.properties = { 3375 ...item.properties, 3376 ...zpPayload 3377 }; 3378 return item; 3379 }); 3380 } 3381 3382 this.init = () => { 3383 try { 3384 this.sessionData = JSON.parse(sessionStorage.getItem(KEY)); 3385 3386 if (this.sessionData && this.sessionData.token !== lqd.cart.token) { 3387 this.sessionData = null; 3388 sessionStorage.removeItem(KEY); 3389 } 3390 } catch (e) { 3391 console.error(e); 3392 } 3393 } 3394 this.handleZPOutsidePage = (ctx, callback) => { 3395 try { 3396 const payload = JSON.stringify({ products: this.products, block_id: this.block_id, token: lqd.cart.token }); 3397 sessionStorage.setItem(KEY, payload); 3398 callback({ detail: {} }); 3399 } catch(e) { 3400 console.error(e); 3401 this._verifyFallback(ctx, callback); 3402 } 3403 }; 3404 3405 this._verifyFallback = (ctx, callback) => { 3406 ctx.cart.get() 3407 .then(response => { 3408 OCUIncart.cart_items = response.data.items; 3409 ctx.verify() 3410 .then(() => { 3411 callback({ detail: {} }); 3412 }); 3413 }); 3414 } 3415 3416 this.clear = () => { 3417 this.products = null; 3418 } 3419 3420 this.isBlockOutsideProductPage = () => !lqd.isPopupTriggerPage && this.products.some(product => product.discountHash); 3421 3422 this.init(); 3423} 3424 3425function amazonPay(e) { 3426 const self = this; 3427 const amazonForm = e.target.closest('form[action^="https://payments.amazon"]'); 3428 3429 if (!amazonForm || !lqd.amazon_pay) return; 3430 3431 e.preventDefault(); 3432 e.stopPropagation(); 3433 3434 utils.store.set('amazonPayInitiated', true); 3435 3436 const addForm = e.target.closest('form[action="/cart/add"]'); 3437 const path = lqd.proxy_url + '/amazon/forward'; 3438 3439 const getToken = function(url) { 3440 const escaped = lqd.proxy_url.replace(/\//g, '\\/'); 3441 const reg = new RegExp(escaped + '\\/((?:\\w+[-_]?)+)\\/?'); 3442 const match = reg.exec(url); 3443 3444 return match && match[1]; 3445 }; 3446 3447 const fallback = function() { 3448 amazonForm.submit(); 3449 }; 3450 3451 const onSuccess = function(res) { 3452 if (!res.status) return fallback(); 3453 3454 const token = getToken(res.checkout_url); 3455 if (!token) return fallback(); 3456 3457 utils.cookie.set('ocu_checkout_token', token); 3458 location.assign(path); 3459 }; 3460 3461 if (!addForm) { 3462 return self.checkout().then(onSuccess).catch(fallback); 3463 } 3464 3465 const cart = document.querySelector('form[action="/cart/add"]'); 3466 const button = amazonForm.querySelector('[type="submit"]'); 3467 3468 self.cart.add(cart, button) 3469 .then(self.checkout) 3470 .then(onSuccess) 3471 .catch(fallback); 3472} 3473 3474function Bold() { 3475 this.isBoldRecuring = function() { 3476 var boldRecurringEl = document.querySelector('[data-bold-recurring]'); 3477 var isBoldRecuring = boldRecurringEl && boldRecurringEl.checked; 3478 return isBoldRecuring; 3479 }; 3480 3481 this.upsellPopup = function(target) { 3482 var modalButtons = [ 3483 target.querySelector('[data-bold-component-id="upsell_continue"]'), 3484 target.querySelector('[data-bold-component-id="upsell_no_thanks"]'), 3485 target.querySelector('#bold-modal__btn-close') 3486 ]; 3487 3488 modalButtons.forEach(function(item) { 3489 if (!item) return; 3490 item.addEventListener('click', function(e) { 3491 setTimeout(function() { 3492 self.checkout({ redirect: true }); 3493 }, 500); 3494 }); 3495 }); 3496 }; 3497 3498 this.initRecurring = function() { 3499 var clones = document.querySelectorAll('[data-ocu-clone]'); 3500 var clone = Array.prototype.filter.call(clones, function(i) { return i && !i.dataset.ocuCheckout; })[0]; 3501 if (clone) clone.click(); 3502 }; 3503 3504 this.redirect = function(event) { 3505 if (!window.BOLD || !BOLD.recurring_orders || !BOLD.recurring_orders.app || !event.isTrusted) throw new Error('Bold Recurring not found'); 3506 if(!BOLD.common.cartDoctor.cart.is_recurring) throw new Error('Bold Recurring cart error'); 3507 3508 event.preventDefault(); 3509 event.stopImmediatePropagation(); 3510 BOLD.recurring_orders.app.cartWidget.checkoutEvent = event; 3511 BOLD.recurring_orders.app.cartWidget.checkRecurringCheckout(event); 3512 }; 3513 3514 this.recurring = function(form, token) { 3515 var cfg = { 3516 protocol: 'https://', 3517 host: 'recurringcheckout.com', 3518 proxy: '/s/', 3519 permanent: /(\w+)\.myshopify\.com/.exec(BOLD.common.Shopify.shop.permanent_domain)[1], 3520 path: '/checkout/recurring/', 3521 query: '?shop_url=' + location.host 3522 }; 3523
3524 form.action = cfg.protocol + cfg.host + cfg.proxy + cfg.permanent + cfg.path + token + cfg.query; 3525 form.submit(); 3526 }; 3527} 3528 3529function BuyNowBtns() { 3530 if (!lqd.themeSkipCart) return; 3531 3532 const self = this; 3533 3534 const buyNowBtn = document.querySelector('button[id="AddToCart"]'); 3535 if (!buyNowBtn) return; 3536 3537 const innerTextEl = buyNowBtn.querySelector('#AddToCartText'); 3538 if (!/buy\s*(it)?\s*now/i.test(innerTextEl && innerTextEl.innerText)) return; 3539 3540 const cb = function() { self.checkout({ redirect: true }); }; 3541 const onError = function(form) { form.submit() }; 3542 3543 buyNowBtn.addEventListener('click', function(e) { 3544 e.preventDefault(); 3545 const form = buyNowBtn.closest('form[action="/cart/add"]'); 3546 self.cart.add(form, e.target).then(cb).catch(onError.bind(null, form)); 3547 }); 3548} 3549 3550function HandlePermalink(url, redirect) { 3551 var self = this; 3552 var reg = utils.store.get('permalink'); 3553 var match = reg.exec(url); 3554 var cfg = { redirect: redirect }; 3555 3556 if (!match) return { 3557 promise: new Promise(function(resolve) { resolve({ checkout_url: url }); }), 3558 callback: function(res) { 3559 return redirect ? location.assign(url) : new Promise(function(resolve) { resolve(res); }) 3560 } 3561 }; 3562 3563 var discount = match[2]; 3564 if (discount) cfg.params = [{ discount: discount }]; 3565 3566 var groups = match[1].split(','); 3567 3568 var data = groups.reduce(function(acc, item, i, arr) { 3569 var id = +item.split(':')[0]; 3570 var qty = +item.split(':')[1]; 3571 3572 var cartItem = lqd.cart_variants_json.filter(function(item) { return item.id === id })[0]; 3573 if (cartItem) qty += cartItem.quantity; 3574 3575 if (acc) acc += '&'; 3576 return acc += 'updates[' + id + ']=' + qty; 3577 }, ''); 3578 3579 return { 3580 promise: self.cart.bulkAdd(data), 3581 callback: function() { return self.checkout(cfg); } 3582 }; 3583} 3584 3585function CartDrawer(target) { 3586 var form = target.querySelector('form[action="/cart"]'); 3587 var btn = form && form.querySelector('input[type="submit"]'); 3588 if (!btn) return; 3589 3590 btn.type = 'button'; 3591 btn.addEventListener('click', function(e) { 3592 self.checkout({ redirect: true }); 3593 }); 3594} 3595 3596function CartPopup() { 3597 var btn = document.querySelector('.bkt--upsell-target-checkout'); 3598 if (!btn) return; 3599 3600 var cfg = { 3601 tag: 'input ', 3602 type: 'type="button" ', 3603 style: 'style="position:absolute;left:0;top:0;width:100%;height:100%;cursor:pointer;opacity:0" ', 3604 data: 'data-ocu-dialog-btn ' 3605 }; 3606 3607 btn.style.position = 'relative'; 3608 btn.insertAdjacentHTML('beforeend','<'+cfg.tag+cfg.type+cfg.style+cfg.data+'>'); 3609 3610 var clone = document.querySelector('[data-ocu-dialog-btn]'); 3611 clone.addEventListener('click', function(e) { 3612 e.stopPropagation(); 3613 btn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="bkt--nc-icon" x="0px" y="0px" width="64px" height="15px" viewBox="0 0 64 64"><g><circle class="nc-dots-7-2" data-color="color-2" fill="#445FFF" cx="32" cy="32" r="26" transform="translate(6.26687999999989 6.26687999999989) scale(0.8041600000000034)" style="opacity:0.8041600000000034"></circle><circle class="nc-dots-7-1" fill="#445FFF" cx="-72" cy="32" r="26" transform="translate(3.2332800000000272 12.933120000000109) scale(0.5958399999999966)" style="opacity:0.5958399999999966"></circle><circle class="nc-dots-7-3" fill="#445FFF" cx="132" cy="32" r="26" transform="translate(33.6 19.2) scale(0.4)" style="opacity:0.4"></circle></g></svg>'; 3614 function setAttributes(e,t){for (var i in t)e.setAttribute(i,t[i]);} function dotsSevenStep(e){startDots7||(startDots7=e);var t=e-startDots7,n=Math.min(t/250,4);n=4==n?0:n,decimalRot=n%1,upperInteger=Math.ceil(n),1e3>t||(startDots7+=1e3);if (circleDots7[0][0]){window.requestAnimationFrame(dotsSevenStep);var a=[],r=[],o=[],s=[-72,32,132],c=[32,32,32];for (j = 0; circleDots7Number > j ; j++) {for (a[0]=a[1]=a[2]=.4,1==upperInteger?(a[0]=1-3*decimalRot/5,a[1]=.4+3*decimalRot/5):2==upperInteger?(a[1]=1-3*decimalRot/5,a[2]=.4+3*decimalRot/5):3==upperInteger?(a[1]=.4+3*decimalRot/5,a[2]=1-3*decimalRot/5):4==upperInteger?(a[0]=.4+3*decimalRot/5,a[1]=1-3*decimalRot/5):a[0]=1,i=0;3>i;i++)r[i]=(1-a[i])*s[i],o[i]=(1-a[i])*c[i],setAttributes(circleDots7[i][j],{ 3615transform: 'translate('+r[i]+' '+o[i]+') scale('+a[i]+')', 3616style: 'opacity:'+a[i]+';' 3617});}}}!function(){var e=0;window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var i=(new Date).getTime(),n=Math.max(0,16-(i-e)),a=window.setTimeout(function(){t(i+n);},n);return e=i+n,a;});}();var circleDots7=[],startDots7=null;circleDots7[0]=document.getElementsByClassName('nc-dots-7-1'),circleDots7[1]=document.getElementsByClassName('nc-dots-7-2'),circleDots7[2]=document.getElementsByClassName('nc-dots-7-3'),circleDots7Number = circleDots7[0].length,window.requestAnimationFrame(dotsSevenStep); 3618 self.checkout({ redirect: true }); 3619 }); 3620} 3621 3622function CheckoutLinks() { 3623 var checkoutLinks = document.querySelectorAll('a[href="/checkout"]'); 3624 3625 Array.prototype.forEach.call(checkoutLinks, function(link) { 3626 if (!link) return; 3627 3628 link.addEventListener('click', function(e) { 3629 e.stopPropagation(); 3630 e.preventDefault(); 3631 self.checkout({ redirect: true }); 3632 }); 3633 }); 3634} 3635 3636function Discounts() { 3637 var discount = document.querySelector('input[name="discount"]'); 3638 var discountCC = utils.cookie.get('discount_code'); // integration with CouponCountdown
3639 var discountShare = utils.cookie.get('ocu-share-discount'); 3640 var isPopupShown = utils.cookie.get('popupcookie'); 3641 3642 if (window._chpmgr && !isPopupShown) return; // integration with chilliapps exit popup 3643 if (!discount && !discountCC && !discountShare) return; 3644 3645 var code; 3646 if (discount) code = discount.value; 3647 if (discountCC) { 3648 code = discountCC; 3649 utils.cookie.remove('discount_code'); 3650 } 3651 3652 if (discountShare) { 3653 code = discountShare; 3654 utils.cookie.remove('ocu-share-discount'); 3655 } 3656 3657 var param = { 3658 name: 'discount', 3659 value: encodeURIComponent(code) 3660 }; 3661 3662 var params = utils.store.get('params'); 3663 3664 if (discountShare && lqd.template_name === 'page' || !param.value) return; // zp & shareable discount 3665 3666 params.arr.push(param); 3667 utils.store.set('params', params); 3668} 3669 3670function Recharge() { 3671 var self = this; 3672 3673 this.isSubscription = function(res) { 3674 const cart = res.cart || res.data.cart || res.data; 3675 3676 return cart.items.some(function(item) { 3677 if (item.selling_plan_allocation) return null; 3678 return item.properties && (item.properties.subscription_id || item.properties.shipping_interval_frequency); 3679 }); 3680 }; 3681 3682 this.processCart = function() { 3683 window.reChargeProcessCart = function() { 3684 self.checkout({ redirect: true }); 3685 }; 3686 }; 3687 3688 this.redirect = function(event, cart, checkoutUrl) { 3689 let checkout_url = "https://checkout.rechargeapps.com"; 3690 function buildCheckoutUrl(){var t=["myshopify_domain="+Shopify.shop];return checkout_url+"/r/checkout?"+(t=t.concat(get_cart_token()).concat(get_ga_linker())).join("&")}function filterVisible(t){return t.filter(function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)})}function filterValues(t){return t.filter(function(t){var e="radio"===t.getAttribute("type")&&t.checked,n="checkbox"===t.getAttribute("type")&&t.checked,r="checkbox"!==t.getAttribute("type")&&"radio"!==t.getAttribute("type");return!!t.value&&(r||e||n)})}function getCartJSON(){return fetch("/cart.js").then(function(t){return t.json()}).then(function(t){return{cart:JSON.stringify(t)}}).catch(function(t){return console.error("Error retreiving cart: ",t),{cart:{}}})}function getTermsAndConditions(){var t=document.querySelectorAll(["#terms","#agree"].join(",")),e=filterValues(Array.prototype.slice.apply(t)).map(function(t){return t.value});return e.length?{terms_and_conditions:e.join(", ")}:{}}function getNotes(){var t=document.querySelectorAll(['[name="note"]'].join(",")),e=filterVisible(Array.prototype.slice.apply(t)).map(function(t){return t.value}),n=new URLSearchParams(decodeURIComponent(window.location.search)).get("note");return n&&e.push(n),e.length?{note:e.filter(function(t,e,n){return n.indexOf(t)===e}).join(", ")}:""}function getUTMAttributes(){var t=/^_shopify_sa_p/,e=/^utm_/,n=/^_shopify_sa_t/,r={},o="",i="";document.cookie.split(";").map(function(t){return t.trim()}).forEach(function(e){t.test(e)&&(o=e),n.test(e)&&(i=decodeURIComponent(e.split("=")[1]))});var c=o.split("=")[1];if(decodeURIComponent(c).split("&").forEach(function(t){var n=t.split("=")[0],o=t.split("=")[1];if(e.test(n))return r[n]=o}),Object.keys(r).length)return r.utm_timestamp=i,r.utm_data_source="shopify_cookie",r}function getAttributes(){var t=/attributes\[(.*?)\]/,e=/\[(.*?)\]/,n=document.querySelectorAll(['[name*="attributes"]'].join(",")),r=filterValues(Array.prototype.slice.apply(n)),o={},i=getUTMAttributes(),c=new URLSearchParams(decodeURIComponent(window.location.search));for(let n of c)if(t.test(n[0])){var u=n[0].match(e)[0];u=u.substring(1,u.length-1),o[u]=c.get(n[0])}return r.forEach(function(n){var r=n.getAttribute("name"),i=n.value;if(t.test(r)){var c=r.match(e)[0];return c=c.substring(1,c.length-1),o[c]=i}return o[r]=i}
3690),i&&Object.keys(i).forEach(function(t){o[t]=i[t]}),Object.keys(o).length?{attributes:Object.assign({},o)}:{}}function getCartData(){return getCartJSON().then(function(t){var e={};return[getTermsAndConditions(),getNotes(),getAttributes(),e=t].forEach(function(t){Object.assign(e,t)}),e})}function get_cart_token(){try{return["cart_token="+(document.cookie.match("(^|; )cart=([^;]*)")||0)[2]]}catch(t){return[]}}function get_ga_linker(){try{return[ga.getAll()[0].get("linkerParam")]}catch(t){return[]}}function buildInputs(t,e){Object.keys(e).forEach(function(n){var r=document.createElement("input");r.setAttribute("type","hidden"),r.setAttribute("name",n),r.setAttribute("value","object"==typeof e[n]?JSON.stringify(e[n]):e[n]),t.appendChild(r)})}function buildForm(t,e){var n=document.createElement("form");return n.setAttribute("method","post"),n.setAttribute("action",e),n.setAttribute("id","rc_form"),n.style.display="none",buildInputs(n,t),n}function hasSubscription(t){return[...JSON.parse(t.cart).items].some(t=>t.properties && (t.properties.shipping_interval_unit_type || t.properties.shipping_interval_frequency))}function ReChargeCartSubmit(){return getCartData().then(function(t){if(hasSubscription(t)){var e=buildCheckoutUrl();if(t){var n=new XMLHttpRequest;n.open("POST","/cart/update.js"),n.setRequestHeader("Content-Type","application/json"),n.onload=function(){200===n.status?window.console.log("done",JSON.parse(n.responseText)):200!==n.status&&window.console.log("fail",JSON.parse(n.responseText));var r=buildForm(t,e);document.body.appendChild(r),r.submit()},n.send(JSON.stringify(t))}else window.location.href=e}else window.location.href=checkoutUrl||"/checkout"})} 3691 ReChargeCartSubmit(); 3692 }; 3693} 3694 3695function smar7() { 3696 var self = this; 3697 3698 var isSmar7Installed = ~document.head.innerHTML.indexOf('bundle-upsell'); 3699 if (!isSmar7Installed) return; 3700 3701 var ctaBtns = document.querySelectorAll("[name='checkout'], [href^='/checkout'], form[action='/checkout'] [type='submit'], #checkout, [name='goto_pp'], .checkout_button"); 3702 Array.prototype.forEach.call(ctaBtns, function(btn) { 3703 btn.disabled = true; 3704 }); 3705 3706 var i = 0; 3707 var int = setInterval(function() { 3708 if ((++i && i > 7) || (window.SMAR7 && SMAR7.bundle)) { 3709 Array.prototype.forEach.call(ctaBtns, function(btn) { 3710 btn.disabled = false; 3711 }); 3712 clearInterval(int); 3713 } 3714 }, 3000); 3715 3716 var redirect = function(discount) { 3717 var button, path, params = utils.store.get('params'); 3718 3719 if (discount) { 3720 SMAR7.util.setCookie('smar7coupon', discount, 3600); 3721 3722 params.arr.push({ 3723 name: 'discount', 3724 value: encodeURIComponent(discount) 3725 }); 3726 } else { 3727 discount = SMAR7.bundle.helper.determineCoupon && SMAR7.bundle.helper.determineCoupon(); 3728 } 3729 3730 if (SMAR7.paypal) {
3731 path = '/checkout?goto_pp=paypal_express&discount=' + encodeURIComponent(discount); 3732 button = document.querySelector('[name="goto_pp"]'); 3733 } else { 3734 path = '/checkout?discount=' + encodeURIComponent(discount); 3735 button = document.querySelector( 3736 '[name="checkout"], [href="/checkout"], form[action="/checkout"] input[type="submit"], #checkout' 3737 ); 3738 } 3739 3740 utils.store.set('params', params); 3741 self.checkout({ redirect: true }); 3742 }; 3743 3744 var handle = function() { 3745 if (window.SMAR7 && SMAR7.bundle) SMAR7.bundle.redirect = redirect; 3746 }; 3747 3748 document.addEventListener('click', handle, true); 3749}; 3750 3751function Integrations() { 3752 const self = this; 3753 const bold = new Bold(); 3754 const recharge = new Recharge(); 3755 const zipifyPages = new ZipifyPages(); 3756 3757 this.list = { 3758 bold: { 3759 get isInstalled() { return window.BOLD && BOLD.apps_installed; }, 3760 get productOptions() { return this.isInstalled && BOLD.apps_installed['Product Options']; }, 3761 get productUpsell() { return this.isInstalled && BOLD.apps_installed['Product Upsell']; }, 3762 }, 3763 recharge: { 3764 isSubscriptionProduct: function(cart) { 3765 return cart.items.some(function(item) { 3766 return item.properties && (item.properties.subscription_id || item.properties.shipping_interval_frequency); 3767 }); 3768 } 3769 } 3770 }; 3771 3772 3773 // for future integartion 3774 this.boldUpsellCheckoutOffer = function() { 3775 if (!window.BOLD || !window.Shopify) return; 3776 3777 var data = { 3778 data: { 3779 cart: { 3780 items: lqd.cart.items, 3781 total_price: lqd.cart.total_price 3782 } 3783 } 3784 }; 3785 3786 return ajax.request({ 3787 method: 'post', 3788 url: window.BOLD.upsell.path + window.Shopify.shop + '/validate_checkout_offer', 3789 data: JSON.stringify(data) 3790 }); 3791 }; 3792 3793 this.needSkipClick = this.list.bold.productOptions || this.list.bold.productUpsell; 3794 3795 this.start = function() { 3796 if (!lqd.upsell_cart_include_upsells) return; 3797 if (lqd.template_name !== 'cart') this.main(); 3798 // try { 3799 // this[(lqd.template_name === 'cart' ? 'cart' : 'main')](); 3800 // } catch (e) { console.warn(e); } 3801 }; 3802 3803 this.main = function() { 3804 var handleMutation = function(mutation) { 3805 if ( 3806 mutation.type !== 'attributes' 3807 || mutation.target !== document.querySelector(self.ocuSelectors) 3808 || !/cart-?(popup|container|drawer)/i.test(mutation.target.id) 3809 || !/bold-upsell-modal-window/i.test(mutation.target.id) 3810 ) return; 3811 3812 if (mutation.target.id === 'bold-upsell-modal-window') { 3813 return self.boldUpsellPopup(mutation.target); 3814 } 3815 3816 var checkoutButtons = document.querySelectorAll(self.ocuSelectors); 3817 // var dataOcuCheckoutValue = checkoutButtons[0].dataset.ocuCheckout === 'true'; 3818 var dataDisableRechargeValue = checkoutButtons[0].dataset.disableRecharge === 'true'; 3819 var forEach = Array.prototype.forEach; 3820 3821 forEach.call(checkoutButtons, function(item) { 3822 if (item.innerHTML === 'Checkout') item.removeAttribute('onclick'); // Integration with AceCase store 3823 }); 3824 3825 // if (!dataOcuCheckoutValue) { // Integration with MyDietChief store 3826 // Array.prototype.forEach.call(checkoutButtons, function(item) {s 3827 // item.dataset.ocuCheckout = true; 3828 // }); 3829 // } 3830 3831 if (lqd.disabled_by_subscription_app && dataDisableRechargeValue) return; 3832 3833 forEach.call(checkoutButtons, function(item) { 3834 item.disableRecharge = true; 3835 }); 3836 3837 self.cartPopup(); 3838 self.cartDrawer(mutation.target); 3839 self.checkoutLinks(); 3840 self.listenEvents(); 3841 }; 3842 3843 var handleMutations = function(mutations) { mutations.forEach(handleMutation); }; 3844 3845 var config = { 3846 childList: true, 3847 subtree: true, 3848 attributes: true 3849 }; 3850 3851 new MutationObserver(handleMutations).observe(document, config); 3852 3853 self.buyNowBtns(); 3854 self.recharge.processCart(); 3855 self.revy(); 3856 }; 3857 3858 // this.cart = function() { 3859 // // var handleMutation = function(mutation) { 3860 // // var target = document.querySelector(self.ocuSelectors); 3861 // // if (mutation.type === 'attributes' && mutation.target === target) { 3862 // // self.smar7(); 3863 // // } 3864 // // }; 3865 3866 // // var handleMutations = function(mutations) { mutations.forEach(handleMutation); }; 3867 3868 // // var config = { 3869 // // subtree: true, 3870 // // attributes: true 3871 // // }; 3872 3873 // // new MutationObserver(handleMutations).observe(document, config); 3874 3875 // self.revy(); 3876 // }; 3877 3878 this.revy = function() { 3879 if (window.RevyApp && RevyApp.events) RevyApp.events.updatedCart = []; 3880 }; 3881 3882 this.discounts = Discounts; 3883 this.smar7 = smar7; 3884 this.isBoldRecuring = bold.isBoldRecuring; 3885 this.boldRecurring = bold.initRecurring; 3886 this.bold = bold; 3887 this.boldUpsellPopup = bold.upsellPopup; 3888 this.cartPopup = CartPopup; 3889 this.cartDrawer = CartDrawer; 3890 this.checkoutLinks = CheckoutLinks; 3891 this.handlePermalink = window.oneClickUpsellHandlePermalink = HandlePermalink.bind(this); 3892 this.buyNowBtns = BuyNowBtns; 3893 this.recharge = recharge; 3894 this.amazonPay = amazonPay; 3895 this.zipifyPages = zipifyPages; 3896 // this.amazonPay = function() { AmazonPay(self) }; 3897 3898 this.start(); 3899} 3900 3901function HistoryApi() { 3902 history.pushState = (function(f) { 3903 return function() { 3904 var result = f.apply(this, arguments); 3905 window.dispatchEvent(new Event('pushState')); 3906 window.dispatchEvent(new Event('locationchange')); 3907 return result; 3908 }; 3909 })(history.pushState); 3910 3911 history.replaceState = (function(f) { 3912 return function() { 3913 var result = f.apply(this, arguments); 3914 window.dispatchEvent(new Event('replaceState')); 3915 window.dispatchEvent(new Event('locationchange')); 3916 return result; 3917 }; 3918 })(history.replaceState); 3919 3920 window.addEventListener('popstate', function() { 3921 window.dispatchEvent(new Event('locationchange')); 3922 }); 3923} 3924 3925// function Verify() { 3926// var self = this; 3927// var target; 3928 3929// this.init = function(target) { 3930// target = target; 3931 3932// if (window.catchXHR) { 3933// catchXHR = false;
3934// XMLHttpRequest.callbacks = []; 3935// } 3936// if (window.beeketingWPJP) beeketingWPJP = {}; 3937 3938// self.checkout() 3939// .then(self.handle) 3940// .catch(self.helpers.redirect); 3941// }; 3942 3943// this.data = function() { 3944// var options = { 3945// method: 'get', 3946// url: self.helpers.getProxyUrl() + utils.store.get('lqdCart') 3947// }; 3948 3949// return ajax.request(options); 3950// }; 3951 3952// this.upsells = function(res) { 3953// if (self.integrations.recharge.isSubscription(res)) { 3954// var url = self.integrations.recharge.init(res, target); 3955// utils.store.set('redirect_url', url); 3956// res.data.redirect_url = url; 3957 3958// if (!lqd.integrate_with_recharge) { 3959// return new Promise(function(resolve) { resolve(res); }); 3960// } 3961// } 3962 3963// res = self.cart.modify(res); 3964 3965// const cart = res.data; 3966// return self._addToken(cart) 3967// .then(function(c) { 3968// return self._makeCheckUpsells(c, res); 3969// }); 3970// }; 3971 3972// this.handle = function(res) { 3973// // var isAppSkipCart = lqd.skip_cart && /index|collection|product/.test(lqd.template_name); 3974// // var isThemeSkipCart = lqd.themeSkipCart; 3975// // if (cart.redirect_url) return location = cart.redirect_url; 3976// if (!res.status && !lqd.themeSkipCart) return self.helpers.redirect(res); 3977// // if (!res.status && !lqd.themeSkipCart) return location.assign('/cart'); 3978 3979// location = res.status || lqd.themeSkipCart 3980// ? res.checkout_url 3981// : '/cart'; 3982// }; 3983 3984// this._makeCheckUpsells = function(cart, res) { 3985// cart.items = self.helpers.filterCartItemFields(cart.items); 3986 3987// const data = { 3988// shop_domain: lqd.current_domain, 3989// cart: cart, 3990// require_paypal: utils.store.get('requirePayPal'), 3991// customer: { id: res.data.customer_id }, 3992// incarts: utils.store.get('incarts') 3993// // incarts: { 47: { status: 'declined', shopify_variant_id: 16052480475207, quantity: 1, shown_at: Date.now() }} 3994// // incarts: { 47: { status: 'offered', shopify_variant_id: 16052480475207, quantity: 1, shown_at: Date.now() }} 3995// }; 3996 3997// const options = { 3998// method: 'post', 3999// url: self.helpers.getProxyUrl() + utils.store.get('checkUpsells'), 4000// data: utils.serialize(data, { indices: true }) 4001// }; 4002 4003// return ajax.request(options); 4004// }; 4005 4006 4007// this._addToken = function(cart) { 4008// const store_token = utils.store.get('cart_token'); 4009// return new Promise(function(resolve, reject) { 4010// if (!cart.token && store_token) { 4011// cart.token = store_token; 4012// resolve(cart); 4013// } else if (!cart.token) { 4014// self.cart.get().then(function(res) { 4015// cart.token = res.data.token; 4016// resolve(cart); 4017// }); 4018// } else { 4019// resolve(cart); 4020// } 4021// }); 4022// } 4023// }; 4024 4025const appendChain = window.Symbol ? Symbol('appendChain') : 'oneClickUpsellAppendChain'; 4026Object[appendChain]=function(t,o){for(var n=o,e=o2nd=oLast=t instanceof this?t:new t.constructor(t),r=this.getPrototypeOf(o2nd);r!==Object.prototype&&r!==Function.prototype;r=this.getPrototypeOf(o2nd))o2nd=r;return o.constructor===String&&(n=Function.prototype,e=Function.apply(null,Array.prototype.slice.call(arguments,1)),this.setPrototypeOf(e,oLast)),this.setPrototypeOf(o2nd,n),e}; 4027 4028function Updater(res) { 4029 this.res = res; 4030 this.isCartUpdated = utils.store.get('cartUpdated'); 4031 this.isOfferDeclined = utils.store.get('offerDeclined'); 4032 this.options = { 4033 add: { method: 'post', url: '/cart/add.js' }, 4034 change: { method: 'post', url: '/cart/change.js' }, 4035 update: { method: 'post', url: '/cart/update.js' } 4036 }; 4037 this.regs = { 4038 attributes: /\[(.+?)\]/, 4039 key: /(?:(?:updates|quantity)_(?:.*?))?(\d+:\w+)/, 4040 id: /(?:(?:updates|quantity)_(?:.*?))?(\d+):?/, 4041 noId: /(\d+(:\w+)?)$/ 4042 }; 4043 this.selectors = { 4044 form: 'form[action^="/checkout"], form[action^="/cart"]', 4045 attributes: '[name^="attributes["]', 4046 currency: '[name="currency"]', 4047 localization: 'form[action="/localization"]', 4048 geolocation_currency: 'input[name="currency_code"]', 4049 updates: '[name^="updates["], [data-cart-item-input-quantity], [data-cart-item-quantity], input[data-line], [name="quantity"], [data-quantity-input]', 4050 note: '[name="note"]', 4051 cartItemKey: '[data-cart-item-key], [data-cart-item], [data-variant]' 4052 }; 4053 this.data = { 4054 currency: Shopify.currency.active !== lqd.shop_currency ? Shopify.currency.active : lqd.shop_currency, 4055 attributes: {}, 4056 lineItems: [], 4057 updates: {}, 4058 changes: [], 4059 sameIds: [], 4060 note: '' 4061 }; 4062 this.payload = { 4063 updates: {}, 4064 currency: '', 4065 note: null, 4066 attributes: {} 4067 }; 4068 4069 if (!window.klpixel /*integration with Klickly*/) this._restoreXMLHttp(); 4070} 4071Updater.prototype = { 4072 init: function() { 4073 if (this.isCartUpdated && !this.isOfferDeclined) return this.resolve(this.res); 4074 if (!this.form) return this.updateCurrency(); 4075 4076 this.buildPayload(); 4077 if (this.res) return this.updateCart(); 4078 } 4079}; 4080const UpdaterRequests = { 4081 updateCart: function(data, isUpgrade) { 4082 const options = this._getOptions('update', data, isUpgrade); 4083 const params = isUpgrade && data.changeData; 4084 const updateCart = function() { return ajax.request(options); }; 4085 4086 return this._updateSameId(params).then(updateCart); 4087 }, 4088 addToCart: function(data) { 4089 const options = this._getOptions('add', data); 4090 4091 return ajax.request(options); 4092 }, 4093 changeCart: function(data, chain) { 4094 const options = this._getOptions('change', data); 4095 const request = !chain || chain instanceof Object 4096 ? ajax.request(options) 4097 : function() { return ajax.request(options); }; 4098 4099 return request; 4100 }, 4101 updateCurrency: function() { 4102 if (!this.needCurrencyUpdate) return this.resolve(this.res); 4103 4104 this.getCurrency(); 4105 const options = this._getOptions('update', { currency: this.data.currency }); 4106 4107 return ajax.request(options).catch(this.resolve.bind(this, this.res)); 4108 },
4109 _updateSameId: function(changeData) { 4110 if (!this.data.sameIds.length || !changeData) return this.resolve(false); 4111 4112 const allRequests = this._getCartChangeRequests(changeData); 4113 const requestChain = this._requestChain(allRequests); 4114 4115 return new Promise(requestChain.bind(this)); 4116 }, 4117 _getCartChangeRequests: function(changeData) { 4118 const cb = function(acc, change) { 4119 if (!change.id && !change.line) return acc; 4120 if (changeData) { 4121 const id = changeData.id; 4122 const line = changeData.__line || changeData.line; 4123 const isUpgradeItem = change.line === line || (id && change.id === id); 4124 if (isUpgradeItem) return acc; 4125 } 4126 4127 delete change.__variantId; 4128 acc.push(this.changeCart(change, 'chain')); 4129 4130 return acc; 4131 }; 4132 4133 return this.data.changes.reduce(cb.bind(this), []); 4134 }, 4135 _requestChain: function(allRequests) { 4136 return function(resolve, reject) { 4137 if (!allRequests.length) return resolve(false); 4138 !function createRequest() { 4139 const req = allRequests.pop(); 4140 const cb = function(res) { 4141 if (allRequests.length) return createRequest(); 4142 resolve(res); 4143 }; 4144 4145 return req().then(cb).catch(reject); 4146 }(); 4147 } 4148 }, 4149 _getOptions: function(type, data, isUpgrade) { 4150 const options = Object.assign({}, this.options[type]); 4151 options.data = isUpgrade ? data.updateData : (data || this.payload); 4152 return options; 4153 } 4154}; 4155const UpdaterPayload = { 4156 buildPayload: function() { 4157 this.getUpdates(); 4158 this.getAttributes(); 4159 this.getCurrency(); 4160 this.getNote(); 4161 4162 Object.keys(this.payload).forEach(function(key) { 4163 this.payload[key] = this.data[key]; 4164 }.bind(this)); 4165 4166 return this.payload; 4167 }, 4168 getUpdates: function() { 4169 this.updateElements.forEach(function(item) { 4170 if (!item) return; 4171 // examples of item.id: '', 'quantity', '6565763', 'updates_456546:nn56d5j', '65765:2c9656mn' 4172 const isNoId = ( 4173 !item.dataset.id && 4174 !item.dataset.key && 4175 !this.regs.noId.test(item.id) && 4176 !this._getClosestKey(item) 4177 ); 4178 const quantity = parseFloat(item.value); 4179 const line = this._getLine(item); 4180 if (isNoId) return this._saveLineItem(null, null, line, quantity); 4181 4182 const key = this._getKey(item); 4183 const id = this._getId(item); 4184 const isIdMissing = id.toString().length <3; 4185 4186 this._saveLineItem(id, key, line, quantity); 4187 if (this.data.updates[id] || isIdMissing) this._saveSameId(id); 4188 this._saveChanges(); 4189 if (~this.data.sameIds.indexOf(id) || isIdMissing) return; 4190 this._saveUpdates(id, quantity); 4191 }.bind(this)); 4192 4193 return this.data.updates; 4194 }, 4195 getAttributes: function() { 4196 if (!this.attributesElements.length) return {}; 4197 4198 const cb = function(acc, item) { 4199 const attribute = this._getAttribute(item); 4200 if (!attribute.key) return acc; 4201 if (item.type === 'checkbox' && !item.checked) return acc; 4202 4203 acc[attribute.key] = attribute.value; 4204 return acc; 4205 }; 4206 4207 this.data.attributes = this.attributesElements.reduce(cb.bind(this), {}); 4208 return this.data.attributes; 4209 }, 4210 getCurrency: function() { 4211 if (!this.currencyElement) return this.data.currency; 4212 this.data.currency = this.currencyElement.value; 4213 return this.data.currency; 4214 }, 4215 getNote: function() { 4216 if (!this.noteElement) return ''; 4217 this.data.note = this.noteElement.value; 4218 return this.data.note; 4219 } 4220}; 4221const UpdaterPrecheckout = { 4222 acceptAddOffer: function(data) { 4223 return this.updateCart().then(this.addToCart.bind(this, data)); 4224 }, 4225 acceptUpgradeOffer: function(...params) { 4226 try { 4227 return this._vintageUpgrade(...params); 4228 } catch (err) { 4229 console.log('os2 used'); 4230 return this._os2Upgrade(...params); 4231 } 4232 }, 4233 _os2Upgrade: function(addData, cartItem, cartItemLine) { 4234 const getChangeData = (cart, lineItem, line) => { 4235 const item = cart.items.find(({ key }) => key === lineItem.key); 4236 if (!item) return null; 4237 return { line, quantity: item.quantity - 1 }; 4238 }; 4239 4240 const changeCart = (...params) => { 4241 const changeData = getChangeData(...params); 4242 return changeData && !OCUIncart._is_product_action && this.changeCart(changeData); 4243 }; 4244
4245 return this.updateCart(new FormData(this.form)) 4246 .then((cart) => changeCart(cart.data, cartItem, cartItemLine)) 4247 .then(() => this.addToCart(addData)) 4248 .catch((err) => console.log(err)); 4249 }, 4250 _vintageUpgrade: function(addData, cartItem, cartItemLine) { 4251 const data = this._getUpgradeOfferData(cartItem, cartItemLine); 4252 const changeData = Object.assign({}, data.changeData); 4253 delete changeData.__line; 4254 4255 return this.updateCart(data, 'upgrade') 4256 .then(() => OCUIncart._is_product_action 4257 ? this.addToCart(addData) 4258 : this.changeCart(changeData).then(this.addToCart.bind(this, addData))); 4259 }, 4260 _getUpgradeOfferData: function(cartItem, cartItemLine) { 4261 const udpateData = Object.assign({}, this.payload); 4262 const lineItemByKey = this.data.lineItems.find(function(item) { 4263 return item.id === cartItem.key; 4264 }); 4265 const lineItemById = this.data.lineItems.find(function(item) { 4266 return item.__variantId === cartItem.id; 4267 }); 4268 const lineItemByLine = this.data.lineItems.find(function(item) { 4269 return item.line === cartItemLine; 4270 }); 4271 const lineItem = lineItemByKey || lineItemById || lineItemByLine; 4272 const quantity = lineItem.quantity ? lineItem.quantity - 1 : 0; 4273 const changeData = { 4274 // __line: cartItemLine, 4275 // id: cartItem.key, 4276 line: cartItemLine, 4277 quantity: quantity 4278 }; 4279 4280 delete udpateData.updates[cartItem.id]; 4281 4282 return { 4283 updateData: udpateData, 4284 changeData: changeData 4285 }; 4286 } 4287}; 4288const UpdaterElements = { 4289 get forms() { 4290 const forms = document.querySelectorAll(this.selectors.form); 4291 const visibleForms = this.arrayFrom(forms).filter(function(form) { 4292 return form.offsetHeight || this._isVisible(form); 4293 }.bind(this)); 4294 4295 return visibleForms; 4296 }, 4297 get form() { 4298 const isNotePresent = this.forms.some(function(e) { 4299 return e.note && e.note.value; 4300 }); 4301 const isValidAction = function(form) { 4302 return !/add|change|update/.test(form.action); 4303 } 4304 const isValidForm = function(form) { 4305 const parentCondition = !!form.closest('.cv_outer_cart_drawer'); 4306 const inputCondition = !!form.querySelector('[id="pro_quantity"]'); 4307 4308 return parentCondition && inputCondition 4309 } 4310 const filteredForm = this.forms.find(function(form) { 4311 return ( 4312 isValidAction(form) && 4313 form.querySelector(this.selectors.updates) && 4314 (isNotePresent ? form.note && form.note.value : true) && 4315 !isValidForm(form) 4316 ); 4317 }.bind(this)); 4318 4319 return filteredForm; 4320 }, 4321 get updateElements() { 4322 const arr = this.arrayFrom(this.form.querySelectorAll(this.selectors.updates)); 4323 4324 return arr 4325 .filter(function(item) { 4326 return item && !item.disabled && !item.dataset.removedItemRow; 4327 }) 4328 .map(function(item) { 4329 const child = item.querySelector('input'); 4330 return child ? child : item; 4331 }); 4332 }, 4333 get attributesElements() { 4334 const nodeList = this.form.querySelectorAll(this.selectors.attributes); 4335 return this.arrayFrom(nodeList); 4336 }, 4337 get noteElement() { 4338 return this.form.querySelector(this.selectors.note); 4339 }, 4340 get currencyElement() { 4341 return document.querySelector(this.selectors.currency) || this._geolocationElement; 4342 }, 4343 get _geolocationElement() { 4344 const geoElements = document.querySelectorAll(this.selectors.localization); 4345 const visibleLocalizationForm = this.arrayFrom(geoElements).find(e => e.offsetHeight || this._isVisible(e)); 4346 return visibleLocalizationForm && visibleLocalizationForm.querySelector(this.selectors.geolocation_currency); 4347 } 4348}; 4349const UpdaterHelpers = { 4350 resolve: function(res) { 4351 return new Promise(function(resolve) { resolve(res); }); 4352 }, 4353 arrayFrom: function(nodeList) { 4354 if (!(nodeList instanceof NodeList)) nodeList = [nodeList]; 4355 return Array.prototype.slice.call(nodeList); 4356 }, 4357 _getLine: function(item) { 4358 return +( 4359 item.dataset.quantityItem || 4360 item.dataset.lineId || 4361 item.dataset.line || 4362 item.closest('[data-line]') && item.closest('[data-line]').dataset.line); 4363 }, 4364 _getKey: function(item) { 4365 const match = this.regs.key.exec( 4366 item.dataset.id || 4367 item.dataset.key || 4368 item.id || 4369 this._getClosestKey(item) 4370 ); 4371 return match && match[1].split('_')[0]; 4372 }, 4373 _getId: function(item) { 4374 const match = this.regs.id.exec( 4375 item.dataset.variant || 4376 item.dataset.id || 4377 item.dataset.key || 4378 item.id || 4379 this._getClosestKey(item) 4380 ); 4381 return match && +match[1]; 4382 }, 4383 _saveSameId: function(id) { 4384 delete this.data.updates[id]; 4385 this.data.sameIds.push(id); 4386 }, 4387 _saveLineItem: function(id, key, line, quantity) { 4388 const lineItem = { 4389 __variantId: id, 4390 quantity: quantity, 4391 }; 4392 4393 if (line) lineItem.line = line; 4394 else if (key) lineItem.id = key; 4395 4396 this.data.lineItems.push(lineItem); 4397 }, 4398 _saveChanges: function() { 4399 this.data.changes = this.data.lineItems.filter(function(item) { 4400 return ~this.data.sameIds.indexOf(item.__variantId); 4401 }.bind(this)); 4402 }, 4403 _saveUpdates: function(id, quantity) { 4404 this.data.updates[id] = quantity; 4405 }, 4406 _getAttribute: function(item) { 4407 const match = this.regs.attributes.exec(item.name); 4408 if (!match) return {}; 4409 return { key: match[1], value: item.value }; 4410 }, 4411 _isVisible: function(el) { 4412 const styles = window.getComputedStyle(el); 4413 return styles.display === 'block' && styles.visibility === 'visible'; 4414 }, 4415 get needCurrencyUpdate() { 4416 return this.currencyElement && this.currencyElement.value !== this.data.currency; 4417 }, 4418 _getClosestKey: function(item) { 4419 const closestKey = item.closest(this.selectors.cartItemKey);
4420 if (!closestKey) return; 4421 const cartItemKeys = ['cartItemKey', 'cartItem', 'variant']; 4422 return closestKey.dataset[Object.keys(closestKey.dataset).find(function(key) { 4423 return cartItemKeys.includes(key) 4424 })]; 4425 }, 4426 _restoreXMLHttp: function() { 4427 try { 4428 XMLHttpRequest.prototype.open = openReplacement; 4429 XMLHttpRequest.prototype.send = originSend; 4430 } catch (error) { 4431 console.log(error); 4432 } 4433 } 4434}; 4435 4436[UpdaterRequests, UpdaterPayload, UpdaterPrecheckout, UpdaterElements, UpdaterHelpers] 4437.forEach(function(module) { 4438 Updater.prototype = Object[appendChain](Updater.prototype, module); 4439}); 4440 4441function Cart() { 4442 var self = this; 4443 4444 this.add = function(form, button, data) { 4445 if (form) { 4446 var noId = function(serialized) { return !/id/.test(serialized); }; 4447 4448 data = self.serialize(form); 4449 4450 if (noId(data)) { 4451 const customForm = document.querySelector('#AddToCartForm'); 4452 if (customForm )data = self.serialize(customForm); 4453 } 4454 4455 if (noId(data)) { 4456 var idOnBtn = document.querySelector('[data-cart-add]'); 4457 if (idOnBtn) data = 'id=' + idOnBtn.dataset.cartAdd; 4458 } 4459 } 4460 4461 var options = { 4462 method: 'post', 4463 url: '/cart/add.js', 4464 data: data 4465 }; 4466 4467 return ajax.request(options); 4468 }; 4469 4470 this.bulkAdd = function(data) { 4471 var options = { 4472 method: 'post', 4473 url: '/cart/update.js', 4474 data: data 4475 }; 4476 4477 return ajax.request(options) 4478 }; 4479 4480 this.get = function(query) { 4481 const validateQuery = typeof query === 'string' ? query : ''; 4482 4483 var options = { 4484 method: 'get', 4485 url: '/cart.js' + validateQuery 4486 }; 4487 4488 return ajax.request(options); 4489 }; 4490 4491 this.update = function(res) { 4492 return new Updater(res).init(); 4493 }; 4494 4495 this.save = function(res) { 4496 // if (self.needCurrencyUpdate()) self.updateCurrency(); 4497 self.disableMultiUpdate(res.data.cart.items); 4498 self.saveTags(res); 4499 4500 // if (!lqd.is_precheckout && lqd.is_ajax_precheckout && !utils.cookie.get('ocu_countdown_start')) { 4501 // return window.OCUPrecheckout({ utils: utils }); 4502 // } 4503 4504 lqd.cart_products_json = res.data.cart_products; 4505 lqd.cart_collections_json = res.data.cart_collections; 4506 lqd.subscription_products_json = res.data.subscription_products; 4507 lqd.subscription_variants_json = res.data.subscription_variants; 4508 4509 return self.resolve(res); 4510 }; 4511 4512 this.modify = function(res) { 4513 const cart = res.cart || res.data.cart || res.data; 4514 4515 // res.data = self.helpers.filterFields(cart); 4516 res.data = cart; 4517 res.data.subscription_products = lqd.subscription_products_json; 4518 res.data.cart_collections = lqd.cart_collections_json; 4519 res.data.cart_products = lqd.cart_products_json.filter(function(item) { return !item.error; }); 4520 res.data.customer_id = lqd.customer_id; 4521 res = self.helpers.addBuyXGetYDiscount(res); 4522 if (cart.cart_level_discount_applications) res.data.automatic_discount = cart.cart_level_discount_applications[0]; 4523 4524 return res; 4525 }; 4526 4527 this.serialize = function(form) { 4528 return /trident|edge/i.test(navigator.userAgent) 4529 ? utils.serializeFormEdge(form) 4530 : utils.serializeForm(form); 4531 }; 4532 4533 this.attrubutes = function(attr) { 4534 const options = { 4535 method: 'post', 4536 url: '/cart/update.js', 4537 data: { attributes: attr } 4538 }; 4539 4540 ajax.request(options); 4541 }; 4542 4543 this.prepareUpdate = function(items) { 4544 var handle = function(acc, item) { 4545 var id = item.id.replace(/(\w+_)(\d+)(:\w+)/, '$2'); 4546 acc[id] = item.value; 4547 4548 return acc; 4549 }; 4550 4551 items = items.length ? items : [items]; 4552 4553 var updates = Array.prototype.reduce.call(items, handle, {}); 4554 4555 return { 4556 updates: updates, 4557 currency: lqd.shop_currency 4558 }; 4559 }; 4560 4561 this.saveTags = function(res) { 4562 var tags = res.data.cart_products.reduce(function(acc, product) { 4563 return acc.concat(product.tags); 4564 }, []); 4565 4566 utils.store.set('tags', tags); 4567 }; 4568 4569 this.disableMultiUpdate = function(lineItems) { 4570 const inputs = document.querySelectorAll('input[name="updates[]"]'); 4571 const offer = utils.store.get('offer'); 4572 const isAdd = offer === 'add'; 4573 4574 if (isAdd && lineItems.length === inputs.length + 1) return; 4575 if (!isAdd && lineItems.length === inputs.length) return; 4576 4577 Array.prototype.forEach.call(inputs, function(input) { 4578 if (!input.offsetHeight) input.disabled = true; 4579 }); 4580 }; 4581 4582 this.state = function(e) { 4583 if (e.target.name !== 'updates[]') return; 4584 utils.store.set('cartChanged', true); 4585 }; 4586 4587 this.resolve = function(res) { 4588 return new Promise(function(resolve) { resolve(res); }); 4589 }; 4590 4591 this.needCurrencyUpdate = function() { 4592 return document.querySelector('[name="currency"]'); 4593 }; 4594 4595 this.updateCurrency = function() { 4596 var options = { 4597 method: 'post', 4598 url: '/cart/update.js', 4599 data: { currency: lqd.shop_currency } 4600 }; 4601 4602 ajax.request(options).then(function() { utils.store.set('cartChanged', false); }); 4603 }; 4604 4605 this.isNotePresent = function(forms) { 4606 return Array.prototype.some.call(forms, function(e) { return e.note && e.note.value }); 4607 }; 4608 4609 this.filterFormsIfNotes = function(forms, isNotePresent) { 4610 var handle = function(form) { 4611 return form['updates[]'] && (isNotePresent ? form.note && form.note.value : true); 4612 }; 4613 4614 return Array.prototype.filter.call(forms, handle)[0]; 4615 }; 4616 4617 this.error = function(e) { 4618 var desc = e.data.description; 4619 4620 if (e.status !== 422) return alert(desc || 'Something went wrong. Please try again.'); 4621 4622 var allInCart = /all/i.test(desc); 4623 var soldOut = /sold out/i.test(desc); 4624 4625 alert(desc); 4626 4627 if (allInCart) return self.checkout({ redirect: true }); 4628 if (soldOut) location.reload(); 4629 }; 4630}; 4631 4632var SyncQtyFields = { 4633 init: function() { 4634 // if (!lqd.upsell_cart_include_upsells) return; 4635 if (!this.fields.length) return; 4636 this.listenEvents(); 4637 }, 4638 get fields() { 4639 return document.querySelectorAll('[data-quantity-item]'); 4640 }, 4641 getFiledsForUpdate: function(target) { 4642 var id = this.getId(target); 4643 var elems = document.querySelectorAll('[data-quantity-item="' + id + '"]'); 4644 var arr = this.getArray(elems); 4645 4646 return arr; 4647 }, 4648 getId: function(target) { 4649 return target.dataset.quantityItem; 4650 }, 4651 getArray: function(nodeList) { 4652 return Array.prototype.slice.call(nodeList); 4653 }, 4654 update: function(target, value) { 4655 this.getFiledsForUpdate(target).forEach(function(field) { 4656 field.value = value; 4657 }); 4658 }, 4659 handle: function(e) { 4660 this.update(e.target, e.target.value); 4661 }, 4662 listenEvents: function(e) {
4663 this.getArray(this.fields).forEach(function(field) { 4664 field.addEventListener('input', this.handle.bind(this)); 4665 }.bind(this)); 4666 } 4667}.init(); 4668 4669function SkipCart() { 4670 var self = this; 4671 4672 // if (lqd.themePopup && lqd.isThemePopupTag) return; 4673 4674 this.init = function() { 4675 const isSkipCartPage = /index|collection|product/.test(lqd.template_name); 4676 lqd.skip_cart && isSkipCartPage && setTimeout(self.prepare); 4677 }; 4678 4679 this.prepare = function() { 4680 // TODO: move selectors to store 4681 const forEach = Array.prototype.forEach; 4682 const getArr = function(nodeList) { return Array.prototype.slice.call(nodeList); }; 4683 const fakeForms = getArr(document.querySelectorAll('.product-form__cart')); 4684 let forms = getArr(document.querySelectorAll('form[action*="cart"], [data-zp-add-to-cart-form], #AddToCartForm1')); 4685 forms = forms.filter(function(form) { return form.dataset.zpLinkType !== 'zipify_page'; }); 4686 4687 if (fakeForms.length) forms = forms.concat(fakeForms); 4688 4689 forms.forEach(function(form) { 4690 const buttons = getArr(form.querySelectorAll('*[type="submit"], input[type="button"], button')); 4691 4692 buttons.forEach(function(button) { 4693 if (button.dataset.qty || button.dataset.quantityAction) return; 4694 if (button.dataset.pfType && button.dataset.pfType !== 'ProductATC') return; 4695 if (button.getAttribute('aria-controls')) return; 4696 if (/plus|minus|zpa-quantity/.test(button.className)) return; 4697 if (/error_txt|quantity|sold-out/i.test(button.id)) return; 4698 if (/amount|review/i.test(button.value)) return; 4699 4700 button.removeAttribute('onclick'); 4701 button.dataset.skipCart = true; 4702 button.type = 'button'; 4703 }); 4704 }); 4705 4706 self.listenEvents(forms); 4707 }; 4708 4709 this.handle = function(e) { 4710 const zpIntegration = self.handleZPEvent(e); 4711 if (zpIntegration) return; 4712 4713 if (!self.popupDispatcher.target) self.popupDispatcher.target = e.target; 4714 if (self.popupDispatcher.isProductAction && !self.popupDispatcher.secondAttempt) return; 4715 let button = e.target.dataset.skipCart ? e.target : null; 4716 if (!button) button = e.target.closest('[data-skip-cart]'); 4717 if (!button) return; 4718 4719 button.disabled = true; 4720 4721 e.stopImmediatePropagation(); 4722 e.stopPropagation(); 4723 e.preventDefault(); 4724 4725 let form = button.closest('form'); 4726 if (!form) form = document.querySelector('form[action="/cart/add"]'); 4727 4728 self.cart.add(form, button) 4729 .then(self.cart.get) 4730 .then(self.onSuccess) 4731 .catch(self.onError.bind(null, form)); 4732 }; 4733 4734 this.onSuccess = function(res) { 4735 utils.store.set('cart_token', res.data.token); 4736 if (self.helpers.isSubscriptionProductInCart(res.data)) return location = '/cart'; 4737 self.checkout({ redirect: true }); 4738 }; 4739 4740 this.onError = function(form) { 4741 form.submit(); 4742 }; 4743 4744 this.listenEvents = function(forms) { 4745 document.addEventListener('click', self.handle, true); 4746 }; 4747 4748 this.handleZPEvent = e => { 4749 const getZPType = el => el.dataset.zpAddToCart !== undefined; 4750 const target = e.target; 4751 const button = getZPType(target) ? target : target.closest('[data-zp-add-to-cart]'); 4752 4753 if ((button && e.isTrusted) && getZPType(button)) { 4754 button.type = 'submit'; 4755 button.click(); 4756 return true; 4757 } 4758 return false; 4759 } 4760 4761 this.init(); 4762} 4763 4764function BuyNow(e) { 4765 const self = this; 4766 4767 if (lqd.themePopup && lqd.isThemePopupTag) return; 4768 if (!e.isTrusted) return; 4769 4770 const form = e.target.closest('form[action="/cart/add"]') || document.querySelector('form[action="/cart/add"]'); 4771 if (!form) return; 4772 4773 e.stopImmediatePropagation(); 4774 e.preventDefault(); 4775 e.target.disabled = true; 4776 4777 const cb = function() { self.checkout({ redirect: true }) }; 4778 const onError = function(form) { form.submit() }; 4779
4780 self.cart.add(form, e.target).then(cb).catch(onError.bind(null, form)); 4781} 4782 4783 4784function PublicMethod() { 4785 const self = this; 4786 const proto = self.__proto__.__proto__; 4787 const integrations = OCUIncart.integrations(); 4788 4789 this.init = function() { 4790 window.oneClickUpsellGetCheckoutUrl = proto.checkout = self.create; 4791 proto.verify = self._verify.bind(this); 4792 }; 4793 4794 this.create = function(config) { 4795 if (config === 'skip_cart') { 4796 return new Promise(function(resolve) { resolve(lqd.skip_cart); }); 4797 } 4798 4799 const hasCookie = utils.cookie.get('ocu_progress_bar') && utils.cookie.get('ocu_progress_bar').length; 4800 const hasUpsellsInCart = !OCUIncart.hasOfferInCart && hasCookie; 4801 const headerType = utils.cookie.get('ocu_header'); 4802 if ((hasUpsellsInCart || config.redirect_url) && !headerType) return self._checkout(config); 4803 4804 return self._verify() 4805 .then(function(response) { 4806 self._checkout(Object.assign(config, { 4807 redirect_url: response.data.redirect_url || lqd.checkoutUrl 4808 })); 4809 }) 4810 .catch(function() { self._checkout(config); }); 4811 4812 }; 4813 4814 this.prepare = function(config) { 4815 const params = utils.store.get('params'); 4816 self.config = config || {}; 4817 self.config.incarts && utils.store.set('incarts', self.config.incarts); 4818 self.config.path && utils.store.set('amazonPath', self.config.path); 4819 self.config.button && self.helpers.payPal(self.config.button); 4820 self.integrations.discounts(); 4821 self.params(); 4822 self.handleDeclineOffer(config); 4823 4824 if (integrations.tidio.present) integrations.tidio.track(); 4825 4826 params.str = params.str ? '?' + params.str : ''; 4827 self.config.checkoutUrl = (self.config.redirect_url || lqd.checkoutUrl) + params.str; 4828 4829 utils.store.set('params', params); 4830 }; 4831 4832 this.redirect = function(result) { 4833 const recharge = self.integrations.recharge; 4834 const bundlerBuilder = integrations.bundlerBuilder; 4835 if (bundlerBuilder.present) return bundlerBuilder.submit(); 4836 if (recharge.isSubscription(lqd)) return recharge.redirect(null, null, result.checkout_url); 4837 if (result.destination === 'checkout' || lqd.skip_cart) return location.assign(result.checkout_url); 4838 location.assign('/' + result.destination); 4839 } 4840 4841 this._checkout = function(config) { 4842 self.prepare(config); 4843 4844 const result = { 4845 status: false, 4846 checkout_url: self.config.checkoutUrl, 4847 skip_cart: lqd.skip_cart, 4848 get redirect_url() { 4849 return this.checkout_url; 4850 }, 4851 destination: proto.popupDispatcher.destination 4852 }; 4853 4854 4855 if (self.config.redirect) return this.redirect(result); 4856 return new Promise(function(resolve) { resolve(result) }); 4857 } 4858 4859 this._verify = function() { 4860 const url = '/pre_purchase/v1/draft_orders/verify'; 4861 const endpoint = window.OCUIncart && OCUIncart.appEndpoint; 4862 const headers = { 4863 'Content-Type': 'application/json', 4864 'Shop-Domain': lqd.permanent_domain 4865 }; 4866 return axios.post(endpoint + url, this._verifyPayload(), { headers: headers }); 4867 } 4868 4869 this._verifyPayload = function() { 4870 const cartToken = utils.cookie.get('cart'); 4871 let items = self.helpers.getCartItems(OCUIncart.cart_items); 4872 items = self.integrations.zipifyPages.appendZipifyPagesProduct(items.line_items); 4873 const payload = { checkout: { line_items: items } }; 4874 const threshold = +utils.cookie.get('ocu_progress_bar'); 4875 const header = OCUIncart.header_type || utils.cookie.get('ocu_header'); 4876 4877 payload.checkout = Object.assign(payload.checkout, { 4878 cart_token: cartToken, 4879 verify_draft_order: true, 4880 note: lqd.cart.note, 4881 attributes: lqd.cart.attributes, 4882 currency_rate: (window.Shopify && Shopify.currency && +Shopify.currency.rate) || 1, 4883 threshold: threshold, 4884 header_type: header 4885 }); 4886
4887 payload.currency = this.helpers.currencyRate(); 4888 4889 return payload; 4890 } 4891 4892 this.params = function() { 4893 const params = utils.store.get('params'); 4894 const zapiet = integrations.zapiet; 4895 const simpleInStorePickup = integrations.simpleInStorePickup; 4896 const weglot = integrations.weglot; 4897 4898 if (zapiet.present) self.config.params = zapiet.merge(self.config.params); 4899 if (simpleInStorePickup.present) self.config.params = simpleInStorePickup.merge(self.config.params); 4900 if (weglot.present) self.config.params = weglot.merge(self.config.params); 4901 4902 (self.config.params || []) 4903 .concat(self.gaLinker()) 4904 .concat({t: +Date.now()}) 4905 .map(function(param) { 4906 return Object.keys(param).map(function(key) { 4907 const value = key === 'discount' || zapiet.present 4908 ? param[key] 4909 : encodeURIComponent(param[key]); 4910 4911 return { 4912 name: encodeURIComponent(key), 4913 value: value 4914 }; 4915 })[0]; 4916 }) 4917 .forEach(function(param) { 4918 params.arr.push(param); 4919 }); 4920 4921 utils.store.set('params', params); 4922 self.helpers.params(); 4923 }; 4924 4925 this.handleDeclineOffer = function(config) { 4926 if (!config || config && !config.incarts) return; 4927 4928 const isDeclined = Object.keys(config.incarts).some(function(key) { 4929 return config.incarts[key].status === 'declined'; 4930 }); 4931 4932 utils.store.set('offerDeclined', isDeclined); 4933 }; 4934 4935 this.gaLinker = function() { 4936 try { 4937 const linkerParam = ga.getAll()[0].get('linkerParam'); 4938 const keyValue = linkerParam.split('='); 4939 const param = {}; 4940 return ((param[keyValue[0]] = keyValue[1]), [param]); 4941 } catch (e) { 4942 return []; 4943 } 4944 }; 4945 4946 this.init(); 4947} 4948 4949function Helpers() { 4950 var self = this; 4951 4952 this.disableButtons = function() { 4953 utils.store.set('checkoutButtonState', false); 4954 }; 4955 4956 this.params = function() { 4957 var params = utils.store.get('params'); 4958 4959 for (var i = 0; params.arr.length > i; i++) { 4960 var reg = new RegExp(params.arr[i].name); 4961 if (reg.test(params.str)) continue; 4962 4963 params.str += params.arr[i].name + '=' + params.arr[i].value; 4964 if (i + 1 !== params.arr.length) params.str += '&'; 4965 } 4966 4967 utils.store.set('params', params); 4968 }; 4969 4970 this.redirect = function(res) { 4971 if (res.redirect_url) return location.assign(res.redirect_url); 4972 if (!lqd.subscription_products_size) return location.assign(res.checkout_url); 4973 4974 const form = document.querySelector('form[action="/checkout"], form[action="/cart"]'); 4975 if (!form) return self.checkout({ redirect: true }); 4976 4977 form.submit(); 4978 }; 4979 4980 this.simulateSubmit = function() { 4981 var checkoutButtons = document.querySelectorAll(self.ocuSelectors); 4982 if (!checkoutButtons.length) return location = '/cart'; 4983 4984 var last = Array.prototype.slice.call(checkoutButtons, -1)[0]; 4985 last.dispatchEvent(new MouseEvent('click')); 4986 }; 4987 4988 this.simulateDocumentClick = function() { 4989 var event = new Event('click'); 4990 var target = document.createElement('button'); 4991 4992 target.type = 'submit'; 4993 target.name = 'checkout'; 4994 Object.defineProperty(event, 'target', { value: target }); 4995 4996 document.dispatchEvent(event); 4997 }; 4998 4999 this.preventMouseDown = function(e) { 5000 e.preventDefault(); 5001 e.stopPropagation(); 5002 // e.stopImmediatePropagation(); 5003 }; 5004 5005 this.payPal = function(el) { 5006 if (el.name !== 'goto_pp' || el.value !== 'paypal_express') return; 5007 5008 var params = utils.store.get('params'); 5009 5010 params.arr.push({ 5011 name: el.name, 5012 value: el.value 5013 }); 5014 5015 utils.store.set('requirePayPal', true); 5016 utils.store.set('params', params); 5017 }; 5018 5019 this.filterFields = function(cart) { 5020 var needed_cart_fileds = utils.store.get('neededCartFileds'); 5021 var needed_cart_items_fields = utils.store.get('neededCartItemsFields'); 5022 5023 cart = utils.filterObject(cart, needed_cart_fileds); 5024 5025 cart.items = cart.items.map(function(item) { 5026 return utils.filterObject(item, needed_cart_items_fields); 5027 }); 5028 5029 return cart; 5030 }; 5031 5032 this.filterCartItemFields = function(items) { 5033 return items.map(function(item) { 5034 return Object.keys(item).reduce(function(acc, key) { 5035 if (key === 'product_description') return acc; 5036 acc[key] = item[key]; 5037 return acc; 5038 }, {}); 5039 }); 5040 }; 5041 5042 this.checkSelector = function(target) { 5043 if (target.dataset.ocuCheckout === 'true') return target; 5044 5045 const checkoutButtons = document.querySelectorAll(self.ocuSelectors); 5046 const isInclude = Array.prototype.some.call(checkoutButtons, function(item) { 5047 return item === target; 5048 }); 5049 5050 const isCartContentParent = target.closest('.cart_content') && target.closest('form[action="/checkout"] [type="submit"]'); 5051 const isCartTemplate = lqd.template_name === 'cart' && target.closest('form[action="/cart"] [type="submit"]'); 5052 const isCartAction = target.closest(self.ocuSelectors) || isCartContentParent || isCartTemplate; 5053 const notIncartUpsell = !target.closest('.nudge-offer'); // check if triggered Incart Upsell widget triggered 5054 5055 const addToCartButton = (lqd.template_name === 'product' && !target.closest('form[action$="/cart/add"]')) 5056 && (((target.name === 'add' && target.type === 'submit') ? target : null) 5057 || (target.closest('[name="add"]')) && target.closest('[type="submit"]')); 5058 5059 const parent = !isInclude 5060 && (isCartAction || target.closest('[name="checkout"]')) 5061 || addToCartButton; 5062 5063 if ((isInclude || parent) && notIncartUpsell) return isInclude ? target : parent; 5064 }; 5065 5066 this.checkDirectCheckoutButtons = function(target) { 5067 return /\/checkout/.test(target.onclick && target.onclick.toString()) 5068 }; 5069 5070 this.checkAddToCart = function(target) { 5071 const isTargetSubmit = /submit|add|checkout/.test(target.name) || this.isActionButton(target); 5072 return (isTargetSubmit || this.isBuyNow({target: target})) && target.closest('form[action*="/cart/add"]'); // , form[data-zp-add-to-cart-form] - Pages selector 5073 }; 5074 5075 this.zpPreventRedirect = function(target) { 5076 const condition = target.dataset.type === 'crm_dest' 5077 || target.dataset.zpProductRedirectLink === '' 5078 || target.dataset.zpAddToCart === '' // pages product page and ocu product location integration 5079 || target.closest('[data-type="crm_dest"]') 5080 || target.closest('[data-zp-product-redirect-link]') 5081 || target.closest('[data-zp-add-to-cart]'); 5082 5083 if (condition) return true; 5084 }; 5085 5086 this.isOfferProduct = function() { 5087 return lqd.cart_variants_json.some(function(item) { 5088 return item.properties && item.properties._ocu_offer_id; 5089 }); 5090 }; 5091 5092 this.addBuyXGetYDiscount = function(res) { 5093 var discounts = res.data.items.reduce(function(acc, variant) { 5094 if (!variant.discounts[0]) return acc; 5095 let item = { 5096 item_key: variant.key, 5097 discount: variant.discounts, 5098 }; 5099 if (variant.line_level_discount_allocations[0]) item.discount_data = variant.line_level_discount_allocations; 5100 acc.push(item); 5101 return acc; 5102 }, []); 5103 5104 if (discounts.length) res.data.per_item_discounts = discounts; 5105 return res; 5106 }; 5107 5108 this.isActionButton = function(e) { 5109 const submitSelectors = ['[type="submit"]', '[name="add"]', '[name="checkout"]', '[data-skip-cart]']; 5110 return submitSelectors.reduce(function(acc,select) { 5111 const el = e.closest(select); 5112 if (el) acc = true; 5113 return acc; 5114 }, false); 5115 }; 5116 5117 this.isBuyNow = function(e) { 5118 if (!e) return false;
5119 const selectors = utils.store.get('classList'); 5120 return e.target.classList.contains(selectors.buyNow) && !e.target.classList.contains(selectors.buyNowBranded); 5121 }; 5122 5123 this.getCartItems = function(items) { 5124 const itemProperties = [ 5125 'key', 5126 'properties', 5127 'quantity', 5128 'variant_id', 5129 'product_id', 5130 'price', 5131 'original_price', 5132 'discounted_price', 5133 'line_price', 5134 'original_line_price', 5135 'final_price', 5136 'final_line_price', 5137 'key' 5138 ]; 5139 5140 const prepareItem = function(item) { 5141 return itemProperties.reduce(function(acc, prop) { 5142 acc[prop] = item[prop] || item[prop] === 0 ? item[prop] : {}; 5143 return acc; 5144 }, {}); 5145 }; 5146 5147 return { line_items: items.map(prepareItem) }; 5148 }; 5149 5150 this.isSameCart = function(cart) { 5151 const lastCart = utils.cookie.get('ocu_cart_items'); 5152 const newCartItemsKeys = cart.items.map(item => item.key); 5153 utils.cookie.set('ocu_cart_items', JSON.stringify(newCartItemsKeys)); 5154 5155 if (!lastCart) return false; 5156 5157 const newCartSet = new Set(newCartItemsKeys); 5158 const lastCartSet = new Set(JSON.parse(lastCart)); 5159 5160 return this.areSetsEqual(newCartSet, lastCartSet); 5161 }; 5162 5163 this.isSameCartToken = function(cart) { 5164 return cart.token === utils.cookie.get('ocu_popup_token'); 5165 }; 5166 5167 this.areSetsEqual = function(setA, setB) { 5168 return setA.size === setB.size && Array.from(setA).every(value => setB.has(value)); 5169 }; 5170 5171 this.isSubscriptionProductInCart = function(cart) { 5172 return cart.items.reduce(this.isSubscriptionItem, null); 5173 }; 5174 5175 this.isSubscriptionItem = function(acc, item) { 5176 const properties = utils.store.get('subscriptionProperties'); 5177 let result = acc; 5178 Object.entries(properties).some(function(prop) { 5179 const somePropMatch = prop[1].some(function(field) { 5180 return item.properties && item.properties[field]; 5181 }); 5182 5183 if (somePropMatch && !item.selling_plan_allocation) { 5184 result = prop[0]; 5185 return result 5186 } 5187 5188 return result; 5189 }); 5190 5191 return result; 5192 }; 5193 5194 this.showCheckoutButton = function() { 5195 const config = utils.store.get('checkoutButton'); 5196 const checkoutBtn = document.querySelector(config.selector); 5197 const exemptify = OCUIncart.integrations().exemptify; 5198 5199 if (!checkoutBtn || exemptify.present) return; 5200 5201 const isValidButton = Object.entries(config.excludes).every(function(item) { 5202 return !item[1].test(checkoutBtn[item[0]]); 5203 }); 5204 5205 if (isValidButton && checkoutBtn.style.display === 'none') checkoutBtn.style.display = 'inline-block'; 5206 }; 5207 5208 this.clearFallback = function() { 5209 const fallbackTimeout = utils.store.get('fallback').id; 5210 clearTimeout(fallbackTimeout); 5211 }; 5212 5213 this.beforeCreate = function() { 5214 if (utils.store.get('salesRocketIntegrationApplied')) { 5215 const cartDrawerSalesRocketControl = document.querySelector(utils.store.get('cartDrawerSalesRocketControl').selector); 5216 if (cartDrawerSalesRocketControl) cartDrawerSalesRocketControl.click(); 5217 } 5218 5219 const cartDrawerTimberControl = document.querySelector(utils.store.get('cartDrawerTimberControl').selector); 5220 if (cartDrawerTimberControl) cartDrawerTimberControl.click(); 5221 5222 const cartDrawerControl = document.querySelector(utils.store.get('cartDrawerControl').selector); 5223 if (cartDrawerControl) cartDrawerControl.click(); 5224 5225 const chatButton = document.querySelector(utils.store.get('chatButton').selector); 5226 if (chatButton) chatButton.remove(); 5227 }; 5228 5229 this.isDisabledButton = function(target) { 5230 const button = target.closest('button'); 5231 const entity = target.tagName.toLowerCase() === 'button' ? target : button; 5232 return entity && (entity.disabled || !!entity.ariaDisabled); 5233 }; 5234 5235 this.termsOfServiceConfirmation = function(target) { 5236 const form = target.closest('form[action="/checkout"], form[action="/cart"]'); 5237 const termsCheckbox = form && form.querySelector(utils.store.get('termsOfServiceCheckbox').selector); 5238 return termsCheckbox && !termsCheckbox.checked; 5239 }; 5240 5241 this.isCartPopupRedirectsToCart = function(e) { 5242 if (!e.target.dataset.ocuCheckout) return; 5243 if (lqd.template_name === 'cart') return; 5244 5245 // handle outofthesandbox themes 5246 return Shopify.theme_settings && Shopify.theme_settings.go_to_checkout === false; 5247 }; 5248 5249 this.removeExtraClassList = function(elem) { 5250 if (!elem) return; 5251 5252 const classList = utils.store.get('extraClassListToRemove').join(','); 5253 5254 elem.classList.remove(classList); 5255 }; 5256 5257 this.currencyRate = function() { 5258 return Shopify?.currency || {}; 5259 } 5260} 5261 5262function ApplicationsUtils() { 5263 5264 const Z_INDEX_VALUE = 1000; 5265 5266 const Z_INDEX_ELEMENTS = { 5267 overlay: '.slidecarthq-overlay', 5268 cartDrawer: '[cart-drawer-show], .slidecarthq, #sidebar-cart', 5269 chatWindow: '#chat-window', 5270 chatButton: '#chat-button' 5271 }; 5272 5273 this.beforePrecheckoutPopup = function() { 5274 this.adjustZIndex(); 5275 this.hideSlidecart(); 5276 } 5277 5278 this.adjustZIndex = function() { 5279 Object 5280 .values(Z_INDEX_ELEMENTS) 5281 .forEach(function(selector) { 5282 const element = document.querySelector(selector); 5283 if (element) element.style.zIndex = Z_INDEX_VALUE; 5284 }); 5285 }, 5286 5287 this.hideSlidecart = function() { 5288 if (this.isMobile()) { 5289 if (window.SLIDECART_CLOSE) SLIDECART_CLOSE(); 5290 } 5291 } 5292 5293 this.isMobile = function() { 5294 return /Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Mobile|Opera Mini/i.test(navigator.userAgent); 5295 } 5296} 5297 5298[Helpers, Integrations, Cart, PublicMethod, SkipCart, BuyNow].forEac
5298h(function(item) { 5299 Object.setPrototypeOf(item.prototype, Application.prototype); 5300}); 5301 5302const script = document.createElement('script'); 5303document.head.appendChild(script); 5304script.src = ocuCdn + '/vendor/axios.min.js'; 5305 5306function initApplication() { 5307 const application = new Application(); 5308 OCUApi.initialize({ context: application }); 5309 return application; 5310} 5311 5312script.onload = function() { 5313 if (window.axios) return initApplication() 5314 if (window.require) { 5315 require([ocuCdn + '/vendor/axios.min.js'], function(e) { 5316 window.axios = e; 5317 initApplication() 5318 }); 5319 } 5320}; 5321 5322function requireOptionSelectors() { 5323 if (window.Shopify && Shopify.OptionSelectors) return; 5324 5325 const s = document.createElement('script'); 5326 document.head.appendChild(s); 5327 s.src = OCUIncart.option_selection; 5328 s.onload = function() { 5329 window.Shopify = window.Shopify || {}; 5330 Shopify.money_format = OCUIncart.money_format; 5331 }; 5332} 5333 5334function Store() { 5335 var _private = { 5336 store: { 5337 ocuSelectors: '[name="checkout"], [href^="/checkout"], form[action^="/checkout"] [type="submit"], form[action$="/cart"] [type="submit"], #checkout, [name="goto_pp"], .checkout_button, .checkout-button, [value="Checkout"], .cart-button-checkout, #btn-checkout, .btn__checkout.js-
5337prefill-url, form[action^="/checkout"] .chk_out, form[action^="/cart"] .chk_out, form[action^="/cart"] .cart__checkout, form[action^="/cart"] .ajaxcart__checkout.ajax-cart__button, form[action^="/cart"] .btn-checkout, #rebuy-cart .rebuy-cart__flyout-footer .rebuy-button, #slidedown-cart .actions .btn.btn-checkout', 5338 addToCartButton: '[name="add"]', 5339 proxy: '/apps/secure-checkout', 5340 lqdCart: '/upsellapp_cart', 5341 checkUpsells: '/check_upsells', 5342 excludedRequiredFormIds: ['cbb-shipping-rates-calculator-form'], 5343 neededCartFileds: ['token','note','attributes','items', 'currency', 'cart_level_discount_applications'], 5344 neededCartItemsFields: ['product_id','variant_id','quantity','grams','price','line_price','title','properties','vendor','sku','key'], 5345 permalink: /cart\/(\d+:\d+(?:,\d+:\d+)*)(?:[?&]discount=([-\w! %205]+))*/, 5346 subscriptionProperties: { 5347 recharge: ['subscription_id', 'shipping_interval_frequency', 'shipping_interval_unit_type'], 5348 bold: ['frequency_num', 'frequency_type'] 5349 }, 5350 isAddToCartClicked: false, 5351 cartChanged: false, 5352 cartUpdated: false, 5353 requirePayPal: false, 5354 checkoutButtonState: false, 5355 submitted: false, 5356 amazonPayInitiated: false, 5357 salesRocketIntegrationApplied: false, 5358 redirect_url: null, 5359 offer: null, 5360 offerDeclined: false, 5361 incarts: {}, 5362 tags: [], 5363 isPermalinkHandling: false, 5364 isTargetBuyNow: false, 5365 cart_token: null, 5366 classList: { 5367 buyNow: 'shopify-payment-button__button', 5368 buyNowBranded: 'shopify-payment-button__button--branded' 5369 }, 5370 params: { 5371 str: '', 5372 arr: [] 5373 }, 5374 fallback: { 5375 timeout: 15000, 5376 id: 0 5377 }, 5378 XHR: { 5379 send: XMLHttpRequest.prototype.send 5380 }, 5381 checkoutButton: { 5382 selector: '[data-ocu-checkout]', 5383 excludes: { 5384 tagName: /^P$/, 5385 id: /^ProceedToCheckout(Top|Bottom)$/, 5386 } 5387 }, 5388 cartDrawerControl: { 5389 selector: '[data-action="close-drawer"][data-drawer-id="sidebar-cart"], #CartDrawer .drawer__close-button, #CartDrawer .js-drawer-close' 5390 }, 5391 cartDrawerSalesRocketControl: { 5392 selector: '#cartSlider-shopper .ws-cs-close', 5393 }, 5394 cartDrawerTimberControl: { 5395 selector: '#CartDrawer .js-drawer-close button', 5396 }, 5397 chatButton: { 5398 selector: '#shopify-chat' 5399 }, 5400 termsOfServiceCheckbox: { 5401 selector: '.cart__terms-checkbox' 5402 }, 5403 productLocation: { 5404 variant_id: null, 5405 product_id: null, 5406 }, 5407 extraClassListToRemove: [ 5408 'hulkapps_submit_cart' 5409 ], 5410 pagesIntegrationData: {} 5411 }, 5412 event: function(e) { 5413 return new Event('store:' + e); 5414 }, 5415 emit: function(e) { 5416 document.dispatchEvent(this.event(e)); 5417 } 5418 }; 5419 5420 this.get = function(key) { 5421 return _private.store[key]; 5422 }; 5423 5424 this.set = function(key, val) { 5425 if (!_private.store.hasOwnProperty(key)) return console.error('Unavailable key! ', key); 5426 _private.emit(key); 5427 _private.store[key] = val; 5428 }; 5429 5430 this.listen = function(e) { 5431 return new Promise(function(resolve) { 5432 document.addEventListener('store:' + e, resolve); 5433 }); 5434 }; 5435} 5436 5437}(); 5438</script>
5438 5439 5440 5441 5442<style> #header .top_bar,.secondary_logo--true .top-bar {display: none !important;} .img.footer-logo {max-width: 220px !important;} </style>
5443<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
5443 5444</body> 5445</html> 5446<!-- Begin Shopify-Afterpay JavaScript Snippet (v1.0.1) -->
5447<script type="text/javascript"> 5448// Editable fields: 5449var afterpay_min = 0.04; // As per your Afterpay contract. 5450var afterpay_max = 1000.00; // As per your Afterpay contract. 5451var afterpay_logo_theme = 'colour'; // Can be 'colour', 'black' or 'white'. 5452 5453// Overrides: 5454// var afterpay_product_selector = '#product-price-selector'; 5455// var afterpay_cart_integration_enabled = true; 5456// var afterpay_cart_static_selector = '#cart-subtotal-selector'; 5457 5458// Non-editable fields: 5459var afterpay_shop_currency = "USD"; 5460var afterpay_shop_money_format = "$ {{amount}}"; 5461var afterpay_shop_permanent_domain = "k-deer.myshopify.com"; 5462var afterpay_theme_name = "Closing"; 5463var afterpay_product = null; 5464var afterpay_current_variant = null; 5465var afterpay_cart_total_price = 0; 5466var afterpay_js_snippet_version = '1.0.1'; 5467</script>
vendor: 1 bytes, line 5467
5467
5468<script type="text/javascript" src="https://static.afterpay.com/shopify-afterpay-javascript.js"></script>
5468 5469<!-- End Shopify-Afterpay JavaScript Snippet (v1.0.1) --> 5470 5471 5472 5473 5474
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.