window.Shopify = window.Shopify || {theme: {id: 172276023319, role: 'main' } }; window._template = { directory: "", name: "page", suffix: "podcast.e25-kb3" }; window._cart_items_count = 0; if (window.location.pathname == '/pages/my-subscriptions-portal') { window.location.href = '/apps/customers/portal' } Wütende Hühnerhörer – Raycon Wütende Hühnerhörer – Raycon @font-face { font-family: 'satoshi'; src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Regular.woff2?v=55866631079758551531770244092') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'satoshi'; src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Medium.woff2?v=163508475008158981711770244092') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'satoshi'; src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Bold.woff2?v=26003189210104420591770244092') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Satoshi-Bold'; src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Bold.woff2?v=26003189210104420591770244092') format('woff2'); font-display: swap; } @font-face { font-family: 'Satoshi-Regular'; src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Regular.woff2?v=55866631079758551531770244092') format('woff2'); font-display: swap; } @font-face { font-family: 'Satoshi-Medium'; src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Medium.woff2?v=163508475008158981711770244092') format('woff2'); font-display: swap; } /* ── CLS fix: critical header styles ── These MUST live in so the browser applies them before first paint. Previously these were in a body style just before the header-wrapper div, which allowed the header to briefly render at its unstyled height (67px) before settling to 45px — causing a visible layout shift. */ .header-wrapper[data-fixed-header="true"] { position: fixed; top: 0; right: 0; left: 0; z-index: 1111; } .header-wrapper[data-fixed-header="true"] ~ main.main-content { margin-top: 96px; } body { --header-wrapper-height: 96px; } .nav--desktop .header-menu--right { height: 45px; overflow: visible; } .disclosure__flag { display: inline-block; vertical-align: middle; width: 22px; height: 22px; background-size: 36px; background-position: center; border-radius: 22px; } #FreeShippingBanner { display: none; } localization-form .disclosure .disclosure__flag { background-color: transparent; } .disclosure__button { font-size: .8rem; background-color: transparent; border: none; } /* ── Mobile CLS fix ── The HTML hardcodes class="showDesktop" on header-wrapper, but on viewports ≤ 940px JS switches to showMobile. We force mobile nav layout from first paint AND duplicate the critical mobile-nav positioning rules (normally in theme.css) so that the mobile header renders at its correct 58 px height before the external stylesheet loads. Without these, the nav icons sit in normal flow and the header briefly expands to ~600 px. */ @media screen and (max-width: 940px) { /* Force mobile nav visible / desktop nav hidden */ .showDesktop .nav--mobile, .header-wrapper .nav--mobile { display: block !important; } .showDesktop .nav--desktop, .header-wrapper .nav--desktop { position: absolute !important; left: -9999px !important; } /* ── Mobile nav internal layout (duplicated from theme.css) ── These rules ensure absolute positioning of nav icons BEFORE the external stylesheet loads, preventing a tall-header flash. */ .nav--mobile .mobile-wrapper { position: relative; padding: 0 15px; } .nav--mobile .header-shop, .nav--mobile .header-hamburger, .nav--mobile .header-cart { transform: translateY(-50%); position: absolute; top: 45%; z-index: 1000; width: 25px; height: 25px; } .nav--mobile .header-hamburger { width: 30px; height: 40px; margin-top: 5px; top: 50%; left: 15px; text-decoration: none; } .nav--mobile .header-cart { right: 15px; } .nav--mobile .header-shop { right: 65px; } .nav--mobile .localization-container { position: absolute; top: 25%; left: 60px; } /* ≥ 480px responsive overrides (duplicated from theme.css + country-switcher-global.liquid to prevent shift on load) */ @media screen and (min-width: 480px) { .nav--mobile .header-hamburger { left: 30px; } .nav--mobile .header-cart { right: 30px; } .nav--mobile .header-shop { right: 80px; } .nav--mobile .localization-container { left: 80px; } } .header-icon-item { position: relative; } .icon-item__text { transform: translate(-50%, 100%); display: block; position: absolute; right: auto; bottom: 0; left: 50%; margin: 0; font-size: 0.7rem; font-weight: 600; letter-spacing: -0.25px; line-height: normal; text-decoration: none; text-align: center; } .header-hamburger .icon-item__text { position: relative; transform: translateX(-50%); bottom: auto; } } (function(){ var strip = function(node) { if (node.tagName !== 'STYLE') return; /* Klaviyo: :root { /* ================ Product video ================ */ ---color_video_bg: #f2f2f2; /* ================ Color Variables ================ */ /* === RAYCON ===*/ ---color-white: #fff; ---color-white-hover: #ddd; ---color-black: #000; ---color-black-hover: #222; /* === Backgrounds ===*/ ---color-bg: #ffffff; ---color-bg-accent: ; /* === Text colors ===*/ ---color-text-dark: #040509; ---color-text: #1f283a; ---color-text-light: #626975; /* === Bright color ===*/ ---color-primary: #3831ff; ---color-primary-hover: #0800e4; ---color-primary-fade: rgba(56, 49, 255, 0.05); ---color-primary-fade-hover: rgba(56, 49, 255, 0.1); ---color-primary-a85: rgba(56, 49, 255, 0.85);---color-primary-opposite: #ffffff; /* === Secondary/link Color ===*/ ---color-secondary: ; ---color-secondary-hover: ; ---color-secondary-fade: ; ---color-secondary-fade-hover: ;---color-secondary-opposite: ; /* === Shades of grey ===*/ ---color-a5: rgba(31, 40, 58, 0.05); ---color-a10: rgba(31, 40, 58, 0.1); ---color-a20: rgba(31, 40, 58, 0.2); ---color-a35: rgba(31, 40, 58, 0.35); ---color-a50: rgba(31, 40, 58, 0.5); ---color-a80: rgba(31, 40, 58, 0.8); ---color-a90: rgba(31, 40, 58, 0.9); ---color-a95: rgba(31, 40, 58, 0.95); /* ================ Inverted Color Variables ================ */ ---inverse-bg: ; ---inverse-bg-accent: ; /* === Text colors ===*/ ---inverse-text-dark: ; ---inverse-text: ; ---inverse-text-light: ; /* === Bright color ===*/ ---inverse-primary: ; ---inverse-primary-hover: ; ---inverse-primary-fade: ; ---inverse-primary-fade-hover: ;---inverse-primary-opposite: ; /* === Second Color ===*/ ---inverse-secondary: ; ---inverse-secondary-hover: ; ---inverse-secondary-fade: ; ---inverse-secondary-fade-hover: ;---inverse-secondary-opposite: ; /* === Shades of grey ===*/ ---inverse-a5: ; ---inverse-a10: ; ---inverse-a20: ; ---inverse-a35: ; ---inverse-a80: ; ---inverse-a90: ; ---inverse-a95: ; /* === Nav and dropdown link background ===*/ ---color-nav: #ffffff; ---color-nav-text: #121619; ---color-nav-border: #eaeaea; ---color-nav-a10: rgba(18, 22, 25, 0.1); ---color-nav-a50: rgba(18, 22, 25, 0.5); /* === Site Footer ===*/ ---color-footer-bg: #121619; ---color-footer-text: #f9f9f9; ---color-footer-a5: rgba(249, 249, 249, 0.05); ---color-footer-a15: rgba(249, 249, 249, 0.15); ---color-footer-a90: rgba(249, 249, 249, 0.9); /* === Products ===*/ ---color-bg-product: #f9f9f9; ---product-grid-aspect-ratio: 0%; /* === Product badges ===*/ ---color-badge: ; ---color-badge-text: ; /* === disabled form colors ===*/ ---color-disabled-bg: #e9eaeb; ---color-disabled-text: #b1b4ba; ---inverse-disabled-bg: ; ---inverse-disabled-text: ; /* === Button Radius === */ ---button-radius: px; /* ================ Typography ================ */ ---font-stack-body: "satoshi", sans-serif; ---font-style-body: normal; ---font-weight-body: 400; ---font-weight-body-bold: 700; ---font-adjust-body: 1.0; ---font-stack-heading: "satoshi", sans-serif; ---font-style-heading: normal; ---font-weight-heading: 700; ---font-weight-heading-bold: 700; ---font-adjust-heading: 1.0; ---font-heading-space: initial; ---font-heading-caps: initial; ---font-stack-accent: "satoshi", sans-serif; ---font-style-accent: normal; ---font-weight-accent: 400; ---font-weight-accent-bold: 700; ---font-adjust-accent: 1.2; ---ico-select: url('//rayconglobal.com/cdn/shop/t/551/assets/ico-select.svg?v=35184198106449401781770244092'); ---url-zoom: url('//rayconglobal.com/cdn/shop/t/551/assets/cursor-zoom.svg?v=109715'); ---url-zoom-2x: url('//rayconglobal.com/cdn/shop/t/551/assets/cursor-zoom-2x.svg?v=109715'); ---swatch-sold-out: url('//rayconglobal.com/cdn/shop/t/551/assets/swatch-soldout.png?v=109715'); ---loader-gif: url('//rayconglobal.com/cdn/shop/t/551/assets/loader_300x.gif?v=21251715395396625211770244092'); ---icon-check: url('//rayconglobal.com/cdn/shop/t/551/assets/icon-check.png?v=109879918666229651711770244092'); ---icon-cross: url('//rayconglobal.com/cdn/shop/t/551/assets/icon-cross.png?v=41933998898842519211770244092'); } var theme = { strings: { addToCart: "Add to Cart", soldOut: "Sold Out", unavailable: "Unavailable", join: "Join Now" }, moneyFormat: "${{amount}}", lp_discount: { message: "" } } window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start'); {"shopId":24040041,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/24040041","merchantName":"Raycon ","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Raycon ","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true} {"accessToken":"faf77e3b1ed935892c5288b63013708f","betas":["rich-media-storefront-analytics"],"domain":"rayconglobal.com","predictiveSearch":true,"shopId":24040041,"locale":"en"} var Shopify = Shopify || {}; Shopify.shop = "raycon.myshopify.com"; Shopify.locale = "en"; Shopify.currency = {"active":"USD","rate":"1.0"}; Shopify.country = "US"; Shopify.theme = {"name":"PROD | 020426 | Winter Olympics","id":172276023319,"schema_name":"Raycon","schema_version":"1.22","theme_store_id":null,"role":"main"}; Shopify.theme.handle = "null"; Shopify.theme.style = {"id":null,"handle":null}; Shopify.cdnHost = "rayconglobal.com/cdn"; Shopify.routes = Shopify.routes || {}; Shopify.routes.root = "/"; !function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window); !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); window.ShopifyPay = window.ShopifyPay || {}; window.ShopifyPay.apiHost = "shop.app\/pay"; window.ShopifyPay.redirectState = null; {"pageType":"page"} await import("//rayconglobal.com/cdn/shopifycloud/shop-js/modules/v2/client.init-shop-cart-sync_BLuSqYWl.en.esm.js"); await import("//rayconglobal.com/cdn/shopifycloud/shop-js/modules/v2/chunk.common_DplD2_3Q.en.esm.js"); await import("//rayconglobal.com/cdn/shopifycloud/shop-js/modules/v2/chunk.modal_BxEbAqG6.en.esm.js"); window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); window.Shopify = window.Shopify || {}; if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; window.Shopify.featureAssets['shop-js'] = {"shop-cart-sync":["modules/v2/client.shop-cart-sync_DyWd-nW0.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-login-button":["modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-fed-cm":["modules/v2/client.init-fed-cm_DTevxAm9.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-cash-offers":["modules/v2/client.shop-cash-offers_C8YC6m4X.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/client.init-shop-email-lookup-coordinator_GbpdeWmj.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-button":["modules/v2/client.shop-button_BK9mqnWd.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-toast-manager":["modules/v2/client.shop-toast-manager_ChgSjnfR.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-windoid":["modules/v2/client.init-windoid_Bcjo1TvM.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"checkout-modal":["modules/v2/client.checkout-modal_DtFwzpsd.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"pay-button":["modules/v2/client.pay-button_CbTi9e6h.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/client.init-customer-accounts-sign-up_CkXfFFBJ.en.esm.js","modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-shop-cart-sync":["modules/v2/client.init-shop-cart-sync_BLuSqYWl.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"avatar":["modules/v2/client.avatar_BTnouDA3.en.esm.js"],"init-customer-accounts":["modules/v2/client.init-customer-accounts_CItT2Bi5.en.esm.js","modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-follow-button":["modules/v2/client.shop-follow-button_N9VQxGYc.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/client.init-shop-for-new-customer-accounts_BERy6bBc.en.esm.js","modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-login":["modules/v2/client.shop-login_C1PpjQAV.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"lead-capture":["modules/v2/client.lead-capture_ym2s8Rq7.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"payment-terms":["modules/v2/client.payment-terms_DA8oAx9D.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"]}; (function() { var isLoaded = false; function asyncLoad() { if (isLoaded) return; isLoaded = true; var urls = ["https:\/\/services.nofraud.com\/js\/device.js?shop=raycon.myshopify.com","https:\/\/api.joinclyde.com\/scripts\/shopify-storefront.min.js?shop=raycon.myshopify.com","https:\/\/cdn1.stamped.io\/files\/widget.min.js?shop=raycon.myshopify.com","https:\/\/cdn.weglot.com\/weglot_script_tag.js?shop=raycon.myshopify.com","https:\/\/easygdpr.b-cdn.net\/v\/1553540745\/gdpr.min.js?shop=raycon.myshopify.com","https:\/\/widgets.automizely.com\/reviews\/v1\/sdk.js?connection_id=b3b8571a86b34043bee2063f0cfd00e7\u0026mapped_org_id=5d6f70e26cc4422e7f895a9db17fa18a_v1\u0026oid=0ba64f35ba754e5090e6a4ec13ac1f2f\u0026shop=raycon.myshopify.com","https:\/\/crossborder-integration.global-e.com\/resources\/js\/app?shop=raycon.myshopify.com","\/\/cdn.shopify.com\/proxy\/0c87034ce3e3e34549ac504cab3a380dc5bd2f38c80e4a8446fdd14d9bf434e5\/web.global-e.com\/merchant\/storefrontattributes?merchantid=1720\u0026shop=raycon.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA","https:\/\/form-assets.mailchimp.com\/snippet\/account\/219133282?shop=raycon.myshopify.com","https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/5320b26506c4572373618b4a5\/5c76c71102816fea29c3dc8d1.js?shop=raycon.myshopify.com","https:\/\/cdn.richpanel.com\/js\/richpanel_shopify_script.js?appClientId=raycon9292\u0026tenantId=raycon929\u0026shop=raycon.myshopify.com\u0026shop=raycon.myshopify.com","https:\/\/cdn.corso.com\/js\/corso-checkout-plus.js?shop=raycon.myshopify.com\u0026sfToken=f583dc915f577dae1ff8ab2707a76da0\u0026shop=raycon.myshopify.com","https:\/\/sdk.postscript.io\/sdk-script-loader.bundle.js?shopId=3994\u0026shop=raycon.myshopify.com","https:\/\/widgets.automizely.com\/returns\/main.js?shop=raycon.myshopify.com","https:\/\/storm.spicegems.org\/0\/js\/scripttags\/raycon\/country_redirect_fe08cec09f17a8d7844e50b3fb7f530a.min.js?v=51\u0026shop=raycon.myshopify.com","https:\/\/widgets.automizely.com\/loyalty\/v1\/main.js?module=common\u0026shop=raycon.myshopify.com","https:\/\/s3.eu-west-1.amazonaws.com\/production-klarna-il-shopify-osm\/d3bc5d6366701989e2db5a93793900883f2d31a6\/raycon.myshopify.com-1770739884002.js?shop=raycon.myshopify.com"]; for (var i = 0; i < urls.length; i++) { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = urls[i]; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } }; if(window.attachEvent) { window.attachEvent('onload', asyncLoad); } else { window.addEventListener('load', asyncLoad, false); } })(); var __st={"a":24040041,"offset":-18000,"reqid":"6ff09647-59c5-4945-aac0-5c955681f72b-1771838369","pageurl":"rayconglobal.com\/pages\/tac?logged_in_customer_id=","s":"pages-47354675223","u":"9c739ab5b091","p":"page","rtyp":"page","rid":47354675223}; window.ShopifyPaypalV4VisibilityTracking = true; !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.2.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)}(); var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://rayconglobal.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 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); 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})}})); #shopify-buyer-consent { margin-top: 1em; display: inline-block; width: 100%; } #shopify-buyer-consent.hidden { display: none; } #shopify-subscription-policy-button { background: none; border: none; padding: 0; text-decoration: underline; font-size: inherit; cursor: pointer; } #shopify-subscription-policy-button::before { box-shadow: none; } window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end'); var loox_global_hash = '1572877700701';.loox-reviews-default { max-width: 1200px; margin: 0 auto; } var _talkableq = _talkableq || []; _talkableq.push(['authenticate_customer', {"email":"","first_name":"","last_name":"","customer_id":""}]); (function() { var s = document.createElement('script'); s.src = '//cdn.weglot.com/weglot.min.js'; s.onload = function() { Weglot.initialize({ api_key:"wg_0ccaa61dac7b3428e3ebb4d87c10a7101", switchers: [ { button_style: { full_name: true, with_name: true, is_dropdown: true, with_flags: true, flag_type: "circle", invert_flags: false }, location: { target: ".footer__block--payment_types", sibling: null } } ] }); }; document.head.appendChild(s); })(); /** * Sets the Shopify checkout language, resistant to Weglot and cart-drawer refresh overrides. * * How it works: * - Intercepts form.submit() and the submit event on the cart form * - Rewrites the locale parameter at the moment of submission, AFTER Weglot * and cart-main.refresh() have done their DOM replacements * - Also sets cart attributes for order/invoice tagging * * @param {string} locale - Shopify BCP-47 locale code: 'nb','fr','de','es','nl','it','sv','da' */ /* //(function () { var _locale = null; var _nativeSubmit = HTMLFormElement.prototype.submit; function fixLocale(form) { if (!_locale || _locale === 'en') return; var action = form.getAttribute('action') || '/cart'; if (action.includes('/cart') && !action.includes('/cart/add')) { var base = action.split('?')[0]; var params = new URLSearchParams(action.split('?')[1] || ''); params.set('locale', _locale); form.setAttribute('action', base + '?' + params.toString()); } } // Intercept programmatic form.submit() (used by Corso / shipping protection) HTMLFormElement.prototype.submit = function () { if (this.id === 'cart') fixLocale(this); return _nativeSubmit.call(this); }; // Intercept submit event in capture phase (used by regular checkout button) document.addEventListener('submit', function (e) { if (e.target.id === 'cart') fixLocale(e.target); }, true); // Public API window.setCheckoutLanguage = function (locale) { _locale = locale; // Also tag the order/invoice fetch('/cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ attributes: { lang: locale, 'Invoice Language': locale } }) }); }; //})(); // Usage: // setCheckoutLanguage('nb'); // Norwegian // setCheckoutLanguage('fr'); // French // setCheckoutLanguage('de'); // German // setCheckoutLanguage('en'); // Reset to English */ var languageAutoSelect = function() { var visitorCountry = 'us'; if (typeof Shopify.country != 'undefined') { visitorCountry = Shopify.country.toLowerCase(); } const targetLanguages = ['fr', 'es', 'nl', 'de', 'it', 'yue', 'da', 'sv', 'no']; var countryToLang = { "fr": "fr", "es": "es", "Xnl": "Xnl", "de": "de", "it": "it", "hk": "yue", "Xdk": "Xda", "Xse": "Xsv", "Xno": "Xno" }; var targetLang = countryToLang[visitorCountry] || 'en'; var currentWeglotLang = Weglot.getCurrentLang(); console.log('Weglot languageAutoSelect run. Will try switching to: ', targetLang); // Cantonese target pages const validPathsCantonese = [ "/pages/kayanopen", "/pages/kungsumopen", "/pages/raycon-essential-open-earbuds-adr4-compact", "/pages/yanyanopen", "/pages/pumpkinjennopen", "/pages/tinawongopen" ]; // Check if the current path is one of the specific Cantonese landing pages var pathnameLowerCase = window.location.pathname.toLowerCase(); const isCantonesePage = validPathsCantonese.includes(pathnameLowerCase); // Translate a certain page if the referrer is a certain page var referrerLowerCase = document.referrer.toLowerCase(); if (referrerLowerCase) { const refUrl = new URL(referrerLowerCase); var refPath = refUrl.pathname; } const isComingFromCantonesePage = validPathsCantonese.includes(refPath); //console.log('isComingFromCantonesePage: ', isComingFromCantonesePage); // Cantonese target PDPs const validPDPsCantonese = [ "/products/essential-open-earbuds" ]; const isCantonesePDP = validPathsCantonese.includes(refPath); //console.log('isCantonesePDP:', isCantonesePDP); if (targetLang === 'yue' && isCantonesePage) { // Only switch to Cantonese if it's a valid page AND the country is HK Weglot.switchTo('yue'); //setCheckoutLanguage('zh-hant'); } else if (targetLang === 'yue' && isComingFromCantonesePage && isCantonesePDP) { Weglot.switchTo('yue'); //setCheckoutLanguage('zh-hant'); } else if (targetLanguages.includes(targetLang) && targetLang !== 'yue') { // Switch to other target languages (fr, es, it, etc.) normally Weglot.switchTo(targetLang); } else { // Default to English if it's a Cantonese page but not a HK visitor, // or if the language isn't supported Weglot.switchTo('en'); } /* if (visitorCountry == 'fr') { //$(`.weglot-container [data-l="${visitorCountry}"]`).click(); Weglot.switchTo('fr'); } */ } //Weglot.on("initialized", languageAutoSelect); //Weglot.on("switchersReady", languageAutoSelect); $(document).ready(function() { setTimeout(function() { languageAutoSelect(); }, 2200); }); try { window.EasyGdprSettings = "{\"cookie_banner\":false,\"cookie_banner_cookiename\":\"\",\"cookie_banner_settings\":{},\"current_theme\":\"pipeline\",\"custom_button_position\":\"\",\"eg_display\":[\"footer\",\"login\",\"account\"],\"enabled\":false,\"texts\":{}}"; } catch (error) {} body :not(#\ ):not(#\ )[data-locale="show-only-us-boxing"], body :not(#\ ):not(#\ )[data-locale="show-only-cw-boxing"] { display: none; } document.addEventListener('DOMContentLoaded', function() { var customerCountry = Shopify.country; customerCountry = customerCountry || 'US'; var anyBoxingCampaign = false; /* //boxing day updates var isCustomerCountryBoxing = false; var boxingCountries = ['CA', 'UK', 'AU', 'IE', 'NZ', 'GB']; isCustomerCountryBoxing = boxingCountries.includes(customerCountry); var comingFromUSBoxingCampaign = false; comingFromUSBoxingCampaign = window.location.href.toLowerCase().includes('box5'); if (comingFromUSBoxingCampaign) { localStorage.setItem("cameFromUSBoxingCampaign", true); } var cameFromUSBoxingCampaign = localStorage.getItem("cameFromUSBoxingCampaign"); // example https://rayconglobal.com/discount/box5?utm_source=facebook&utm_medium=cpc&utm_campaign=usbox5_sale var anyBoxingCampaign = false; if ((comingFromUSBoxingCampaign || cameFromUSBoxingCampaign) && customerCountry == 'US') { anyBoxingCampaign = true; document.querySelectorAll('[data-locale]').forEach(el => { el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('[data-locale="show-only-us-boxing"]').forEach(el => { el.classList.remove('hide'); el.classList.add('show'); }); try { document.querySelector('.info-bar__message > div:nth-child(1) > p:nth-child(1) > a:nth-child(1) > strong:nth-child(1)').innerText = "Boxing Day! Save up to 20% Code: BOX5"; } catch (e) { // } } else if (isCustomerCountryBoxing) { anyBoxingCampaign = true; document.querySelectorAll('[data-locale]').forEach(el => { el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('[data-locale="show-only-cw-boxing"]').forEach(el => { el.classList.remove('hide'); el.classList.add('show'); }); try { document.querySelector('.info-bar__message > div:nth-child(1) > p:nth-child(1) > a:nth-child(1) > strong:nth-child(1)').innerText = "Boxing Day! Save up to 25% Code: BOX10"; } catch (e) { // } } */ if (customerCountry !== 'US') { /* if (!anyBoxingCampaign) { document.querySelectorAll('[data-locale="show-only-us-boxing"]').forEach(el => { el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('[data-locale="show-only-cw-boxing"]').forEach(el => { el.classList.remove('show'); el.classList.add('hide'); }); } */ document.querySelectorAll('.only-us').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('[data-locale="only-us"]').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('li.grandparent:nth-child(6)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('li.mobile-menu__item:nth-child(8)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('li.mobile-menu__item:nth-child(10)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('div.featured-grid__item:nth-child(7)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); // UK Changes if (customerCountry == 'GB') { document.querySelectorAll('li.grandparent:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(1)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); /* //B42 Bone Conduction Headphones document.querySelectorAll('li.grandparent:nth-child(4) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(3)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); */ document.querySelectorAll('li.grandparent:nth-child(5) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(2)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('li.grandparent:nth-child(5) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(3)').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('li.mobile-menu__item[data-item="chargers"]').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); } document.querySelectorAll('.only-non-us').forEach(el => { //el.style.display = 'none'; el.classList.remove('hide'); //el.classList.add('show'); }); document.querySelectorAll('[data-locale="only-non-us"]').forEach(el => { //el.style.display = 'none'; el.classList.remove('hide'); //el.classList.add('show'); }); } else if (customerCountry == 'US') { if (!anyBoxingCampaign) { document.querySelectorAll('[data-locale="show-only-us-boxing"]').forEach(el => { //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('[data-locale="show-only-cw-boxing"]').forEach(el => { //el.classList.remove('show'); el.classList.add('hide'); }); } document.querySelectorAll('.only-us').forEach(el => { //el.style.display = 'block'; el.classList.remove('hide'); //el.classList.add('show'); }); document.querySelectorAll('[data-locale="only-us"]').forEach(el => { //el.style.display = 'block'; el.classList.remove('hide'); //el.classList.add('show'); }); document.querySelectorAll('.only-non-us').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); document.querySelectorAll('[data-locale="only-non-us"]').forEach(el => { //el.style.display = 'none'; //el.classList.remove('show'); el.classList.add('hide'); }); } }); function checkWindowExtendABFlag() { var attempts = 0; var maxAttempts = 10; var interval = 100; var check = setInterval(function() { if (typeof window._extend !== 'undefined') { console.log('window._extend found, for Config:', window._extend); clearInterval(check); // Only load the SDK scripts when the AB flag is actually set var sdk1 = document.createElement('script'); sdk1.src = 'https://sdk.helloextend.com/extend-sdk-client/v1/extend-sdk-client.min.js'; sdk1.defer = true; sdk1.onload = function() { var sdk2 = document.createElement('script'); sdk2.src = 'https://sdk.helloextend.com/extend-sdk-client-shopify-addon/v1/extend-sdk-client-shopify-addon.min.js'; sdk2.defer = true; sdk2.onload = function() { window.dispatchEvent(new Event('ExtendABFlagSet')); }; document.head.appendChild(sdk2); }; document.head.appendChild(sdk1); } else { attempts++; if (attempts >= maxAttempts) { console.log('Gave up after ' + attempts + ' attempts looking for Extend AB Test Flag. SDK not loaded.'); clearInterval(check); } } }, interval); } window.addEventListener('DOMContentLoaded', function () { checkWindowExtendABFlag(); }); window.addEventListener('ExtendABFlagSet', function () { // Set variable for A/B testing Extend window.extendShow = false; window.extendShowAttr = false; window.extendShowpdpOffer = false; window.extendShowpdpModalOffer = false; window.extendShowsidecartOffer = false; // Read the 'data-extend-show' attribute from the body tag // const extendShowAttr = document.body.getAttribute('data-extend-show'); try { extendShowAttr = window._extend; extendShowpdpOffer = window._extendShowpdpOffer; extendShowpdpModalOffer = window._extendShowpdpModalOffer; extendShowsidecartOffer = window._extendShowsidecartOffer; console.log('When loading Extend, 1- window._extend, 2- window._extendShowpdpOffer, 3- window._extendShowpdpModalOffer and 4- window._extendShowsidecartOffer, are, accordingly: ', '1-', window._extend, '2-', window._extendShowpdpOffer, '3-', window._extendShowpdpModalOffer, '4-', window._extendShowsidecartOffer); } catch(e) { console.log('Error extendShowAttr: ', e); } // Update if the attribute is present and exactly equal to "false" if (extendShowAttr === true) { window.extendShow = true; } // Set store ID const storeId = '296cc793-e27f-42ec-b54e-2c73c1cf9dd5'; // Set environment (production, demo, or development) const env = 'production'; window.Extend.config({ storeId: storeId, environment: env }); // Only sets window variables if Extend and ExtendShopify is defined if (window.Extend && window.ExtendShopify && window.extendShow) { // Contains window variables used in integration window.Extend.integration = {}; // Configurables - Start // Set currency required to display offers (USD or CAD) window.Extend.integration.currency = 'USD'; // PDP Visible Offer window.Extend.integration.pdpOffer = window.extendShowpdpOffer; // PDP Modal Offer // Request from Raycon team 10/06/2025 to turn off Modal window.Extend.integration.pdpModalOffer = false; // PDP Offer Properties window.Extend.integration.offerProperties = {}; // Cart Offers window.Extend.integration.cartOffer = true; // Sidecart Offers window.Extend.integration.sidecartOffer = window.extendShowsidecartOffer; // Cart Balancing window.Extend.integration.cartBalancing = true; // Aftermarket Modal window.Extend.integration.aftermarketModal = window.extendShowpdpModalOffer; // ATC Modal Offer window.Extend.integration.atcOffer = window.extendShowpdpModalOffer; // Quickview visible offer window.Extend.integration.quickviewOffer = window.extendShowpdpModalOffer; // Quickview modal offer window.Extend.integration.quickviewModalOffer = window.extendShowpdpModalOffer; // Cart SP window.Extend.integration.cartSP = false; // Configurables - End // Aftermarket Code if (Shopify && Shopify.currency && Shopify.currency.active === Extend.integration.currency && Extend.integration.aftermarketModal) { try { // Get params from URL const params = (new URL(document.location)).searchParams; // Check if leadToken or leadtoken is in the URL let leadToken = params.get('leadToken') ? params.get('leadToken') : params.get('leadtoken'); if (leadToken) { Extend.aftermarketModal.open({ leadToken: leadToken, onClose: function (plan, product, quantity) { if (plan && product) { ExtendShopify.addPlanToCart({ plan: plan, product: product, leadToken: leadToken, quantity: quantity || 1 }, function () { location = '/cart' }) } } }); } } catch (error) { console.error("EXTEND: " + error); } } } }, { once: true }); window.addEventListener('ExtendABFlagSet', function () { // Checks if Extend lives in the window and the active currency is USD before showing Extend offers if (window.extendShow && Extend && ExtendShopify && Shopify && Shopify.currency && Shopify.currency.active === Extend.integration.currency && meta.page.pageType == 'product') { /************************/ /* Initial Variables */ /************************/ const productForm = document.querySelector('form[action="/cart/add"]'); // Change this to the product form element let addToCartButton = productForm.querySelector('.add-to-cart-wrapper button[name="add"]'); // Change this to the Add-To-Cart element const dispatchSideCart = false; // Set to true if a sidecart opens after adding to cart via pdp const productCategory = (meta && meta.product) ? meta.product.type : null; // Grabs product category from meta object, works on most themes if (productCategory === "Bundles") return; // Handles creating and prepending Extend offer div const extendOffer = document.createElement('div'); if (!Extend.integration.pdpOffer) extendOffer.style.display = 'none'; extendOffer.className = 'extend-offer'; // Add Extend either before or after the Add to Cart CTA, based on a flag on `window` let loadAfterPDPATCCTA = false; loadAfterPDPATCCTA = window._ExtendloadAfterPDPATCCTA if (loadAfterPDPATCCTA) { // Add after productForm.insertBefore(extendOffer, productForm.querySelector('.product__action').nextSibling); } else { // Add before productForm.insertBefore(extendOffer, productForm.querySelector('.product__action')); } /************************/ /* initProductOffer */ /************************/ // Initializes product offers and handles ATC button functionality for the main PDP ATC function initProductOffer() { try { // Fail safes if (!productForm || !addToCartButton || !extendOffer) { throw new Error("Exiting - missing productForm, addToCartButton, or extendOffer") } // Disables ATC if product is Extend if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true; // Grabs the variantId from the productForm and renders the initial offers for it let variantId = productForm.id.value; // Grabs the product price from the metadata, works on most themes let productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null; // Saves the offer properties to an easily accessible window object that is initialized in the config Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice} // Renders Extend offer Extend.buttons.render(extendOffer, { referenceId: variantId, price: productPrice, category: productCategory }); // Listens for changes to the productForm and sets the activeProduct for extend via variantID productForm.addEventListener('change', function () { variantId = productForm.id.value if (variantId) { productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null; Extend.setActiveProduct(extendOffer, { referenceId: variantId, price: productPrice, category: productCategory }); if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true; Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice} } }); document.addEventListener('click', function(e) { if (e.target.closest('.swatch__item')) { variantId = productForm.id.value if (variantId) { productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null; Extend.setActiveProduct(extendOffer, { referenceId: variantId, price: productPrice, category: productCategory }); if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true; Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice} } } }) // click simulation handling add to cart function handleAddToCart(e) { e.preventDefault(); e.stopImmediatePropagation(); const quantityEl = productForm.querySelector('[name="quantity"]'); const quantity = quantityEl && quantityEl.value ? quantityEl.value : 1; ExtendShopify.handleAddToCart(extendOffer, { quantity: quantity, modal: window.Extend.integration.pdpModalOffer, done: function () { // remove default click listener addToCartButton.removeEventListener('click', handleAddToCart, true); // click atc button addToCartButton = productForm.querySelector('.add-to-cart-wrapper button[name="add"]'); // Change this to the Add-To-Cart element window.setTimeout(function () { addToCartButton.click(); // add default click listener back addToCartButton.addEventListener('click', handleAddToCart, true); // If variable set to true, dispatches Extend side cart integration to run after adding to cart via pdp if (dispatchSideCart) window.setTimeout(function () { window.dispatchEvent(new Event('refreshAjaxSideCart')) }, 1000) }, 500) } }); } // run handleCaddtoCart when we click ATC, capturing event //if (window.Extend.integration.pdpModalOffer) { addToCartButton.addEventListener('click', handleAddToCart, true); //} } catch (error) { return } } // Initial product offer render if (!Extend.buttons.instance(extendOffer)) { initProductOffer(); } } }, { once: true }); .extend-offer { margin: 0 !important; } @media screen and (min-width: 986px) { .extend-offer iframe { height: auto !important; } } window.addEventListener('ExtendABFlagSet', function () { // Only run ajax integration if Extend and ExtendShopify is defined, and the currency is set to USD if (!window.extendShow || !Extend || !ExtendShopify || !Shopify || !Shopify.currency || Shopify.currency.active !== Extend.integration.currency) { return; } // Checks url if page is main cart const isMainCart = location.pathname.includes('/cart'); if (!isMainCart && !window.Extend.integration.sidecartOffer) return; // store value to know if script initialized already let init = false; /*****************************************/ /* Global Variables - THEME SPECIFIC */ /*****************************************/ let cartRowItem, cartRowItemTitle, cartRowItemImage, cartRowItemQuantity, warrantyContainer, warrantyOriginalMeta, metadataContainer; if (isMainCart) { // Main cart variables cartRowItem = '.cart__body .cart__item'; // This is the container element for each item in the cart cartRowItemImage = '.cart__image'; // This is the product image or image anchor element cartRowItemTitle = '.item__title'; // This is the title anchor element for the product cartRowItemQuantity = '.quantity__input'; // This is the input element containing the product quantity warrantyOriginalMeta = '.item__variant-title'; // Each warranty metadata item we want to remove. warrantyContainer = '.cart__item__info'; // This is the container where the offer will be appended metadataContainer = '.cart__item__info'; // This is where warranty metadata will be appended (Product and Term) } else { // Side cart variables cartRowItem = 'cart-drawer cart-body cart-item'; // This is the container element for each item in the cart cartRowItemImage = '.cart-item__image-wrap a'; // This is the product image or image anchor element cartRowItemTitle = '.cart-item__title a'; // This is the title anchor element for the product cartRowItemQuantity = '.quantity__input'; // This is the input element containing the product quantity warrantyOriginalMeta = '.cart-item__properties li'; // Each warranty metadata item we want to remove. warrantyContainer = '.cart-item__info'; // This is the container where the offer will be appended metadataContainer = '.cart-item__properties'; // This is where warranty metadata will be appended (Product and Term) } // Add quantity wrapper selector to disable use of quantity selector on Extend items, ignored if empty string const quantityWrapper = isMainCart ? '.cart-quantity' : '.cart-quantity'; const offerClass = !isMainCart ? 'extend-side-cart-offer' : 'extend-cart-offer'; // This is the class that will be assigned to each Extend offer const cartEvent = !isMainCart ? 'refreshAjaxSideCart' : 'refreshAjaxCart'; const regEx = /\d+$/; let localCart = {"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}; // Shopify Cart Object on initial load // Fail safe for cart if (!localCart) { console.error("EXTEND: Exiting - localCart unavailable") return false; } /**************************************/ /* refreshCart - THEME SPECIFIC */ /**************************************/ // Refresh the cart (hard refresh by default) function refreshCart(cart) { if (isMainCart) { // Main cart specific refresh location.reload(); } else { localStorage.setItem("extendRefresh", "true") window.setTimeout(function() { location.reload(); }, 200) } } function renderCartOffer(el, variantId, quantity, index) { // Grabs the product category and price from the current item metadata let productCategory = localCart.items[index].product_type; let productPrice = localCart.items[index].price; if (ExtendShopify.warrantyAlreadyInCart(parseInt(variantId), localCart.items) || ExtendShopify.warrantyAlreadyInCart(variantId.toString(), localCart.items)) { return; } else { // Return if this is a cart snippet and cart offers are disabled if (!Extend.integration.cartOffer) return; // Return if this is a sidecart snippet and sidecart offers are disabled if (!Extend.integration.sidecartOffer) return; if (productCategory === "Bundles") return; // Render all other buttons Extend.buttons.renderSimpleOffer(el, { referenceId: variantId, price: productPrice, category: productCategory, onAddToCart: function (options) { ExtendShopify.addPlanToCart({ plan: options.plan, product: options.product, quantity: quantity }, function (err) { // An error occurred if (err) { throw new Error({ "Exiting - Error in onAddToCart": err }); } else { refreshCart(); } }); } }); } } /***********************/ /* createElement */ /***********************/ // createElement(product) - Takes in the product element, and creates the Extend offer element + appends the offer function createElement(product, index) { // Grab URL from title anchor href let url = product.querySelector(cartRowItemTitle).href; // Grabs variant ID from URL if available, otherwise from localCart let variantId = (url && url.match(regEx)) ? url.match(regEx)[0] : localCart.items[index].id; // Select quantity value let quantity = product.querySelector(cartRowItemQuantity) ? parseInt(product.querySelector(cartRowItemQuantity).value) : 1; if (!variantId || quantity.length > 0) { throw new Error("Exiting - Error with variantId {0} or quantity {1}", variantId, quantity); } // Removes existing offer elements before creating new ones let extendOffer = product.querySelector('.' + offerClass); if (extendOffer) { if (extendOffer.dataset.extendVariant !== variantId || extendOffer.dataset.extendQuantity !== quantity) { extendOffer.remove(); } else { return; } } // Parent container to append ajax offer let container = product.querySelector(warrantyContainer); // Fail safes if (!variantId || !quantity || !container) { throw new Error("Exiting - variant, quantity or container unavailable"); } // Create new element & set class, data-extend-variant, and data-extend-quantity attributes let newExtendOffer = document.createElement('div'); newExtendOffer.className = offerClass; newExtendOffer.setAttribute('data-extend-variant', variantId); newExtendOffer.setAttribute('data-extend-quantity', quantity); // Append the offer to the container element (THEME SPECIFIC) container.append(newExtendOffer); renderCartOffer(newExtendOffer, variantId, quantity, index); } /************************/ /* Handle Styling */ /************************/ // Finds all cartRowItems and styles only Extend warranties function handleStyling() { document.querySelectorAll(cartRowItem).forEach(function (el, index) { try { // Grab the title of the current item let title = el.querySelector(cartRowItemTitle); // Title fail safe if (!title) { throw new Error("Exiting - title unavailable"); } // If it's a warranty set isExtend to true and remove links if (title.innerText.toLowerCase().indexOf('extend protection') > -1) { // Grab the image of the current item and fail safe // Select and remove pointerEvents from warranty title title.style.pointerEvents = 'none'; let image = el.querySelector(cartRowItemImage); if (!image) { throw new Error("Exiting - image unavailable"); } // Select and remove pointerEvents from warranty image image.style.pointerEvents = 'none'; // Remove sidecart image clicking for Extend products if (!isMainCart && el.querySelector(cartRowItemImage)) { el.querySelectorAll(cartRowItemImage).forEach(function(element) {element.style.pointerEvents = 'none';}) } /**************************************/ /* THEME SPECIFIC STYLING START */ /**************************************/ if (isMainCart) { // Removes loose text in element Array.from(el.querySelector('.cart__item__info').childNodes).forEach(node => { if (node.nodeType === Node.TEXT_NODE && node.textContent.trim()) { node.remove(); } }); } else if (el.querySelector('.cart-item__variant-title')) { el.querySelector('.cart-item__variant-title').remove() } // Removes old metadata if (el.querySelector(warrantyOriginalMeta)) { el.querySelectorAll(warrantyOriginalMeta).forEach(function (each) { each.remove(); }) } if (quantityWrapper && quantityWrapper != '' && el.querySelector(quantityWrapper)) { el.querySelectorAll(quantityWrapper).forEach((each) => { each.style.opacity = '45%'; each.style.pointerEvents = 'none'; }) } // Selects where to append warranty metadata let contentContainer = el.querySelector(metadataContainer) let warrantyProductData; let warrantyTermData; contentContainer.querySelectorAll('br').forEach(function(element) {element.remove()}); if (!localCart.items[index]) return; if (localCart.items[index].options_with_values && localCart.items[index].options_with_values[1]) { // Finds the ref id string in the product info string and replaces with an empty string let regexReplace = localCart.items[index].options_with_values[0].value.match(/\-\d{5,}/g); warrantyProductData = localCart.items[index].options_with_values[0].value.replace(regexReplace, ''); warrantyTermData = localCart.items[index].options_with_values[1].value; } else { warrantyProductData = localCart.items[index].properties.Product; warrantyTermData = localCart.items[index].properties.Term; } // For category offers, fetch title by filtering through cart for warranted product refId if (warrantyProductData === "Covered Product") { const coveredProdId = localCart.items[index].properties['_Extend.ProductId']; const coveredProdTitle = localCart.items.filter((item) => item.id.toString() == coveredProdId)[0].title; warrantyProductData = coveredProdTitle; } // Appends Product and Term metadata if (el.querySelector(metadataContainer)) { let warrantyProductName = document.createElement('p'); warrantyProductName.className = 'extend-warranty-info extend-warranty-info-product'; warrantyProductName.innerHTML = 'Product: ' + warrantyProductData; warrantyProductName.setAttribute('data-cy', 'warranty-description-product'); let warrantyProductTerm = document.createElement('p') warrantyProductTerm.className = 'extend-warranty-info extend-warranty-info-term'; warrantyProductTerm.innerHTML = 'Term: ' + warrantyTermData; warrantyProductTerm.setAttribute('data-cy', 'warranty-description-term'); // Only append the metadata if it's not already there if (!el.querySelector('.extend-warranty-info')) { contentContainer.insertBefore(warrantyProductName, contentContainer.querySelector('.cart__remove')) contentContainer.insertBefore(warrantyProductTerm, contentContainer.querySelector('.cart__remove')) } } /**************************************/ /* THEME SPECIFIC STYLING END */ /**************************************/ } else { // Create an offer element for each product createElement(el, index); } } catch (error) { console.error("EXTEND:", error); } }); } function initEventListeners() { if (init) return; function refreshCartOffer() { fetch('/cart.js', { credentials: 'same-origin', method: 'GET', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } }) .then((e) => e.json()) .then((e) => { localCart = e; initializeCartOffer(); }) .catch((error) => { console.error("EXTEND:", error) }); } // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Multiple_identical_event_listeners window.addEventListener(cartEvent, refreshCartOffer); // Listen for SP dispatching refresh window.addEventListener('refreshSP', refreshCart); } /************************/ /* initializeCartOffer */ /************************/ // Invokes handleStyling and finds all offers in the cart, handling both normalization and balancing function initializeCartOffer() { // Runs this normalization from extend-shipping.liquid if using cart SP if (Extend.integration.cartSP && Extend.integration.normalizeCartSP) { Extend.integration.normalizeCartSP() } // Handles styling and creates offer elements handleStyling(); initEventListeners(); init = true; // Use standard normalization if SP is not present in cart if (!window.Extend.integration.cartSP) { // Normalization ensures there is a 1:1 relationship between the product and the warranty ExtendShopify.normalizeCart({ cart: localCart, balance: Extend.integration.cartBalancing }, function (err, data) { try { // An error occurred if (err) { throw new Error({ "Exiting - Error in normalizeCart": error }); } else if (data && data.updates) { // Calls refreshCart to update the cart for normalization refreshCart(); } } catch (error) { console.error("EXTEND:", error) } }); } } try { // initializeCartOffer when script is initially rendered initializeCartOffer(); document.addEventListener('click', function(e) { if (e.target.closest('a[data-cart-toggle]') || e.target.closest('.cart-upsell-item__form button[type="submit"]')) { window.dispatchEvent(new Event('refreshAjaxSideCart')) } }) if (localStorage.getItem("extendRefresh") === "true" && document.querySelector('a[data-cart-toggle]')) { localStorage.removeItem("extendRefresh") document.querySelector('a[data-cart-toggle]').click() } } catch (err) { console.error('EXTEND: ', err); } }, { once: true }); .extend-cart-offer { margin-top: 10px; } .extend-side-cart-offer { margin: 10px 0; } .extend-warranty-info { margin: 0 !important; font-size: 16.5px } cart-drawer .extend-warranty-info { margin: 0 !important; font-size: 14px } .extend-warranty-info-product {} .extend-warranty-info-term {} #extend-offers-modal-iframe { z-index: 99999999999 !important; } #extend-learn-more-modal-iframe { z-index: 99999999999 !important; } const configUrl = "/a/elevar/static/configs/eaf3284a91c577096e0e52bbfe2a36e0b2d2c0a0/config.js"; const config = (await import(configUrl)).default; const scriptUrl = config.script_src_app_theme_embed; if (scriptUrl) { const { handler } = await import(scriptUrl); await handler( config, { cartData: { marketId: "2320924695", attributes:{}, cartTotal: "0.0", currencyCode:"USD", items: [] } , user: {cartTotal: "0.0", currencyCode:"USD",customer: {}, } , isOnCartPage:false, collectionView:null, searchResultsView:null, productView:null, checkoutComplete: null } ); } var BspdCurrentCart = {"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}; var BspdCurrentProduct = null; var BspdCurrentCollection = null; var BSPD_CART_DATA_LOCAL_KEY = 'bspdCartData'; var BSPD_LAST_VISIT_COUNT_LOCAL_KEY = 'bspdLastUserVisitCount'; var BSPD_LAST_VISITED_PRODUCT = 'bspdLastVisitedProduct'; var BSPD_LAST_VISITED_COLLECTION = 'bspdLastVisitedCollection'; var BspdLastVisitedProduct = null, BspdLastVisitedCollection = null; var Asdf = "Nq7zP4LmbU9vYt3oKd1XjS8eWrQAhRfiZpGVwHkJTxOaFyClM0gEn5Bs2cDLuNbRq6VXYp3jW8ZtP9oHh1kGmU7fTqJdC4xAyeKvrFz0SlOLaNBiwD2u5MQscXpRhEnyGTZ3bFo1UvCkVjP8Wl4a9Hqg5dMR0YxJfz2S6oBthKNLmJ7eXiUpDAcGsVQnZrwTy38vFbPC2OaX9J4dR5mUqHnL1Yp0xkzETSWv6jGbCsoMgK3fD8wZ7uFiQyNPrVHXJltB2cAh5dWLj0RmS1zOxKUgYq9pFeTvnVb4CkGa7w2XMNJry6iDZ8hsP3LxBo5UQf1Tn"; function bspdGetBarCookie(name) { const value = "; " + document.cookie; const parts = value.split("; " + name + "="); if (parts.length === 2) { return parts.pop().split(";").shift(); } return null; } function bspdSetBarCookie(name, value, days) { const expires = new Date(); expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + value + ";expires=" + expires.toUTCString() + ";path=/"; } function trackLastVisitedProductAndCollection() { if (BspdCurrentProduct) { // check cookies for last visited product details (product id) const lastVisitedProduct = bspdGetBarCookie(BSPD_LAST_VISITED_PRODUCT); if (lastVisitedProduct) { BspdLastVisitedProduct = lastVisitedProduct; if (BspdCurrentProduct?.id !== BspdLastVisitedProduct) { // set the cookie again bspdSetBarCookie(BSPD_LAST_VISITED_PRODUCT, BspdCurrentProduct?.id, 300); } } else if (BspdCurrentProduct && BspdCurrentProduct?.id) { // set the cookie bspdSetBarCookie(BSPD_LAST_VISITED_PRODUCT, BspdCurrentProduct?.id, 300); } } if (BspdCurrentCollection) { // check cookies for last visited collection details (collection id) const lastVisitedCollection = bspdGetBarCookie(BSPD_LAST_VISITED_COLLECTION); if (lastVisitedCollection) { BspdLastVisitedCollection = lastVisitedCollection; if (BspdCurrentCollection?.id !== BspdLastVisitedCollection) { // set the cookie again bspdSetBarCookie(BSPD_LAST_VISITED_COLLECTION, BspdCurrentCollection?.id, 300); } } else if (BspdCurrentCollection && BspdCurrentCollection?.id) { // set the cookie bspdSetBarCookie(BSPD_LAST_VISITED_COLLECTION, BspdCurrentCollection?.id, 300); } } } /** * method that stores a entry whenever the user visits any of the page * and increments the count by 1 * the data schema looks like * { * [DATE]: { * date: string * route: { * [ROUTE]: number * } * count: number * } * } * * this will be a json object whose key will be the date and value will be the object * and will be stored in local-storage */ function trackLastVisitedCount() { const date = new Date(); const dateString = date.toISOString().split("T")[0]; let lastVisitedCount = JSON.parse(localStorage.getItem(BSPD_LAST_VISIT_COUNT_LOCAL_KEY)) || {}; if (lastVisitedCount[dateString]) { lastVisitedCount[dateString].count += 1; // also update route const route = window.location.pathname; if (lastVisitedCount[dateString].route[route]) { lastVisitedCount[dateString].route[route] += 1; } else { lastVisitedCount[dateString].route[route] = 1; } } else { const route = window.location.pathname; lastVisitedCount[dateString] = { date: dateString, route: { [route]: 1, }, count: 1, }; } localStorage.setItem(BSPD_LAST_VISIT_COUNT_LOCAL_KEY, JSON.stringify(lastVisitedCount)); } /** * this method keeps a track of the current cart activity * if there are any changes by the user, this will track those changes * and making changes on storing it safely */ const storeCartData = () => { function syncCart() { const oldCart = JSON.parse(localStorage.getItem(BSPD_CART_DATA_LOCAL_KEY) || "{}"); if (BspdCurrentCart?.item_count !== oldCart?.item_count) { localStorage.setItem(BSPD_CART_DATA_LOCAL_KEY, JSON.stringify(BspdCurrentCart)); } } syncCart(); async function emitCartChanges() { try { const response = await fetch("/cart.js") .then((res) => res.json()) .then((newCart) => { const oldCart = JSON.parse(localStorage.getItem(BSPD_CART_DATA_LOCAL_KEY) || "{}"); if (newCart?.item_count !== oldCart?.item_count) { localStorage.setItem(BSPD_CART_DATA_LOCAL_KEY, JSON.stringify(newCart)); } }) .catch(() => {}); } catch (error) {} } // track changes in cart.js, on change store the cart data const cartObserver = new PerformanceObserver((list) => { list.getEntries().forEach((entry) => { const isValidRequestType = ["xmlhttprequest", "fetch"].includes(entry.initiatorType); const isCartChangeRequest = /\/cart\//.test(entry.name); if (isValidRequestType && isCartChangeRequest) { emitCartChanges(); } }); }); cartObserver.observe({ entryTypes: ["resource"] }); }; function execute() { trackLastVisitedProductAndCollection(); trackLastVisitedCount(); storeCartData(); } execute(); const dummyBitespeedVar = 'dummyBitespeedVar'; const getcookieGlobalAnal = (cookie) => { let cookieJson = {}; document.cookie.split(';').forEach(function (el) { let [k, v] = el.split('='); cookieJson[k.trim()] = v; }); return cookieJson[cookie]; }; const setCookieGlobalAnal = (cookie, value, days, hours) => { let expires = ''; if (days) { let date = new Date(); date.setTime(date.getTime() + days * hours * 60 * 60 * 1000); expires = '; expires=' + date.toUTCString(); } document.cookie = cookie + '=' + (value || '') + expires + '; path=/'; }; document.addEventListener('DOMContentLoaded', function () { const getIsMultichannelAnal = async () => { try { // TODO_sobhan // var indexOfwww = location.hostname.indexOf('www'); // var shopDomainStripped = indexOfwww === -1 ? '.' + location.hostname : location.hostname.substr(indexOfwww + 3); // var globalShopUrl = indexOfwww === -1 ? location.hostname : location.hostname.substr(indexOfwww + 4); // let res = await fetch(`https://app.bitespeed.co/database/popups/isMultichannel?shopDomain=${globalShopUrl}`, { // method: 'GET', // headers: { // 'Access-Control-Allow-Origin': '*', // }, // }); // if (!res.ok) { // throw new Error(`HTTP error! status: ${res.status}`); // } // let data = await res.json(); // console.log(data); // return data.isMultichannel || true; return true; } catch (error) { console.log(error); } }; async function checkMultichannel() { console.log('in checkMultichannel'); const isMultichannel = await getIsMultichannelAnal(); if (isMultichannel) { setCookieGlobalAnal('isMultiChannel', isMultichannel, 1, 1); } else { setCookieGlobalAnal('isMultiChannel', isMultichannel, 1, 1); } console.log('Setting is multichannel from anal file to ', isMultichannel); } (async function () { let refb = String(getcookieGlobalAnal('refb')); let ssid = String(getcookieGlobalAnal('ssid')); if (refb === null || refb === '' || refb === undefined || refb === 'undefined') { var refbnew = createRef(); } if (ssid === null || ssid === '' || ssid === undefined || ssid === 'undefined') { var ssidnew = await createSsid(); } if (!getcookieGlobalAnal('isMultiChannel')) { console.log('isMultichannel not found in local making BE call Anal file'); await checkMultichannel(); } })(); }); const DBURL = 'https://app.bitespeed.co/database'; var indexOfwww = location.hostname.indexOf('www'); var shopDomainStripped = indexOfwww === -1 ? '.' + location.hostname : location.hostname.substr(indexOfwww + 3); function getCookie(name) { var value = '; ' + document.cookie; var parts = value.split('; ' + name + '='); if (parts.length == 2) return parts.pop().split(';').shift(); } function createRef() { let uuid = create_UUID(); document.cookie = 'refb=' + uuid + ';expires=' + new Date(new Date().setFullYear(new Date().getFullYear() + 10)) + ';domain=' + shopDomainStripped + '; path=/'; return uuid; } async function createSsid() { let uuid = create_UUID(); document.cookie = 'ssid=' + uuid + ';domain=' + shopDomainStripped + '; path=/'; return uuid; } function create_UUID() { var dt = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (dt + Math.random() * 16) % 16 | 0; dt = Math.floor(dt / 16); return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16); }); return uuid; } function lookForCart() { let contactIdBitespeed = getcookieGlobalAnal('contactIdBitespeed'); let contactIdRzp = getcookieGlobalAnal('rzp_unified_session_id'); var myCookie = getcookieGlobalAnal('cart'); const currentTimestamp = new Date().getTime(); const recentlyCartCreatedAt = getcookieGlobalAnal('bspd_cart_created_at'); if (myCookie && !getcookieGlobalAnal(`${myCookie}`) && !recentlyCartCreatedAt) { document.cookie = `bspd_cart_created_at=${currentTimestamp}` + ';domain=' + shopDomainStripped + '; path=/'; } else if (!myCookie && recentlyCartCreatedAt) { // reseting the cart created at cookie if it exists document.cookie = `bspd_last_cart_created_at=${recentlyCartCreatedAt}` + ';domain=' + shopDomainStripped + '; path=/'; document.cookie = `bspd_cart_created_at=;domain=${shopDomainStripped}; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`; } if ( (contactIdBitespeed === null || contactIdBitespeed === '' || contactIdBitespeed === undefined || contactIdBitespeed === 'undefined') && (contactIdRzp === null || contactIdRzp === '' || contactIdRzp === undefined || contactIdRzp === 'undefined') ) return; let lastTrackedCart = getcookieGlobalAnal('last_tracked_cart_event'); let lastTrackedCartLineItemsCnt = getcookieGlobalAnal('last_tracked_cart_line_items_cnt'); if (myCookie && shopDomainStripped.includes('.neonattack.com')) { clearInterval(intervalId); if (!recentlyCartCreatedAt) { document.cookie = `bspd_cart_created_at=${currentTimestamp}` + ';domain=' + shopDomainStripped + '; path=/'; } const cartData = cart; // a global variable, as of now only on neonattack.com (hardikecommerce.myshopify.com) if (myCookie !== lastTrackedCart || Number(lastTrackedCartLineItemsCnt) !== cartData.item_count) { document.cookie = `${myCookie}=true` + ';domain=' + shopDomainStripped + '; path=/'; document.cookie = `last_tracked_cart_event=${myCookie}` + ';domain=' + shopDomainStripped + '; path=/'; document.cookie = `last_tracked_cart_line_items_cnt=${cartData.item_count}` + ';domain=' + shopDomainStripped + '; path=/'; sendToWebhook(myCookie, cartData); } } else if (myCookie) { clearInterval(intervalId); if (!getcookieGlobalAnal(`${myCookie}`)) { document.cookie = `${myCookie}=true` + ';domain=' + shopDomainStripped + '; path=/'; sendToWebhook(myCookie); } } } function sendToWebhook(cartToken, cartData = {}) { let axiosConfig = { headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': '*', 'Content-Type': 'application/json', }, }; let refb = getcookieGlobalAnal('refb'); if (refb === null || refb === '' || refb === undefined || refb === 'undefined') { } else { const userAgent = navigator.userAgent; let lineItems = []; if (shopDomainStripped.includes('.neonattack.com') && cartData && cartData?.items) { lineItems = cartData.items?.map((item) => { return { product_id: item.product_id, variant_id: item.id, price: item.price, quantity: item.quantity, sku: item.sku, title: item.title, vendor: item.vendor, }; }); } var postData = { at: new Date(), type: 'cartCreated', event: { cartToken: cartToken, }, page_url: window.location.href, id: String(refb), shopifyShopDomain: 'raycon.myshopify.com', lineItems, ref: refb, ssid: getcookieGlobalAnal('ssid'), contactId: Number.parseInt(getcookieGlobalAnal('contactIdBitespeed')), rzp_unified_session_id: getcookieGlobalAnal('rzp_unified_session_id'), platformMobile: /iPad|iPhone|iPod/.test(userAgent) ? 'ios' : /Android/.test(userAgent) ? 'android' : '', platformDesktop: /Mac/.test(userAgent) ? 'mac' : /Windows/.test(userAgent) ? 'windows' : '', rzp_unified_session_id: getcookieGlobalAnal('rzp_unified_session_id') || undefined, }; let isMultiChannel = true; // TODO // if (getcookieGlobalAnal('isMultiChannel') == 'false' || getcookieGlobalAnal('isMultiChannel') == false) { // console.log('isMultichannel found and is false'); // isMultiChannel = false; // } else if (getcookieGlobalAnal('isMultiChannel') == 'true' || getcookieGlobalAnal('isMultiChannel') == true) { // isMultiChannel = true; // } // console.log('sendToWebhook', isMultiChannel); // console.log('sendToWebhook-ignore', localStorage.getItem('isMultiChannel')); let url = `${DBURL}/api/shopifyCustomer/create`; if (isMultiChannel) { url = `https://shopifywebhooks.bitespeed.co/webhook/browserSession`; } fetch(url, { method: 'POST', headers: axiosConfig.headers, body: JSON.stringify(postData), }).catch((err) => { console.log('AXIOS ERROR: ', err); }); } } let intervalId = setInterval(() => { lookForCart(); }, 1000); let axiosConfig = { headers: { "Access-Control-Allow-Origin": "*", 'Content-Type': 'application/json', } }; function analyticsPost(postData) { // TODO_sobhan let isMultiChannel = true; // if (getcookieGlobalAnal("isMultiChannel") == "false" || getcookieGlobalAnal("isMultiChannel") == false) { // console.log("isMultichannel found and is false"); // isMultiChannel = false; // } else if (getcookieGlobalAnal("isMultiChannel") == "true" || getcookieGlobalAnal("isMultiChannel") == true) { // isMultiChannel = true; // } // if (!isMultiChannel) return; // disable browser sessions in legacy let analyticsUrl = isMultiChannel ? "https://shopifywebhooks.bitespeed.co/webhook/browserSession" : `https://app.bitespeed.co/database/webhook/browserSession`; console.log("analyticsUrl", analyticsUrl); postData.shopifyShopDomain = "raycon.myshopify.com"; postData.ref = getcookieGlobalAnal("refb"); postData.ssid = getcookieGlobalAnal("ssid"); postData.contactId = Number.parseInt(getcookieGlobalAnal("contactIdBitespeed")); postData.rzp_unified_session_id = getcookieGlobalAnal("rzp_unified_session_id") || undefined; const userAgent = navigator.userAgent; postData.platformMobile = /iPad|iPhone|iPod/.test(userAgent) ? "ios" : /Android/.test(userAgent) ? "android" : ""; postData.platformDesktop = /Mac/.test(userAgent) ? "mac" : /Windows/.test(userAgent) ? "windows" : ""; // don't send browser events on multichannel if contactId is not present if (isMultiChannel && !postData.contactId && !postData.rzp_unified_session_id) { console.log("No contactId found for multichannel analytics file. Returning"); return; } fetch(analyticsUrl, { method: "POST", headers: axiosConfig.headers, body: JSON.stringify(postData), }).catch((err) => { console.log("AXIOS ERROR: ", err); }); } (function() { var bitespeedLayer = { cartPollInterval: 2000 } var config = { linker: { domains: ['shopify.com', 'rechargeapps.com', 'recurringcheckout.com', 'carthook.com', 'checkout.com'] }, anonymize_ip: true, allow_ad_personalization_signals: true, page_title: removePii(document.title), page_location: removePii(document.location.href) } var pageView = function() { }; // delay page firing until the page is visible if (document.hidden === true) { var triggeredPageView = false; document.addEventListener('visibilitychange', function() { if (!document.hidden && !triggeredPageView) { pageView(); triggeredPageView = true; } }); } else { pageView() } var triggerPageViewEvent = function() { var postData = { "at" : new Date(), "type": "pageViewed", "event": { url: window.location.href, }, "contactId": Number.parseInt(getcookieGlobalAnal("contactIdBitespeed")), "source": 'shopify' } analyticsPost(postData); } document.addEventListener('DOMContentLoaded', function() { triggerPageViewEvent() }); var hasLocalStorage = (function() { try { localStorage.setItem('bitespeed_test_storage', 'test'); localStorage.removeItem('bitespeed_test_storage'); return true; } catch (ex) { return false; } })(); bitespeedLayer.ecommerce = { 'currencyCode' : 'USD', 'impressions' : [] }; bitespeedLayer.ecommerce.impressions = getUniqueProducts(bitespeedLayer.ecommerce.impressions); function getUniqueProducts(array){ var u = {}, a = []; for(var i = 0, l = array.length; i < l; ++i){ if(u.hasOwnProperty(array[i].id)) { continue; } a.push(array[i]); u[array[i].id] = 1; } return a; }; var loadScript = function(url, callback){ var script = document.createElement("script") script.type = "text/javascript"; if (script.readyState){ /* IE */ script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } }; } else { /* Others */ script.onload = function(){ callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); } var ldTracker = function(jQuery){ jQuery(document).ready(function(){ if(bitespeedLayer && bitespeedLayer.ecommerce){ /* run list, product, and clientID scripts everywhere */ listViewScript(); productPageScript(); } }) var ldTracker = function(){ document.addEventListener('DOMContentLoaded', function() { if (typeof bitespeedLayer !== 'undefined' && bitespeedLayer.ecommerce) { // run list, product, and clientID scripts everywhere listViewScript(); productPageScript(); } }); } function listViewScript(){ if (!bitespeedLayer.ecommerce.impressions || !bitespeedLayer.ecommerce.impressions.length) return; window.setTimeout(function(){ var postData = { "at" : new Date(), "type" : "productListViewed", "page_url": window.location.href, "event" : { list_id: bitespeedLayer.ecommerce.impressions[0].list, collection_id: bitespeedLayer.ecommerce.impressions[0].collection_id, products: bitespeedLayer.ecommerce.impressions } }; analyticsPost(postData); },500) /* wait for pageview to fire first */ /* product list clicks */ } async function productPageScript(){ var product = bitespeedLayer.ecommerce.detail && bitespeedLayer.ecommerce.detail.products && bitespeedLayer.ecommerce.detail.products[0] if (product) { if(hasLocalStorage) product.list_name = localStorage.list if(hasLocalStorage) product.list_id = localStorage.list var postData = { "at" : new Date(), "type" : "productViewed", "page_url": window.location.href, "event" : product } analyticsPost(postData); } } } if(typeof jQuery === 'undefined'){ loadScript('https://code.jquery.com/jquery-3.7.1.min.js', function(){ jQuery191 = jQuery.noConflict(true); ldTracker(jQuery191); }); } else { ldTracker(jQuery); } // ldTracker(); function removePii(string) { var piiRegex = { "email": /[s&/,=]([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|[s&/,])/, "postcode": /[s&/,=]([A-Z]{1,2}[0-9][0-9A-Z]?(s|%20)[0-9][A-Z]{2})($|[s&/,])/, }; var dlRemoved = string; for (key in piiRegex) { dlRemoved = dlRemoved.replace(piiRegex[key], 'REMOVED'); } return dlRemoved; } })() var popup_id = ""; var product = null || {}; var product_id = null || ""; var current_variant = null || ""; var is_current_variant_available = true; var buyNowElement = null; var mainNewButton = null; var notify_me_text = "Notify Me"; var shop_domain = ""; var dont_show_notify_me_strict = false; var variants = product.variants // variables to build custom logic for different brands var globalFormEle = null; var globalPrimaryBtn = null; var getParameterByNameTemp = (str, url = window.location.href) => { str = str.replace(/[\[\]]/g, "\\$&"); let regex = new RegExp("[?&]" + str + "(=([^&#]*)|&|#|$)").exec(url); return regex ? (regex[2] ? decodeURIComponent(regex[2].replace(/\+/g, " ")) : "") : null; } var variantParam = getParameterByNameTemp("variant"); if (variantParam && !isNaN(variantParam)) { // getting variant param from the url and if it is a proper number set the current_variant as that current_variant = Number(variantParam); } else if (!current_variant && Array.isArray(variants) && variants.length > 0) { // else set the first variant as the current variant current_variant = variants[0].id; } // console.log(product, product_id, current_variant, variants, "DATA IS HEREEE"); // var popup_id = ""; // var product = {}; // var product_id = ""; // var current_variant = ""; // var is_current_variant_available = false; // var buyNowElement = null; // var mainNewButton = null; // const variants = []; var CREATED_NOTIFY_ME_BUTTON_CLASS = "bitespeed-notify-me-button"; var CREATED_NOTIFY_ME_BUTTON_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_CLASS}`; var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS = "bitespeed-notify-me-button-parent"; var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS}`; var notifyMeTexts = ["notify me", "notify"]; var soldOutTexts = ["sold out", "out of stock"]; var wordsToRemove = ["sold out", "out of stock"].concat(notifyMeTexts); var buyButtonTexts = ["buy now", "buy it", "buy it now", "sold out"]; var TheCustomerID = ''; var TheCustomerEmail = ''; var TheCustomerPhone = ''; var TheCustomerFN = ''; var TheCustomerLN = ''; var entityHandle = "tac"; var popup_id = ""; var product = null; var product_id = null; var current_variant = null; var is_current_variant_available = true; var buyNowElement = null; var mainNewButton = null; var notify_me_text = "Notify Me"; var shop_domain = ""; var dont_show_notify_me_strict = false; var variants = product?.variants var productCollections = product?.collections window.product_id = product_id; window.current_variant = current_variant; // variables to build custom logic for different brands var globalFormEle = null; var globalPrimaryBtn = null; var globalParentElement = null; var variantParam = getParameterByName("variant"); if (variantParam && !isNaN(variantParam)) { // getting variant param from the url and if it is a proper number set the current_variant as that current_variant = Number(variantParam); // } else if ( // !current_variant || // !product.variants || // (Array.isArray(product.variants) && product.variants.length <= 0) || // !Array.isArray(product.variants) // ) { // const productFetch = await fetch(`/products/${entityHandle}.js`, { // method: "GET", // headers: { // "Content-Type": "application/json", // }, // }).then((res) => res.json()); // if (productFetch) { // console.log("Product fetched from /products/:handle.js", productFetch); // product = productFetch; // variants = productFetch.variants; // } } else if (!current_variant && Array.isArray(product?.variants) && product?.variants.length > 0) { // change the current_variant to the first variant in the url // window.history.replaceState( // {}, // document.title, // window.location.pathname + "?variant=" + product.variants[0].id // ); // getting the first variant that is available // if no variant is available then set the current_variant to the first variant for (let i = 0; i < product.variants.length; i++) { if (product.variants[i].available) { current_variant = product.variants[i].id; break; } } // else set the first variant as the current variant if (!current_variant) { current_variant = product.variants[0].id; } } // var popup_id = ""; // var product = {}; // var product_id = ""; // var current_variant = ""; // var is_current_variant_available = false; // var buyNowElement = null; // var mainNewButton = null; var CREATED_NOTIFY_ME_BUTTON_CLASS = "bitespeed-notify-me-button"; var CREATED_NOTIFY_ME_BUTTON_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_CLASS}`; var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS = "bitespeed-notify-me-button-parent"; var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS}`; var notifyMeTexts = ["notify me", "notify"]; var soldOutTexts = ["sold out", "out of stock"]; var wordsToRemove = ["sold out", "out of stock"].concat(notifyMeTexts); var buyButtonTexts = ["buy now", "buy it", "buy it now", "sold out"]; var default_formSelector = [ "form.product_form", "form.productForm", ".product-form", ".product_form", ".ProductForm", ".shopify-product-form", ".product-single__form", "form[action='/cart/add']", "form[action='/cart/add.js']", ]; var default_buttonSelector = [ "button[type='submit']", "input[name='add']", "button[name='add']", "input[type='submit']", "input[value='Sold out']", ]; const modifyDefaultSelectorsForBrands = () => { const shopUrl = window.Shopify.shop; if (shopUrl === "vip-lhb2021.myshopify.com") { default_formSelector = [".product__form__wrapper"]; default_buttonSelector = [".wishlisthero-product-page-button-container"]; // soldOutTexts = soldOutTexts.concat(["add to wishlist"]) buyButtonTexts = buyButtonTexts.concat(["add to wishlist"]); } }; modifyDefaultSelectorsForBrands(); // UTILS function checkIfStringIncludes(string, words) { return words.some((word) => string.toLowerCase().includes(word.toLowerCase())); } function isDefined(value) { return null != value; } function getParameterByName(str, url = window.location.href) { str = str.replace(/[\[\]]/g, "\\$&"); let regex = new RegExp("[?&]" + str + "(=([^&#]*)|&|#|$)").exec(url); return regex ? (regex[2] ? decodeURIComponent(regex[2].replace(/\+/g, " ")) : "") : null; } function addMargin(button) { // button.style.margin = "5px"; button.style.marginTop = "5px"; button.style.marginLeft = "5px"; button.style.marginRight = "5px"; button.style.marginBottom = "5px"; } function onNotifyButtonClicked() { // using global variable - bitespeed_popups // const product = null // const selected_variant = null // exact methods and constants from bitespeed-popup.js file // console.log(popup_id, "AAAAA", product_id, "VVVV", current_variant, `${(popup_id + "").trim()}:bitespeed_popup`); bitespeed_popups[`${(popup_id + "").trim()}:bitespeed_popup`].show("", true, { popupTrigger: "back_in_stock", productId: product_id, variantId: current_variant, }); } function addCustomStylesBasedOnBrand(button, isParent) { if(isParent) { switch (window.Shopify.shop) { case 'belvish.myshopify.com': { button.style.marginTop = '10px'; button.style.width = '100%'; } case 'overlays-clothing.myshopify.com': { button.style.marginBottom = '16px'; } default: break; } return } switch (window.Shopify.shop) { case "headphone-zone.myshopify.com": { button.style.width = "100%"; break; } case "the-indian-ethnic-company.myshopify.com": { button.style.margin = "8px 0px"; break; } default: break; } return button; } /** * method to add neccessary properties to the * new notify button... handling many edges cases as well... */ function addNeccessaryProperties(button) { // adding all the neccessary properties button.type = "button"; button.name = "notify_me"; button.disabled = false; button.ariaDisabled = false; // edge case, few websites are using aria-disabled // adding/overriding some styles button.style.display = "inline-block"; button.style.opacity = "1"; button.style.pointerEvents = "auto"; button.style.cursor = "pointer"; button.classList.remove("disabled"); // edge case: // removing the click events from button.click = () => {}; button.onclick = () => {}; // some custom brand specific attributes or properties button.removeAttribute("data-notification-popup"); button.removeAttribute("data-add-to-cart"); const customButton = addCustomStylesBasedOnBrand(button); return customButton; } function ifPassedNumberCondition(condition, conditionValue, actualValue) { if (condition === "greater than") { return actualValue > conditionValue; } else if (condition === "less than") { return actualValue < conditionValue; } else if (condition === "equals to") { return actualValue === conditionValue; } else if (condition === "not equals to") { return actualValue !== conditionValue; } else if (condition === "greater than or equals to") { return actualValue >= conditionValue; } else if (condition === "less than or equals to") { return actualValue <= conditionValue; } return false; } function isVariantAvailableBasedOnPopupTriggers() { /** * this is a part of popup triggers only * but being handled here as there are no option for variant-wise trigger */ if ( window?.bspdPopupProductMetadata !== undefined && window?.bspdPopupProductMetadata !== null ) { const { popupId, value, condition, ...variants } = window.bspdPopupProductMetadata || {}; console.log(variants, "variants asldfjas"); if (variants[window.ShopifyAnalytics.meta.selectedVariantId]) { const inventoryQuantity = variants[window.ShopifyAnalytics.meta.selectedVariantId] ?.inventoryQuantity || null; if (inventoryQuantity === null) return true; return !ifPassedNumberCondition(condition, value, inventoryQuantity); } return true; } return true; } function checkVariantIsAvailable() { if (!product.variants || product.variants.length <= 0) { is_current_variant_available = true; return true; } for (let i = 0; i < product.variants.length; i++) { const variantId = Number(product.variants[i].id); const currentVariantId = Number(current_variant); if (variantId === currentVariantId) { if (product.variants[i].available === null || product.variants[i].available === undefined) dont_show_notify_me_strict = true; is_current_variant_available = product.variants[i].available; const secondaryPopupTriggerCondition = isVariantAvailableBasedOnPopupTriggers(); return is_current_variant_available && secondaryPopupTriggerCondition; } } const secondaryPopupTriggerCondition = isVariantAvailableBasedOnPopupTriggers(); return false && secondaryPopupTriggerCondition; } function checkOneVariantIsAvailable() { let is_variant_available = true, is_variant_found = true; if (!current_variant) return null; if (!product.variants || product.variants.length <= 0) { is_vairant_available = true; return false; } for (let i = 0; i < product.variants.length; i++) { let variant = product.variants[i]; // Number(variant.id) === Number(current_variant) && (is_variant_found = variant.available), // (is_variant_available = is_variant_available || variant.available); if (Number(variant.id) === Number(current_variant)) { is_variant_found = variant.available; is_variant_available = is_variant_available || variant.available; } } const secondaryPopupTriggerCondition = isVariantAvailableBasedOnPopupTriggers(); return (is_variant_available && is_variant_found && product.variants.length >= 1) && secondaryPopupTriggerCondition; } function refreshBackInStockButton() { if (is_current_variant_available) { let buttonParent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR); isDefined(buttonParent) && (buttonParent.innerHTML = ""), bspdAddBackInStockButton(); } else { bspdAddBackInStockButton(); } } /** * This function is used to check if the variant is available and reload the button * if it is available. */ function delayedRefreshButton() { setTimeout(function () { const newVariant = getParameterByName("variant") || window.ShopifyAnalytics.meta.selectedVariantId; if (newVariant === null) { return; } let tempVariant = current_variant; current_variant = Number(newVariant); if (tempVariant !== current_variant) { checkVariantIsAvailable(); refreshBackInStockButton(); } }, 2); } // custom logic for different brands function showNotifyBTNOnCustomBrandLogicPass() { /** * this variable is a by pass mechanism * mostly made when safari is not getting enought variant availability data * so we are not showing notify me button * in that case... */ if (dont_show_notify_me_strict) return false; // dependent on primary button if (globalPrimaryBtn) { if (shop_domain === "neeshperfumes.com") { if (String(globalPrimaryBtn.innerText).toLowerCase() === "validate") return false; } else if (shop_domain === "carrypro.in") { const getButtonAttributes = globalPrimaryBtn.attributes; const disabledAttribute = getButtonAttributes.getNamedItem("disabled"); return true; return disabledAttribute && disabledAttribute.value === "disabled"; // } else if (shop_domain === 'theindianethnicco.com') { // // custom request of 'theindianethnicco' // // to only show when all the variants are out of stock // return product.variants.every(variant => !variant.available); } } return true; } /** * function to add custom logic for notify me button * for few brands the existing button criteria is not enough * or maybe the button is not getting rendered properly */ function addCustomLogicForNotifyMeButton() { // if(shop_domain === 'capresebags.com') { // const form = document.getElementById('wishlisthero-product-page-button-container'); // if(form) { // const button = form.getElementsByClassName('product__form--add-to-cart'); // // add the button at the beginning of the form // if(button && button.length > 0) { // console.log(111111) // createBackInStockButton(button[0], true); // } // } // } } /** * this method renders the notify me button taking the reference from the * primary original button data */ function createBackInStockButton(buttonReference, dontDisableOgButton = false) { let button = document.querySelector(CREATED_NOTIFY_ME_BUTTON_CLASS_SELECTOR); if (!isDefined(button)) { // For stores with reactive themes, create fresh button instead of cloning // to avoid theme framework overwriting button text/state via cloned attributes let newButton; if (window.Shopify.shop === 'hophead-apparels.myshopify.com') { newButton = document.createElement("button"); newButton.className = buttonReference.className; } else { newButton = buttonReference.cloneNode(true) || document.createElement("button"); } addNeccessaryProperties(newButton, buttonReference); newButton.classList.add(CREATED_NOTIFY_ME_BUTTON_CLASS); newButton.innerText = ""; newButton.onclick = () => {}; newButton.click = () => {}; newButton.removeEventListener("click", () => {}); let textAddedInChild = false; for (let child of buttonReference.childNodes) { let clonedChild = child.cloneNode(true); clonedChild.innerText = ""; clonedChild.onclick = () => {}; clonedChild.click = () => {}; clonedChild.removeEventListener("click", () => {}); if (child.nodeType === 1) { if (checkIfStringIncludes((child.innerText + "").toLowerCase(), wordsToRemove) && !textAddedInChild) { textAddedInChild = true; clonedChild.innerText = notify_me_text; } if (window.Shopify.shop === 'hophead-apparels.myshopify.com' && clonedChild.innerText === "") continue; newButton.appendChild(clonedChild); } } if (!textAddedInChild) { newButton.innerText = notify_me_text; } /** * removing the disabled class from the button */ if (!dontDisableOgButton) if (isDefined(buttonReference)) { for (let i = 0; i < newButton.classList.length; i++) { if ( "disabled" === newButton.classList[i] || "pe_none" === newButton.classList[i] || "product__submit__add" === newButton.classList[i] || newButton.classList[i].includes("disabled") ) newButton.classList.remove(newButton.classList[i]); } } newButton.style = "cursor: pointer !important; visibility: visible; display: block !important; position: relative; overflow: hidden;"; if (window.Shopify.shop === '3b0520-2.myshopify.com') { newButton.style = `${newButton.style}; color: #ffffff !important; background-color: #0C1929 !important;`; } else if (window.Shopify.shop === 'angel-rocket-india.myshopify.com') { newButton.style = `${newButton.style}; color: #FF7E7C !important;`; } if (!buyNowElement) { addMargin(newButton); addMargin(buttonReference); } let buttonParent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR); addCustomStylesBasedOnBrand(buttonParent, true) if (showNotifyBTNOnCustomBrandLogicPass()) { // isDefined(buttonParent) && buttonParent.appendChild(newButton), (newButton.onclick = () => { onNotifyButtonClicked(); }), (newButton.ontouchstart = () => { onNotifyButtonClicked(); }); if (buyNowElement) { buyNowElement.style.display = "none"; } buttonParent.style.display = "block"; globalParentElement.style.display = "block"; } } } function createBackInStockButtonParent(form, buttonReference) { let parent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR); mainNewButton = parent; if (!isDefined(parent)) { let newParent = document.createElement("div"); newParent.classList.add(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS); globalParentElement = buttonReference.parentElement; if (buttonReference.nextSibling) { globalParentElement.style.display = "block"; globalParentElement.insertBefore(newParent, buttonReference.nextSibling); } else { globalParentElement.style.display = "block"; globalParentElement.appendChild(newParent); } mainNewButton = newParent; // form.appendChild(newParent); } createBackInStockButton(buttonReference); } function bspdAddBackInStockButton() { const is_one_variant_available = checkOneVariantIsAvailable(); if (is_one_variant_available === null) { return; } if (is_one_variant_available) { if (mainNewButton) mainNewButton.style.display = "none"; if (buyNowElement) { buyNowElement.style.display = "block"; } return; } else { if (buyNowElement) buyNowElement.style.display = "none"; if (mainNewButton) mainNewButton.style.display = "block"; } let formSelector = default_formSelector.find((e) => document.querySelector(e)); let formElement = document.querySelector(formSelector); globalFormEle = formElement; let buttonSelector = default_buttonSelector.find((e) => document.querySelector(formSelector + " " + e)); let primaryButton = document.querySelector(formSelector + " " + buttonSelector); globalPrimaryBtn = primaryButton; let siblingElements = Array.from(formElement.querySelectorAll("a, button, input")); buyNowElement = siblingElements.find((el) => { // Skip Shopify payment buttons to prevent cloning the wrong button if (el.classList.contains('shopify-payment-button__button')) return false; let innerText = (el.innerText + "").toLowerCase(); let value = (el.value + "").toLowerCase(); return checkIfStringIncludes(innerText, buyButtonTexts) || checkIfStringIncludes(value, buyButtonTexts); }); const backInStockButtonParent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR); const isPrimaryButtonOutOfStock = checkIfStringIncludes((primaryButton.innerText + "").toLowerCase(), soldOutTexts); return primaryButton && (primaryButton.disabled || primaryButton.hidden || primaryButton.classList.contains("disabled")) ? createBackInStockButtonParent(formElement, buyNowElement || primaryButton) : !primaryButton && backInStockButtonParent ? createBackInStockButton(primaryButton) : !isPrimaryButtonOutOfStock || primaryButton || backInStockButtonParent ? createBackInStockButtonParent(formElement, buyNowElement || primaryButton) : false; } const storeHaventSetupVariantChange = ['stylobug.myshopify.com'].includes(window.Shopify.shop) function addPageChangeListenerEvents() { let timer = null; document.addEventListener("popstate", (e) => { delayedRefreshButton(); if (storeHaventSetupVariantChange) { if (timer) clearTimeout(timer); timer = setTimeout(() => { // doing this will take sometime, and check for manual variant change event/variable delayedRefreshButton(); }, 200); } }), document.addEventListener("change", (e) => { delayedRefreshButton(); if (storeHaventSetupVariantChange) { if (timer) clearTimeout(timer); timer = setTimeout(() => { // doing this will take sometime, and check for manual variant change event/variable delayedRefreshButton(); }, 200); } }), (function () { let e = location.href; new MutationObserver(() => { const url = location.href; if (url !== e) { e = url; delayedRefreshButton(); if (storeHaventSetupVariantChange) { if (timer) clearTimeout(timer); timer = setTimeout(() => { // doing this will take sometime, and check for manual variant change event/variable delayedRefreshButton(); }, 200); } } }).observe(document.body, { subtree: !0, childList: !0, }); // new MutationObserver(() => { // delayedRefreshButton(); // }).observe(document.body, { // childList: true, // subtree: true, // // attributes: true, // // characterData: true // }); })(); } function passedBrandInitLogic() { const shopUrl = window.Shopify.shop; switch (shopUrl) { case "headphone-zone.myshopify.com": if ((BspdCurrentProduct?.tags || []).some(tag => tag.toLowerCase() === "hidenotify")) return false; break; default: return true; break; } return true; } function initNotifyFrontendService(popupid, notifyMeText, shopDomain = "") { if (!passedBrandInitLogic()) { console.log("Notify Me Service is not initialized due to brand specific logic."); return; } setTimeout(() => { popup_id = popupid; notify_me_text = notifyMeText || "Notify Me"; shop_domain = shopDomain || ""; if (!window.location.pathname.startsWith("/products") && !window.location.pathname.startsWith("/collections")) { console.log("Notify Me Service is not available on this page"); return; } const renderedNotifyMeButton = bspdAddBackInStockButton(); console.log("Notify Me Service Initialized"); if (renderedNotifyMeButton === false) { console.log('Cannot render "Notify Me" button due to CSS policies. Please contact support for assistance.'); addCustomLogicForNotifyMeButton(); } addPageChangeListenerEvents(); }, 1); } !function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w window.klaviyoReviewsProductDesignMode = false window.klaviyoReviewsProductDesignMode = false if (!window.customerHub) { window.customerHub = {}; } window.customerHub.storefrontRoutes = { login: "/account/login?return_url=%2F%23k-hub", register: "/account/register?return_url=%2F%23k-hub", logout: "/account/logout", profile: "/account", addresses: "/account/addresses", }; window.customerHub.userId = null; window.customerHub.storeDomain = "raycon.myshopify.com"; window.customerHub.storeLocale = { currentLanguage: 'en', currentCountry: 'US', availableLanguages: [ { iso_code: 'en', endonym_name: 'English' }, { iso_code: 'zh-CN', endonym_name: '简体中文' }, { iso_code: 'zh-TW', endonym_name: '繁體中文' } ], availableCountries: [ { iso_code: 'AL', name: 'Albania', currency_code: 'ALL' }, { iso_code: 'DZ', name: 'Algeria', currency_code: 'DZD' }, { iso_code: 'AD', name: 'Andorra', currency_code: 'EUR' }, { iso_code: 'AO', name: 'Angola', currency_code: 'AOA' }, { iso_code: 'AI', name: 'Anguilla', currency_code: 'XCD' }, { iso_code: 'AG', name: 'Antigua & Barbuda', currency_code: 'XCD' }, { iso_code: 'AR', name: 'Argentina', currency_code: 'ARS' }, { iso_code: 'AM', name: 'Armenia', currency_code: 'AMD' }, { iso_code: 'AW', name: 'Aruba', currency_code: 'AWG' }, { iso_code: 'AU', name: 'Australia', currency_code: 'AUD' }, { iso_code: 'AT', name: 'Austria', currency_code: 'EUR' }, { iso_code: 'AZ', name: 'Azerbaijan', currency_code: 'AZN' }, { iso_code: 'BS', name: 'Bahamas', currency_code: 'BSD' }, { iso_code: 'BH', name: 'Bahrain', currency_code: 'USD' }, { iso_code: 'BD', name: 'Bangladesh', currency_code: 'BDT' }, { iso_code: 'BB', name: 'Barbados', currency_code: 'BBD' }, { iso_code: 'BE', name: 'Belgium', currency_code: 'EUR' }, { iso_code: 'BZ', name: 'Belize', currency_code: 'BZD' }, { iso_code: 'BJ', name: 'Benin', currency_code: 'XOF' }, { iso_code: 'BM', name: 'Bermuda', currency_code: 'USD' }, { iso_code: 'BO', name: 'Bolivia', currency_code: 'BOB' }, { iso_code: 'BA', name: 'Bosnia & Herzegovina', currency_code: 'BAM' }, { iso_code: 'BW', name: 'Botswana', currency_code: 'BWP' }, { iso_code: 'BR', name: 'Brazil', currency_code: 'BRL' }, { iso_code: 'VG', name: 'British Virgin Islands', currency_code: 'USD' }, { iso_code: 'BN', name: 'Brunei', currency_code: 'BND' }, { iso_code: 'BG', name: 'Bulgaria', currency_code: 'EUR' }, { iso_code: 'BF', name: 'Burkina Faso', currency_code: 'XOF' }, { iso_code: 'BI', name: 'Burundi', currency_code: 'BIF' }, { iso_code: 'KH', name: 'Cambodia', currency_code: 'KHR' }, { iso_code: 'CM', name: 'Cameroon', currency_code: 'XAF' }, { iso_code: 'CA', name: 'Canada', currency_code: 'CAD' }, { iso_code: 'CV', name: 'Cape Verde', currency_code: 'CVE' }, { iso_code: 'KY', name: 'Cayman Islands', currency_code: 'KYD' }, { iso_code: 'TD', name: 'Chad', currency_code: 'XAF' }, { iso_code: 'CL', name: 'Chile', currency_code: 'CLP' }, { iso_code: 'CN', name: 'China', currency_code: 'CNY' }, { iso_code: 'CO', name: 'Colombia', currency_code: 'COP' }, { iso_code: 'KM', name: 'Comoros', currency_code: 'KMF' }, { iso_code: 'CG', name: 'Congo - Brazzaville', currency_code: 'XAF' }, { iso_code: 'CK', name: 'Cook Islands', currency_code: 'NZD' }, { iso_code: 'CR', name: 'Costa Rica', currency_code: 'CRC' }, { iso_code: 'CI', name: 'Côte d’Ivoire', currency_code: 'XOF' }, { iso_code: 'HR', name: 'Croatia', currency_code: 'EUR' }, { iso_code: 'CW', name: 'Curaçao', currency_code: 'USD' }, { iso_code: 'CY', name: 'Cyprus', currency_code: 'EUR' }, { iso_code: 'CZ', name: 'Czechia', currency_code: 'CZK' }, { iso_code: 'DK', name: 'Denmark', currency_code: 'DKK' }, { iso_code: 'DJ', name: 'Djibouti', currency_code: 'DJF' }, { iso_code: 'DM', name: 'Dominica', currency_code: 'XCD' }, { iso_code: 'DO', name: 'Dominican Republic', currency_code: 'DOP' }, { iso_code: 'EC', name: 'Ecuador', currency_code: 'USD' }, { iso_code: 'EG', name: 'Egypt', currency_code: 'EGP' }, { iso_code: 'SV', name: 'El Salvador', currency_code: 'USD' }, { iso_code: 'GQ', name: 'Equatorial Guinea', currency_code: 'XAF' }, { iso_code: 'EE', name: 'Estonia', currency_code: 'EUR' }, { iso_code: 'SZ', name: 'Eswatini', currency_code: 'SZL' }, { iso_code: 'ET', name: 'Ethiopia', currency_code: 'ETB' }, { iso_code: 'FK', name: 'Falkland Islands', currency_code: 'FKP' }, { iso_code: 'FO', name: 'Faroe Islands', currency_code: 'DKK' }, { iso_code: 'FJ', name: 'Fiji', currency_code: 'FJD' }, { iso_code: 'FI', name: 'Finland', currency_code: 'EUR' }, { iso_code: 'FR', name: 'France', currency_code: 'EUR' }, { iso_code: 'GF', name: 'French Guiana', currency_code: 'EUR' }, { iso_code: 'PF', name: 'French Polynesia', currency_code: 'XPF' }, { iso_code: 'GA', name: 'Gabon', currency_code: 'USD' }, { iso_code: 'GM', name: 'Gambia', currency_code: 'GMD' }, { iso_code: 'GE', name: 'Georgia', currency_code: 'GEL' }, { iso_code: 'DE', name: 'Germany', currency_code: 'EUR' }, { iso_code: 'GH', name: 'Ghana', currency_code: 'USD' }, { iso_code: 'GI', name: 'Gibraltar', currency_code: 'GBP' }, { iso_code: 'GR', name: 'Greece', currency_code: 'EUR' }, { iso_code: 'GL', name: 'Greenland', currency_code: 'DKK' }, { iso_code: 'GD', name: 'Grenada', currency_code: 'XCD' }, { iso_code: 'GP', name: 'Guadeloupe', currency_code: 'EUR' }, { iso_code: 'GT', name: 'Guatemala', currency_code: 'GTQ' }, { iso_code: 'GG', name: 'Guernsey', currency_code: 'GBP' }, { iso_code: 'GN', name: 'Guinea', currency_code: 'GNF' }, { iso_code: 'GW', name: 'Guinea-Bissau', currency_code: 'XOF' }, { iso_code: 'GY', name: 'Guyana', currency_code: 'GYD' }, { iso_code: 'HT', name: 'Haiti', currency_code: 'HTG' }, { iso_code: 'HN', name: 'Honduras', currency_code: 'HNL' }, { iso_code: 'HK', name: 'Hong Kong SAR', currency_code: 'HKD' }, { iso_code: 'HU', name: 'Hungary', currency_code: 'HUF' }, { iso_code: 'IS', name: 'Iceland', currency_code: 'ISK' }, { iso_code: 'IN', name: 'India', currency_code: 'INR' }, { iso_code: 'ID', name: 'Indonesia', currency_code: 'IDR' }, { iso_code: 'IE', name: 'Ireland', currency_code: 'EUR' }, { iso_code: 'IM', name: 'Isle of Man', currency_code: 'GBP' }, { iso_code: 'IL', name: 'Israel', currency_code: 'ILS' }, { iso_code: 'IT', name: 'Italy', currency_code: 'EUR' }, { iso_code: 'JM', name: 'Jamaica', currency_code: 'JMD' }, { iso_code: 'JP', name: 'Japan', currency_code: 'JPY' }, { iso_code: 'JE', name: 'Jersey', currency_code: 'GBP' }, { iso_code: 'JO', name: 'Jordan', currency_code: 'USD' }, { iso_code: 'KZ', name: 'Kazakhstan', currency_code: 'KZT' }, { iso_code: 'KE', name: 'Kenya', currency_code: 'KES' }, { iso_code: 'KI', name: 'Kiribati', currency_code: 'USD' }, { iso_code: 'KW', name: 'Kuwait', currency_code: 'USD' }, { iso_code: 'KG', name: 'Kyrgyzstan', currency_code: 'KGS' }, { iso_code: 'LA', name: 'Laos', currency_code: 'LAK' }, { iso_code: 'LV', name: 'Latvia', currency_code: 'EUR' }, { iso_code: 'LB', name: 'Lebanon', currency_code: 'LBP' }, { iso_code: 'LS', name: 'Lesotho', currency_code: 'LSL' }, { iso_code: 'LR', name: 'Liberia', currency_code: 'LRD' }, { iso_code: 'LI', name: 'Liechtenstein', currency_code: 'CHF' }, { iso_code: 'LT', name: 'Lithuania', currency_code: 'EUR' }, { iso_code: 'LU', name: 'Luxembourg', currency_code: 'EUR' }, { iso_code: 'MO', name: 'Macao SAR', currency_code: 'MOP' }, { iso_code: 'MG', name: 'Madagascar', currency_code: 'USD' }, { iso_code: 'MW', name: 'Malawi', currency_code: 'MWK' }, { iso_code: 'MY', name: 'Malaysia', currency_code: 'MYR' }, { iso_code: 'MV', name: 'Maldives', currency_code: 'MVR' }, { iso_code: 'MT', name: 'Malta', currency_code: 'EUR' }, { iso_code: 'MQ', name: 'Martinique', currency_code: 'EUR' }, { iso_code: 'MR', name: 'Mauritania', currency_code: 'USD' }, { iso_code: 'MU', name: 'Mauritius', currency_code: 'MUR' }, { iso_code: 'YT', name: 'Mayotte', currency_code: 'EUR' }, { iso_code: 'MX', name: 'Mexico', currency_code: 'MXN' }, { iso_code: 'MD', name: 'Moldova', currency_code: 'MDL' }, { iso_code: 'MC', name: 'Monaco', currency_code: 'EUR' }, { iso_code: 'MN', name: 'Mongolia', currency_code: 'MNT' }, { iso_code: 'ME', name: 'Montenegro', currency_code: 'EUR' }, { iso_code: 'MS', name: 'Montserrat', currency_code: 'XCD' }, { iso_code: 'MA', name: 'Morocco', currency_code: 'MAD' }, { iso_code: 'MZ', name: 'Mozambique', currency_code: 'MZN' }, { iso_code: 'NA', name: 'Namibia', currency_code: 'NAD' }, { iso_code: 'NR', name: 'Nauru', currency_code: 'AUD' }, { iso_code: 'NP', name: 'Nepal', currency_code: 'NPR' }, { iso_code: 'NL', name: 'Netherlands', currency_code: 'EUR' }, { iso_code: 'NC', name: 'New Caledonia', currency_code: 'XPF' }, { iso_code: 'NZ', name: 'New Zealand', currency_code: 'NZD' }, { iso_code: 'NI', name: 'Nicaragua', currency_code: 'NIO' }, { iso_code: 'NG', name: 'Nigeria', currency_code: 'NGN' }, { iso_code: 'NU', name: 'Niue', currency_code: 'NZD' }, { iso_code: 'MK', name: 'North Macedonia', currency_code: 'MKD' }, { iso_code: 'NO', name: 'Norway', currency_code: 'NOK' }, { iso_code: 'OM', name: 'Oman', currency_code: 'USD' }, { iso_code: 'PK', name: 'Pakistan', currency_code: 'PKR' }, { iso_code: 'PA', name: 'Panama', currency_code: 'USD' }, { iso_code: 'PG', name: 'Papua New Guinea', currency_code: 'PGK' }, { iso_code: 'PY', name: 'Paraguay', currency_code: 'PYG' }, { iso_code: 'PE', name: 'Peru', currency_code: 'PEN' }, { iso_code: 'PH', name: 'Philippines', currency_code: 'PHP' }, { iso_code: 'PL', name: 'Poland', currency_code: 'PLN' }, { iso_code: 'PT', name: 'Portugal', currency_code: 'EUR' }, { iso_code: 'QA', name: 'Qatar', currency_code: 'QAR' }, { iso_code: 'RE', name: 'Réunion', currency_code: 'EUR' }, { iso_code: 'RO', name: 'Romania', currency_code: 'RON' }, { iso_code: 'RW', name: 'Rwanda', currency_code: 'RWF' }, { iso_code: 'WS', name: 'Samoa', currency_code: 'WST' }, { iso_code: 'SM', name: 'San Marino', currency_code: 'EUR' }, { iso_code: 'ST', name: 'São Tomé & Príncipe', currency_code: 'STD' }, { iso_code: 'SA', name: 'Saudi Arabia', currency_code: 'SAR' }, { iso_code: 'SN', name: 'Senegal', currency_code: 'XOF' }, { iso_code: 'RS', name: 'Serbia', currency_code: 'RSD' }, { iso_code: 'SC', name: 'Seychelles', currency_code: 'SCR' }, { iso_code: 'SL', name: 'Sierra Leone', currency_code: 'SLL' }, { iso_code: 'SG', name: 'Singapore', currency_code: 'SGD' }, { iso_code: 'SX', name: 'Sint Maarten', currency_code: 'USD' }, { iso_code: 'SK', name: 'Slovakia', currency_code: 'EUR' }, { iso_code: 'SI', name: 'Slovenia', currency_code: 'EUR' }, { iso_code: 'SB', name: 'Solomon Islands', currency_code: 'SBD' }, { iso_code: 'ZA', name: 'South Africa', currency_code: 'ZAR' }, { iso_code: 'KR', name: 'South Korea', currency_code: 'KRW' }, { iso_code: 'ES', name: 'Spain', currency_code: 'EUR' }, { iso_code: 'LK', name: 'Sri Lanka', currency_code: 'LKR' }, { iso_code: 'BL', name: 'St. Barthélemy', currency_code: 'EUR' }, { iso_code: 'SH', name: 'St. Helena', currency_code: 'SHP' }, { iso_code: 'KN', name: 'St. Kitts & Nevis', currency_code: 'XCD' }, { iso_code: 'LC', name: 'St. Lucia', currency_code: 'XCD' }, { iso_code: 'MF', name: 'St. Martin', currency_code: 'EUR' }, { iso_code: 'VC', name: 'St. Vincent & Grenadines', currency_code: 'XCD' }, { iso_code: 'SR', name: 'Suriname', currency_code: 'SRD' }, { iso_code: 'SE', name: 'Sweden', currency_code: 'SEK' }, { iso_code: 'CH', name: 'Switzerland', currency_code: 'CHF' }, { iso_code: 'TW', name: 'Taiwan', currency_code: 'TWD' }, { iso_code: 'TZ', name: 'Tanzania', currency_code: 'TZS' }, { iso_code: 'TH', name: 'Thailand', currency_code: 'THB' }, { iso_code: 'TL', name: 'Timor-Leste', currency_code: 'USD' }, { iso_code: 'TG', name: 'Togo', currency_code: 'XOF' }, { iso_code: 'TO', name: 'Tonga', currency_code: 'TOP' }, { iso_code: 'TT', name: 'Trinidad & Tobago', currency_code: 'TTD' }, { iso_code: 'TN', name: 'Tunisia', currency_code: 'USD' }, { iso_code: 'TM', name: 'Turkmenistan', currency_code: 'USD' }, { iso_code: 'TC', name: 'Turks & Caicos Islands', currency_code: 'USD' }, { iso_code: 'TV', name: 'Tuvalu', currency_code: 'AUD' }, { iso_code: 'UG', name: 'Uganda', currency_code: 'UGX' }, { iso_code: 'AE', name: 'United Arab Emirates', currency_code: 'AED' }, { iso_code: 'GB', name: 'United Kingdom', currency_code: 'GBP' }, { iso_code: 'US', name: 'United States', currency_code: 'USD' }, { iso_code: 'UY', name: 'Uruguay', currency_code: 'UYU' }, { iso_code: 'UZ', name: 'Uzbekistan', currency_code: 'UZS' }, { iso_code: 'VU', name: 'Vanuatu', currency_code: 'VUV' }, { iso_code: 'VA', name: 'Vatican City', currency_code: 'EUR' }, { iso_code: 'VE', name: 'Venezuela', currency_code: 'USD' }, { iso_code: 'VN', name: 'Vietnam', currency_code: 'VND' }, { iso_code: 'WF', name: 'Wallis & Futuna', currency_code: 'XPF' }, { iso_code: 'ZM', name: 'Zambia', currency_code: 'ZMW' }, { iso_code: 'ZW', name: 'Zimbabwe', currency_code: 'USD' } ] }; window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","badge_star_color":"#f5b400","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"{{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank you! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"{{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"last_initial","widget_rating_filter_color":"#4C21FF","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","widget_star_color":"#f5b400","verified_badge_text":"Verified","verified_badge_bg_color":"#4C21FF","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":true,"widget_location_format":"country_iso_code","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":true,"widget_theme":"","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"★ Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"text","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":true,"featured_carousel_show_header":true,"featured_carousel_title":"Let customers speak for us","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"vintage","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":true,"widget_pagination_use_custom_color":true,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":true,"mute_video_by_default":true,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":false,"disable_json_ld":false,"enable_json_ld_products":true,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":true,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":false,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":true,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":true,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subtitle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#232b36","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }}","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":true,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":true,"widget_reviewer_name_color":"#232B36","widget_write_review_text_color":"","widget_write_review_bg_color":"#232B36","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"load_more","widget_load_more_text":"Load More","widget_load_more_color":"#4C21FF","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":true,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":true,"widget_translate_review_content_method":"automatic","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":true,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":false,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":true,"request_review_other_products_in_order":true,"review_form_color_scheme":"default","review_form_corner_style":"soft","review_form_star_color":{},"review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":{},"review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":true,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":true,"show_negative_reviews_help_screen":true,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":true,"transparency_badges_from_another_provider":true,"transparency_badges_collected_from_store_visitor":true,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":true,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_store_review_label_text":"Review about the store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural":"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"We’ll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"platform":"shopify","branding_url":"https://app.judge.me/reviews/stores/rayconglobal.com","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Raycon ","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_use_review_site":true,"shop_locale":"en","enable_multi_locales_translations":true,"show_review_title_input":false,"review_verification_email_status":"never","require_verification_before_submit":false,"negative_review_notification_email":"support@rayconglobal.com","can_be_branded":true,"reply_name_text":"Raycon "}; .jdgm-xx{left:0}:root{--jdgm-primary-color: #232b36;--jdgm-secondary-color: rgba(35,43,54,0.1);--jdgm-star-color: #f5b400;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #232B36;--jdgm-paginate-color: #4C21FF;--jdgm-border-radius: 10;--jdgm-reviewer-name-color: #232B36}.jdgm-histogram__bar-content{background-color:#4C21FF}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#4C21FF}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-preview-badge .jdgm-star.jdgm-star{color:#f5b400}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-fullname{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Raycon '}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )} @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important} !function(e){window.jdgm=window.jdgm||{},jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/019c89b5-c5cd-7f86-b71c-6141193be68a/judgeme-extensions-366/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/", jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ !o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), (a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; t.onreadystatechange=function(){4===t.readyState&&(Function(t.response)(),d&&d(t.response))}, t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll( ".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_HOST+"widget_v3/base.css"): jdgm.loadCSS(jdgm.CDN_HOST+"widget/base.css"):jdgm.loadCSS(jdgm.CDN_HOST+"shopify_v2.css") )}))}(document); (function() { var jdgmThemeFixes = null; if (!jdgmThemeFixes) return; var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; if (!thisThemeFix) return; if (thisThemeFix.html) { document.addEventListener("DOMContentLoaded", function() { var htmlDiv = document.createElement('div'); htmlDiv.classList.add('jdgm-theme-fix-html'); htmlDiv.innerHTML = thisThemeFix.html; document.body.append(htmlDiv); }); }; if (thisThemeFix.css) { var styleTag = document.createElement('style'); styleTag.classList.add('jdgm-theme-fix-style'); styleTag.innerHTML = thisThemeFix.css; document.head.append(styleTag); }; if (thisThemeFix.js) { var scriptTag = document.createElement('script'); scriptTag.classList.add('jdgm-theme-fix-script'); scriptTag.innerHTML = thisThemeFix.js; document.head.append(scriptTag); }; })(); (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: 24040041,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};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);}}()); (function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 24040041,storefrontBaseUrl: "https://rayconglobal.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["2dca8a86"],webPixelsConfigList: [{"id":"1289781271","configuration":"{\"shopUrl\":\"raycon.myshopify.com\",\"apiUrl\":\"https:\\\/\\\/services.nofraud.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0cf396a0daab06a8120b15747f89a0e3","type":"APP","apiClientId":1380557,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"873791511","configuration":"{\"pixelCode\":\"C9UJV83C77UDNJM2S2I0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"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","enabledFlags":["9a3ed68a"]},{"id":"762085399","configuration":"{\"eventKey\":\"197c4174-a796-4e5f-9c70-ea44be1047b3\",\"name\":\"offline_raycon.myshopify.com - Axon Pixel\",\"storefrontToken\":\"c48c136974cfe4555a5f67712a06f508\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b6816321e6f89f6ea406acf7824f1697","type":"APP","apiClientId":256560922625,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"658243607","configuration":"{\"shopId\":\"3994\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e57a43765e0d230c1bcb12178c1ff13f","type":"APP","apiClientId":2328352,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"638124055","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"34ad157958823915625854214640f0bf","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"527695895","configuration":"{\"Enabled\":\"false\",\"DeveloperPreview\":\"false\",\"UpdatedAt\":\"2026-02-23T09:04:51.491Z\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9ffa6f465e95a46be44df3f42fbd3ef7","type":"APP","apiClientId":34646425601,"privacyPurposes":["ANALYTICS"],"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":"518717463","configuration":"{\"accountID\":\"LuhenE\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"524f6c1ee37bacdca7657a665bdca589","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"407470103","configuration":"{\"shopId\":\"raycon.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"31536d5a2ef62c1887054e49fd58dba0","type":"APP","apiClientId":4845829,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"407339031","configuration":"{\"accountID\":\"1220658\",\"workspaceId\":\"f3180089-b890-48ef-9464-c496e212cf54\",\"projectId\":\"fb26f090-0ab1-4b11-bb96-9f0ab37adae9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"52fc54f4608fa63b89d7f7c4f9344a98","type":"APP","apiClientId":5461967,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"304644119","configuration":"{\"shopDomain\":\"raycon.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7f2de0ecb6b420d2fa07cf04a37a4dbf","type":"APP","apiClientId":2436932,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"200441879","configuration":"{\"hashed_organization_id\":\"5d6f70e26cc4422e7f895a9db17fa18a_v1\",\"app_key\":\"raycon\",\"allow_collect_personal_data\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"da79698a1971ddd00d23b0a5b73c0d33","type":"APP","apiClientId":4551725,"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":"unrestricted"},{"id":"180322327","configuration":"{\"accountId\":\"Global-e\",\"merchantId\":\"1720\",\"baseApiUrl\":\"https:\/\/checkout-service.global-e.com\/api\/v1\",\"siteId\":\"7ce243a1e1a2\",\"BorderfreeMetaCAPIEnabled\":\"False\",\"FT_IsLegacyAnalyticsSDKEnabled\":\"True\",\"FT_IsAnalyticsSDKEnabled\":\"False\",\"CDNUrl\":\"https:\/\/webservices.global-e.com\/\",\"BfGoogleAdsEnabled\":\"false\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"07f17466e0885c524b92de369a41e2cd","type":"APP","apiClientId":5806573,"privacyPurposes":["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":"unrestricted"},{"id":"2719767","configuration":"{\"northbeamId\": \"89574596_2232_4ac4_a31d_4adf38d20c77\", \"collectorDomain\": \"i.rayconglobal.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e46c2d6352a678fc6581f4bd0bc772e1","type":"APP","apiClientId":3188721,"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":"unrestricted"},{"id":"1671191","configuration":"{\"config_url\": \"\/a\/elevar\/static\/configs\/eaf3284a91c577096e0e52bbfe2a36e0b2d2c0a0\/config.js\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ab86028887ec2044af7d02b854e52653","type":"APP","apiClientId":2509311,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"24346647","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Elevar - Checkout Tracking"},{"id":"24543255","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["SALE_OF_DATA"],"name":"Northbeam - Checkout"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Raycon ","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"raycon.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/rayconglobal.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"purchasingCompany":null},},"https://rayconglobal.com/cdn","3c1f2529w4065d210p03530cb8m151179d6",{"modern":"","legacy":""},{"shopId":"24040041","storefrontBaseUrl":"https:\/\/rayconglobal.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"2dca8a86\"]","isMerchantRequest":"false","hashVersion":"3c1f2529w4065d210p03530cb8m151179d6","publish":"custom","events":"[[\"page_viewed\",{}]]"}); window.ShopifyAnalytics = window.ShopifyAnalytics || {}; window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; window.ShopifyAnalytics.meta.currency = 'USD'; var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":47354675223,"requestId":"6ff09647-59c5-4945-aac0-5c955681f72b-1771838369"}}; for (var attr in meta) { window.ShopifyAnalytics.meta[attr] = meta[attr]; } (function () { var customDocumentWrite = function(content) { var jquery = null; if (window.jQuery) { jquery = window.jQuery; } else if (window.Checkout && window.Checkout.$) { jquery = window.Checkout.$; } if (jquery) { jquery('body').append(content); } }; var hasLoggedConversion = function(token) { if (token) { return document.cookie.indexOf('loggedConversion=' + token) !== -1; } return false; } var setCookieIfConversion = function(token) { if (token) { var twoMonthsFromNow = new Date(Date.now()); twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; } } var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; if (trekkie.integrations) { return; } trekkie.methods = [ 'identify', 'page', 'ready', 'track', 'trackForm', 'trackLink' ]; trekkie.factory = function(method) { return function() { var args = Array.prototype.slice.call(arguments); args.unshift(method); trekkie.push(args); return trekkie; }; }; for (var i = 0; i < trekkie.methods.length; i++) { var key = trekkie.methods[i]; trekkie[key] = trekkie.factory(key); } trekkie.load = function(config) { trekkie.config = config || {}; trekkie.config.initialDocumentCookie = document.cookie; var first = document.getElementsByTagName('script')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.onerror = function(e) { var scriptFallback = document.createElement('script'); scriptFallback.type = 'text/javascript'; scriptFallback.onerror = function(error) { var Monorail = { produce: function produce(monorailDomain, schemaId, payload) { var currentMs = new Date().getTime(); var event = { schema_id: schemaId, payload: payload, metadata: { event_created_at_ms: currentMs, event_sent_at_ms: currentMs } }; return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); }, sendRequest: function sendRequest(endpointUrl, payload) { // Try the sendBeacon API if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { var blobData = new window.Blob([payload], { type: 'text/plain' }); if (window.navigator.sendBeacon(endpointUrl, blobData)) { return true; } // sendBeacon was not successful } // XHR beacon var xhr = new XMLHttpRequest(); try { xhr.open('POST', endpointUrl); xhr.setRequestHeader('Content-Type', 'text/plain'); xhr.send(payload); } catch (e) { console.log(e); } return false; }, isIos12: function isIos12() { return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; } }; Monorail.produce('monorail-edge.shopifysvc.com', 'trekkie_storefront_load_errors/1.1', {shop_id: 24040041, theme_id: 172276023319, app_name: "storefront", context_url: window.location.href, source_url: "//rayconglobal.com/cdn/s/trekkie.storefront.79c9ee2a1f7d217701a15e49200b1e976848d6d6.min.js"}); }; scriptFallback.async = true; scriptFallback.src = '//rayconglobal.com/cdn/s/trekkie.storefront.79c9ee2a1f7d217701a15e49200b1e976848d6d6.min.js'; first.parentNode.insertBefore(scriptFallback, first); }; script.async = true; script.src = '//rayconglobal.com/cdn/s/trekkie.storefront.79c9ee2a1f7d217701a15e49200b1e976848d6d6.min.js'; first.parentNode.insertBefore(script, first); }; trekkie.load( {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":24040041,"isMerchantRequest":null,"themeId":172276023319,"themeCityHash":"7981963829326285226","contentLanguage":"en","currency":"USD"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["65f19447","b5387b81"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} ); var loaded = false; trekkie.ready(function() { if (loaded) return; loaded = true; window.ShopifyAnalytics.lib = window.trekkie; var originalDocumentWrite = document.write; document.write = customDocumentWrite; try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; document.write = originalDocumentWrite; window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":47354675223,"requestId":"6ff09647-59c5-4945-aac0-5c955681f72b-1771838369","shopifyEmitted":true}); var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) var token = match? match[1]: undefined; if (!hasLoggedConversion(token)) { setCookieIfConversion(token); } }); var eventsListenerScript = document.createElement('script'); eventsListenerScript.async = true; eventsListenerScript.src = "//rayconglobal.com/cdn/shopifycloud/storefront/assets/shop_events_listener-3da45d37.js"; document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); })(); if (!window.ga || (window.ga && typeof window.ga !== 'function')) { window.ga = function ga() { (window.ga.q = window.ga.q || []).push(arguments); if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); } 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."); }; if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); } }