PageSourceSearch

https://www.indigo.ca/cdn/shop/t/1082/assets/product-info.js?v=108146740981804818841790166658

js indigo.ca collected 2026-09-24 08:29:14 UTC 30,564 bytes, 2 lines download raw bytes

1customElements.get("product-info")||customElements.define("product-info",class extends HTMLElement{quantityInput=void 0;quantityForm=void 0;onVariantChangeUnsubscriber=void 0;abortController=void 0;pendingRequestUrl=null;preProcessHtmlCallbacks=[];postProcessHtmlCallbacks=[];constructor(){super(),this.quantityInput=this.querySelector(".quantity__input"),this.giftCardValues={}}restoreCustomGiftCardAmount(){const customAmountInput=document.getElementById("customAmount");if(!customAmountInput)return;const savedAmount=this.giftCardValues.custom_amount;if(savedAmount!==void 0)if(!savedAmount||!savedAmount.trim()){customAmountInput.value="",customAmountInput.parentNode.classList.remove("has-value");const productForm=this.querySelector("form");if(productForm){const existingInput=productForm.querySelector(".js-custom-properties-value");existingInput&&existingInput.remove()}}else{const numericAmount=parseFloat(savedAmount),minParsed=parseFloat(customAmountInput.getAttribute("min")),maxParsed=parseFloat(customAmountInput.getAttribute("max")),minAmount=Number.isNaN(minParsed)?.01:minParsed,maxAmount=Number.isNaN(maxParsed)?500:maxParsed;!Number.isNaN(numericAmount)&&numericAmount>=minAmount&&numericAmount<=maxAmount&&(customAmountInput.value=savedAmount,customAmountInput.parentNode.classList.add("has-value"),this.addCustomAmountProperties(numericAmount))}}addCustomAmountProperties(amountValue){let minAmount=.01,maxAmount=500;const customAmountInput=document.getElementById("customAmount");if(customAmountInput){const min=parseFloat(customAmountInput.getAttribute("min")),max=parseFloat(customAmountInput.getAttribute("max"));Number.isNaN(min)||(minAmount=min),Number.isNaN(max)||(maxAmount=max)}if(typeof amountValue!="number"||Number.isNaN(amountValue)||amountValue<minAmount||amountValue>maxAmount)return;const productForm=this.querySelector("form");if(!productForm)return;const existingInput=productForm.querySelector(".js-custom-properties-value");if(existingInput)existingInput.value=amountValue;else{const customProperties=document.createElement("input");customProperties.setAttribute("type","hidden"),customProperties.setAttribute("name","properties[_custom-gc-amount]"),customProperties.setAttribute("value",amountValue),customProperties.classList.add("js-custom-properties-value"),productForm.appendChild(customProperties)}}connectedCallback(){this.initializeProductSwapUtility(),this.onVariantChangeUnsubscriber=subscribe(PUB_SUB_EVENTS.optionValueSelectionChange,this.handleOptionValueChange.bind(this)),this.initQuantityHandlers(),this.dispatchEvent(new CustomEvent("product-info:loaded",{bubbles:!0,composed:!0})),this.classList.add("is-loaded");const variantJson=document.querySelector("[data-selected-variant]"),initialVariant=variantJson?JSON.parse(variantJson.textContent):null;this.toggleSupportedDevices(initialVariant)}addPreProcessCallback(callback){this.preProcessHtmlCallbacks.push(callback)}initQuantityHandlers(){this.quantityInput&&(this.quantityForm=this.querySelector(".product-form__quantity"),this.quantityForm&&this.setQuantityBoundries())}disconnectedCallback(){this.onVariantChangeUnsubscriber()}initializeProductSwapUtility(){this.preProcessHtmlCallbacks.push(html=>html.querySelectorAll(".scroll-trigger").forEach(element=>element.classList.add("scroll-trigger--cancel"))),this.postProcessHtmlCallbacks.push(newNode=>{window?.Shopify?.PaymentButton?.init(),window?.ProductModel?.loadShopifyXR()})}handleOptionValueChange({data:{event,target,selectedOptionValues}}){if(event.target.id==="customAmount"||!this.contains(event.target))return;const giftCardForm=this.productForm?.querySelector(".js-gift-card-form");giftCardForm&&giftCardForm.querySelectorAll("input, textarea").forEach(el=>{this.giftCardValues[el.name]=el.value});const customAmountInput=document.getElementById("customAmount");customAmountInput&&(this.giftCardValues.custom_amount=customAmountInput.value.trim()),this.resetProductFormState();const productUrl=target.dataset.productUrl||this.pendingRequestUrl||this.dataset.url;this.pendingRequestUrl=productUrl;const shouldSwapProduct=this.dataset.url!==productUrl,shouldFetchFullPage=this.dataset.updateUrl==="true"&&shouldSwapProduct;this.renderProductInfo({requestUrl:this.buildRequestUrlWithParams(productUrl,selectedOptionValues,shouldFetchFullPage),targetId:target.id,callback:shouldSwapProduct?this.handleSwapProduct(productUrl,shouldFetchFullPage):this.handleUpdateProductInfo(productUrl)})}resetProductFormState(){const productForm=this.productForm;productForm?.toggleSubmitButton(!0),productForm?.handleErrorMessage()}handleSwapProduct(productUrl,updateFullPage){return html=>{const selector=updateFullPage?"product-info[id^='MainProduct']":"product-info",productInfoNode=html.querySelector(selector);if(!productInfoNode){console.warn("[handleSwapProduct] product-info not found for selector:",selector);return}const variant=this.getSelectedVariant(productInfoNode);updateFullPage?this.updateSeoTitle(html):HTMLUpdateUtility.viewTransition(this,html.querySelector("product-info"),this.preProcessHtmlCallbacks,this.postProcessHtmlCallbacks),setTimeout(()=>{const giftCardForm=this.productForm?.querySelector(".js-gift-card-form");giftCardForm&&this.giftCardValues&&giftCardForm.querySelectorAll("input, textarea").forEach(el=>{this.giftCardValues[el.name]!==void 0&&(this.giftCardValues[el.name]&&el.parentNode.classList.add("has-value"),el.value=this.giftCardValues[el.name],el.dispatchEvent(new Event("input",{bubbles:!0})))}),this.restoreCustomGiftCardAmount()},0),this.handleUpdateProductInfo(productUrl)(html),this.toggleSupportedDevices(variant),window.reinitSeeAllFormatDrawer&&window.reinitSeeAllFormatDrawer(variant?.id?.toString()||""),window.handleFormatDisplay&&window.handleFormatDisplay(),window.addProductFulfillmentBlockEvents&&window.addProductFulfillmentBlockEvents()}}renderProductInfo({requestUrl,targetId,callback}){this.abortController?.abort(),this.abortController=new AbortController,fetch(requestUrl,{signal:this.abortController.signal}).then(response=>response.text()).then(responseText=>{this.pendingRequestUrl=null;const html=new DOMParser().parseFromString(responseText,"text/html");callback(html)}).then(()=>{const el=document.getElementById(targetId);if(el)try{el.focus({preventScroll:!0})}catch{el.focus()}}).catch(error=>{error.name==="AbortError"?console.log("Fetch aborted by user"):console.error(error)})}getSelectedVariant(productInfoNode){const selectedVariant=productInfoNode.querySelector("variant-selects [data-selected-variant]")?.innerHTML;return selectedVariant?JSON.parse(selectedVariant):null}getSelectedVariantDescription(productInfoNode){const utilityFn=window.ProductVariantUtils?.getSelectedVariantDescription;if(utilityFn)return utilityFn(productInfoNode);const selectedVariantDescription=productInfoNode.querySelector("variant-selects [data-selected-variant-description]")?.innerHTML;if(!selectedVariantDescription)return null;try{return JSON.parse(selectedVariantDescription)}catch(e){return console.warn("[ProductInfo] Failed to parse variant description JSON (fallback):",e),null}}getSelectedVariantUpc(productInfoNode){const selectedVariantUpc=productInfoNode.querySelector("variant-selects [data-selected-variant-upc]")?.innerHTML;return selectedVariantUpc?JSON.parse(selectedVariantUpc):null}getSelectedVariantFinalSale(productInfoNode){const selectedVariantFinalSale=productInfoNode.querySelector("variant-selects [data-selected-variant-final-sale]")?.dataset.selectedVariantFinalSale;return selectedVariantFinalSale?JSON.parse(selectedVariantFinalSale):null}getSelectedVariantOversized(productInfoNode){const selectedVariantOversized=productInfoNode.querySelector("variant-selects [data-selected-variant-oversized]")?.dataset.selectedVariantOversized;return selectedVariantOversized?JSON.parse(selectedVariantOversized):null}getSelectedVariantOverweight(productInfoNode){const selectedVariantOverweight=productInfoNode.querySelector("variant-selects [data-selected-variant-overweight]")?.dataset.selectedVariantOverweight;return selectedVariantOverweight?JSON.parse(selectedVariantOverweight):null}getSelectedVariantPlumMeta(productInfoNode){const selectedVariantPlumMeta=
1productInfoNode.querySelector("variant-selects [data-selected-variant-plum-meta]")?.innerHTML;return selectedVariantPlumMeta?JSON.parse(selectedVariantPlumMeta):null}getProductTitle(productInfoNode){return productInfoNode.querySelector(".product__title")?.innerText||""}buildRequestUrlWithParams(url,optionValues,shouldFetchFullPage=!1){const params=[];return!shouldFetchFullPage&&params.push(`section_id=${this.sectionId}`),optionValues.length&&params.push(`option_values=${optionValues.join(",")}`),`${url}?${params.join("&")}`}parseCurrencyAmount(rawValue){const normalizedText=String(rawValue??"").replace(/[\u00A0\u202F]/g," ").trim();if(!/^-?\s*(?:[A-Z]{1,3}\$?|[$€£])?\s*(?:\d{1,3}(?:[ \u00A0\u202F.,]\d{3})+|\d+)(?:[.,]\d+)?\s*(?:[$€£]|[A-Z]{3})?\s*$/i.test(normalizedText))return NaN;const numeric=normalizedText.replace(/\s/g,"").replace(/[^0-9,.-]/g,"");if(!numeric)return NaN;const hasComma=numeric.includes(","),hasDot=numeric.includes(".");if(hasComma&&hasDot){const lastComma=numeric.lastIndexOf(","),lastDot=numeric.lastIndexOf("."),normalized=lastComma>lastDot?numeric.replace(/\./g,"").replace(",","."):numeric.replace(/,/g,"");return Number(normalized)}if(hasComma){const normalized=/,\d{1,2}$/.test(numeric)?numeric.replace(/\./g,"").replace(",","."):numeric.replace(/,/g,"");return Number(normalized)}return Number(numeric.replace(/,/g,""))}localizeMoneyPrices(rootNode=this){if(!(document.documentElement.lang||"").toLowerCase().startsWith("fr")||!rootNode)return;const priceNodes=rootNode.querySelectorAll(".js-money-price");if(!priceNodes.length)return;const formatter=new Intl.NumberFormat("fr-CA",{style:"currency",currency:"CAD",currencyDisplay:"narrowSymbol"});priceNodes.forEach(node=>{if(!node||node.children.length>0)return;const amount=this.parseCurrencyAmount(node.textContent);Number.isFinite(amount)&&(node.textContent=formatter.format(amount))})}localizeVariantOptionPrices(){this.localizeMoneyPrices(this.variantSelectors||this)}updateOptionValues(html){const variantSelects=html.querySelector("variant-selects");variantSelects&&(HTMLUpdateUtility.viewTransition(this.variantSelectors,variantSelects,this.preProcessHtmlCallbacks),this.localizeVariantOptionPrices())}updateContributors(html){this.querySelectorAll("[data-pdp-contributors]").forEach(destination=>{const block=destination.dataset.pdpContributors,source=html.querySelector(`[data-
1pdp-contributors="${block}"]`);source?destination.replaceWith(source.cloneNode(!0)):(destination.innerHTML="",destination.classList.add("hide"))})}updateSeoTitle(html){if(this.dataset.updateUrl!=="true")return;const title=html.querySelector("product-info[data-seo-title]")?.getAttribute("data-seo-title")??html.querySelector("head title")?.textContent;title?.trim()&&(document.title=title,['meta[property="og:title"]','meta[name="twitter:title"]'].forEach(selector=>{document.querySelector(selector)?.setAttribute("content",title)}))}handleUpdateProductInfo(productUrl){return html=>{const variant=this.getSelectedVariant(html);if(this.pickupAvailability?.update(variant),this.updateOptionValues(html),this.updateURL(productUrl,variant?.id),this.updateVariantInputs(variant?.id,html),!variant){this.setUnavailable(),this.dispatchColorFallback();return}this.updateSeoTitle(html),this.updateMedia(html,variant?.featured_media?.id),this.updateContributors(html),this.updateConstructorTracking(variant),setTimeout(()=>{const giftCardForm=this.productForm?.querySelector(".js-gift-card-form");giftCardForm&&this.giftCardValues&&giftCardForm.querySelectorAll("input, textarea").forEach(el=>{this.giftCardValues[el.name]!==void 0&&(this.giftCardValues[el.name]&&el.parentNode.classList.add("has-value"),el.value=this.giftCardValues[el.name],el.dispatchEvent(new Event("input",{bubbles:!0})))}),this.restoreCustomGiftCardAmount()},0);const variantUPC=this.getSelectedVariantUpc(html),variantDescription=this.getSelectedVariantDescription(html),overviewInstance=window.getProductOverviewInstance?.();overviewInstance&&typeof overviewInstance.updateOverviewDescription=="function"&&overviewInstance.updateOverviewDescription(variantDescription,variant?.id);const finalSale=this.getSelectedVariantFinalSale(html),oversized=this.getSelectedVariantOversized(html),overweight=this.getSelectedVariantOverweight(html),finalSaleElement=this.querySelector(".product__final-sale"),oversizedElement=this.querySelector(".product__oversized"),overweightElement=this.querySelector(".product__overweight");finalSaleElement&&(finalSale?finalSaleElement.classList.remove("hide"):finalSaleElement.classList.add("hide")),oversizedElement&&(oversized?oversizedElement.classList.remove("hide"):oversizedElement.classList.add("hide")),overweightElement&&(overweight?overweightElement.classList.remove("hide"):overweightElement.classList.add("hide"));const productTitle=this.getProductTitle(html),productTitleElements=this.querySelectorAll(".product__title");productTitleElements.length&&productTitle&&productTitleElements.forEach(element=>{element.innerText=productTitle});const plumNonEligible=this.getSelectedVariantPlumMeta(html),rewardsBlock=this.querySelector(".product-rewards-block");rewardsBlock&&(plumNonEligible?rewardsBlock.classList.add("hidden"):rewardsBlock.classList.remove("hidden"));const updateSourceFromDestination=(id,shouldHide=source=>!1,replaceOuterHtml=!1)=>{const source=html.getElementById(`${id}-${this.sectionId}`),destination=this.querySelector(`#${id}-${this.dataset.section}`);if(!(!source||!destination)){if(replaceOuterHtml){const clone=source.cloneNode(!0);clone.classList.toggle("hidden",shouldHide(source)),destination.replaceWith(clone);return}destination.innerHTML=source.innerHTML,destination.classList.toggle("hidden",shouldHide(source))}};updateSourceFromDestination("price"),updateSourceFromDestination("Sku",({classList})=>classList.contains("hidden")),updateSourceFromDestination("Inventory",({innerText})=>innerText===""),updateSourceFromDestination("Volume"),updateSourceFromDestination("Price-Per-Item",({classList})=>classList.contains("hidden")),updateSourceFromDestination("addToBagModalTrigger"),updateSourceFromDestination("addToBagModal",()=>!1,!0),updateSourceFromDestination("productMinOrderQtyMessage",({classList})=>classList.contains("hidden")),this.querySelectorAll("[data-supported-devices]").forEach(destinationBlock=>{const blockId=destinationBlock.dataset.blockId,sourceBlock=html.querySelector(`[data-supported-devices][data-block-id="${blockId}"]`);if(!sourceBlock){destinationBlock.setAttribute("hidden",""),destinationBlock.classList.add("hide"),destinationBlock.innerHTML="";return}destinationBlock.replaceWith(sourceBlock.cloneNode(!0))}
1),this.toggleSupportedDevices(variant),this.updateExternalSections(productUrl,variant,variantUPC);const $formBtns=html.querySelector(".js-form-buttons"),$formBtnsDestination=this.querySelector(".js-form-buttons"),$formBtnsSkeleton=html.querySelector(".js-form-buttons-skeleton"),$formBtnsSkeletonDestination=this.querySelector(".js-form-buttons-skeleton");this.syncElementContent($formBtnsSkeleton,$formBtnsSkeletonDestination),this.syncElementContent($formBtns,$formBtnsDestination);const sourceStickyAtc=html.getElementById("stickyATC"),destinationStickyAtc=document.getElementById("stickyATC");this.syncElementContent(sourceStickyAtc,destinationStickyAtc),window.syncStickyQuantityVisibility?.(),window.preserveAllKoboOutboundButtons?.();const sourceFulfillment=html.querySelector(".js-fulfillment-container"),destinationFulfillment=this.querySelector(".js-fulfillment-container");if(sourceFulfillment&&destinationFulfillment){const destinationIsHidden=_.hasClass(destinationFulfillment,"hide"),currentMethod=destinationFulfillment.querySelector('input[name="properties[fulfillment_method]"]:checked')?.value||"ship";!destinationIsHidden&&currentMethod&&(destinationFulfillment.dataset.lastVisibleFulfillmentMethod=currentMethod),_.hasClass(sourceFulfillment,"hide")?_.addClass(destinationFulfillment,"hide"):_.removeClass(destinationFulfillment,"hide"),destinationFulfillment.innerHTML=sourceFulfillment.innerHTML;const sourceIsHidden=_.hasClass(sourceFulfillment,"hide"),lastVisibleMethod=destinationFulfillment.dataset.lastVisibleFulfillmentMethod,preferredMethod=sourceIsHidden?"ship":lastVisibleMethod||currentMethod||"ship",applyCheckedMethod=method=>{const input=destinationFulfillment.querySelector(`input[value="${method}"]`);return input?(input.checked=!0,method):null};if((applyCheckedMethod(preferredMethod)||applyCheckedMethod("ship")||applyCheckedMethod("pickup")||"ship")==="pickup"){const shipContent=destinationFulfillment.querySelector('[data-method="ship"]'),pickupContent=destinationFulfillment.querySelector('[data-method="pickup"]');shipContent&&shipContent.classList.add("hide"),pickupContent&&pickupContent.classList.remove("hide")}window.reinitProductFulfillmentBlock&&window.reinitProductFulfillmentBlock()}const sourceDigitalMessage=html.querySelector(".js-digital-message"),destinationDigitalMessage=this.querySelector(".js-digital-message");sourceDigitalMessage&&destinationDigitalMessage&&(_.hasClass(sourceDigitalMessage,"hide")?_.addClass(destinationDigitalMessage,"hide"):_.removeClass(destinationDigitalMessage,"hide"),destinationDigitalMessage.innerHTML=sourceDigitalMessage.innerHTML);const destinationReviewsReleaseDate=this.querySelector(".product__reviews-release-date");if(destinationReviewsReleaseDate){const existingReleaseDateMeta=destinationReviewsReleaseDate.querySelector(".product__release-date-meta");existingReleaseDateMeta&&existingReleaseDateMeta.remove();const sourceReleaseDateMeta=html.querySelector(".product__reviews-release-date .product__release-date-meta");sourceReleaseDateMeta&&destinationReviewsReleaseDate.appendChild(sourceReleaseDateMeta.cloneNode(!0))}this.updateQuantityRules(this.sectionId,html),this.querySelector(`#Quantity-Rules-${this.dataset.section}`)?.classList.remove("hidden"),this.querySelector(`#Volume-Note-${this.dataset.section}`)?.classList.remove("hidden"),window.addProductFulfillmentBlockEvents&&window.addProductFulfillmentBlockEvents(this);const sourcePromos=html.querySelector(".product__promotions"),destinationPromos=this.querySelector(".product__promotions");sourcePromos&&destinationPromos&&(destinationPromos.innerHTML=sourcePromos.innerHTML,sourcePromos.classList.contains("hide")?destinationPromos.classList.add("hide"):destinationPromos.classList.remove("hide"));const sourceNotificationBanners=html.querySelector(".product__notification-banners"),destinationNotificationBanners=this.querySelector(".product__notification-banners");sourceNotificationBanners&&destinationNotificationBanners&&(sourceNotificationBanners.classList.contains("hide")?destinationNotificationBanners.classList.add("hide"):destinationNotificationBanners.classList.remove("hide"));const sourceModal=html.getElementById("promo-modal"),destinationModal=document.getElementById("promo-modal");sourceModal&&destinationModal&&(destinationModal.innerHTML=sourceModal.innerHTML),window.reinitPromotionModal&&window.reinitPromotionModal(),this.localizeMoneyPrices(this);const $stickyAtc=document.getElementById("stickyATC");$stickyAtc&&this.localizeMoneyPrices($stickyAtc),window.syncStickyQuantityVisibility?.(),this.dispatchEvent(new CustomEvent("variant:change",{bubbles:!0,composed:!0,detail:{variant,el:this}})),publish(PUB_SUB_EVENTS.variantChange,{data:{sectionId:this.sectionId,html,variant}}
1)}}updateConstructorTracking(variant){variant&&(this.setAttribute("data-cnstrc-item-variation-id",String(variant.id)),this.setAttribute("data-cnstrc-item-price",(Number(variant.price)*.01).toFixed(2)))}updateVariantInputs(variantId,html){this.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=variantId??"",input.dispatchEvent(new Event("change",{bubbles:!0}));const productFormId=productForm.getAttribute("id"),escapedFormId=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(productFormId||""):productFormId||"",sourceForm=escapedFormId?html?.querySelector?.(`#${escapedFormId}`):null,syncHiddenLineProperty=propertyName=>{const destinationInput=productForm.querySelector(`input[name="${propertyName}"]`);if(!destinationInput)return;const sourceInput=sourceForm?.querySelector?.(`input[name="${propertyName}"]`);destinationInput.value=sourceInput?.value||""};syncHiddenLineProperty("properties[_original_list_price]"),syncHiddenLineProperty("properties[_promotions]"),syncHiddenLineProperty("properties[_product_title]"),syncHiddenLineProperty("properties[_cio_item_id]"),syncHiddenLineProperty("properties[_cio_variation_id]")})}updateURL(url,variantId){this.querySelector("share-button")?.updateUrl(`${window.shopUrl}${url}${variantId?`?variant=${variantId}`:""}`),this.dataset.updateUrl!=="false"&&(url.includes("?")&&(url=url.split("?")[0]),window.history.replaceState({},"",`${url}${variantId?`?variant=${variantId}`:""}`))}setUnavailable(){this.productForm?.toggleSubmitButton(!0,window.variantStrings.unavailable);const selectors=["Inventory","Sku","Price-Per-Item","Volume-Note","Volume","Quantity-Rules"].map(id=>`#${id}-${this.dataset.section}`).join(", ");document.querySelectorAll(selectors).forEach(({classList})=>classList.add("hidden"))}dispatchColorFallback(){const firstOption=this.variantSelectors?.querySelector("fieldset input:checked, select option[selected]");if(!firstOption)return;const selectedValue=(firstOption.value||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");if(!selectedValue)return;const gallery=document.querySelector("media-gallery");if(!gallery)return;const variantSlides=gallery.querySelectorAll("[data-variant-slider-group]");for(const slide of variantSlides){const option=slide.dataset.variantOption||"";if(option.startsWith(selectedValue+"-")||option===selectedValue){document.dispatchEvent(new CustomEvent("variant:color-fallback",{detail:{variantId:slide.dataset.variantSliderGroup}}));return}}}isDigitalVariant(variant){if(variant){const variantTitle=(variant.title||"").toLowerCase(),tokenEbook=(this.dataset.tokenEbook||"").toLowerCase(),tokenKoboAudiobook=(this.dataset.tokenKoboAudiobook||"").toLowerCase();return!!(tokenEbook&&variantTitle.includes(tokenEbook)||tokenKoboAudiobook&&variantTitle.includes(tokenKoboAudiobook)||variant?.metafields?.indigo?.ebookid||variant?.metafields?.indigo?.ebook_id||variant?.metafields?.indigo?.ebookId)}return!!this.querySelector(".product__digital-message")}toggleSupportedDevices(variant=null){const isDigital=this.isDigitalVariant(variant);this.querySelectorAll("[data-supported-devices]").forEach(block=>{const hasContent=!!block.querySelector(".product__supported-device, .product__supported-devices-title");isDigital&&hasContent?(block.classList.remove("hide"),block.removeAttribute("hidden")):(block.classList.add("hide"),block.setAttribute("hidden",""))})}updateMedia(html,variantFeaturedMediaId){if(!variantFeaturedMediaId)return;const mediaGallerySource=this.querySelector("media-gallery ul"),mediaGalleryDestination=html.querySelector("media-gallery ul"),refreshSourceData=()=>{this.hasAttribute("data-zoom-on-hover")&&enableZoomOnHover(2);const mediaGallerySourceItems=Array.from(mediaGallerySource.querySelectorAll("li[data-media-id]")),sourceSet=new Set(mediaGallerySourceItems.map(item=>item.dataset.mediaId)),sourceMap=new Map(mediaGallerySourceItems.map((item,index)=>[item.dataset.mediaId,{item,index}]));return[mediaGallerySourceItems,sourceSet,sourceMap]};if(mediaGallerySource&&mediaGalleryDestination){let[mediaGallerySourceItems,sourceSet,sourceMap]=refreshSourceData();const mediaGalleryDestinationItems=Array.from(mediaGalleryDestination.querySelectorAll("li[data-media-id]")),destinationSet=new Set(mediaGalleryDestinationItems.map(({dataset})=>dataset.mediaId));let shouldRefresh=!1;for(let i=mediaGalleryDestinationItems.length-1;i>=0;i--)sourceSet.has(mediaGalleryDestinationItems[i].dataset.mediaId)||(mediaGallerySource.prepend(mediaGalleryDestinationItems[i]),shouldRefresh=!0);for(let i=0;i<mediaGallerySourceItems.length;i++)destinationSet.has(mediaGallerySourceItems[i].dataset.mediaId)||(mediaGallerySourceItems[i].remove(),shouldRefresh=!0);shouldRefresh&&([mediaGallerySourceItems,sourceSet,sourceMap]=refreshSourceData()),mediaGalleryDestinationItems.forEac
1h((destinationItem,destinationIndex)=>{const sourceData=sourceMap.get(destinationItem.dataset.mediaId);sourceData&&sourceData.index!==destinationIndex&&(mediaGallerySource.insertBefore(sourceData.item,mediaGallerySource.querySelector(`li:nth-of-type(${destinationIndex+1})`)),[mediaGallerySourceItems,sourceSet,sourceMap]=refreshSourceData())})}this.querySelector("media-gallery")?.setActiveMedia?.(`${this.dataset.section}-${variantFeaturedMediaId}`,!0,!1);const modalContent=this.productModal?.querySelector(".product-media-modal__content"),newModalContent=html.querySelector("product-modal .product-media-modal__content");modalContent&&newModalContent&&(modalContent.innerHTML=newModalContent.innerHTML)}setQuantityBoundries(){const data={cartQuantity:this.quantityInput.dataset.cartQuantity?parseInt(this.quantityInput.dataset.cartQuantity):0,min:this.quantityInput.dataset.min?parseInt(this.quantityInput.dataset.min):1,max:this.quantityInput.dataset.max?parseInt(this.quantityInput.dataset.max):null,step:this.quantityInput.step?parseInt(this.quantityInput.step):1};let min=data.min;const max=data.max===null?data.max:data.max-data.cartQuantity;max!==null&&(min=Math.min(min,max)),data.cartQuantity>=data.min&&(min=Math.min(min,data.step)),this.quantityInput.min=min,max?this.quantityInput.max=max:this.quantityInput.removeAttribute("max"),this.quantityInput.value=min,publish(PUB_SUB_EVENTS.quantityUpdate,void 0)}updateQuantityRules(sectionId,html){if(!this.quantityInput)return;this.setQuantityBoundries();const quantityFormUpdated=html.getElementById(`Quantity-Form-${sectionId}`);if(!quantityFormUpdated)return;const selectors=[".quantity__input"];for(let selector of selectors){const current=this.quantityForm.querySelector(selector),updated=quantityFormUpdated.querySelector(selector);if(!(!current||!updated)&&selector===".quantity__input"){const attributes=["data-cart-quantity","data-min","data-max","step"];for(let attribute of attributes){const valueUpdated=updated.getAttribute(attribute);valueUpdated!==null?current.setAttribute(attribute,valueUpdated):current.removeAttribute(attribute)}}}}get productForm(){return this.querySelector("product-form")}get productModal(){return document.querySelector(`#ProductModal-${this.dataset.section}`)}get pickupAvailability(){return this.querySelector("pickup-availability")}get variantSelectors(){return this.querySelector("variant-selects")}get relatedProducts(){const relatedProductsSectionId=SectionId.getIdForSection(SectionId.parseId(this.sectionId),"related-products");return document.querySelector(`product-recommendations[data-section-id^="${relatedProductsSectionId}"]`)}get quickOrderList(){const quickOrderListSectionId=SectionId.getIdForSection(SectionId.parseId(this.sectionId),"quick_order_list");return document.querySelector(`quick-order-list[data-id^="${quickOrderListSectionId}"]`)}get sectionId(){return this.dataset.originalSection||this.dataset.section}reinitializeAccordion(section){const accordionWrapper=section.querySelector('[id^="accordion-as-section-"]');if(accordionWrapper){const accordionId=accordionWrapper.id,openByDefault=accordionWrapper.dataset?.openByDefault==="true";try{window.useSectionAsAccordion?window.useSectionAsAccordion({dom:{id:accordionId},open_option:openByDefault?0:null,reset_on_resize:!1}):window.SDG&&window.SDG.accordion&&window.SDG.accordion({dom:{id:accordionId},open_option:openByDefault?0:null,reset_on_resize:!1}).init()}catch(error){console.error("Accordion initialization failed:",error)}}}syncElementContent(source,destination){!source||!destination||(destination.innerHTML=source.innerHTML,_.hasClass(source,"hide")?_.addClass(destination,"hide"):_.removeClass(destination,"hide"))}async updateExternalSections(productUrl,variant,variantUPC){const sectionsToUpdate=[{sectionSelector:"section.product-details",name:"product-details",callback:this.reinitializeAccordion.bind(this)},{sectionSelector:"section.rich-text-multicolumn__parent",name:"rich-text-multicolumn-variant-metafields",callback:this.reinitializeAccordion.bind(this)}];await Promise.all(sectionsToUpdate.map(config=>this.updateSingleExternalSection(config,productUrl,variant,variantUPC)))}async updateSingleExternalSection(config,productUrl,variant,variantUPC){try{const sections=document.querySelectorAll(config.sectionSelector);if(!sections.length)return;for(const section of sections){if(config?.name==="rich-text-multicolumn-variant-metafields"&&!section.querySelector('[data-uses-variant-metafields="true"]'))continue;if(section.classList.contains("product-details")){const upcField=section.querySelector(".js-product-details__metafield--upc");upcField&&(upcField.innerText=variantUPC||"")}const rawSectionId=section.id;if(!rawSectionId)continue;const cleanedSectionId=rawSectionId.replace("shopify-section-",""),urlParam
1s=new URLSearchParams;variant?.id&&urlParams.set("variant",variant.id),urlParams.set("section_id",cleanedSectionId);const sectionUrl=`${(productUrl||"").split("?")[0]}?${urlParams.toString()}`,response=await fetch(sectionUrl);if(!response.ok){console.error(`HTTP ${response.status}: ${response.statusText} for section ${rawSectionId}`);continue}const responseText=await response.text(),tempDiv=document.createElement("div");tempDiv.innerHTML=responseText;const newSection=tempDiv.querySelector(`section#${rawSectionId}`)||tempDiv.querySelector(`section#shopify-section-${cleanedSectionId}`);if(newSection&&section){if(section.parentNode?.replaceChild(newSection,section),config.callback&&typeof config.callback=="function")try{config.callback(newSection)}catch(callbackError){console.error(`${config.name} callback failed for section ${rawSectionId}:`,callbackError)}}else console.warn(`Could not find content selectors for ${config.name} section ${rawSectionId}`)}}catch(error){console.error(`Failed to update ${config.name}:`,error)}}});
2//# sourceMappingURL=/cdn/shop/t/1082/assets/product-info.js.map?v=108146740981804818841790166658

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.