PageSourceSearch

https://oceanlabbrewery.com/cdn/shop/t/24/assets/ajax-cart.min.js?v=139610948158939210551607277440

js oceanlabbrewery.com collected 2026-10-04 03:09:11 UTC 10,809 bytes, 28 lines download raw bytes

1if((typeof ShopifyAPI)==='undefined'){ShopifyAPI={}}
2function attributeToString(attribute){if((typeof attribute)!=='string'){attribute+='';if(attribute==='undefined'){attribute=''}}
3return jQuery.trim(attribute)};ShopifyAPI.onCartUpdate=function(cart){};ShopifyAPI.updateCartNote=function(note,callback){var $body=$(document.body),params={type:'POST',url:'/cart/update.js',data:'note='+attributeToString(note),dataType:'json',beforeSend:function(){$body.trigger('beforeUpdateCartNote.ajaxCart',note)},success:function(cart){if((typeof callback)==='function'){callback(cart)}
4else{ShopifyAPI.onCartUpdate(cart)}
5$body.trigger('afterUpdateCartNote.ajaxCart',[note,cart])},error:function(XMLHttpRequest,textStatus){$body.trigger('errorUpdateCartNote.ajaxCart',[XMLHttpRequest,textStatus]);ShopifyAPI.onError(XMLHttpRequest,textStatus)},complete:function(jqxhr,text){$body.trigger('completeUpdateCartNote.ajaxCart',[this,jqxhr,text])}};jQuery.ajax(params)};ShopifyAPI.onError=function(XMLHttpRequest,textStatus){var data=eval('('+XMLHttpRequest.responseText+')');if(!!data.message){alert(data.message+'('+data.status+'): '+data.description)}};ShopifyAPI.addItemFromForm=function(form,callback,errorCallback){var $body=$(document.body),params={type:'POST',url:'/cart/add.js',data:jQuery(form).serialize(),dataType:'json',beforeSend:function(jqxhr,settings){$body.trigger('beforeAddItem.ajaxCart',form)},success:function(line_item){if((typeof callback)==='function'){callback(line_item,form)}
6else{ShopifyAPI.onItemAdded(line_item,form)}
7$body.trigger('afterAddItem.ajaxCart',[line_item,form])},error:function(XMLHttpRequest,textStatus){if((typeof errorCallback)==='function'){errorCallback(XMLHttpRequest,textStatus)}
8else{ShopifyAPI.onError(XMLHttpRequest,textStatus)}
9$body.trigger('errorAddItem.ajaxCart',[XMLHttpRequest,textStatus])},complete:function(jqxhr,text){$body.trigger('completeAddItem.ajaxCart',[this,jqxhr,text])}};jQuery.ajax(params)};ShopifyAPI.getCart=function(callback){$(document.body).trigger('beforeGetCart.ajaxCart');jQuery.getJSON('/cart.js',function(cart,textStatus){if((typeof callback)==='function'){callback(cart)}
10else{ShopifyAPI.onCartUpdate(cart)}
11$(document.body).trigger('afterGetCart.ajaxCart',cart)})};ShopifyAPI.changeItem=function(line,quantity,callback){var $body=$(document.body),params={type:'POST',url:'/cart/change.js',data:'quantity='+quantity+'&line='+line,dataType:'json',beforeSend:function(){$body.trigger('beforeChangeItem.ajaxCart',[line,quantity])},success:function(cart){if((typeof callback)==='function'){callback(cart)}
12else{ShopifyAPI.onCartUpdate(cart)}
13$body.trigger('afterChangeItem.ajaxCart',[line,quantity,cart])},error:function(XMLHttpRequest,textStatus){$body.trigger('errorChangeItem.ajaxCart',[XMLHttpRequest,textStatus]);ShopifyAPI.onError(XMLHttpRequest,textStatus)},complete:function(jqxhr,text){$body.trigger('completeChangeItem.ajaxCart',[this,jqxhr,text])}};jQuery.ajax(params)};var ajaxCart=(function(module,$){'use strict';var init,loadCart;var settings,isUpdating,$body;var $formContainer,$addToCart,$cartCountSelector,$cartCostSelector,$cartContainer,$drawerContainer,$emptySelector,$triggerSelector;var updateCountPrice,formOverride,itemAddedCallback,itemErrorCallback,cartUpdateCallback,buildCart,cartCallback,adjustCart,adjustCartCallback,createQtySelectors,qtySelectors,validateQty;init=function(options){settings={formSelector:'form[action^="/cart/add"]',cartContainer:'#CartContainer',addToCartSelector:'input[type="submit"]',cartCountSelector:null,cartCostSelector:null,triggerSelector:null,emptySelector:null,moneyFormat:'$',disableAjaxCart:!1,enableQtySelectors:!0};$.extend(settings,options);$formContainer=$(settings.formSelector);$cartContainer=$(settings.cartContainer);$addToCart=$formContainer.find(settings.addToCartSelector);$cartCountSelector=$(settings.cartCountSelector);$cartCostSelector=$(settings.cartCostSelector);$emptySelector=$(settings.emptySelector);$triggerSelector=$(settings.triggerSelector);$body=$(document.body);isUpdating=!1;if(settings.enableQtySelectors){qtySelectors()}
14if(!settings.disableAjaxCart&&$addToCart.length){formOverride()}
15adjustCart()};
15loadCart=function(){$body.addClass('drawer--is-loading');ShopifyAPI.getCart(cartUpdateCallback)};updateCountPrice=function(cart){if($cartCountSelector){$cartCountSelector.html(cart.item_count).removeClass('hidden-count');if(cart.item_count===0){$cartCountSelector.addClass('hidden-count')}}
16if($cartCostSelector){$cartCostSelector.html(Shopify.formatMoney(cart.total_price,settings.moneyFormat))}};formOverride=function(){$formContainer.on('submit',function(evt){evt.preventDefault();$addToCart.removeClass('is-added').addClass('is-adding');$('.qty-error').remove();ShopifyAPI.addItemFromForm(evt.target,itemAddedCallback,itemErrorCallback)})};itemAddedCallback=function(product){$addToCart.removeClass('is-adding').addClass('is-added');ShopifyAPI.getCart(cartUpdateCallback)};itemErrorCallback=function(XMLHttpRequest,textStatus){var data=eval('('+XMLHttpRequest.responseText+')');$addToCart.removeClass('is-adding is-added');if(!!data.message){if(data.status==422){$formContainer.after('<div class="errors qty-error">'+data.description+'</div>')}}};cartUpdateCallback=function(cart){updateCountPrice(cart);buildCart(cart)};buildCart=function(cart){$cartContainer.empty();if(cart.item_count===0){$(settings.emptySelector).show();$(settings.triggerSelector).removeClass('js-cart-full');cartCallback(cart);return}else{$(settings.emptySelector).hide();$(settings.triggerSelector).addClass('js-cart-full')}
17var items=[],item={},data={},source=$("#CartTemplate").html(),template=Handlebars.compile(source);$.each(cart.items,function(index,cartItem){if(cartItem.image!=null){var prodImg=cartItem.image.replace(/(\.[^.]*)$/,"_240x240_crop_center$1").replace('http:','')}else{var prodImg="//cdn.shopify.com/s/assets/admin/no-image-medium-cc9732cb976dd349a0df1d39816fbcc7.gif"}
18item={key:cartItem.key,line:index+1,url:cartItem.url,img:prodImg,name:cartItem.product_title,variation:cartItem.variant_title,properties:cartItem.properties,itemAdd:cartItem.quantity+1,itemMinus:cartItem.quantity-1,itemQty:cartItem.quantity,price:Shopify.formatMoney(cartItem.price,settings.moneyFormat),originalPrice:Shopify.formatMoney(cartItem.original_price,settings.moneyFormat),vendor:cartItem.vendor,linePrice:Shopify.formatMoney(cartItem.final_line_price,settings.moneyFormat),originalLinePrice:Shopify.formatMoney(cartItem.original_line_price,settings.moneyFormat),lineDiscount:cartItem.line_level_discount_allocations.length,lineDiscounts:cartItem.line_level_discount_allocations.map(function(obj){return Object.keys(obj).reduce(function(acc,key){if(key==="amount"){acc[key]=Shopify.formatMoney(obj[key],settings.moneyFormat)}else{acc[key]=obj[key]}
19return acc},{})}),lineDiscountedPrice:Shopify.formatMoney(cartItem.final_line_price,settings.moneyFormat),discounts:cartItem.discounts,discountPrice:Shopify.formatMoney(cartItem.original_price-cartItem.discounted_price,settings.moneyFormat),discountsApplied:cartItem.line_price===cartItem.original_line_price?!1:!0,discountedPrice:Shopify.formatMoney(cartItem.discounted_price,settings.moneyFormat)};items.push(item)});data={items:items,note:cart.note,totalPrice:Shopify.formatMoney(cart.total_price,settings.moneyFormat),cartDiscount:cart.cart_level_discount_applications.length,cartDiscounts:cart.cart_level_discount_applications.map(function(obj){return Object.keys(obj).reduce(function(acc,key){if(key==="total_allocated_amount"){acc[key]=Shopify.formatMoney(obj[key],settings.moneyFormat)}else{acc[key]=obj[key]}
20return acc},{})}),totalCartDiscount:cart.total_discount===0?0:"You're saving [savings]".replace('[savings]',Shopify.formatMoney(cart.total_discount,settings.moneyFormat)),totalCartDiscountApplied:cart.total_discount===0?!1:!0}
21$cartContainer.append(template(data));cartCallback(cart)};cartCallback=function(cart){$body.removeClass('drawer--is-loading');$body.trigger('afterCartLoad.ajaxCart',cart);if(window.Shopify&&Shopify.StorefrontExpressButtons){Shopify.StorefrontExpressButtons.initialize()}};adjustCart=function(){$body.on('click','.ajaxcart__qty-adjust',function(){if(isUpdating){return}
22var $el=$(this),line=$el.data('line'),$qtySelector=$el.siblings('.ajaxcart__qty-num'),qty=parseInt($qtySelector.val().replace(/\D/g,''));
22var qty=validateQty(qty);if($el.hasClass('ajaxcart__qty--plus')){qty+=1}else{qty-=1;if(qty<=0)qty=0}
23if(line){updateQuantity(line,qty)}else{$qtySelector.val(qty)}});$body.on('change','.ajaxcart__qty-num',function(){if(isUpdating){return}
24var $el=$(this),line=$el.data('line'),qty=parseInt($el.val().replace(/\D/g,''));var qty=validateQty(qty);if(line){updateQuantity(line,qty)}});$body.on('submit','form.ajaxcart',function(evt){if(isUpdating){evt.preventDefault()}});$body.on('focus','.ajaxcart__qty-adjust',function(){var $el=$(this);setTimeout(function(){$el.select()},50)});function updateQuantity(line,qty){isUpdating=!0;var $row=$('.ajaxcart__row[data-line="'+line+'"]').addClass('is-loading');if(qty===0){$row.parent().addClass('is-removed')}
25setTimeout(function(){ShopifyAPI.changeItem(line,qty,adjustCartCallback)},250)}
26$body.on('change','textarea[name="note"]',function(){var newNote=$(this).val();ShopifyAPI.updateCartNote(newNote,function(cart){})})};adjustCartCallback=function(cart){updateCountPrice(cart);setTimeout(function(){isUpdating=!1;ShopifyAPI.getCart(buildCart)},150)};createQtySelectors=function(){if($('input[type="number"]',$cartContainer).length){$('input[type="number"]',$cartContainer).each(function(){var $el=$(this),currentQty=$el.val();var itemAdd=currentQty+1,itemMinus=currentQty-1,itemQty=currentQty;var source=$("#AjaxQty").html(),template=Handlebars.compile(source),data={key:$el.data('id'),itemQty:itemQty,itemAdd:itemAdd,itemMinus:itemMinus};$el.after(template(data)).remove()})}};qtySelectors=function(){var numInputs=$('input[type="number"]');if(numInputs.length){numInputs.each(function(){var $el=$(this),currentQty=$el.val(),inputName=$el.attr('name'),inputId=$el.attr('id');var itemAdd=currentQty+1,itemMinus=currentQty-1,itemQty=currentQty;var source=$("#JsQty").html(),template=Handlebars.compile(source),data={key:$el.data('id'),itemQty:itemQty,itemAdd:itemAdd,itemMinus:itemMinus,inputName:inputName,inputId:inputId};$el.after(template(data)).remove()});$('.js-qty__adjust').on('click',function(){var $el=$(this),id=$el.data('id'),$qtySelector=$el.siblings('.js-qty__num'),qty=parseInt($qtySelector.val().replace(/\D/g,''));
26var qty=validateQty(qty);if($el.hasClass('js-qty__adjust--plus')){qty+=1}else{qty-=1;if(qty<=1)qty=1}
27$qtySelector.val(qty)})}};validateQty=function(qty){if((parseFloat(qty)==parseInt(qty))&&!isNaN(qty)){}else{qty=1}
28return qty};module={init:init,load:loadCart};return module}(ajaxCart||{},jQuery))

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.