1(function(){"use strict";function productBestBuyButton(){const BUTTON_CLASS="convx__redirecting-to-BestBuy",BUTTON_TEXT="You Can Order It On BestBuy If You're In the USA",keychronURLs=[{variantId:"40026442235993",redirectionURL:"https://www.bestbuy.com/site/keychron-v1-75-custom-wired-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-brown-switch-translucent-black/6600172.p?skuId=6600172"},{variantId:"40637899669593",redirectionURL:"https://www.bestbuy.com/site/keychron-v1-max-75-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-red-switch-black/6600175.p?skuId=6600175"},{variantId:"40759400005721",redirectionURL:"https://www.bestbuy.com/site/keychron-v5-max-96-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-red-switch-black/6600170.p?skuId=6600170"},{variantId:"40617854435417",redirectionURL:"https://www.bestbuy.com/site/keychron-q1he-75-custom-wireless-rgb-mechanical-keyboard-with-progrmmable-qmk-via-hot-swappable-magnetic-switch-black/6600174.p?skuId=6600174"},{variantId:"39951530950745",redirectionURL:"https://www.bestbuy.com/site/keychron-q1-75-custom-wired-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-brown-switch-white/6600178.p?skuId=6600178"},{variantId:"40766137499737",redirectionURL:"https://www.bestbuy.com/site/keychron-q3-max-80tkl-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-red-switch-black/6600180.p?skuId=6600180"},{variantId:"40799763005529",redirectionURL:"https://www.bestbuy.com/site/keychron-q6-max-100-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-brown-switch-black/6600176.p?skuId=6600176"},{variantId:"40799763038297",redirectionURL:"https://www.bestbuy.com/site/keychron-q6-max-100-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-banana-switch-black/6600171.p?skuId=6600171"},{variantId:"41846757883993",redirectionURL:"https://www.bestbuy.com/site/keychron-k2-he-75-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-magnetic-switch-black/6600481.p?skuId=6600481"},{variantId:"41767492321369",redirectionURL:"https://www.bestbuy.com/site/keychron-k2-max-75-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-brown-switch-black/6600173.p?skuId=6600173"},{variantId:"40685196968025",redirectionURL:"https://www.bestbuy.com/site/keychron-k3-max-75-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-red-switch-black/6600181.p?skuId=6600181"},{variantId:"40778479763545",redirectionURL:"https://www.bestbuy.com/site/keychron-k5-max-100-custom-wireless-rgb-mechanical-keyboard-with-programmable-qmk-via-hot-swappable-red-switch-black/6600169.p?skuId=6600169"},{variantId:"41293839138905",redirectionURL:"https://www.bestbuy.com/site/keychron-b1-pro-75-wireless-keyboard-with-progrmmable-zmk-support-space-gray/6600179.p?skuId=6600179"},{variantId:"41293896974425",redirectionURL:"https://www.bestbuy.com/site/keychron-b6-pro-100-custom-wireless-keyboard-with-progrmmable-zmk-support-space-grey/6600177.p?skuId=6600177"}],bestBuyByVariantId=new Map(keychronURLs.map(item=>[String(item.variantId),item.redirectionURL]));function createRedirectButton(redirectURL){const button=document.createElement("a");return button.href=redirectURL,button.target="_blank",button.rel="noopener noreferrer",button.textContent=BUTTON_TEXT,button.className=BUTTON_CLASS,button}function injectStyles(){if(document.getElementById("convx-bestbuy-button-styles"))return;const style=document.createElement("style");style.id="convx-bestbuy-button-styles",style.textContent=` 2 .${BUTTON_CLASS} { 3 display: inline-block; 4 border: var(--btn-border-width) solid rgb(var(--btn-alt-text-color)); 5 outline-color: rgb(var(--btn-alt-text-color)); 6 outline-offset: 3px; 7 background: #0046be; 8 color: white; 9 margin-top: 15px; 10 width: 100%; 11 border-radius: var(--btn-border-radius, 0); 12 padding: var(--btn-padding-y, 12px) 26px; 13 text-align: center; 14 } 15 .${BUTTON_CLASS}:hover { 16 background: #003bb5; 17 } 18 `,document.head.appendChild(style)}function getMainProductRoot(){return document.querySelector(".product.js-product")}function getAddToCartAnchor(){const scope=getMainProductRoot()||document;return scope.querySelector(".product-info__add-to-cart")||scope.querySelector('[data-pf-type="ProductATC2"]')?.parentElement||scope.querySelector(".buy-now-form")?.parentElement}function isMainProductVariantEvent(event){const productRoot=getMainProductRoot();if(!productRoot)return!1;const source=event.target instanceof Element?event.target:event.detail?.form instanceof Element?event.detail.form:null;return!!(source&&productRoot.contains(source))}function getCurrentVariantID(){const productRoot=getMainProductRoot();if(!productRoot)return null;const picker=productRoot.querySelector("variant-picker");if(picker?.variant?.id)return String(picker.variant.id);const variantInput=productRoot.querySelector('.js-product-form-main input[name="id"]:not([disabled])')||productRoot.querySelector('.js-product-form input[name="id"]:not([disabled])')||productRoot.querySelector('.js-product-form-main input[name="id"]')||productRoot.querySelector('.js-product-form input[name="id"]');if(variantInput?.value)return String(variantInput.value);const variantFromQuery=new URLSearchParams(window.location.search).get("variant");return variantFromQuery?String(variantFromQuery):null}function removeRedirectButton(){document.querySelectorAll(`.${BUTTON_CLASS}`).forEach(el=>el.remove())}function addRedirectButton(variantID){const redirectURL=variantID?bestBuyByVariantId.get(String(variantID)):null,existingButtons=document.querySelectorAll(`.${BUTTON_CLASS}`),addToCartButton=getAddToCartAnchor();if(!redirectURL){removeRedirectButton();return}if(!addToCartButton)return;let redirectButton=existingButtons[0]||null;if(existingButtons.forEach((el,index)=>{index>0&&el.remove()}),!redirectButton||!addToCartButton.parentElement?.contains(redirectButton)){redirectButton&&redirectButton.remove(),redirectButton=createRedirectButton(redirectURL),addToCartButton.insertAdjacentElement("afterend",redirectButton);return}redirectButton.href=redirectURL,redirectButton.textContent=BUTTON_TEXT}function updateButtonFromVariantId(variantId){if(variantId==null||variantId===""){removeRedirectButton();return}addRedirectButton(String(variantId))}function updateButtonFromDom(){addRedirectButton(getCurrentVariantID())}function scheduleButtonSync(callback){setTimeout(callback,0),setTimeout(callback,50)}function observeVariantChange(){document.addEventListener("on:variant:change",event=>{if(!isMainProductVariantEvent(event))return;const variantId=event.detail?.variant?.id??null;scheduleButtonSync(()=>updateButtonFromVariantId(variantId))}),document.addEventListener("click",event=>{event.target.closest(".swatch-view-item")&&getMainProductRoot()?.contains(event.target)&&scheduleButtonSync(updateButtonFromDom)}),updateButtonFromDom(),setTimeout(updateButtonFromDom,300)}
18function init(){injectStyles(),observeVariantChange()}init()}function productWalmartButton(){const walmartURLs=[{productPath:"/products/keychron-b33-wireless-keyboard",redirectionURL:"https://www.walmart.com/ip/Keychron-B33-80-TKL-Wireless-Silent-Keyboard-2-4G-Bluetooth-Wired-for-MacOS-Windows-Linux-Black/17404822409"},{productPath:"/products/keychron-b36-wireless-keyboard",redirectionURL:"https://www.walmart.com/ip/Keychron-B36-Full-Size-100-Wireless-Silent-Keyboard-2-4G-Bluetooth-Wired-for-MacOS-Windows-Linux-Black/17449957056"},{productPath:"/products/keychron-c1-pro-qmk-via-wired-mechanical-keyboard",variantId:"43135199608921",redirectionURL:"https://www.walmart.com/ip/Keychron-C1-Pro-QMK-Wired-Custom-Mechanical-Keyboard-TKL-Layout-Launcher-Support-Super-Linear-Red-Switch-OSA-PBT-Keycaps-Compatible-Mac-Windows-Linux/19877915438"},{productPath:"/products/keychron-c2-pro-qmk-via-wired-mechanical-keyboard",variantId:"43135200002137",redirectionURL:"https://www.walmart.com/ip/Keychron-C2-Pro-Wired-Custom-Mechanical-Keyboard-Super-Linear-Red-Switch-Full-Size-RGB-Backlit-OSA-PBT-Double-Shot-Keycaps-Compatible-Mac-Windows-Lin/19896255081"}];function createRedirectButton(redirectURL){const button=document.createElement("a");return button.href=redirectURL,button.target="_blank",button.textContent="You Can Order It On Walmart If You're in the USA",button.className="convx__redirecting-to-Walmart",button}function injectStyles(){if(document.getElementById("convx-walmart-button-styles"))return;const style=document.createElement("style");style.id="convx-walmart-button-styles",style.textContent=` 19 .convx__redirecting-to-Walmart { 20 display: inline-block; 21 border: var(--btn-border-width) solid rgb(var(--btn-alt-text-color)); 22 outline-color: rgb(var(--btn-alt-text-color)); 23 outline-offset: 3px; 24 background: #0064be; 25 color: white; 26 margin-top: 15px; 27 width: 100%; 28 border-radius: var(--btn-border-radius, 0); 29 padding: var(--btn-padding-y, 12px) 26px; 30 text-align: center; 31 } 32 .convx__redirecting-to-Walmart:hover { 33 background: #0055a8; 34 } 35 `,document.head.appendChild(style)}function getCurrentVariantID(){const variantFromQuery=new URLSearchParams(window.location.search).get("variant");if(variantFromQuery)return variantFromQuery;const variantInput=document.querySelector('.js-product-form-main input[name="id"]:not([disabled])')||document.querySelector('input[name="id"]:not([disabled])')||document.querySelector('.js-product-form-main input[name="id"]')||document.querySelector('input[name="id"]');if(variantInput?.value)return variantInput.value;const picker=document.querySelector("variant-picker");return picker?.variant?.id?String(picker.variant.id):null}function getAddToCartAnchor(){return document.querySelector(".product-info__add-to-cart")||document.querySelector('[data-pf-type="ProductATC2"]')?.parentElement||document.querySelector(".buy-now-form")?.parentElement}function getMatch(){const path=window.location.pathname,currentVariantId=getCurrentVariantID();return walmartURLs.find(item=>path.endsWith(item.productPath)?item.variantId?currentVariantId===item.variantId:!0:!1)}function isWalmartProductPage(){const path=window.location.pathname;return walmartURLs.some(item=>path.endsWith(item.productPath))}function addRedirectButton(match){const redirectButton=document.querySelector(".convx__redirecting-to-Walmart"),addToCartButton=getAddToCartAnchor();addToCartButton&&(match?redirectButton?redirectButton.href=match.redirectionURL:addToCartButton.insertAdjacentElement("afterend",createRedirectButton(match.redirectionURL)):redirectButton&&redirectButton.remove())}function updateButton(){addRedirectButton(getMatch())}function observeVariantChange(){document.addEventListener("on:variant:change",updateButton),document.addEventListener("click",event=>{event.target.closest(".swatch-view-item")&&setTimeout(updateButton,0)}),updateButton(),setTimeout(updateButton,300)}
35function init(){isWalmartProductPage()&&(injectStyles(),observeVariantChange())}init()}function product_ratings(){const productElement=document.querySelector(".product.js-product");if(!productElement){console.error("Product element '.product.js-product' not found.");return}const ratingValue=parseFloat(productElement.dataset.ratingValue),ratingCount=parseInt(productElement.dataset.ratingCount,10);if(isNaN(ratingValue))return;const decimal=ratingValue%1;let starsRating=Math.floor(ratingValue);decimal>=.3&&decimal<=.7?starsRating+=.5:decimal>.7&&(starsRating=Math.ceil(ratingValue));const scaleMax=5,ratingHTML=` 36 <div class="rating inline-block align-middle" role="img" 37 aria-label="${ratingValue} out of ${scaleMax} stars"> 38 <span class="rating__stars" aria-hidden="true" 39 style="--rating: ${starsRating}; --rating-max: ${scaleMax};">\u2605\u2605\u2605\u2605\u2605</span> 40 </div> 41 ${isNaN(ratingCount)?"":`<div class="rating__count inline-block align-middle text-sm">(${ratingCount})</div>`} 42 `,productPrice=document.querySelector(".product-info__price");if(!productPrice){console.error("Product price element '.product-info__price' not found.");return}const ratingContainer=document.createElement("div");ratingContainer.classList.add("product-rating"),ratingContainer.innerHTML=ratingHTML,productPrice.insertAdjacentElement("afterend",ratingContainer),console.log("Rating element successfully appended.")}function addonsAccordion(){class ConvxAddonsAccordion extends HTMLElement{constructor(){super()}connectedCallback(){this.initAccordion(),this.initCheckboxListeners(),this.bindVariantChangePreserve()}bindVariantChangePreserve(){this._kcVariantPreserveBound||(this._kcVariantPreserveBound=!0,this._onVariantChangePreserve=()=>this.preserveOpenPanels(),document.addEventListener("on:variant:change",this._onVariantChangePreserve))}disconnectedCallback(){this._onVariantChangePreserve&&document.removeEventListener("on:variant:change",this._onVariantChangePreserve)}preserveOpenPanels(){this.querySelectorAll(".convx__addons-accordion.active").forEach(button=>{const panel=button.nextElementSibling;!panel||!panel.classList.contains("convx__addons-panel")||(panel.style.maxHeight=`${Math.max(panel.scrollHeight,1)+100}px`,panel.style.paddingBottom=panel.style.paddingBottom||"15px")})}initAccordion(){this.querySelectorAll(".convx__addons-accordion").forEach(button=>{button.dataset.kcAccordionBound!=="true"&&(button.dataset.kcAccordionBound="true",button.addEventListener("click",()=>{const panel=button.nextElementSibling;button.classList.contains("active")?(button.classList.remove("active"),panel.style.maxHeight=null,panel.style.paddingBottom=null):(button.classList.add("active"),panel.style.maxHeight=panel.scrollHeight+100+"px",panel.style.paddingBottom="15px")}))})}initCheckboxListeners(){this.querySelectorAll(".addons-option input[type='checkbox']").forEach(checkbox=>{checkbox.addEventListener("change",()=>{const parentLabel=checkbox.closest(".addons-option"),quantityInput=parentLabel.querySelector("input[type='hidden']");checkbox.checked?(parentLabel.classList.add("active"),quantityInput.disabled=!1):(parentLabel.classList.remove("active"),quantityInput.disabled=!0)})})}getCheckedValues(){const checkedValues=[];return this.querySelectorAll("input[type='checkbox']:checked").forEach(input=>{checkedValues.push(input.value)}),checkedValues}}window.customElements.define("convx-addons",ConvxAddonsAccordion)}function productSamsClubButton(){console.log("Sam's Club running");function createRedirectButton(){const button=document.createElement("a");return button.href="https://www.samsclub.com/p/keychron-k2he-elite-bundle/P990411626?xid=plp_product_1",button.target="_blank",button.textContent="You Can Order It On Sam's Club If You're In USA",button.className="convx__redirecting-to-samsclub",button}function injectStyles(){const style=document.createElement("style");style.textContent=` 43 .convx__redirecting-to-samsclub { 44 display: inline-block; 45 border: var(--btn-border-width) solid rgb(var(--btn-alt-text-color)); 46 outline-color: rgb(var(--btn-alt-text-color)); 47 outline-offset: 3px; 48 background: #2D659E; 49 color: white; 50 margin-top: 15px; 51 width: 100%; 52 border-radius: var(--btn-border-radius, 0); 53 padding: var(--btn-padding-y, 12px) 26px; 54 text-align: center; 55 } 56 .convx__redirecting-to-samsclub:hover { 57 background: #367AAE; 58 } 59 `,document.head.appendChild(style)}function addRedirectButton(){let redirectButton=document.querySelector(".convx__redirecting-to-samsclub");const addToCartButton=document.querySelector(".product-info__add-to-cart");addToCartButton&&(redirectButton||(redirectButton=createRedirectButton(),addToCartButton.insertAdjacentElement("afterend",redirectButton)))}
59function init(){window.location.href.indexOf("/products/keychron-k2-he-keyboard-and-m3-lite-mouse-wireless-elite-bundle")>-1&&(injectStyles(),addRedirectButton())}init()}function convxAccordion(){class ConvxAccordion extends HTMLElement{constructor(){super()}connectedCallback(){this.initAccordion()}initAccordion(){this.querySelectorAll(".convx__addons-accordion").forEach(button=>{button.addEventListener("click",()=>{const panel=button.nextElementSibling;button.classList.contains("active")?(button.classList.remove("active"),panel.style.maxHeight=null,panel.style.paddingBottom=null):(button.classList.add("active"),panel.style.maxHeight=panel.scrollHeight+100+"px",panel.style.paddingBottom="48px")})})}}window.customElements.define("convx-accordion",ConvxAccordion)}function headerSpacing(){const header=document.querySelector("store-header.header");if(!header)return;const updateHeaderSpacing=()=>{const rect=header.getBoundingClientRect(),topOffset=rect.top,height=rect.height,totalSpacing=topOffset+height;document.documentElement.style.setProperty("--convx-header-spacing",`${totalSpacing}px`),document.documentElement.style.setProperty("--convx-header-without-announcement-spacing",`${height}px`),document.documentElement.style.setProperty("--convx-header-announcement-spacing",`${topOffset}px`)};new ResizeObserver(updateHeaderSpacing).observe(header),window.addEventListener("scroll",updateHeaderSpacing),window.addEventListener("resize",updateHeaderSpacing),window.addEventListener("load",updateHeaderSpacing)}function horizontalScroll(){class ConvxHorizontalScroll extends HTMLElement{constructor(){super(),this.scrollTriggerInstance=null,this.observer=null}connectedCallback(){this.initHorizontalScroll(),this.observer=new ResizeObserver(entries=>{window.innerWidth<=768||(clearTimeout(this._refreshTimeout),this._refreshTimeout=setTimeout(()=>{this.scrollTriggerInstance&&window.innerWidth>768&&requestAnimationFrame(()=>{ScrollTrigger.refresh()})},200))}),this.observer.observe(document.body);const mobileHeight=this.getAttribute("mobile-height"),mobileSpacing=this.getAttribute("mobile-spacing");this.style.setProperty("--mobile-height",`${mobileHeight}px`),this.style.setProperty("--mobile-spacing",`${mobileSpacing}px`)}disconnectedCallback(){this.observer&&this.observer.disconnect(),this.scrollTriggerInstance&&this.scrollTriggerInstance.kill()}initHorizontalScroll(){if(window.innerWidth<=768)return;const container=this.querySelector(".convx-horizontal-scroll__container"),sections=Array.from(this.querySelectorAll(".convx-horizontal-scroll__section"));if(!container||sections.length<2)return;container.style.width=`${sections.length*100}vw`,this.scrollTriggerInstance&&this.scrollTriggerInstance.kill(),gsap.registerPlugin(ScrollTrigger);const tl=gsap.timeline();tl.to(sections,{xPercent:-100*(sections.length-1),ease:"none"}),this.scrollTriggerInstance=ScrollTrigger.create({trigger:this.querySelector(".convx-horizontal-scroll__wrapper"),pin:!0,pinSpacing:!0,start:"top top",end:()=>`+=${container.offsetWidth-window.innerWidth}`,scrub:0,markers:!1,anticipatePin:1,refreshPriority:-1,animation:tl,onRefresh:()=>{container.style.width=`${sections.length*100}vw`},onToggle:self=>{self.isActive?gsap.set(this.querySelector(".convx-horizontal-scroll__wrapper"),{willChange:"transform"}):gsap.set(this.querySelector(".convx-horizontal-scroll__wrapper"),{willChange:"auto"})}}),this._handleResize=()=>{clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(()=>{const currentWidth=window.innerWidth;if(currentWidth<=768&&this._lastWidth>768||currentWidth>768&&this._lastWidth<=768){window.location.reload();return}currentWidth>768&&(container.style.width=`${sections.length*100}vw`,requestAnimationFrame(()=>{ScrollTrigger.refresh()})),this._lastWidth=currentWidth},150)},window.addEventListener("resize",this._handleResize,{passive:!0}),this._lastWidth=window.innerWidth}}customElements.define("convx-horizontal-scroll",ConvxHorizontalScroll)}function debounce(fn,wait=120){let t;return(...args)=>{clearTimeout(t),t=setTimeout(()=>fn(...args),wait)}}let activeFilterName=null;function getFilterInputs(){return activeFilterName?Array.from(document.querySelectorAll(`input[type="checkbox"][name="${activeFilterName}"]`)):[]}function ensureStyle(){if(document.getElementById("convx-collection-toggle-style"))return;const style=document.createElement("style");style.id="convx-collection-toggle-style",style.textContent=` 60 .convx__collection-toggle-container { 61 margin-top: 10px; 62 overflow: hidden; 63 flex-basis: 100%; 64 position: relative; 65 } 66 67 .convx__toggle-scroller { 68 display: flex; 69 gap: 6px; 70 overflow-x: auto; 71 scroll-snap-type: x mandatory; 72 -webkit-overflow-scrolling: touch; 73 padding-bottom: 8px; 74 scrollbar-width: none; 75 -ms-overflow-style: none; 76 scroll-behavior: smooth; 77 position: relative; 78 } 79 .convx__toggle-scroller::-webkit-scrollbar {
80 display: none; 81 } 82 83 .convx__collection-toggle-container::after, 84 .convx__collection-toggle-container::before { 85 content: ""; 86 position: absolute; 87 top: 0; 88 width: 40px; 89 height: 100%; 90 pointer-events: none; 91 z-index: 1; 92 transition: opacity 0.2s ease; 93 } 94 .convx__collection-toggle-container::after { 95 right: 0; 96 background: linear-gradient(to right, transparent, rgba(255,255,255,0.9)); 97 } 98 .convx__collection-toggle-container::before { 99 left: 0; 100 background: linear-gradient(to left, transparent, rgba(255,255,255,0.9)); 101 opacity: 0; 102 } 103 104 .convx__toggle-btn { 105 flex: 0 0 auto; 106 scroll-snap-align: start; 107 border: 1px solid #000; 108 background: #fff; 109 color: #000; 110 padding: 8px 12px; 111 font-size: 14px; 112 cursor: pointer; 113 transition: all 0.2s ease; 114 min-width: 60px; 115 white-space: nowrap; 116 } 117 .convx__toggle-btn.active { 118 background: #000; 119 color: #fff; 120 } 121 122 .products-toolbar { flex-wrap: wrap; } 123 124 .convx__scroll-btn { 125 position: absolute; 126 top: 50%; 127 transform: translateY(-50%); 128 border: none; 129 background: rgba(255,255,255,0.9); 130 box-shadow: 0 2px 6px rgba(0,0,0,0.2); 131 border-radius: 50%; 132 width: 32px; 133 height: 32px; 134 cursor: pointer; 135 z-index: 2; 136 display: none; 137 align-items: center; 138 justify-content: center; 139 transition: opacity 0.2s ease, background 0.2s ease; 140 } 141 142 @media (min-width: 768px) { 143 .convx__scroll-btn { display: flex; } 144 } 145 146 .convx__scroll-btn:hover { background: #fff; } 147 .convx__scroll-btn.left { left: 4px; } 148 .convx__scroll-btn.right { right: 4px; } 149 .convx__scroll-btn.hidden { opacity: 0; pointer-events: none; } 150 `,document.head.appendChild(style)}function getLabelTextForCheckbox(checkbox){const label=checkbox.closest("label")||checkbox.nextElementSibling;return(label?.querySelector("span")?.innerText||label?.innerText||checkbox.value||"").trim()}let lastScrollLeft=0,ignoreScrollMemory=!1;function createOrUpdateToggleUI(){const oldContainer=document.querySelector(".convx__collection-toggle-container");if(oldContainer&&oldContainer.remove(),!window.location.pathname.includes("/collections/")||window.location.pathname.includes("/products/"))return;ensureStyle();let checkboxes=Array.from(document.querySelectorAll('input[type="checkbox"][name="filter.p.m.convx.keyboard_layout_size"]'));if(activeFilterName="filter.p.m.convx.keyboard_layout_size",checkboxes.length||(checkboxes=Array.from(document.querySelectorAll('input[type="checkbox"][name="filter.p.m.convx.keycap_standard"]')),activeFilterName="filter.p.m.convx.keycap_standard"),checkboxes.length===1||!checkboxes.length)return;const container=document.createElement("div");container.className="convx__collection-toggle-container";const leftBtn=document.createElement("button");leftBtn.className="convx__scroll-btn left hidden",leftBtn.innerHTML="❮";const rightBtn=document.createElement("button");rightBtn.className="convx__scroll-btn right hidden",rightBtn.innerHTML="❯";const scroller=document.createElement("div");scroller.className="convx__toggle-scroller",container.append(leftBtn,scroller,rightBtn),checkboxes.forEach((checkbox,i)=>{const labelText=getLabelTextForCheckbox(checkbox)||`Option ${i+1}`,btn=document.createElement("button");btn.type="button",btn.className="convx__toggle-btn",btn.innerText=labelText,btn.dataset.index=String(i),btn.dataset.label=labelText,checkbox.checked&&btn.classList.add("active"),btn.addEventListener("click",()=>{const liveCheckbox=findLiveCheckboxForButton(btn);if(!liveCheckbox)return;const wasChecked=liveCheckbox.checked;ignoreScrollMemory=!0,liveCheckbox.click(),btn.classList.toggle("active",!wasChecked),setTimeout(()=>{ignoreScrollMemory=!1,syncAllButtons()},180)}),scroller.appendChild(btn)});const toolbar=document.querySelector("products-toolbar");toolbar?toolbar.append(container):(document.querySelector("[role='main']")||document.body).prepend(container);const scrollAmount=150;leftBtn.addEventListener("click",()=>scroller.scrollBy({left:-scrollAmount,behavior:"smooth"})),rightBtn.addEventListener("click",()=>scroller.scrollBy({left:scrollAmount,behavior:"smooth"}));function updateScrollButtons(){const maxScroll=scroller.scrollWidth-scroller.clientWidth;leftBtn.classList.toggle("hidden",scroller.scrollLeft<=5),rightBtn.classList.toggle("hidden",scroller.scrollLeft>=maxScroll-5),container.style.setProperty("--fade-opacity",scroller.scrollLeft>5?"1":"0"),ignoreScrollMemory||(lastScrollLeft=scroller.scrollLeft)}scroller.addEventListener("scroll",debounce(updateScrollButtons,60)),setTimeout(()=>{scroller.scrollLeft=lastScrollLeft,updateScrollButtons()},200);function findLiveCheckboxForButton(button){const labelText=(button.dataset.label||"").trim(),idx=parseInt(button.dataset.index,10),inputs=getFilterInputs();
150return inputs.find(cb=>getLabelTextForCheckbox(cb)===labelText)||inputs[idx]||null}function syncAllButtons(){document.querySelectorAll(".convx__toggle-btn").forEach(btn=>{const live=findLiveCheckboxForButton(btn);btn.classList.toggle("active",!!(live&&live.checked))})}document.addEventListener("change",e=>{e.target.matches(`input[type="checkbox"][name="${activeFilterName}"]`)&&debounce(syncAllButtons,80)()});const observeRoot=checkboxes[0].closest("form")||checkboxes[0].closest(".filters")||document.body,mo=new MutationObserver(debounce(()=>{const newBoxes=Array.from(document.querySelectorAll(`input[type="checkbox"][name="${activeFilterName}"]`));if(newBoxes.length){if(newBoxes.length!==checkboxes.length||newBoxes[0]!==checkboxes[0]){mo.disconnect(),createOrUpdateToggleUI();return}syncAllButtons()}},150));mo.observe(observeRoot,{childList:!0,subtree:!0,attributes:!0})}function collectionToggleFilterInit(){const path=location.pathname;path.includes("/collections")&&!path.includes("/products")&&createOrUpdateToggleUI()}function onDOMContentLoaded(){const path=location.pathname,isHomePage=path=="/",isProducts=path.includes("/products"),isCollections=path.includes("/collections")&&!isProducts,isCart=path=="/cart";headerSpacing(),addonsAccordion(),horizontalScroll(),isProducts&&(product_ratings(),productBestBuyButton(),productWalmartButton(),productSamsClubButton()),convxAccordion(),isCollections&&collectionToggleFilterInit()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",onDOMContentLoaded,{once:!0}):onDOMContentLoaded()})();function pinDisclaimerWithinHorizontalScroll(){const disclaimer=document.querySelector(".convx__pin-disclaimer"),scrollWrapper=document.querySelector(".convx-horizontal-scroll__wrapper");if(!disclaimer||!scrollWrapper)return;function checkPinVisibility(){if(window.innerWidth<=768){disclaimer.classList.remove("is-hidden");return}const rect=scrollWrapper.getBoundingClientRect();rect.bottom>0&&rect.top<window.innerHeight?disclaimer.classList.remove("is-hidden"):disclaimer.classList.add("is-hidden")}window.addEventListener("scroll",checkPinVisibility,{passive:!0}),window.addEventListener("resize",checkPinVisibility,{passive:!0}),checkPinVisibility()}document.addEventListener("DOMContentLoaded",()=>{pinDisclaimerWithinHorizontalScroll()}); 151//# sourceMappingURL=/cdn/shop/t/15/assets/convx.js.map?v=152959391956974075081787047568
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.