PageSourceSearch

https://www.barebonesbroth.com/cdn/shop/t/243/assets/minicart-gwp-picker.js?v=13479395955841764871790011661

js barebonesbroth.com collected 2026-09-25 14:09:05 UTC 13,881 bytes, 2 lines download raw bytes

1(function(){"use strict";var CONFIG_ELEMENT_ID="minicart-gwp-data",ROOT_CLASS="minicart__gwp",STYLE_ID="minicart-gwp-styles",LINE_CLASS="is-gwp-gift-line",INJECT_BEFORE_SELECTORS=[".minicart__static-upsell",".minicart__subtotal",".minicart__totals",".minicart__footer",".minicart__bottom",'[class*="minicart__subtotal"]','[class*="minicart__footer"]','[class*="minicart__bottom"]'],config=null,claimKey="_gwp_claim",giftMeta={},soldOutAtClick={},writing=!1,notice="",swapping=!1,configError=!1;function getConfig(){var el=document.getElementById(CONFIG_ELEMENT_ID);if(!el)return null;try{return JSON.parse(el.textContent)}catch(e){return console.error("[minicart-gwp] failed to parse config",e),null}}function escapeHtml(s){return String(s==null?"":s).replace(/[&<>"']/g,function(m){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"}[m]})}function money(cents){if(window.Shopify&&typeof window.Shopify.formatMoney=="function")try{return window.Shopify.formatMoney(cents)}catch(e){}return"$"+(Math.abs(cents)/100).toFixed(2)}function fetchCart(){return fetch("/cart.js",{credentials:"same-origin"}).then(function(r){return r.json()})}function isGiftLine(item){return item?config&&item.product_id===config.product_id?!0:!!(item.properties&&item.properties[claimKey]):!1}function giftLines(cart){return!cart||!Array.isArray(cart.items)?[]:cart.items.filter(isGiftLine)}function giftLineIndexes(cart){var out=[];return!cart||!Array.isArray(cart.items)||cart.items.forEach(function(item,i){isGiftLine(item)&&out.push(i)}),out}function qualifyingCents(cart){return!cart||!Array.isArray(cart.items)?0:cart.items.reduce(function(sum,item){if(isGiftLine(item))return sum;var line=typeof item.original_line_price=="number"?item.original_line_price:(item.price||0)*(item.quantity||0);return sum+line},0)}function availableGifts(){return!config||!Array.isArray(config.gifts)?[]:config.gifts.filter(function(g){return g.in_stock&&!soldOutAtClick[String(g.id)]})}function changeLine(key,quantity){return fetch("/cart/change.js",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({id:key,quantity:quantity})}).then(function(res){if(!res.ok)throw new Error("cart/change failed ("+res.status+")");return res.json()})}function broadcast(cart){document.dispatchEvent(new CustomEvent("cart:updated",{detail:{cart:cart}})),document.dispatchEvent(new CustomEvent("cart:refresh"));try{typeof window._!="undefined"&&typeof window._.dispatch=="function"&&window._.dispatch("getCart")}catch(e){}}function reconcile(cart){var lines=giftLines(cart),qualifies=qualifyingCents(cart)>=config.threshold_cents,chain=Promise.resolve(cart),wrote=!1;return!qualifies&&lines.length?(lines.forEach(function(line){chain=chain.then(function(){return changeLine(line.key,0)})}),notice=config.copy.removed_notice,wrote=!0):qualifies&&lines.length>1?(lines.slice(1).forEach(function(line){chain=chain.then(function(){return changeLine(line.key,0)})}),wrote=!0):qualifies&&lines.length===1&&lines[0].quantity>1&&(chain=chain.then(function(){return changeLine(lines[0].key,1)}),wrote=!0),wrote?chain.then(function(updated){return{cart:updated,wrote:!0}}):Promise.resolve({cart:cart,wrote:!1})}function ensureStyles(){if(!document.getElementById(STYLE_ID)){var style=document.createElement("style");style.id=STYLE_ID,style.textContent=["."+ROOT_CLASS+"{margin:0 30px 16px;padding:14px;border:1px solid var(--text-color,#003452);","border-radius:8px;background:#fff;font-family:inherit;color:var(--text-color,#003452);}","."+ROOT_CLASS+"--locked{border-style:dashed;opacity:.9;}","."+ROOT_CLASS+"__heading{margin:0 0 2px;font-size:11px;font-weight:700;letter-spacing:.5px;","text-transform:uppercase;}","."+ROOT_CLASS+"__sub{margin:0 0 10px;font-size:12px;line-height:1.4;opacity:.75;}","."+ROOT_CLASS+"__notice{margin:0 0 10px;font-size:12px;font-weight:600;color:#C04A2B;}","."+ROOT_CLASS+"__progress{height:4px;border-radius:2px;background:rgba(0,52,82,.12);","overflow:hidden;margin-top:8px;}","."+ROOT_CLASS+"__progress span{display:block;height:100%;background:#C04A2B;","border-radius:2px;transition:width .3s ease;}","."+ROOT_CLASS+"__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}","."+ROOT_CLASS+"__tile{display:flex;flex-direction:column;align-items:center;gap:6px;","padding:10px 8px;border:1px solid rgba(0,52,82,.25);border-radius:6px;background:#fff;","cursor:pointer;text-align:center;font-family:inherit;color:inherit;transition:border-color .15s,box-shadow .15s;}","."+ROOT_CLASS+"__tile:hover{border-color:#003452;box-shadow:0 1px 6px rgba(0,52,82,.12);}","."+ROOT_CLASS+"__tile[disabled]{opacity:.45;cursor:not-allowed;}","."+ROOT_CLASS+"__tile img{width:52px;height:52px;object-fit:contain;background:#f6f6f6;border-radius:4px;}","."+ROOT_CLASS+"__tile-title{font-size:11px;font-weight:600;line-height:1.25;","display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}","."+ROOT_CLASS+"__tile-value{font-size:10px;opacity:.6;text-decoration:line-through;}","."+ROOT_CLASS+"__tile-cta{font-size:10px;font-weight:700;text-transform:uppercase;","letter-spacing:.4px;color:#C04A2B;}","."+ROOT_CLASS+"__claimed{display:flex;align-items:center;gap:12px;}","."+ROOT_CLASS+"__claimed img{width:52px;height:52px;object-fit:contain;background:#f6f6f6;border-radius:4px;}","."+ROOT_CLASS+"__claimed-info{flex:1 1 auto;min-width:0;}","."+ROOT_CLASS+"__claimed-title{margin:0;font-size:13px;font-weight:600;line-height:1.3;}","."+ROOT_CLASS+"__badge{display:inline-block;margin-top:3px;padding:2px 6px;border-radius:3px;","background:#C04A2B;color:#fff;font-size:9px;font-weight:700;letter-spacing:.5px;}","."+ROOT_CLASS+"__was{margin-left:6px;font-size:10px;opacity:.6;text-decoration:line-through;}","."+ROOT_CLASS+"__change{flex-shrink:0;padding:6px 10px;border:1px solid var(--text-color,#003452);","background:transparent;border-radius:6px;font-size:10px;font-weight:700;text-transform:uppercase;","letter-spacing:.4px;
1cursor:pointer;color:inherit;font-family:inherit;}","."+ROOT_CLASS+"__change:hover{background:rgba(0,52,82,.06);}","."+LINE_CLASS+" buy-more-save-more{display:none!important;}","."+LINE_CLASS+'::before{content:"FREE GIFT";display:inline-block;',"margin:0 0 4px 30px;padding:2px 6px;border-radius:3px;background:#C04A2B;color:#fff;","font-size:9px;font-weight:700;letter-spacing:.5px;font-family:inherit;}","@media (max-width:420px){."+ROOT_CLASS+"{margin:0 16px 16px;}","."+LINE_CLASS+"::before{margin-left:16px;}}"].join(""),document.head.appendChild(style)}}function findInjectionTarget(){for(var i=0;i<INJECT_BEFORE_SELECTORS.length;i++){var el=document.querySelector(INJECT_BEFORE_SELECTORS[i]);if(el)return el}return null}function decorateGiftCartLines(cart){var rows=document.querySelectorAll(".minicart-product");if(rows.length){var giftIdx={};giftLineIndexes(cart).forEach(function(i2){giftIdx[i2]=!0});for(var i=0;i<rows.length;i++)rows[i].classList.toggle(LINE_CLASS,!!giftIdx[i])}}function tileHtml(gift){var valueLine=gift.value>0?'<span class="'+ROOT_CLASS+'__tile-value">'+escapeHtml(money(gift.value))+"</span>":"",img=gift.image?'<img src="'+escapeHtml(gift.image)+'" alt="'+escapeHtml(gift.title)+'" loading="lazy" width="52" height="52">':"";return'<button type="button" class="'+ROOT_CLASS+'__tile" data-gwp-claim="'+escapeHtml(gift.id)+'">'+img+'<span class="'+ROOT_CLASS+'__tile-title">'+escapeHtml(gift.title)+"</span>"+valueLine+'<span class="'+ROOT_CLASS+'__tile-cta">'+escapeHtml(config.copy.button_label)+"</span></button>"}function buildBlock(cart){if(configError)return null;var qualifying=qualifyingCents(cart),qualifies=qualifying>=config.threshold_cents,claimed=giftLines(cart)[0]||null,offerable=availableGifts();if(!offerable.length&&!claimed)return null;var block=document.createElement("div");block.className=ROOT_CLASS;var noticeHtml=notice?'<p class="'+ROOT_CLASS+'__notice">'+escapeHtml(notice)+"</p>":"";if(!qualifies){if(!config.show_progress&&!notice)return null;var remaining=config.threshold_cents-qualifying,pct=Math.max(0,Math.min(100,qualifying/config.threshold_cents*100)),msg=String(config.copy.progress_message).replace("[remaining]",money(remaining));return block.className+=" "+ROOT_CLASS+"--locked",block.innerHTML='<p class="'+ROOT_CLASS+'__heading">'+escapeHtml(msg)+"</p>"+noticeHtml+'<div class="'+ROOT_CLASS+'__progress"><span style="width:'+pct.toFixed(1)+'%"></span></div>',block}if(claimed&&!swapping){var meta=giftMeta[String(claimed.variant_id)]||{},image=meta.image||claimed.image,label=meta.title||claimed.variant_title||claimed.title,was=meta.value>0?'<span class="'+ROOT_CLASS+'__was">'+escapeHtml(money(meta.value))+"</span>":"",imgHtml=image?'<img src="'+escapeHtml(image)+'" alt="'+escapeHtml(label)+'" width="52" height="52">':"",changeBtn=offerable.length>1?'<button type="button" class="'+ROOT_CLASS+'__change" data-gwp-swap="1">'+escapeHtml(config.copy.change_label)+"</button>":"";return block.innerHTML='<p class="'+ROOT_CLASS+'__heading">'+escapeHtml(config.copy.claimed_heading)+"</p>"+noticeHtml+'<div class="'+ROOT_CLASS+'__claimed">'+imgHtml+'<div class="'+ROOT_CLASS+'__claimed-info"><p class="'+ROOT_CLASS+'__claimed-title">'+escapeHtml(label)+'</p><span class="'+ROOT_CLASS+'__badge">'+escapeHtml(config.copy.free_label)+"</span>"+was+"</div>"+changeBtn+"</div>",block}return block.innerHTML='<p class="'+ROOT_CLASS+'__heading">'+escapeHtml(config.copy.unlocked_heading)+'</p><p class="'+ROOT_CLASS+'__sub">'+escapeHtml(config.copy.unlocked_subheading)+"</p>"+noticeHtml+'<div class="'+ROOT_CLASS+'__grid">'+offerable.map(tileHtml).join("")+"</div>",block}function claim(variantId,button){if(!writing){writing=!0;var restore=button.innerHTML;button.disabled=!0;var properties={};properties[claimKey]="1",fetchCart().then(function(cart){var existing=giftLines(cart)[0];return existing?changeLine(existing.key,0):null}).then(function(){return fetch("/cart/add.js",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:[{id:Number(variantId),quantity:1,properties:properties}]})})}).then(function(res){if(res.status===422)return res.json().catch(function(){return{}}).then(function(body){var desc=String(body.description||""),err=new Error(desc||"cart/add rejected");
1throw/cannot find variant|does not exist|not found/i.test(desc)?err.misconfigured=!0:err.outOfStock=!0,err});if(!res.ok)throw new Error("cart/add failed ("+res.status+")");return res.json()}).then(function(){return fetchCart()}).then(function(cart){swapping=!1,notice="",writing=!1,broadcast(cart),render(cart)}).catch(function(err){if(writing=!1,button.disabled=!1,button.innerHTML=restore,err&&err.misconfigured){configError=!0,console.error("[minicart-gwp] gift variant "+variantId+" is not purchasable. The Free Sampler product must be published to the Online Store sales channel \u2014 status UNLISTED is not sufficient on its own. Hiding the offer."),fetchCart().then(render).catch(function(){render(null)});return}if(err&&err.outOfStock){soldOutAtClick[String(variantId)]=!0,notice=config.copy.soldout_notice,console.warn("[minicart-gwp] variant "+variantId+" out of stock at click time"),fetchCart().then(render).catch(function(){render(null)});return}console.error("[minicart-gwp]",err)})}}function beginSwap(){swapping=!0,notice="",fetchCart().then(render).catch(function(){render(null)})}function render(cart){if(!(!config||!config.enabled)){var proceed=function(c){for(var existing=document.querySelectorAll("."+ROOT_CLASS),i=0;i<existing.length;i++)existing[i].remove();decorateGiftCartLines(c);var target=findInjectionTarget();if(target){var block=buildBlock(c);if(block){target.parentNode.insertBefore(block,target);for(var tiles=block.querySelectorAll("[data-gwp-claim]"),j=0;j<tiles.length;j++)(function(btn){btn.addEventListener("click",function(){claim(btn.getAttribute("data-gwp-claim"),btn)})})(tiles[j]);var swapBtn=block.querySelector("[data-gwp-swap]");swapBtn&&swapBtn.addEventListener("click",beginSwap)}}};if(cart){proceed(cart);return}fetchCart().then(proceed).catch(function(e){console.error("[minicart-gwp] cart fetch failed",e)})}}function pass(){!config||!config.enabled||writing||fetchCart().then(function(cart){return reconcile(cart).then(function(result){result.wrote&&broadcast(result.cart),render(result.cart)})}).catch(function(e){console.error("[minicart-gwp] pass failed",e)})}function attemptInjection(){!config||!config.enabled||(setTimeout(pass,120),setTimeout(pass,500))}function observeMinicart(){var container=document.querySelector(".minicart__container, #minicart");if(!container){setTimeout(observeMinicart,500);return}var observer=new MutationObserver(function(mutations){mutations.forEach(function(m){if(m.attributeName==="class"){var c=m.target;(c.classList.contains("minicart__container--open")||c.classList.contains("is-open"))&&attemptInjection()}})});observer.observe(container,{attributes:!0,attributeFilter:["class"]}),attemptInjection()}function init(){config=getConfig(),!(!config||!config.enabled)&&(claimKey=config.claim_attribute||"_gwp_claim",config.copy=config.copy||{},config.copy.removed_notice||(config.copy.removed_notice="Your free sampler was removed \u2014 the cart no longer qualifies."),(config.gifts||[]).forEach(function(g){giftMeta[String(g.id)]=g}),ensureStyles(),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",observeMinicart):observeMinicart(),document.addEventListener("cart:updated",attemptInjection),document.addEventListener("cart:refresh",attemptInjection),document.addEventListener("minicart:opened",attemptInjection),document.addEventListener("minicart:updated",attemptInjection))}init()})();
2//# sourceMappingURL=/cdn/shop/t/243/assets/minicart-gwp-picker.js.map?v=13479395955841764871790011661

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.