PageSourceSearch

https://heelys.com/cdn/shop/t/140/compiled_assets/scripts.js?v=175728401039267371311789068929

js heelys.com collected 2026-09-24 20:38:02 UTC 14,900 bytes, 2 lines download raw bytes

1(function(){var __sections__={};(function(){for(var i=0,s=document.getElementById("sections-script").getAttribute("data-sections").split(",");i<s.length;i++)__sections__[s[i]]=!0})(),(function(){if(!(!__sections__["heelys-start-here"]&&!Shopify.designMode))try{if(!customElements.get("heelys-finder")){class HeelysFinder extends HTMLElement{connectedCallback(){this.initialized||(this.initialized=!0,this.strings=JSON.parse(this.querySelector("[data-hf-strings]").textContent),this.answers={range:"",size:"",wheel:"",color:""},this.dialog=this.querySelector("dialog"),this.results=this.querySelector("details"),this.step=0,this.catalog=null,this.loading=null,this.requestVersion=0,this.palette=[["black","#202020",/\bblack\b/i],["white","#ffffff",/\bwhite\b/i],["blue","#258bc6",/\b(blue|navy|cyan|turq\w*|teal)\b/i],["pink","#ef9fb7",/\b(pink|fuchsia|fucshia|magenta)\b/i],["red","#cf3636",/\bred\b/i],["green","#599265",/\b(green|lime|olive)\b/i],["yellow","#f5d453",/\byellow\b/i],["gray","#9a9a9a",/\b(gray|grey|charcoal|silver)\b/i],["purple","#936bb8",/\b(purple|lilac|lavender|violet)\b/i],["orange","#eb924a",/\borange\b/i],["brown","#9a7755",/\b(brown|tan|gum|beige|cream)\b/i],["multi","conic-gradient(#e97296,#f7d465,#68beaa,#7899d5,#e97296)",/\b(multi\w*|tiedye|tie[ -]dye)\b/i]],this.palette.forEach(([key,color])=>{const button=this.make("button","",this.strings[key]);button.type="button",button.dataset.color=key,button.setAttribute("aria-pressed","false");const swatch=this.make("span","hf__swatch");swatch.style.background=color,swatch.setAttribute("aria-hidden","true"),button.prepend(swatch),this.querySelector(".hf__colors").append(button)}),this.addEventListener("click",event=>this.handleClick(event)),this.dialog.addEventListener("close",()=>{this.previousOverflow!==void 0&&(document.body.style.overflow=this.previousOverflow,this.previousOverflow=void 0),this.opener?.isConnected&&this.opener.focus({preventScroll:!0})}),this.renderAnswers())}disconnectedCallback(){this.dialog?.open&&this.dialog.close(),this.previousOverflow!==void 0&&(document.body.style.overflow=this.previousOverflow)}make(tag,className="",text=""){const node=document.createElement(tag);return className&&(node.className=className),text&&(node.textContent=text),node}handleClick(event){const button=event.target.closest("button");if(!(!button||!this.contains(button)||button.disabled)){if(button.hasAttribute("data-open"))return this.open(Number(button.dataset.open),button);if(button.dataset.range){this.answers.range!==button.dataset.range&&(this.answers.range=button.dataset.range,this.answers.size="",this.invalidateResults()),this.renderSizes(),this.renderAnswers();return}if(button.dataset.size){this.answers.size=button.dataset.size,this.invalidateResults(),this.renderAnswers(),this.showStep(1);return}if(button.dataset.wheel){this.answers.wheel=button.dataset.wheel,this.invalidateResults(),this.renderAnswers(),this.showStep(2);return}if(button.dataset.color){this.answers.color=button.dataset.color,this.renderAnswers(),this.dialog.close(),this.showResults(!0);return}switch(button.dataset.action){case"close":this.dialog.close();break;case"back":this.showStep(Math.max(0,this.step-1));break;case"edit":this.open(0,button);break;case"reset":this.answers={range:"",size:"",wheel:"",color:""},this.invalidateResults(),this.renderAnswers(),this.showStep(0);break;case"all-colors":this.answers.color="any",this.renderAnswers(),this.showResults(!1);break;case"retry":this.catalog=null,this.showResults(!1);break;case"more":this.visibleCount+=6,this.renderProducts();break}}}invalidateResults(){this.requestVersion++,this.results.hidden=!0}open(step,opener){this.opener=opener,this.answers.size?!this.answers.wheel&&step>1&&(step=1):step=0,this.dialog.open||(this.previousOverflow=document.body.style.overflow,document.body.style.overflow="hidden",this.dialog.showModal()),this.showStep(step),this.loadCatalog().catch(()=>{})}showStep(step){this.step=step,this.querySelectorAll("[data-panel]").forEach(panel=>panel.hidden=Number(panel.dataset.panel)!==step),this.querySelector(".hf__step-label").textContent=this.strings.step.replace("{step}",step+1);const heading=this.dialog.querySelector("h2");heading.textContent=this.strings[["size_question","wheel_question","color_question"][step]],this.querySelectorAll(".hf__progress span").forEach((bar,i)=>bar.toggleAttribute("data-active",i<=step)),this.querySelector('[data-action="back"]').hidden=step===0,this.renderSizes(),this.dialog.scrollTop=0,heading.focus({preventScroll:!0})}renderSizes(){const a=this.answers;this.querySelectorAll("[data-range]").forEach(button=>button.setAttribute("aria-pressed",String(button.dataset.range===a.range)));const sizes=this.querySelector(".hf__sizes");sizes.replaceChildren(),({youth:["12Y","13Y","1Y","2Y","3Y","4Y","5Y","6Y","7Y","8Y"],women:["5W","6W","7W","8W","9W","10W","11W","12W"],men:["9M","10M","11M","12M","13M","14M","15M"]}
1[a.range]||[]).forEach(value=>{const button=this.make("button","",value);button.type="button",button.dataset.size=value,button.setAttribute("aria-pressed",String(value===a.size)),sizes.append(button)})}renderAnswers(){const a=this.answers;this.querySelector('[data-answer="size"]').textContent=a.size?`${this.strings[a.range]} \xB7 ${this.strings.us_size} ${a.size}`:this.strings.size_hint,this.querySelector('[data-answer="wheel"]').textContent=a.wheel?this.strings[a.wheel]:this.strings.wheel_hint,this.querySelector('[data-answer="color"]').textContent=a.color?a.color==="any"?this.strings.all_colors:this.strings[a.color]:this.strings.color_hint,this.querySelectorAll("[data-open]").forEach((button,i)=>{button.disabled=i===1?!a.size:i===2?!a.size||!a.wheel:!1,button.toggleAttribute("data-complete",!![a.size,a.wheel,a.color][i])}),this.querySelectorAll("[data-wheel]").forEach(button=>button.setAttribute("aria-pressed",String(button.dataset.wheel===a.wheel))),this.querySelectorAll("[data-color]").forEach(button=>button.setAttribute("aria-pressed",String(button.dataset.color===a.color)))}async loadCatalog(){if(this.catalog)return this.catalog;if(this.loading)return this.loading;this.loading=this.fetchCatalog();try{return this.catalog=await this.loading,this.catalog}finally{this.loading=null}}async fetchCatalog(){const products=[],visited=new Set;let url=new URL(this.dataset.catalog,location.origin);url.searchParams.set("section_id","heelys-finder-data"),url.searchParams.set("sort_by","best-selling");const previewId=new URL(location.href).searchParams.get("preview_theme_id");for(previewId&&url.searchParams.set("preview_theme_id",previewId);url;){if(url.origin!==location.origin||visited.has(url.href)||visited.size>=250)throw new Error("Invalid catalog pagination");visited.add(url.href);const response=await fetch(url,{credentials:"same-origin",cache:"no-store",signal:AbortSignal.timeout(2e4)});if(!response.ok)throw new Error("Catalog unavailable");const page=new DOMParser().parseFromString(await response.text(),"text/html").querySelector("[data-hf-catalog]");if(!page||page.dataset.theme!==this.dataset.theme)throw new Error("Catalog theme mismatch");if(page.querySelectorAll("[data-hf-product]").forEach(node=>{const variants=Array.from(node.querySelectorAll("[data-hf-variant]"),v=>({...v.dataset,priceHtml:v.querySelector("[data-hf-price]").innerHTML}));variants.length&&products.push({...node.dataset,variants})}),page.dataset.next){const next=new URL(page.dataset.next,url);next.searchParams.set("section_id","heelys-finder-data"),next.searchParams.set("sort_by","best-selling"),previewId&&next.searchParams.set("preview_theme_id",previewId),url=next}else url=null}return[...new Map(products.map(p=>[p.id,p])).values()]}sizeMatches(label,selected){const tokens=label.toUpperCase().replace(/\s/g,"").split(/[\/&]/);if(!tokens.every(token=>/^\d+(?:\.\d+)?[YWM]$/.test(token)))return!1;const groups=tokens.map(token=>token.slice(-1));return new Set(groups).size!==groups.length?!1:tokens.includes(selected)}matchesColor(value){return this.answers.color==="any"?!0:this.palette.find(([key])=>key===this.answers.color)?.[2].test(value)||!1}async showResults(shouldScroll){const version=++this.requestVersion;this.results.hidden=!1,this.results.open=!0,this.results.setAttribute("aria-busy","true"),this.querySelector(".hf__grid").replaceChildren(),this.querySelector(".hf__count").textContent="",this.querySelector(".hf__empty").hidden=!0,this.querySelector(".hf__fallback").hidden=!0,this.querySelector("[data-best-grid]").replaceChildren(),this.querySelector("[data-popular-grid]").replaceChildren(),this.querySelector("[data-popular-group]").hidden=!0,this.querySelector('[data-action="retry"]').hidden=!0,this.querySelector('[data-action="more"]').hidden=!0,this.querySelector(".hf__status").textContent=this.strings.loading,this.querySelector(".hf__status").removeAttribute("data-settled");const a={...this.answers};this.querySelector(".hf__selection").textContent=`${this.strings[a.range]} ${a.size} \xB7 ${this.strings[a.wheel]} \xB7 ${a.color==="any"?this.strings.all_colors:this.strings[a.color]}`,shouldScroll&&(this.results.querySelector("summary").focus({preventScroll:!0}),this.results.scrollIntoView({behavior:matchMedia("(prefers-reduced-motion: reduce)").matches?"instant":"smooth",block:"start"}));try{const catalog=await this.loadCatalog();if(version!==this.requestVersion||!this.isConnected)return;this.matches=catalog.filter(p=>p.wheel===a.wheel).flatMap(p=>{const variant=p.variants.find(v=>
1this.sizeMatches(v.size,a.size)&&this.matchesColor(v.color));return variant?[{...p,variant}]:[]}),this.visibleCount=6;const count=this.matches.length,label=count===1?this.strings.match_one:this.strings.match_count.replace("{count}",count);this.querySelector(".hf__count").textContent=label,this.querySelector(".hf__status").textContent=label,this.querySelector(".hf__status").setAttribute("data-settled",""),this.querySelector(".hf__empty").hidden=count>0;const colorAlternatives=a.color!=="any"&&catalog.some(p=>p.wheel===a.wheel&&p.variants.some(v=>this.sizeMatches(v.size,a.size)));this.querySelector(".hf__empty p").textContent=colorAlternatives?this.strings.empty_color:this.strings.empty_size,this.querySelector('[data-action="all-colors"]').hidden=!colorAlternatives,this.renderProducts(),count||this.renderFallback(catalog,version)}catch{if(version!==this.requestVersion)return;this.querySelector(".hf__status").textContent=this.strings.error,this.querySelector('[data-action="retry"]').hidden=!1}finally{version===this.requestVersion&&this.results.removeAttribute("aria-busy")}}renderProducts(){const grid=this.querySelector(".hf__grid"),oldCount=grid.children.length;this.matches.slice(oldCount,this.visibleCount).forEach(p=>{grid.append(this.productCard(p))}),this.querySelector('[data-action="more"]').hidden=this.visibleCount>=this.matches.length}productCard(p){const v=p.variant,card=this.make("article","hf__product"),imageUrl=v.image||p.image;if(imageUrl){const image=this.make("img");image.src=imageUrl,image.alt=`${p.title} \u2014 ${v.color}`,image.width=400,image.height=400,image.loading="lazy",card.append(image)}const price=this.make("div","hf__price");price.innerHTML=v.priceHtml,card.append(this.make("h3","",p.title),this.make("p","",v.color),this.make("p","",p.sizeUnavailable?this.strings[p.wheel]:`${this.strings.us_size} ${v.size} \xB7 ${this.strings[p.wheel]}`),price),p.sizeUnavailable&&card.append(this.make("p","hf__size-warning",this.strings.unavailable_size));const link=this.make("a","",this.strings.view_product),url=new URL(p.url,location.origin);p.sizeUnavailable||url.searchParams.set("variant",v.id);const previewId=new URL(location.href).searchParams.get("preview_theme_id");return previewId&&url.searchParams.set("preview_theme_id",previewId),link.href=url.href,link.setAttribute("aria-label",`${this.strings.view_product}: ${p.title}, ${v.color}, ${p.sizeUnavailable?this.strings.choose_size:this.strings.us_size+" "+v.size}`),card.append(link),card}alternatives(products){const inSize=products.flatMap(p=>{const variant=p.variants.find(v=>this.sizeMatches(v.size,this.answers.size));return variant?[{...p,variant}]:[]});return inSize.length?inSize:products.map(p=>({...p,variant:p.variants[0],sizeUnavailable:!0}))}validTrending(feed){if(!feed||feed.metric!=="product_landing_sessions"||feed.windowDays!==30||!Array.isArray(feed.productHandles)||!feed.productHandles.every(handle=>typeof handle=="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(handle))||!
1/^\d{4}-\d{2}-\d{2}$/.test(feed.periodStart)||!/^\d{4}-\d{2}-\d{2}$/.test(feed.periodEnd))return!1;const start=Date.parse(feed.periodStart+"T00:00:00Z"),end=Date.parse(feed.periodEnd+"T00:00:00Z");return Number.isFinite(start)&&Number.isFinite(end)&&end-start===29*864e5&&end<=Date.now()}async renderFallback(catalog,version){const alternatives=this.alternatives(catalog).slice(0,6);if(alternatives.length){this.querySelector(".hf__fallback").hidden=!1,this.querySelector(".hf__fallback-title").textContent=this.strings[alternatives[0].sizeUnavailable?"best_explore":"best_size"],alternatives.forEach(p=>this.querySelector("[data-best-grid]").append(this.productCard(p)));try{let feed=JSON.parse(this.querySelector("[data-hf-trending]").textContent);if(this.dataset.popularUrl)try{const url=new URL(this.dataset.popularUrl,location.origin);if(url.origin===location.origin){const response=await fetch(url,{credentials:"same-origin",cache:"no-store",signal:AbortSignal.timeout(1e4)});if(response.ok){const fresh=await response.json(),age=Date.now()-Date.parse(fresh.asOf);this.validTrending(fresh)&&age>=0&&age<=2880*60*1e3&&(feed=fresh)}}}catch{}if(!this.validTrending(feed)||version!==this.requestVersion||!this.isConnected)return;const byHandle=new Map(catalog.map(p=>[new URL(p.url,location.origin).pathname.split("/products/")[1]?.replace(/\/$/,""),p])),ranked=[...new Set(feed.productHandles)].map(handle=>byHandle.get(handle)).filter(Boolean),popular=this.alternatives(ranked).slice(0,6);if(!popular.length)return;this.querySelector(".hf__popular-title").textContent=this.strings[popular[0].sizeUnavailable?"popular_explore":"popular_size"],popular.forEach(p=>this.querySelector("[data-popular-grid]").append(this.productCard(p))),this.querySelector("[data-trending-period]").textContent=this.strings.trending_period.replace("{start}",feed.periodStart).replace("{end}",feed.periodEnd),this.querySelector("[data-popular-group]").hidden=!1}catch{}}}}customElements.define("heelys-finder",HeelysFinder)}}catch(e){console.error(e)}})(),(function(){if(__sections__["main-collection"])try{const url=new URL(window.location.href);url.hash&&document.addEventListener("DOMContentLoaded",()=>{const card=document.getElementById(url.hash.slice(1));card&&card.scrollIntoView({behavior:"instant"})},{once:!0})}catch(e){console.error(e)}})()})();
2//# sourceMappingURL=/cdn/shop/t/140/compiled_assets/scripts.js.map?v=175728401039267371311789068929

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.