1document.addEventListener("change",function(e){if(!e.target.matches('.swatch-element input[type="radio"]'))return;const swatch=e.target.closest(".swatch-element");if(!swatch)return;const carveProduct=swatch.dataset.carveProduct,carvePrice=swatch.dataset.carvePrice,carvePriceRaw=swatch.dataset.carvePriceRaw;console.log(carvePriceRaw);const carveOptions=document.querySelector(".second-side-carve-options");carveOptions&&carveProduct&&carveOptions.setAttribute("data-product-id",carveProduct);const checkbox=document.querySelector("#second-side-checkbox");checkbox&&carvePrice&&checkbox.setAttribute("data-price",carvePrice);const priceText=document.querySelector(".second-side-carve-options-field-name-content");priceText&&carvePrice&&(priceText.innerText=`Second Side Engraving (+${carvePriceRaw})`)}),document.addEventListener("change",function(e){if(!e.target.matches('.custom-file-upload input[type="file"]'))return;const input=e.target,file=input.files&&input.files[0];if(!file)return;const uploadSection=input.closest(".upload-section"),buttonText=uploadSection.querySelector(".button-text"),progress=uploadSection.querySelector(".upload-progress"),bar=uploadSection.querySelector(".upload-progress-bar");buttonText&&(buttonText.textContent=file.name),input.closest(".custom-file-upload").classList.add("file-selected"),progress.style.display="block",bar.style.width="0%";let percent=0;const interval=setInterval(()=>{percent+=10,bar.style.width=percent+"%",percent>=100&&(clearInterval(interval),setTimeout(()=>{progress.style.display="none",bar.style.width="0%"},800))},120)}),Shoppad.$(function(){let fakeInterval;var observer=new MutationObserver(function(){var $form=Shoppad.$("#uploadery-container form[data-uploadery]");$form.length&&!$form.find(".upload-progress").length&&($form.append('<div class="upload-progress"><div class="upload-progress-bar"></div></div>'),$form.append('<p id="message" style="display:none; color:green; margin-top:0px; font-size:14px;">Logo uploaded successfully!</p>'))}),container=document.getElementById("uploadery-container");container&&observer.observe(container,{childList:!0,subtree:!0}),Shoppad.$(document).on("change",'form[data-uploadery] input[type="file"]',function(){var $form=Shoppad.$(this).closest("form"),$progress=$form.find(".upload-progress"),$bar=$form.find(".upload-progress-bar");$progress.show(),$bar.css("width","0%");let percent=0;fakeInterval=setInterval(function(){percent+=5,percent<=90&&$bar.css("width",percent+"%")},200)}),Shoppad.$(document).on("uploadSuccess","form[data-uploadery]",function(){clearInterval(fakeInterval);var $form=Shoppad.$(this),$progress=$form.find(".upload-progress"),$bar=$form.find(".upload-progress-bar"),$sms=$form.find("#message");$sms.show(),$bar.css("width","100%"),setTimeout(function(){$progress.fadeOut(300,function(){$bar.css("width","0%")})},800)})}),Shoppad.$(function(){Shoppad.$(document).on("uploadSuccess","form[data-uploadery]",function(e){var uploaderyFileName=e.originalEvent.detail.file.match(/[^\/]+$/)[0];uploaderyFileName=uploaderyFileName.substr(uploaderyFileName.indexOf("-")+1);var $uploaderyActiveField=Shoppad.$(e.target);if($uploaderyActiveField.addClass("upload-complete"),$uploaderyActiveField.find("div")[0].childNodes[0].nodeType===3)$uploaderyActiveField.find("div")[0].childNodes[0].nodeValue=uploaderyFileName;else{var uploaderyFileNameNode=document.createTextNode(uploaderyFileName);Shoppad.$(uploaderyFileNameNode).insertBefore($uploaderyActiveField.find("input"))}})}),(function(){function getDiscountForQty(qty){var discount=0,rows=document.querySelectorAll(".qb-discount-table-row");return rows.length&&rows.forEach(function(row){var cells=row.querySelectorAll("td");if(!(cells.length<2)){var rowQty=parseInt(cells[0].textContent.trim(),10),rowDiscount=parseFloat(cells[1].textContent.replace("%",""));!isNaN(rowQty)&&qty>=rowQty&&(discount=rowDiscount)}}),discount}function getBasePrice(){var checked=document.querySelector(".swatch-element input:checked");if(checked){var swatch=checked.closest(".swatch-element");if(swatch&&swatch.dataset.price)return parseFloat(swatch.dataset.price)}return 0}function getComparePrice(){var checked=document.querySelector(".swatch-element input
1:checked");if(checked){var swatch=checked.closest(".swatch-element");if(swatch&&swatch.dataset.compPrice)return parseFloat(swatch.dataset.compPrice)}return 0}function updatePrice(){var container=document.querySelector(".price-quantity");if(container){var qtyInput=container.querySelector(".quantity");if(qtyInput){var qty=parseInt(qtyInput.value,10);(!qty||qty<1)&&(qty=1);var basePrice=getBasePrice(),comparePrice=getComparePrice();if(basePrice){var discount=getDiscountForQty(qty),finalUnitPrice=basePrice*(1-discount/100),finalCompareUnit=comparePrice*(1-discount/100),priceEl=container.querySelector(".price-ui .price .money"),compareEl=container.querySelector(".price-ui .compare-at-price .money");priceEl&&(priceEl.textContent="$"+(finalUnitPrice*qty).toFixed(2)),compareEl&&(comparePrice&&comparePrice>basePrice?(compareEl.textContent="$"+(finalCompareUnit*qty).toFixed(2),compareEl.style.display=""):compareEl.style.display="none")}}}}function watchDiscountTable(){if(document.querySelector(".qb-discount-table-row")){updatePrice();return}var observer=new MutationObserver(function(mutations,obs){document.querySelector(".qb-discount-table-row")&&(updatePrice(),obs.disconnect())});observer.observe(document.body,{childList:!0,subtree:!0})}document.addEventListener("DOMContentLoaded",function(){updatePrice(),watchDiscountTable(),document.addEventListener("input",function(e){e.target.matches(".price-quantity .quantity")&&updatePrice()}),document.addEventListener("click",function(e){e.target.closest(".price-quantity .js-change-quantity")&&setTimeout(updatePrice,120)}),document.addEventListener("change",function(e){e.target.matches('.swatch-element input[type="radio"]')&&setTimeout(updatePrice,200)})})})(),document.addEventListener("DOMContentLoaded",function(){const btn=document.querySelector(".js-read-more"),desc=document.querySelector(".js-coll-desc");!btn||!desc||btn.addEventListener("click",function(){const expanded=btn.getAttribute("aria-expanded")==="true";btn.setAttribute("aria-expanded",!expanded),desc.classList.toggle("is-expanded"),btn.textContent=expanded?"Read more":"Read less"})});function updateAsLowAsFromSelect(){const selectEl=document.querySelector("select.multi_select");if(!selectEl)return;const selectedOption0=document.querySelector(".swatch-0 .swatch-element input:checked"),selectedOption1=document.querySelector(".swatch-1 .swatch-element input:checked");if(!selectedOption0||!selectedOption1)return;const option0Value=selectedOption0.value.trim(),option1Value=selectedOption1.value.trim();console.log("Selected Option 0:",option0Value),console.log("Selected Option 1:",option1Value);const matchedOption=Array.from(selectEl.options).find(opt=>{const text=opt.text.trim();if(!text.includes("/"))return!1;const[beforeSlash,afterSlash]=text.split("/").map(v=>v.trim());return beforeSlash===option0Value&&afterSlash===option1Value});if(!matchedOption){console.warn("No matching variant found");return}const lowAsPrice=matchedOption.getAttribute("data-low-as");if(console.log("Matched Variant:",matchedOption.value),console.log("As low as:",lowAsPrice),lowAsPrice){const globalPriceEl=document.querySelector(".as-low-as span:last-child");globalPriceEl&&(globalPriceEl.innerText=lowAsPrice)}const option1Swatch=selectedOption1.closest(".swatch-element");if(option1Swatch&&lowAsPrice){const swatchPriceEl=option1Swatch.querySelector(".as-low-as span:last-child");swatchPriceEl&&(swatchPriceEl.innerText=lowAsPrice)}}document.querySelectorAll(".swatch-element label input").forEach(input=>{input.addEventListener("change",updateAsLowAsFromSelect)}),updateAsLowAsFromSelect(),$(document).ready(function(){$("body.product-product-page-2").length&&($(".product-block--first, .product-block--title, .product-block--form, .product-block--features, .product-block--sku").wrapAll('<div class="first-title-wrapper"></div>'),$(".product-block--collapsible-tab").wrapAll('<div class="second-tabs-wrapper"></div>'))}),document.addEventListener("DOMContentLoaded",function(){console.log("\u{1F4E6} Script loaded"),$(document).ajaxSuccess(function(event,xhr,options){options.url.indexOf("/discount_codes/apply")!=-1&&location.reload(!0)});const ajaxBtn=document.querySelector(".ajax-submit-button"),productForm=d
1ocument.querySelector("form.shopify-product-form"),checkbox=document.getElementById("second-side-checkbox"),textWrap=document.querySelector("#uploadery-container"),sstextWrap=document.querySelector("#second-side-text-wrap");checkbox&&textWrap&&checkbox.addEventListener("change",()=>{textWrap.classList.toggle("active",checkbox.checked)}),checkbox&&sstextWrap&&(sstextWrap.style.transition="max-height 0.3s ease, opacity 0.3s ease",sstextWrap.style.overflow="hidden",sstextWrap.style.maxHeight="0",sstextWrap.style.opacity="0",sstextWrap.style.display="none",checkbox.addEventListener("change",function(){if(this.checked){sstextWrap.style.display="block";const h=sstextWrap.scrollHeight;sstextWrap.style.transition="none",sstextWrap.style.maxHeight="0",requestAnimationFrame(()=>{sstextWrap.style.transition="max-height 0.3s ease, opacity 0.3s ease",sstextWrap.style.maxHeight=h+"px",sstextWrap.style.opacity="1"})}else sstextWrap.style.maxHeight="0",sstextWrap.style.opacity="0",setTimeout(()=>{checkbox.checked||(sstextWrap.style.display="none")},300)})),ajaxBtn&&productForm&&ajaxBtn.addEventListener("click",function(e){e.preventDefault(),console.log("\u{1F6D2} AJAX add to cart triggered");const formData=new FormData(productForm);fetch("/cart/add.js",{method:"POST",body:formData,headers:{Accept:"application/json"}}).then(res=>res.json()).then(mainItem=>{if(console.log("\u2705 Main product added:",mainItem),!checkbox||!checkbox.checked){window.location.href="/cart";return}const carveBox=document.querySelector(".second-side-carve-options"),secondSideText=document.getElementById("second-side-text")?.value?.trim(),freeProductId=carveBox?.getAttribute("data-product-id"),mainProductName=carveBox?.getAttribute("data-main-product-name"),mainProductId=carveBox?.getAttribute("data-main-product-id"),quantity=parseInt(productForm.querySelector('[name="quantity"]')?.value||"1",10);if(!freeProductId){console.warn("\u274C Missing second-side product ID"),window.location.href="/cart";return}const payload={id:parseInt(freeProductId,10),quantity,properties:{"Second Side Text":secondSideText||"","Main Product Name":mainProductName||"","Main Product ID":mainProductId||""}};return console.log("\u{1F4E4} Adding second-side product:",payload),fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(payload)})}).then(res=>res&&res.json()).then(secondItem=>{secondItem&&console.log("\u2705 Second-side product added:",secondItem),window.location.href="/cart"}).catch(err=>{console.error("\u274C Add to cart error:",err)})})}),document.addEventListener("DOMContentLoaded",function(){document.addEventListener("click",function(e){const clickedRemoveBtn=e.target.closest(".cart__remove-btn");if(!clickedRemoveBtn)return;const mainCartItem=clickedRemoveBtn.closest(".cart__item"),mainItemKey=mainCartItem?.getAttribute("data-cart-item-key");if(!mainItemKey)return;const mainProductId=mainItemKey.split(":")[0];console.log("\u{1F9F9} Removing MAIN item:",mainItemKey),fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:mainItemKey,quantity:0})}).then(res=>res.json()).then(()=>{setTimeout(()=>{const allCartItems=document.querySelectorAll(".cart__item");for(const item of allCartItems){if(item===mainCartItem)continue;if(item.querySelector("li.cart__product-option.hidden[data-main-product-id]")?.getAttribute("data-main-product-id")===mainProductId){const addonItemKey=item.getAttribute("data-cart-item-key");addonItemKey&&(console.log("\u{1F5D1}\uFE0F Removing matched ADD-ON item:",addonItemKey),fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:addonItemKey,quantity:0})}).then(()=>{location.reload()}));break}}},500)})})}),document.addEventListener("DOMContentLoaded",function(){function syncAddons(mainCartItem,newQuantity){const mainProductId=mainCartItem.getAttribute("data-cart-item-key")?.split(":")[0];if(!mainProductId)return Promise.resolve();const allCartItems=document.querySelectorAll(".cart__item"),updatePromises=[];
1return allCartItems.forEach(item=>{if(item===mainCartItem)return;if(item.querySelector("li.cart__product-option.hidden[data-main-product-id]")?.getAttribute("data-main-product-id")===mainProductId){const addonItemKey=item.getAttribute("data-cart-item-key");if(!addonItemKey)return;console.log(`\u{1F504} Syncing add-on (${addonItemKey}) \u2192 ${newQuantity}`);const p=fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:addonItemKey,quantity:newQuantity})}).then(r=>r.json()).then(()=>console.log("\u2705 Add-on updated")).catch(err=>console.error("\u274C Add-on update failed",err));updatePromises.push(p)}}),Promise.all(updatePromises)}$(document).off("click.cartSync").on("click.cartSync",".js-change-quantityy",function(e){e.preventDefault(),e.stopImmediatePropagation();const $btn=$(this),$box=$btn.closest(".product-quantity-box"),$input=$box.find(".cart-item-quantity"),cartItem=$btn.closest(".cart__item");if(!$input.length||!cartItem.length||cartItem.find("li.cart__product-option.hidden[data-main-product-id]").length>0)return;const func=$btn.data("func");let val=parseInt($input.val(),10)||0;val=func==="plus"?val+1:val-1;const min=parseInt($input.attr("min"),10),max=parseInt($input.attr("max"),10);isNaN(min)||(val=Math.max(val,min)),isNaN(max)||(val=Math.min(val,max)),val<0&&(val=0),console.log(`\u{1F518} ${func} clicked \u2192 ${val}`),$box.find(".js-change-quantityy").addClass("is-disabled"),$input.val(val);const mainItemKey=cartItem.data("cart-item-key");mainItemKey&&fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:mainItemKey,quantity:val})}).then(res=>res.json()).then(()=>(console.log("\u2705 Main product updated"),syncAddons(cartItem[0],val))).then(()=>{console.log("\u{1F503} All synced \u2192 Reloading..."),setTimeout(()=>location.reload(),300)}).catch(err=>console.error("\u274C Update failed",err)).finally(()=>{setTimeout(()=>{$box.find(".js-change-quantityy").removeClass("is-disabled")},800)})}),$(document).on("change.cartSync",".cart-item-quantity",function(){const $input=$(this),cartItem=$input.closest(".cart__item");if(!cartItem.length||cartItem.find("li.cart__product-option.hidden[data-main-product-id]").length>0)return;const newQuantity=parseInt($input.val(),10);if(isNaN(newQuantity))return;console.log("\u{1F4E6} Main product manually changed \u2192",newQuantity);const mainItemKey=cartItem.data("cart-item-key");mainItemKey&&fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:mainItemKey,quantity:newQuantity})}).then(res=>res.json()).then(()=>syncAddons(cartItem[0],newQuantity)).then(()=>location.reload()).catch(err=>console.error("\u274C Manual change failed",err))})}),$("[data-cart-checkout-button1]").on("click",function(e){e.preventDefault(),$(".checkout-error").hide();const sampleQuantity=parseInt($(".sample-item").attr("data-quantity")),itemCount=$(".cart__item").length;if(console.log(sampleQuantity,itemCount>1,!isNaN(sampleQuantity)),sampleQuantity>1&&!isNaN(sampleQuantity)||itemCount>1&&!isNaN(sampleQuantity)){console.log("error"),$(".checkout-error").show();return}else $(this).attr("disabled",""),$("[data-cart-checkout-button]").trigger("click")}); 2//# sourceMappingURL=/cdn/shop/t/100/assets/uspl.js.map?v=33961041798996470321790258799
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.