PageSourceSearch

https://siptequila.com/cdn/shop/t/130/assets/bundle-cart.js?v=26849775921739132281780598651

js siptequila.com collected 2026-09-26 00:50:47 UTC 6,645 bytes, 2 lines download raw bytes

1const RETAG_DEBOUNCE_MS=50;class BundleCartHandler{constructor(Rebuy){this._Rebuy=Rebuy}isBundleItem(item){return!!item?.properties?._bundle_id}isBundleParent(item){const flag=item?.properties?._bundle_parent;return flag==="true"||flag===!0}findBundleSiblings(item){const bundleId=item?.properties?._bundle_id;return bundleId?this._Rebuy.Cart.items().filter(i=>i.key!==item.key&&i.properties?._bundle_id===bundleId):[]}formatMoney(cents){const locale=document.documentElement.lang||"en-US",currency=window.Shopify?.currency?.active||"USD";try{return new Intl.NumberFormat(locale,{style:"currency",currency}).format(cents/100)}catch{return"$"+(cents/100).toFixed(2)}}removeWholeBundle(item){const bundleId=item?.properties?._bundle_id;bundleId&&this._Rebuy.Cart.items().filter(i=>i.properties?._bundle_id===bundleId).forEach(i=>this._Rebuy.Cart.removeItem(i))}handleBundleIncrease(item){if(this.isBundleParent(item)){this._Rebuy.Cart.changeItem({id:item.key,quantity:1});return}this.removeWholeBundle(item)}handleBundleDecrease(item){if(this.isBundleParent(item)){item.quantity-1<=0?this.removeWholeBundle(item):this._Rebuy.Cart.changeItem({id:item.key,quantity:1});return}this.removeWholeBundle(item)}handleBundleRemove(item){this.findBundleSiblings(item).forEach(s=>this._Rebuy.Cart.removeItem(s))}bindCascade(){document.addEventListener("rebuy:smartcart.line-item-increase",({detail:{item}})=>{this.isBundleItem(item)&&this.handleBundleIncrease(item)}),document.addEventListener("rebuy:smartcart.line-item-decrease",({detail:{item}})=>{this.isBundleItem(item)&&this.handleBundleDecrease(item)}),document.addEventListener("rebuy:smartcart.line-item-removed",({detail
1:{item}})=>{this.isBundleItem(item)&&this.handleBundleRemove(item)})}paintBundles(){const items=this._Rebuy.Cart?.items?.()||[],root=document.getElementById("rebuy-cart");if(!root)return;root.querySelectorAll(".bundle-line").forEach(el=>{el.classList.remove("bundle-line","bundle-parent","bundle-child")}),root.querySelectorAll(".bundle-original-price, .bundle-total-price").forEach(el=>el.remove());const bundles=new Map;if(items.forEach(item=>{const id=item.properties?._bundle_id;if(!id)return;bundles.has(id)||bundles.set(id,{total:0,original:0,parentNode:null});const b=bundles.get(id),linePrice=typeof item.line_price=="number"?item.line_price:(item.price||0)*item.quantity,origLine=typeof item.original_line_price=="number"?item.original_line_price:linePrice;b.total+=linePrice,b.original+=origLine}),!bundles.size)return;const flyoutItems=Array.from(root.querySelectorAll(".rebuy-cart__flyout-item")),keyAttrs=["data-key","data-line-item-key","data-rebuy-cart-item-key","data-cart-item-key"];items.forEach((item,index)=>{if(!this.isBundleItem(item))return;let node=null;for(const attr of keyAttrs)if(node=root.querySelector(`[${attr}="${item.key}"]`),node)break;if(node||(node=flyoutItems.find(el=>Object.values(el.dataset||{}).some(v=>v===item.key))),!node&&flyoutItems[index]&&(node=flyoutItems[index]),!node)return;const line=node.closest(".rebuy-cart__flyout-item")||node;if(line.classList.add("bundle-line"),line.classList.toggle("bundle-parent",this.isBundleParent(item)),line.classList.toggle("bundle-child",!this.isBundleParent(item)),this.isBundleParent(item)){const b=bundles.get(item.properties._bundle_id);b&&(b.parentNode=line),line.querySelectorAll("a[href]").forEach(a=>{a.removeAttribute("href")}),this.injectEditButton(line,item)}}),bundles.forEach(b=>{b.parentNode&&this.applyBundlePrice(b.parentNode,b.total,b.original)})}applyBundlePrice(parentLine,totalCents,originalCents){const priceSelectors=[".rebuy-cart__flyout-item-price",".rebuy-cart__flyout-item-subtotal",".rebuy-cart__flyout-item-price-list",".rebuy-cart__flyout-item-info-price"];let priceEl=null;for(const sel of priceSelectors)if(priceEl=parentLine.querySelector(sel),priceEl)break;if(priceEl||(priceEl=Array.from(parentLine.querySelectorAll("*")).find(el=>/[$€£¥]/.test(el.textContent||""))),!priceEl)return;const total=this.formatMoney(totalCents);if(originalCents>totalCents){const orig=this.formatMoney(originalCents);priceEl.innerHTML=`<span class="bundle-original-price" style="text-decoration:line-through;opacity:.6;margin-right:6px">${orig}</span><span class="bundle-total-price">${total}</span>`}else priceEl.innerHTML=`<span class="bundle-total-price">${total}</span>`}injectEditButton(parentLine,item){const collection=item.properties?._bundle_collection,data=item.properties?._bundle_data;if(!collection||!data)return;let btn=parentLine.querySelector(".bundle-edit-btn");btn||(btn=document.createElement("button"),btn.type="button",btn.className="bundle-edit-btn rebuy-cart__flyout-item-remove",btn.textContent="Edit",(parentLine.querySelector(".rebuy-cart__flyout-item-info .rebuy-cart__flyout-item-quantity")||parentLine).prepend(btn),btn.addEventListener("click",e=>{e.preventDefault(),this.editBundle(btn.dataset.collection,btn.dataset.bundleData)})),btn.dataset.collection=collection,btn.dataset.bundleData=data}editBundle(collection,data){try{const products=JSON.parse(data),stored=JSON.parse(localStorage.getItem("bundleProducts")||"{}");stored[collection]=products,localStorage.setItem("bundleProducts",JSON.stringify(stored))}catch(e){console.error("Bundle edit: could not restore bundle products",e)}const root=window.Shopify?.routes?.root||"/";window.location.href=root+"collections/"+collection+"?view=bundle-builder"}bindRepaint(){let scheduled=null,cartObserver=null,cartObserverTarget=null;const reattach=()=>{cartObserver&&cartObserverTarget&&cartObserver.observe(cartObserverTarget,{childList:!0,subtree:!0})},repaint=()=>{scheduled||(scheduled=setTimeout(()=>{scheduled=null,cartObserver&&cartObserver.disconnect();try{this.paintBundles()}finally{reattach()}},50))};document.addEventListener("rebuy:cart.change",repaint),document.addEventListener("rebuy:smartcart.show",repaint),document.addEventListener("rebuy:smartcart.refresh",repaint),document.addEventListener("rebuy:cart.ready",repaint);const attach=target=>{cartObserverTarget=target,cartObserver=new MutationObserver(repaint),reattach()},cartRoot=document.getElementById("rebuy-cart");if(cartRoot)attach(cartRoot);else{const bodyObserver=new MutationObserver(()=>{const t=document.getElementById("rebuy-cart");t&&(attach(t),bodyObserver.disconnect())});bodyObserver.observe(document.body,{childList:!0,subtree:!0})}
1repaint()}init(){this._Rebuy&&(this.bindCascade(),this.bindRepaint())}}document.addEventListener("rebuy:cart.ready",()=>{window.Rebuy&&new BundleCartHandler(window.Rebuy).init()});
2//# sourceMappingURL=/cdn/shop/t/130/assets/bundle-cart.js.map?v=26849775921739132281780598651

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.