PageSourceSearch

https://editorafundamento.com.br/cdn/shop/t/6/assets/product-card-swatch.js?v=128047665908644585651775331680

js editorafundamento.com.br collected 2026-10-02 05:42:35 UTC 6,256 bytes, 1 lines download raw bytes

1if(!customElements.get("pcard-swatch")){class t extends HTMLElement{constructor(){super(),this.selectors={container:"[data-pcard-variant-picker]",optionNodes:[".m-product-option--node__label"],featuredImage:".m-product-card__main-image",pcard:".m-product-card",variantDropdown:".m-product-option--dropdown-select",priceWrapper:".m-price",salePrice:".m-price-item--sale",compareAtPrice:[".m-price-item--regular"],unitPrice:".m-price__unit",soldOutBadge:".m-product-tag--soldout"},this.container=this.closest(this.selectors.container),this.pcard=this.closest(this.selectors.pcard),this.variantIdNode=this.pcard&&this.pcard.querySelector('[name="id"]'),this.featuredImage=this.pcard&&this.pcard.querySelector(this.selectors.featuredImage),this.keepFeaturedImage="true"===this.dataset.keepFeaturedImage,this.domNodes=queryDomNodes(this.selectors,this.pcard),this.initializeData()}async initializeData(){this.variantData=this.fetchVariantData(),this.productHandle=this.container.dataset.productHandle,this.productData=await this.fetchProductJson(),this.activeOptionNodeByPosition={},this.hideUnavailableProductOptions=MinimogSettings.hide_unavailable_product_options;const{variantIdNode:t,productData:e,productData:{variants:a}={}}=this;if(e){let i=t&&Number(t.value);i||(i=e.selected_or_first_available_variant&&e.selected_or_first_available_variant.id);const s=a.find(t=>t.id===i)||a[0];this.productData.initialVariant=s,!this.productData.selected_variant&&t&&t.dataset.selectedVariant&&(this.productData.selected_variant=a.find(e=>e.id===Number(t.dataset.selectedVariant))),this.keepFeaturedImage||(this.updateOptionsByVariant(s),this.updateProductImage(s),window.MinimogEvents.subscribe("m:image-loaded",()=>{this.updateProductImage(s)}))}this.domNodes.optionNodes&&this.domNodes.optionNodes.forEach(t=>t.addEventListener("click",this.handleVariantSelection.bind(this))),this.domNodes.variantDropdown&&this.domNodes.variantDropdown.addEventListener("change",this.handleVariantSelection.bind(this))}fetchVariantData(){if(!this.variantData){var t=this.container&&this.container.querySelector('[type="application/json"]');this.variantData=JSON.parse(t?t.textContent:"{}")}return this.variantData}fetchProductJson(){var t=`${window.MinimogSettings.routes.root}/products/${this.productHandle}.js`;return t=t.replace("//","/"),fetch(t).then(function(t){return t.json()})}toggleOptionNodeActive(t,e){if(t)if(e){const{optionPosition:e,value:a}=t.dataset;switch(this.activeOptionNodeByPosition[e]=t,t.tagName){case"INPUT":t.checked=!0,t.dataset.selected="true";break;case"OPTION":t.dataset.selected="true";const e=t.closest("select");e&&(e.value=t.value);break;case"LABEL":t.dataset.selected="true";break;default:t.classList.contains("m-product-quickview-button")}this.updateSoldOutBadge(this.getVariantsByOptionValue(a))}else{["default","image","color"].includes(t.dataset.optionType)||(t.style.border=""),t.checked=!1,delete t.dataset.selected;const e=t.closest("select");e&&(e.value="")}}updateOptionsByVariant(t){Object.values(this.activeOptionNodeByPosition).forEach(t=>this.toggleOptionNodeActive(t,!1));const{optionNodes:e}=this.domNodes,{options:a=[]}=t||{};a.forEach((t,a)=>{const i=a+1;e.forEach(e=>{const a=Number(e.dataset.optionPosition),s=e.dataset.value;a===i&&t===s&&this.toggleOptionNodeActive(e,!0)})}),this.updatePrice(t)}getVariantFromActiveOptions=()=>{const{productData:t,productData:{initialVariant:e},activeOptionNodeByPosition:a}=this,i={1:e.option1,2:e.option2,3:e.option3};Object.values(a).forEach(t=>{const{optionPosition:e,value:a}=t.dataset;i[e]=a});var s=Object.values(i).filter(Boolean),o=getVariantFromOptionArray(t,s);return!o&&this.hideUnavailableProductOptions&&(s.pop(),(o=getVariantFromOptionArray(t,s))||(s.pop(),o=getVariantFromOptionArray(t,s))),this.currentVariant=o,o};handleVariantSelection(t){var e,a=t.target;if(a.classList.contains("combined-variant")){const a=Number(t.target.value);e=this.productData&&this.productData.variants&&this.productData.variants.find(t=>t.id===a)}else{"SELECT"===a.tagName&&(a=a.querySelectorAll("option")[a.selectedIndex]),a.classList.contains("m-product-option--node__label")||(a=a.closest(".m-product-option--node__label"));const{optionPosition:t}=a.dataset,i=this.activeOptionNodeByPosition[t];this.toggleOptionNodeActive(i,!1),this.toggleOptionNodeActive(a,!0),e=this.getVariantFromActiveOptions()}const{variantIdNode:i}=this;i&&(i.setAttribute("value",String(e.id)),i.value=String(e.id)),this.updateBySelectedVariant(e)}updateBySelectedVariant(t){t&&(this.updateProductImage(t),this.updatePrice(t))}updateProductCardSoldOutBadge(t){this.domNodes.soldOutBadge&&(this.domNodes.soldOutBadge.style.display=t.available?"n
1one":"flex")}updateSoldOutBadge(t){const e=!t.some(t=>t.available);this.domNodes.soldOutBadge&&(this.domNodes.soldOutBadge.style.display=e?"flex":"none")}getVariantsByOptionValue=t=>{const{productData:{variants:e}={}}=this;return e.filter(e=>e.options.includes(t))};updateProductImage(t){const e=t&&t.featured_image&&t.featured_image.src,{featuredImage:a}=this,i=a&&a.querySelector("img");i&&e&&(i.src=`${e}&width=533`,i.removeAttribute("srcset"))}updatePrice(t){if(MinimogSettings.pcard_show_lowest_prices)return;const e="m-price--on-sale",a="m-price--sold-out",i=window.MinimogSettings.money_format,{priceWrapper:s,salePrice:o,unitPrice:r,compareAtPrice:n}=this.domNodes,{compare_at_price:d,price:c,unit_price_measurement:l}=t,u=d&&d>c,p=!t.available;if(u?s&&s.classList.add(e):s&&s.classList.remove(e),p?s&&s.classList.add(a):s&&s.classList.remove(a),s&&s.classList.remove("visibility-hidden"),o&&(o.innerHTML=formatMoney(c,i)),n&&n.length&&d>c?n.forEach(t=>t.innerHTML=formatMoney(d,i)):n.forEach(t=>t.innerHTML=formatMoney(c,i)),l&&r&&this.currentVariant){r.classList.remove("f-hidden");const t=`<span>${formatMoney(this.currentVariant.unit_price,i)}</span>/<span data-unit-price-base-unit>${this.getBaseUnit()}</span>`;r.innerHTML=t}else r&&r.classList.add("f-hidden")}getBaseUnit=()=>1===this.currentVariant.unit_price_measurement.reference_value?this.currentVariant.unit_price_measurement.reference_unit:this.currentVariant.unit_price_measurement.reference_value+this.currentVariant.unit_price_measurement.reference_unit}customElements.define("pcard-swatch",t)}

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.