PageSourceSearch

https://www.cpap.com/cdn/shop/t/339/assets/cart.js?v=154470899754859370871789567413

js cpap.com collected 2026-10-02 06:43:14 UTC 3,665 bytes, 2 lines download raw bytes

1import{fetchConfig}from"@theme/utilities";import{CartAddInitiatedEvent,CartAddEvent,CartErrorEvent}from"@theme/events";export class Cart{static createFormDataFromObject(data){const formData=new FormData;return Object.entries(data).forEach(([key,value])=>{if(value!=null){if(typeof value=="boolean"){formData.append(key,value?"true":"false");return}formData.append(key,value)}}),formData}static getCartItemSectionIds(){const cartItemsComponents=document.querySelectorAll("cart-items-component"),cartItemComponentsSectionIds=[];return cartItemsComponents.forEach(item=>{item instanceof HTMLElement&&item.dataset.sectionId&&cartItemComponentsSectionIds.push(item.dataset.sectionId)}),cartItemComponentsSectionIds}static async add(identifier,formData,{successCallback,errorCallback}={}){const variantId=formData.get("id"),productId=formData.get("product-id"),productHandle=formData.get("product-handle"),quantity=Number(formData.get("quantity")||1);document.dispatchEvent(new CartAddInitiatedEvent({},identifier,{source:"sdk",itemCount:quantity,productId}));const cartItemComponentsSectionIds=Cart.getCartItemSectionIds();cartItemComponentsSectionIds.length&&formData.append("sections",cartItemComponentsSectionIds.join(","));const fetchCfg=fetchConfig("javascript",{body:formData}),defaultEventObject={source:"sdk",itemCount:quantity,productId,productHandle,variantId};try{const response=await(await fetch(Theme.routes.root+"cart/add.js",{...fetchCfg,headers:{...fetchCfg.headers,Accept:"text/html"}})).json();if(response.status)document.dispatchEvent(new CartErrorEvent(identifier,response.message)),errorCallback&&errorCallback(response),document.dispatchEvent(new CartAddEvent({},identifier,{didError:!0,...defaultEventObject}));else{if(successCallback&&successCallback(response),!variantId)throw new Error("Form variant ID is required");document.dispatchEvent(new CartAddEvent({},"theme",defaultEventObject))}}catch(error){console.error(error)}}static async addItems(identifier,items,context={},{successCallback,errorCallback}={}){if(!Array.isArray(items)||items.length===0)throw new Error("Cart.addItems requires at least one item");const normalizedItems=items.filter(item=>item?.id).map(item=>({...item,quantity:Number(item.quantity||1)}));if(!normalizedItems.length)throw new Error("Cart.addItems requires items with valid IDs");const cartItemComponentsSectionIds=Cart.getCartItemSectionIds(),payload={items:normalizedItems};cartItemComponentsSectionIds.length&&(payload.sections=cartItemComponentsSectionIds.join(","));const variantId=context.variantId||(normalizedItems[0]?String(normalizedItems[0].id):null),defaultEventObject={source:"sdk",itemCount:normalizedItems.reduce((sum,item)=>sum+Number(item.quantity||1),0),productId:context.productId||null,productHandle:context.productHandle||null,variantId,hasCrossSellRedirect:!!context.hasCrossSellRedirect};document.dispatchEvent(new CartAddInitiatedEvent(defaultEventObject));const fetchCfg=fetchConfig("json",{body:JSON.stringify(payload)});try{const response=await(await fetch(Theme.routes.root+"cart/add.js",fetchCfg)).json();if(response.status){document.dispatchEvent(new CartErrorEvent(identifier,response.message)),errorCallback&&errorCallback(response);return}successCallback&&successCallback(response),document.dispatchEvent(new CartAddEvent({},"theme",{...defaultEventObject,sections:response.sections}))}catch(error){console.error(error),document.dispatchEvent(new CartErrorEvent(identifier,error instanceof Error?error.message:String(error))),errorCallback&&errorCallback({message:error?.message,error})}}}
2//# sourceMappingURL=/cdn/shop/t/339/assets/cart.js.map?v=154470899754859370871789567413

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.