PageSourceSearch

https://chenegear.com/cdn/shop/t/125/assets/pro-program-pricing.js?v=75746862817074941141788985966

js chenegear.com collected 2026-10-04 20:31:36 UTC 23,521 bytes, 11 lines download raw bytes

1(function(){"use strict";const isFirstLoad=!window.wickProProgram||!window.wickProProgram.initialized;window.wickProProgram||(window.wickProProgram={}),Object.assign(window.wickProProgram,{initialized:!0,customerData:window.wickProProgram.customerData||{isProCustomer:!1,proLevel:null,proExpiration:null,isProActive:!1},proLevels:window.wickProProgram.proLevels||[],productAdjustments:window.wickProProgram.productAdjustments||{},originalPrices:window.wickProProgram.originalPrices||new Map,config:{version:"1.0.0",debug:!1,priceSelectors:{current:"sale-price, .sale-price, .price, .product-price, [data-price], .price-item, .money, .current-price",compare:"compare-at-price, .compare-at-price, .original-price, .was-price, .line-through",container:'price-list, .price-list, [data-block-type="price"], .product-price-container, .price-container',productCard:"product-card, .product-card, .card-wrapper, .product-item, .grid-product, .product-grid-item, [data-product]",productCardPrice:"product-card sale-price, product-card .price, .product-card .price, .card-wrapper .price, .product-item .price, .grid-product .price"},classes:{proPrice:"pro-price",proBadge:"pro-badge",originalPrice:"price--original",processed:"pro-processed"}},badgeSettings:window.wickProProgram.badgeSettings||{enabled:!0,showLevel:!0,showExpiration:!0,backgroundColor:"#2c5aa0",textColor:"#ffffff",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",position:"after-price",text:"PRO PRICING",customText:""},utils:{parsePrice:function(priceText){if(!priceText)return 0;const cleaned=priceText.toString().replace(/[^0-9.]/g,"");return parseFloat(cleaned)||0},formatPrice:function(price){try{const currency=window.Shopify?.currency?.active||"USD";return new Intl.NumberFormat("en-US",{style:"currency",currency}).format(price/100)}catch{return"$"+(price/100).toFixed(2)}},isExpired:function(dateString){if(!dateString)return!1;try{const now=Math.floor(Date.now()/1e3);return Math.floor(new Date(dateString).getTime()/1e3)<now}catch(error){return console.error("Error parsing date:",error),!1}},log:function(...args){window.wickProProgram.config.debug},normalizeLevelName:function(levelName){return(levelName||"").toLowerCase().trim()},getPriceElementId:function(element,prefix){const isProductPage=window.location.pathname.includes("/products/")||document.body.classList.contains("template-product");let priceScope=document;isProductPage&&(priceScope=document.querySelector(".product-info")||document.querySelector('[data-block-type="price"]')||document.querySelector(".product-form")||document.querySelector(".product-details")||document);const allElements=Array.from(priceScope.querySelectorAll(window.wickProProgram.config.priceSelectors.current));return`${prefix}-${allElements.indexOf(element)}`}}});const CONFIG=window.wickProProgram.config,utils=window.wickProProgram.utils,badgeSettings=window.wickProProgram.badgeSettings;let customerData=window.wickProProgram.customerData,originalPrices=window.wickProProgram.originalPrices,proLevels=window.wickProProgram.proLevels,productAdjustments=window.wickProProgram.productAdjustments;function loadBadgeSettings(){window.wickProProgram?.badgeSettingsFromTheme&&Object.assign(badgeSettings,window.wickProProgram.badgeSettingsFromTheme)}function createProBadge(){const badge=document.createElement("div");badge.className=CONFIG.classes.proBadge;const styles={display:"inline-block",backgroundColor:badgeSettings.backgroundColor,color:badgeSettings.textColor,padding:badgeSettings.padding,borderRadius:badgeSettings.borderRadius,fontSize:badgeSettings.fontSize,fontWeight:"bold",margin:badgeSettings.margin,letterSpacing:badgeSettings.letterSpacing};Object.assign(badge.style,styles);let badgeText=badgeSettings.customText||badgeSettings.text;badgeSettings.showLevel&&customerData.proLevel&&(badgeText=badgeText.replace(/PRO/g,`PRO ${customerData.proLevel.toUpperCase()}`));let badgeContent=`<span>${badgeText}</span>`;if(badgeSettings.showExpiration&&customerData.proExpiration){const expirationDate=new Date(customerData.proExpiration);badgeContent+=`
2        <span style="
3          display: block;
4          font-size: ${parseInt(badgeSettings.fontSize)-2}px;
5          opacity: 0.8;
6          margin-top: 2px;
7        ">
8          Valid until ${expirationDate.toLocaleDateString()}
9        </span>
10      `}return badge.innerHTML=badgeContent,badge}function processCollectionPage(){document.querySelectorAll(CONFIG.priceSelectors.productCard).forEac
10h((card,index)=>{if(card.classList.contains(CONFIG.classes.processed))return;let productId=card.dataset.productId||card.dataset.product;if(!productId){const productLink=card.querySelector('a[href*="/products/"]');if(productLink){const handleMatch=productLink.getAttribute("href").match(/\/products\/([^/?]+)/);if(handleMatch){const handle=handleMatch[1];if(window.wickProProgram?.collectionProductData){for(const[id,data]of Object.entries(window.wickProProgram.collectionProductData))if(data.handle===handle){productId=id;break}}}}}productId&&(card.dataset.wickProductId=productId);const priceElements=card.querySelectorAll(CONFIG.priceSelectors.current),comparePriceElements=card.querySelectorAll(CONFIG.priceSelectors.compare);storeOriginalPricesForCard(card,priceElements,comparePriceElements),updateProPricingForCard(card,priceElements,comparePriceElements,productId),addProBadgeToCard(card,productId),card.classList.add(CONFIG.classes.processed)})}function storeOriginalPricesForCard(card,priceElements,comparePriceElements){priceElements.forEach((element,index)=>{let price=parseFloat(element.dataset.originalPrice);if(!price||isNaN(price)){let priceText=element.textContent.trim();priceText=priceText.replace(/^(Sale price|Regular price)\s*/i,""),price=utils.parsePrice(priceText)}if(price>0){const elementId=`card-${Array.from(document.querySelectorAll(CONFIG.priceSelectors.productCard)).indexOf(card)}-current-${index}`;originalPrices.set(elementId,price),element.dataset.originalPrice=price,element.dataset.priceId=elementId}}),comparePriceElements.forEach((element,index)=>{let price=parseFloat(element.dataset.originalComparePrice);if(!price||isNaN(price)){let priceText=element.textContent.trim();priceText=priceText.replace(/^(Regular price|Compare at)\s*/i,"");const parsedPrice=utils.parsePrice(priceText);parsedPrice>0&&(price=parsedPrice)}if(price>0){const elementId=`card-${Array.from(document.querySelectorAll(CONFIG.priceSelectors.productCard)).indexOf(card)}-compare-${index}`;originalPrices.set(elementId,price),element.dataset.originalComparePrice=price,element.dataset.priceId=elementId}})}function updateProPricingForCard(card,priceElements,comparePriceElements,productId=null){priceElements.forEach((element,index)=>{const elementId=element.dataset.priceId,originalPrice=parseFloat(element.dataset.originalPrice)||originalPrices.get(elementId),compareElement=comparePriceElements[index];let originalComparePrice=originalPrice;if(compareElement){const compareElementId=compareElement.dataset.priceId;originalComparePrice=parseFloat(compareElement.dataset.originalComparePrice)||originalPrices.get(compareElementId)||originalPrice}if(originalPrice>0){const result=calculateProDiscount(originalPrice,originalComparePrice,productId),isOnSale=result.discount>0||originalComparePrice>originalPrice,finalDisplayPrice=result.discount>0?result.discountedPrice:originalPrice,srText=element.querySelector(".sr-only")?.textContent||"",newPriceText=utils.formatPrice(finalDisplayPrice*100);if(srText?element.innerHTML=`<span class="sr-only">${srText}</span>${newPriceText}`:element.textContent=newPriceText,isOnSale?(element.classList.add("text-on-sale"),result.discount>0&&element.classList.add(CONFIG.classes.proPrice)):(element.classList.remove("text-on-sale"),element.classList.remove(CONFIG.classes.proPrice)),compareElement)if(isOnSale){compareElement.removeAttribute("hidden");let compareDisplayPrice=originalComparePrice;result.discount>0&&(compareDisplayPrice=Math.max(originalPrice,originalComparePrice));const compareSrText=compareElement.querySelector(".sr-only")?.textContent||"",comparePriceText=utils.formatPrice(compareDisplayPrice*100);compareSrText?compareElement.innerHTML=`<span class="sr-only">${compareSrText}</span>${comparePriceText}`:compareElement.textContent=comparePriceText}else compareElement.setAttribute("hidden","");result.discount>0||originalComparePrice>originalPrice}})}function addProBadgeToCard(card,productId=null){if(!badgeSettings.enabled||!customerData.isProActive)return;if(!isCustomerGettingDiscountForCard(card,productId)){console.log("No discount for this card, not showing badge");return}if(card.querySelector(`.${CONFIG.classes.proBadge}`))return;let priceContainer=card.querySelector("price-list")||card.querySelector(".price-list")||card.querySelector(CONFIG.priceSelectors.container)||card.querySelector(".price")||card.querySelector(".product-price")||card.querySelector("[data-price]");
10if(!priceContainer){const firstPrice=card.querySelector("sale-price")||card.querySelector(CONFIG.priceSelectors.current);firstPrice&&(priceContainer=firstPrice.parentElement)}if(priceContainer){const badge=createProBadge();if(badgeSettings.position==="before-price")priceContainer.insertBefore(badge,priceContainer.firstChild);else if(badgeSettings.position==="above-product"){const productTitle=card.querySelector(".product-title, .card-title, h3, h2, .h5")||card.querySelector("img");productTitle?productTitle.parentElement.insertBefore(badge,productTitle):priceContainer.appendChild(badge)}else priceContainer.appendChild(badge)}}function isCustomerGettingDiscount(){if(!customerData.isProActive)return!1;const isProductPage=window.location.pathname.includes("/products/")||document.body.classList.contains("template-product");let priceScope=document;isProductPage&&(priceScope=document.querySelector(".product-info")||document.querySelector('[data-block-type="price"]')||document.querySelector(".product-form")||document.querySelector(".product-details")||document);const firstPriceElement=priceScope.querySelector(CONFIG.priceSelectors.current);if(!firstPriceElement)return!1;const originalPrice=parseFloat(firstPriceElement.dataset.originalPrice)||0;if(originalPrice<=0)return!1;const compareElement=priceScope.querySelectorAll(CONFIG.priceSelectors.compare)[0];let originalComparePrice=originalPrice;return compareElement&&(originalComparePrice=parseFloat(compareElement.dataset.originalComparePrice)||originalPrice),calculateProDiscount(originalPrice,originalComparePrice).discount>0}function isCustomerGettingDiscountForCard(card,productId=null){if(!customerData.isProActive)return!1;const firstPriceElement=card.querySelector(CONFIG.priceSelectors.current);if(!firstPriceElement)return!1;const originalPrice=parseFloat(firstPriceElement.dataset.originalPrice)||0;if(originalPrice<=0)return!1;const compareElement=card.querySelectorAll(CONFIG.priceSelectors.compare)[0];let originalComparePrice=originalPrice;return compareElement&&(originalComparePrice=parseFloat(compareElement.dataset.originalComparePrice)||originalPrice),calculateProDiscount(originalPrice,originalComparePrice,productId).discount>0}async function init(){try{if(await loadCustomerData(),await loadProLevelsData(),await loadProductAdjustments(),loadBadgeSettings(),!customerData.isProCustomer||!customerData.isProActive){customerData.isProCustomer;return}document.body.classList.contains("template-collection")||document.querySelector(".collection-products")||document.querySelector(".product-grid")||window.location.pathname.includes("/collections/")?processCollectionPage():(storeOriginalPrices(),updateProPricing(),addProBadge())}catch(error){console.error("Error initializing Pro pricing:",error)}}async function loadCustomerData(){try{if(window.wickProProgram?.customerDataFromTheme){const themeData=window.wickProProgram.customerDataFromTheme,isProActive=themeData.isProCustomer&&!utils.isExpired(themeData.proExpiration);customerData.isProCustomer=themeData.isProCustomer,customerData.proLevel=themeData.proLevel,customerData.proExpiration=themeData.proExpiration,customerData.isProActive=isProActive;return}}catch(error){console.error("Error loading customer data:",error)}}async function loadProLevelsData(){try{if(window.wickProProgram?.proLevelsFromTheme){typeof window.wickProProgram.proLevelsFromTheme=="string"?proLevels=JSON.parse(window.wickProProgram.proLevelsFromTheme):proLevels=window.wickProProgram.proLevelsFromTheme,window.wickProProgram.proLevels=proLevels;return}}catch(error){console.error("Error loading pro levels:",error),proLevels=[]}}async function loadProductAdjustments(){try{window.wickProProgram?.productAdjustmentsFromTheme?(typeof window.wickProProgram.productAdjustmentsFromTheme=="string"?productAdjustments=JSON.parse(window.wickProProgram.productAdjustmentsFromTheme):productAdjustments=window.wickProProgram.productAdjustmentsFromTheme,window.wickProProgram.productAdjustments=productAdjustments):productAdjustments={},window.wickProProgram?.collectionProductAdjustments&&(window.wickProProgram.collectionProductAdjustmentsMap=window.wickProProgram.collectionProductAdjustments)}
10catch(error){console.error("Error loading product adjustments:",error),productAdjustments={}}}function storeOriginalPrices(){const isProductPage=window.location.pathname.includes("/products/")||document.body.classList.contains("template-product");let priceScope=document;isProductPage&&(priceScope=document.querySelector(".product-info")),priceScope.querySelectorAll(CONFIG.priceSelectors.current).forEach((element,index)=>{let price=parseFloat(element.dataset.originalPrice);if(!price||isNaN(price)){let priceText=element.textContent.trim();priceText=priceText.replace(/^(Sale price|Regular price)\s*/i,""),price=utils.parsePrice(priceText)}if(price>0){const elementId=utils.getPriceElementId(element,"current");originalPrices.set(elementId,price),element.dataset.originalPrice=price}}),priceScope.querySelectorAll(CONFIG.priceSelectors.compare).forEach((element,index)=>{let price=parseFloat(element.dataset.originalComparePrice);if(!price||isNaN(price)){if(window.wickProProgram?.productData?.variants){const currentVariantId=getCurrentVariantId();if(currentVariantId){const variant=window.wickProProgram.productData.variants.find(v=>v.id==currentVariantId);variant&&variant.compare_at_price>0&&(price=variant.compare_at_price/100)}}if(!price||isNaN(price)){let priceText=element.textContent.trim();priceText=priceText.replace(/^(Regular price|Compare at)\s*/i,"");const parsedPrice=utils.parsePrice(priceText);parsedPrice>0&&(price=parsedPrice)}}if(price>0){const elementId=utils.getPriceElementId(element,"compare");originalPrices.set(elementId,price),element.dataset.originalComparePrice=price}})}function getCurrentVariantId(){const variantInput=document.querySelector('[name="id"]');return variantInput?variantInput.value:window.wickProProgram?.productData?.variants?.length>0?window.wickProProgram.productData.variants[0].id:null}function calculateProDiscount(basePrice,compareAtPrice,productId=null){if(!customerData.isProCustomer||!customerData.isProActive||!customerData.proLevel)return{discountedPrice:basePrice,discount:0};const price=parseFloat(basePrice)||0,compareAt=parseFloat(compareAtPrice)||price,normalizedProLevel=utils.normalizeLevelName(customerData.proLevel);let proDiscount=0;for(const level of proLevels)if(utils.normalizeLevelName(level.name)===normalizedProLevel){proDiscount=level.discount;break}let adjustmentsToUse=productAdjustments;if(productId&&window.wickProProgram?.collectionProductAdjustmentsMap){const productAdjustmentsData=window.wickProProgram.collectionProductAdjustmentsMap[productId];productAdjustmentsData&&(adjustmentsToUse=typeof productAdjustmentsData=="string"?JSON.parse(productAdjustmentsData):productAdjustmentsData)}if(adjustmentsToUse){let levelAdjustment=null;for(const[key,value]of Object.entries(adjustmentsToUse))if(utils.normalizeLevelName(key)===normalizedProLevel){levelAdjustment=value;break}levelAdjustment&&(levelAdjustment.adjustment==="deny"?proDiscount=0:levelAdjustment.adjustment==="add"?proDiscount=proDiscount+levelAdjustment.value:levelAdjustment.adjustment==="subtract"&&(proDiscount=Math.max(0,proDiscount-levelAdjustment.value)))}if(proDiscount<=0)return{discountedPrice:price,discount:0};const priceForDiscount=compareAt,discountAmount=priceForDiscount*proDiscount/100,discountedPrice=priceForDiscount-discountAmount;return{discountedPrice:discountedPrice<price?discountedPrice:price,discount:proDiscount,originalPrice:price,compareAtPrice:compareAt}}function updateProPricing(){const isProductPage=window.location.pathname.includes("/products/")||document.body.classList.contains("template-product");let priceScope=document;isProductPage&&(priceScope=document.querySelector(".product-info")||document.querySelector('[data-block-type="price"]')||document.querySelector(".product-form")||document.querySelector(".product-details")||document),priceScope.querySelectorAll(CONFIG.priceSelectors.current).forEach((element,index)=>{const elementId=utils.getPriceElementId(element,"current"),originalPrice=parseFloat(element.dataset.originalPrice)||originalPrices.get(elementId),compareElement=priceScope.querySelectorAll(CONFIG.priceSelectors.compare)[index];let originalComparePrice=originalPrice;if(compareElement){const compareElementId=utils.getPriceElementId(compareElement,"compare");originalComparePrice=parseFloat(compareElement.dataset.originalComparePrice)||originalPrices.get(compareElementId)||originalPrice}if(console.log(`Processing element ${index}: original=${originalPrice}, compare=${originalComparePrice}`),originalPrice>0){const result=calculateProDiscount(originalPrice,originalComparePrice),isOnSale=result.discount>0||originalComparePrice>originalPrice,finalDisplayPrice=result.discount>0?result.discountedPrice:originalPrice,srText=element.querySelector(".sr-only")?.textContent||"",newPriceText=utils.formatPrice(finalDisplayPrice*100);if(srText?element.innerHTML=`<span class="sr-only">${srText}</span>${newPriceText}`:element.textContent=newPriceText,isOnSale?(element.classList.add("text-on-sale"),result.discount>0&&element.classList.add(CONFIG.classes.proPrice)):(element.classList.remove("text-on-sale"),element.classList.remove(CONFIG.classes.proPrice)),compareElement)if(isOnSale){compareElement.removeAttribute("hidden");let compareDisplayPrice=originalComparePrice;result.discount>0&&(compareDisplayPrice=Math.max(originalPrice,originalComparePrice));const compareSrText=compareElement.querySelector(".sr-only")?.textContent||"",comparePriceText=utils.formatPrice(compareDisplayPrice*100);compareSrText?compareElement.innerHTML=`<span class="sr-only">${compareSrText}</span>${comparePriceText}`:compareElement.textContent=comparePriceText}else compareElement.setAttribute("hidden","");result.discount>0||originalComparePrice>originalPrice}})}function addProBadge(){if(!badgeSettings.enabled||!customerData.isProActive)return;if(!isCustomerGettingDiscount()){console.log("No discount being applied, not showing badge");return}if(document.querySelector(`.${CONFIG.classes.proBadge}`))return;let priceContainer=document.querySelector('[data-block-type="price"]')||document.querySelector("price-list")||document.querySelector(".price-list")||document.querySelector(CONFIG.priceSelectors.container)||document.querySelector(".price")||document.querySelector(".product-price")||document.querySelector("[data-price]");if(priceContainer&&priceContainer.getAttribute("data-block-type")==="price"){const priceListInside=priceContainer.querySelector("price-list");priceListInside&&(priceContainer=priceListInside)}
10if(!priceContainer){const firstPrice=document.querySelector("sale-price")||document.querySelector(CONFIG.priceSelectors.current);firstPrice&&(priceContainer=firstPrice.parentElement)}if(priceContainer){const badge=createProBadge();if(badgeSettings.position==="before-price")priceContainer.insertBefore(badge,priceContainer.firstChild);else if(badgeSettings.position==="above-product"){const productTitle=document.querySelector(".product-title, .product__title, h1, .h1, .h2, .h3");productTitle?productTitle.parentElement.insertBefore(badge,productTitle):priceContainer.appendChild(badge)}else priceContainer.appendChild(badge)}}function handleVariantChange(event){if(event&&window.wickProProgram?.productData?.variants){const selectedVariant=window.wickProProgram.productData.variants.find(v=>v.id==event.detail.variant.id);selectedVariant&&(document.querySelectorAll(CONFIG.priceSelectors.current).forEach(element=>{element.dataset.originalPrice=selectedVariant.price/100,selectedVariant.compare_at_price>0&&(element.dataset.originalComparePrice=selectedVariant.compare_at_price/100)}),document.querySelectorAll(CONFIG.priceSelectors.compare).forEach(element=>{selectedVariant.compare_at_price>0&&(element.dataset.originalComparePrice=selectedVariant.compare_at_price/100)}))}setTimeout(()=>{customerData.isProActive&&(storeOriginalPrices(),updateProPricing())},200)}function refreshPricing(){if(!customerData.isProActive)return;document.querySelectorAll(`.${CONFIG.classes.processed}`).forEach(element=>{element.classList.remove(CONFIG.classes.processed)}),document.body.classList.contains("template-collection")||document.querySelector(".collection-products")||document.querySelector(".product-grid")||window.location.pathname.includes("/collections/")?processCollectionPage():(storeOriginalPrices(),updateProPricing(),addProBadge())}window.wickProProgram.init=init,window.wickProProgram.loadCustomerData=loadCustomerData,window.wickProProgram.loadProLevelsData=loadProLevelsData,window.wickProProgram.loadProductAdjustments=loadProductAdjustments,window.wickProProgram.loadBadgeSettings=loadBadgeSettings,window.wickProProgram.updateProPricing=updateProPricing,window.wickProProgram.calculateProDiscount=calculateProDiscount,window.wickProProgram.addProBadge=addProBadge,window.wickProProgram.addProBadgeToCard=addProBadgeToCard,window.wickProProgram.createProBadge=createProBadge,window.wickProProgram.isCustomerGettingDiscount=isCustomerGettingDiscount,window.wickProProgram.isCustomerGettingDiscountForCard=isCustomerGettingDiscountForCard,window.wickProProgram.handleVariantChange=handleVariantChange,window.wickProProgram.storeOriginalPrices=storeOriginalPrices,window.wickProProgram.storeOriginalPricesForCard=storeOriginalPricesForCard,window.wickProProgram.updateProPricingForCard=updateProPricingForCard,window.wickProProgram.processCollectionPage=processCollectionPage,window.wickProProgram.getCurrentVariantId=getCurrentVariantId,window.wickProProgram.refreshPricing=refreshPricing;function initWhenReady(){init()}isFirstLoad&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initWhenReady):setTimeout(initWhenReady,100),window.MutationObserver&&new MutationObserver(mutations=>{let shouldRefresh=!1;mutations.forEach(mutation=>{if(mutation.type==="childList"&&mutation.addedNodes.length>0){for(let node of mutation.addedNodes)if(node.nodeType===1&&node.matches&&(node.matches(CONFIG.priceSelectors.productCard)||node.querySelector&&node.querySelector(CONFIG.priceSelectors.productCard)||node.matches(CONFIG.priceSelectors.current)||node.querySelector&&node.querySelector(CONFIG.priceSelectors.current))){shouldRefresh=!0;break}}}),shouldRefresh&&setTimeout(refreshPricing,300)}).observe(document.body,{childList:!0,subtree:!0}))})();
11//# sourceMappingURL=/cdn/shop/t/125/assets/pro-program-pricing.js.map?v=75746862817074941141788985966

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.