PageSourceSearch

https://www.myoddballs.com/cdn/shop/t/1094/assets/sock-choice.js?v=49737103651714303301790787913

js myoddballs.com collected 2026-10-04 00:21:27 UTC 7,242 bytes, 2 lines download raw bytes

1document.addEventListener("DOMContentLoaded",()=>{let currentVarName,currentPantsVarName,initalPrice;const currencySymbol=GEBO.settings.shop_money_format[0];document.addEventListener("click",e=>{if(e.target.closest(".sock-option"))try{currentVarName=e.target.closest(".sock-option").querySelector("input").value}catch(error){console.error(error.message)}if(e.target.closest(".sc-sock-choice"))try{if(!currentVarName)return;const selector=e.target.closest(".sc-sock-choice").dataset.selector,div=document.getElementById(selector),activeInput=Array.from(div.querySelectorAll("input")).find(input=>input.value==currentVarName);activeInput&&!activeInput.closest(".sock-option").classList.contains("variant-oos")&&(activeInput.checked=!0),activeInput.closest(".sock-option").classList.contains("variant-oos")&&(oldInput=document.querySelector(".sock-variant-options input:checked"),oldInput&&(oldInput.checked=!1)),updateSockChoiceState(e)}catch(error){console.error(error)}if(e.target.closest(".sc-prod-choice")){let activeOption;const newChoice=e.target.closest(".sc-prod-choice").dataset.type,options=e.target.closest("#sc-prod-types-outer-wrapper").querySelectorAll(".sc-pants-wrapper");if(Array.from(options).forEach(option=>{option.dataset.productType==newChoice?(activeOption=option,option.style.display="block"):option.style.display="none"}),!currentPantsVarName)return;const prevInput=e.target.closest("#sc-prod-types-outer-wrapper").querySelector(".sc-options-wrapper input:checked");prevInput&&(prevInput.checked=!1);const inputs=activeOption.querySelectorAll("input");Array.from(inputs).forEach(input=>{input.value==currentPantsVarName&&(input.closest("label").classList.contains("variant-oos")||(input.checked=!0))})}if(e.target.closest(".sc-options-wrapper")&&e.target.closest("label")&&(currentPantsVarName=e.target.closest("label").querySelector("input").value),e.target.closest("#sc-complete")){e.stopPropagation(),e.preventDefault();let toAdd=[];const selectedPants=document.querySelectorAll(".sc-pants-options input:checked");console.log(selectedPants),selectedPants.forEach(pants=>{console.log(pants);let varId=pants.dataset.varId;toAdd.push(varId)});const checkedSocks=document.querySelector("#sock-variant-wrapper input:checked");if(checkedSocks.classList.contains("dual-socks")){const var1=checkedSocks.dataset.varIdOne,var2=checkedSocks.dataset.varIdTwo;toAdd.push(var1,var2)}else{const varId=checkedSocks.dataset.varId;toAdd.push(varId)}addSockBundleToCart(toAdd)}});const getProdType=()=>{let sockType=document.querySelector("#plain-sock-choice input:checked")?"B":"A";const pantsWrappers=document.querySelectorAll(".sc-pants-wrapper");let prodTypes=[];Array.from(pantsWrappers).forEach(wrapper=>{wrapper.querySelector("input:checked")&&prodTypes.push(wrapper.dataset.productType)});let url="";return prodTypes.forEach((type,index)=>{let formattedType=index>0?type.split(" ").at(-1):type;formattedType.toLowerCase().includes("bamboo")&&(formattedType="Bamboo"),formattedType=formattedType.replace("Ladies","Womens"),formattedType=formattedType.replace("Low Rise","Womens"),url=url+formattedType.replace(/ /g,"")+"-"}),url="https://cdn.shopify.com/s/files/1/0353/7249/files/"+url+"1-Sock-"+sockType+".png",console.log(url),url};function updateSockChoiceState(e=null){const wrapper=e?e.target.closest("#sock-choice-outer-wrapper"):document.getElementById("sock-choice-outer-wrapper");if(console.log(wrapper),!wrapper)return;initalPrice=wrapper.querySelector(".sock-bundle-price")?.innerHTML;let pantsSelected=[...wrapper.querySelectorAll(".sc-pants-options")].every(group=>group.querySelector("input:checked"));document.getElementById("sc-prod-types-outer-wrapper")&&(pantsSelected=document.querySelector(".sc-pants-wrapper.bralette-wrapper input:checked")&&document.querySelector("#sc-prod-types-outer-wrapper .sc-options-wrapper input:checked"));const sockSelected=wrapper.querySelector("#sock-variant-wrapper input:checked");console.log(wrapper.querySelector("#sock-variant-wrapper input:checked"));const isComplete=!!pantsSelected&&!!sockSelected;wrapper.classList.toggle("is-complete",isComplete)}updateSockChoiceState(),document.addEventListener("change",e=>{e.target.matches(".sc-pants-options input, #sock-variant-wrapper input, .sc-prod-types-wrapper input")&&updateSockChoiceState(e)});const addSockBundleToCart=async ids=>{const wrapper=document.getElementById("sock-choice-outer-wrapper");wrapper.classList.remove("is-complete"),wrapper.classList.add("is-loading");let timeStamp=Date.now();const bundleId=document.getElementById("prod-first-var-input").value,prodImage=getProdType();console.log(prodImage);for(let i=0;i<ids.length;i++)await addToCart({varId:ids[i],quantity:1,properties:{_bundleId:timeStamp,_bundleVariantId:bundleId,_bundleImage:prodImage}});const resetRevent=new CustomEvent("revertToCart");document.dispatchEvent(resetRevent);const cartevent=new CustomEvent("updateCart");document.dispatchEvent(cartevent),wrapper.classList.add("is-complete"),wrapper.classList.remove("is-loading")},addToCart=async(options={})=>{const normalizedOptions={varId:options.varId,quantity:options.quantity||1,properties:options.properties||{},productId:options.productId||"",productTitle:options.productTitle||""};if(!normalizedOptions.varId||!normalizedOptions.quantity)throw new Error("varId and quantity are required");const form=createForm(normalizedOptions),formLoc=document.getElementById("atc-form-loc");if(!formLoc)throw new Error("no atc form location");formLoc.append(form);const formData=new FormData(form),dataString=new URLSearchParams(formData).toString(),response=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:dataString});if(!response.ok){const json=await response.json();throw new Error(json.description||"Failed to add to cart")}const cartItem=await response.json();return document.dispatchEvent(new CustomEvent("itemAddedToCart",{detail:{variant:normalizedOptions.varId,cartItem,formData}})),cartItem},createForm=({varId,quantity,properties,productId,productTitle,productPrice})=>{const newFormProps=Object.fromEntries(Object.entries(properties).map(([key,value])=>[`properties[${key}]`,value])),form=document.createElement("form");form.method="post",form.action="/cart/add",form.id=`product-form-${productId}`,form.acceptCharset="UTF-8",form.className="product-form hidden",form.enctype="multipart/form-data",form.setAttribute("data-product-id",productId),form.setAttribute("novalidate","novalidate"),form.setAttribute("data-type","add-to-cart-form");const formProps={...newFormProps,form_type:"product",utf8:"\u2713",id:varId,quantity,"product-id":productId};
1Object.entries(formProps).forEach(([name,value])=>{if(value==null)return;const input=document.createElement("input");input.type="hidden",input.name=name,input.value=String(value),form.appendChild(input)});const atcButton=document.createElement("button");return atcButton.type="submit",atcButton.classList.add("add-to-cart-button","hidden"),form.appendChild(atcButton),form.addEventListener("submit",function(event){event.preventDefault()}),form}});
2//# sourceMappingURL=/cdn/shop/t/1094/assets/sock-choice.js.map?v=49737103651714303301790787913

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.