1(function(){"use strict";var DOG_TABLE=[{max:10,avg:5,strong:7},{max:20,avg:10,strong:14},{max:30,avg:15,strong:21},{max:40,avg:20,strong:28},{max:50,avg:25,strong:35},{max:60,avg:30,strong:42},{max:70,avg:35,strong:49},{max:80,avg:40,strong:56}],CAT_TABLE=[{max:10,avg:4.2,strong:8.4},{max:25,avg:8.4,strong:12.6},{max:40,avg:12.6,strong:16.8},{max:55,avg:16.8,strong:21}];function lookupDose(animal,lbs){for(var table=animal==="cat"?CAT_TABLE:DOG_TABLE,i=0;i<table.length;i++)if(lbs<=table[i].max)return table[i];return null}function detectServing(){var lede=document.querySelector(".product__info-container .product__text"),text=lede?lede.textContent:"",m=text.match(/([\d.]+)\s*mg[^.]{0,80}?per\s+(serving|dropper|treat|chew)/i);if(m||(m=text.match(/each\s+(treat|chew)\s+delivers\s+([\d.]+)\s*mg/i)),!m)return null;var mg=parseFloat(m[2]&&/^[\d.]+$/.test(m[2])&&!/^[\d.]+$/.test(m[1])?m[2]:m[1]),wordMatch=m[0].match(/serving|dropper|treat|chew/i),unitWord=wordMatch?wordMatch[0].toLowerCase():"serving";return!mg||mg<=0?null:{mg:mg,unit:unitWord}}function formatUnits(count,unit){var quarters=Math.max(1,Math.round(count*4)),whole=Math.floor(quarters/4),frac={1:"\xBC",2:"\xBD",3:"\xBE"}[quarters%4]||"",label=(whole>0?whole:"")+frac;label||(label=String(whole));var plural=quarters>4?unit+"s":unit;return"\u2248 "+label+" "+plural}function initDosing(){var root=document.querySelector("[data-product-dosing]");if(!root)return;var animal=root.getAttribute("data-animal"),slider=root.querySelector("[data-dose-slider]"),primaryOut=root.querySelector("[data-dose-primary]"),chipOut=root.querySelector("[data-dose-chip]"),weightOut=root.querySelector("[data-dose-weight]"),noteOut=root.querySelector("[data-dose-note]"),fill=root.querySelector("[data-dose-fill]"),serving=detectServing();function render(lbs){weightOut&&(weightOut.textContent=lbs+" lb");var dose=lookupDose(animal,lbs);if(!dose){primaryOut&&(primaryOut.textContent="\u2014"),chipOut&&(chipOut.hidden=!0),noteOut&&(noteOut.textContent="For pets over the chart range, ask your vet for guidance.");return}var mgText=(dose.avg%1===0?dose.avg:dose.avg.toFixed(1))+" mg CBD";if(serving?(primaryOut&&(primaryOut.textContent=formatUnits(dose.avg/serving.mg,serving.unit)),chipOut&&(chipOut.textContent="\u2248 "+mgText+" per day",chipOut.hidden=!1)):(primaryOut&&(primaryOut.textContent=mgText),chipOut&&(chipOut.textContent="per day \xB7 see the serving guide on your label",chipOut.hidden=!1)),noteOut&&(noteOut.textContent="Up to "+dose.strong+" mg for extra support \u2014 start low and adjust gradually."),fill&&serving){var frac=Math.min(1,dose.avg/serving.mg);fill.setAttribute("height",Math.round(34*frac)),fill.setAttribute("y",24+Math.round(34*(1-frac)))}}slider&&(slider.addEventListener("input",function(){render(parseInt(slider.value,10)||1)}),render(parseInt(slider.value,10)||1)),root.querySelectorAll("[data-horse-type]").forEach(function(btn){btn.addEventListener("click",function(){root.querySelectorAll("[data-horse-type]").forEach(function(b){b.classList.remove("is-active"),b.setAttribute("aria-pressed","false")}),btn.classList.add("is-active"),btn.setAttribute("aria-pressed","true");var serving_=btn.getAttribute("data-horse-type")==="adult"?"1 serving (30g)":"\xBD serving (15g)";primaryOut&&(primaryOut.textContent=serving_),chipOut&&(chipOut.textContent="per day, mixed into feed",chipOut.hidden=!1),noteOut&&(noteOut.textContent="Start low and adjust gradually.")})});var activePill=root.querySelector("[data-horse-type].is-active");activePill&&activePill.click()}function parseMoney(text){var m=(text||"").match(/\$\s?(\d+(?:[.,]\d{1,2})?)/);return m?parseFloat(m[1].replace(",","")):null}function parseLastMoney(text){var m=(text||"").match(/\$\s?(\d+(?:[.,]\d{1,2})?)/g);return m?parseFloat(m[m.length-1].replace(/[$,\s]/g,"")):null}function stayAiSelectedPrice(){try{var extended=document.querySelector(".stayai-purchase-label.is-selected");if(extended)return parseLastMoney(extended.textContent);var container=document.querySelector('[class*="rtx_container"]');if(!container)return null;var options=container.querySelectorAll('[class*="rtx_option"], [class*="rtx_button"]'),selected=null;if(options.forEach(function(el){if(!selected){var cls=el.className||"",checked=el.getAttribute("aria-checked")==="true"||el.querySelector("input:checked");(/selected|active|checked/i.test(cls)||checked)&&(selected=el)}}),!selected)return null;var sub=selected.querySelector('[class*="subheading"]')||selected;return parseMoney(sub.textContent)}catch(e){return null}}function initStickyBar(){var bar=document.querySelector("[data-product-sticky-bar]");
1if(!bar)return;var sectionId=bar.getAttribute("data-section"),realButton=document.getElementById("ProductSubmitButton-"+sectionId);if(!realButton)return;var cta=bar.querySelector("[data-sticky-atc]"),labelOut=bar.querySelector("[data-sticky-label]"),totalOut=bar.querySelector("[data-sticky-total]"),fallbackPrice=parseFloat(bar.getAttribute("data-fallback-price")||"")||null;function qty(){var input=document.querySelector("#Quantity-"+sectionId),v=input?parseInt(input.value,10):1;return v>0?v:1}var mainTotalOut=document.querySelector("[data-atc-total]");function refreshTotal(){var unit=stayAiSelectedPrice();if(unit==null&&(unit=fallbackPrice),unit==null){totalOut&&(totalOut.textContent=""),mainTotalOut&&(mainTotalOut.textContent="");return}var total=unit*qty(),money="$"+(total%1===0?total:total.toFixed(2));totalOut&&(totalOut.textContent="\xB7 "+money),mainTotalOut&&!realButton.disabled&&(mainTotalOut.textContent="\u2014 "+money)}function refreshDisabled(){var disabled=realButton.disabled||realButton.getAttribute("aria-disabled")==="true";cta.disabled=disabled,labelOut&&(labelOut.textContent=disabled?realButton.textContent.trim():"Add to cart"),disabled?(totalOut&&(totalOut.textContent=""),mainTotalOut&&(mainTotalOut.textContent="")):refreshTotal()}cta.addEventListener("click",function(){realButton.click()}),document.addEventListener("change",refreshTotal),document.addEventListener("click",function(){window.requestAnimationFrame(refreshTotal)});var observer=new IntersectionObserver(function(entries){var pastCta=!entries[0].isIntersecting&&entries[0].boundingClientRect.top<0;bar.classList.toggle("is-visible",pastCta),bar.setAttribute("aria-hidden",pastCta?"false":"true"),pastCta&&refreshDisabled()},{rootMargin:"0px"});observer.observe(realButton),refreshDisabled()}function initSpecLine(){var line=document.querySelector("[data-spec-line]");if(line){var serving=detectServing();if(serving){var out=line.querySelector("[data-spec-serving]");if(out){var prefix=line.getAttribute("data-potency")?"\xB7 ":"";out.textContent=prefix+serving.mg+" mg per "+serving.unit,out.hidden=!1,line.hidden=!1}}}}function initAll(){initDosing(),initStickyBar(),initSpecLine()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initAll):initAll()})(); 2//# sourceMappingURL=/cdn/shop/t/10/assets/product-dosing-sticky.js.map?v=46969492583294202891781210344
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.