1(function(){"use strict";if(!window.bpLips){const cache={};window.bpLips={fetch(handle){if(!handle)return Promise.resolve(null);if(cache[handle])return cache[handle];const p=window.fetch("/products/"+encodeURIComponent(handle)+"?view=lips",{credentials:"same-origin"}).then(r=>r.ok?r.json():null).catch(()=>null);return cache[handle]=p,p},propsForVariant(data,variantId){const props={};if(!data)return props;const s=data.static||{};Object.keys(s).forEach(k=>{s[k]!==""&&s[k]!=null&&(props[k]=String(s[k]))});const v=(data.variants||{})[String(variantId)];if(v){v._catalog_id&&(props._catalog_id=String(v._catalog_id)),v._price_status&&(props._price_status=String(v._price_status));const cap=Number(v.compare_at_price||0);cap>0&&(props._compare_at_price=cap.toFixed(2)),v.price&&(props._price=String(v.price))}return props},forVariant(handle,variantId){return this.fetch(handle).then(data=>this.propsForVariant(data,variantId))},cartLineForVariant(variantId){const vid=Number(variantId);return window.fetch("/cart.js",{credentials:"same-origin",headers:{Accept:"application/json"}}).then(r=>r.ok?r.json():null).then(cart=>!cart||!Array.isArray(cart.items)?null:cart.items.find(it=>Number(it.variant_id)===vid)||null).catch(()=>null)},withUpsellProps(baseProps,opts){const o=opts||{},props=Object.assign({},baseProps||{});return props._upsell_type="outfit-bundle",props._upsell_area=o.area||"cart-line-items",o.isNewLine===!1?props._is_upsell=!0:props._is_bundle_product=!0,props},addUpsell(a){const args=a||{},variantId=args.variantId,quantity=args.quantity||1,area=args.area||"cart-line-items";return variantId?Promise.all([this.forVariant(args.handle,variantId).catch(()=>({})),this.cartLineForVariant(variantId)]).then(results=>{const baseProps=results[0]||{},existingLine=results[1];if(existingLine&&existingLine.key){const merged=this.withUpsellProps(Object.assign({},existingLine.properties||{},baseProps),{area,isNewLine:!1});return window.fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},credentials:"same-origin",body:JSON.stringify({id:existingLine.key,quantity:(existingLine.quantity||0)+quantity,properties:merged})})}const props=this.withUpsellProps(baseProps,{area,isNewLine:!0});return window.fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},credentials:"same-origin",body:JSON.stringify({items:[{id:variantId,quantity,properties:props}]})})}):Promise.reject(new Error("addUpsell: variantId required"))}}}if(customElements.get("bp-line-item-props"))return;class BpLineItemProps extends HTMLElement{connectedCallback(){const dataEl=this.querySelector("script.bp-lip-data");if(!dataEl)return;let data;try{data=JSON.parse(dataEl.textContent||"{}")}catch{return}this.staticProps=data.static||{},this.variants=data.variants||{},this.initialVid=parseInt(this.dataset.initialVid,10),this.onVariant=e=>{const vid=e&&e.detail&&e.detail.resource&&e.detail.resource.id;vid&&this.sync(vid)},document.addEventListener("variant:update",this.onVariant),requestAnimationFrame(()=>this.sync(this.initialVid))}disconnectedCallback(){this.onVariant&&document.removeEventListener("variant:update",this.onVariant)}findForm(){const f=(this.closest("dialog")||this.closest("#quick-add-modal-content")||this.closest("[data-section-id]")||this.closest(".shopify-section")||document).querySelector('form[action$="/cart/add"]');return f&&f.querySelector('input[name="id"]')?f:document.querySelector('form[action$="/cart/add"]')}setLip(form,key,value){const fullName="properties["+key+"]";let input=form.querySelector('input[name="'+fullName+'"][data-bp-lip]');input||(input=document.createElement("input"),input.type="hidden",input.name=fullName,input.setAttribute("data-bp-lip",key),form.appendChild(input)),value===""||value==null?(input.value="",input.disabled=!0):(input.value=String(value),input.disabled=!1)}sync(vid){const form=this.findForm();if(!form)return;Object.keys(this.staticProps).forEach(k=>this.setLip(form,k,this.staticProps[k]));const v=this.variants[String(vid)];if(v){this.setLip(form,"_catalog_id",v._catalog_id||""),this.setLip(form,"_price_status",v._price_status||"");const cap=Number(v.compare_at_price||0);this.setLip(form,"_compare_at_price",cap>0?cap.toFixed(2):""),this.setLip(form,"_price",v.price||"")}}}customElements.define("bp-line-item-props",BpLineItemProps)})(); 2//# sourceMappingURL=/cdn/shop/t/1521/assets/bp-line-item-props.js.map?v=113126442776160060221790713714
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.