PageSourceSearch

https://athluna.com/cdn/shop/t/74/assets/complete-the-look.js?v=90429923439566045021791443236

js athluna.com collected 2026-10-10 02:36:48 UTC 24,708 bytes, 201 lines download raw bytes

1function ctlEscapeHtml(value=""){return String(value).replace(/[&<>"']/g,char=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[char])}function ctlEscapeAttribute(value=""){return ctlEscapeHtml(value).replace(/`/g,"&#96;")}function ctlTrackView(rootElement,channel){if(!rootElement||typeof gtag!="function")return;const productBlocks=rootElement.querySelectorAll("product-block"),productBlocksArray=Array.from(productBlocks),productBlockIndexMap=new Map(productBlocksArray.map((productBlock,index)=>[productBlock,index])),currency=rootElement.dataset.currency||window.Shopify?.currency?.active||"",getVariantValue=productBlock=>!productBlock?.dataset||typeof productBlock.dataset.variant!="string"?"":productBlock.dataset.variant.trim(),getVariantColor=productBlock=>{const variantValue=getVariantValue(productBlock);return variantValue?variantValue.split("/")[0].trim():""};let columnCount=0;try{productBlocks.forEach(productBlock=>{const itemIndex=productBlockIndexMap.get(productBlock)??0,productImg=productBlock.querySelector("img");if(!productImg)return;const src=productImg.getAttribute("src"),restoredLink=urlRestore(src),observe=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(!entry.isIntersecting)return;columnCount+=1;const variantColor=getVariantColor(productBlock);gtag("event","view_item_list",{items:[{item_id:productBlock.dataset.productId,item_name:productBlock.dataset.title,price:productBlock.dataset.price,variant:variantColor,index:itemIndex,item_category5:restoredLink,item_list_name:channel}],currency,item_list_name:channel,item_list_id:"ctl",transport_type:"beacon"}),observe.unobserve(productImg)})});observe.observe(productImg);const productLink=productBlock.querySelector(".product-link");!productLink||productLink.dataset.ctlTracked==="true"||(productLink.dataset.ctlTracked="true",productLink.addEventListener("click",event=>{try{event.preventDefault();const link=productLink.getAttribute("href"),variantColor=getVariantColor(productBlock),variantValue=getVariantValue(productBlock);let navigated=!1;const navigate=()=>{navigated||!link||(navigated=!0,window.location.href=link)};setTimeout(navigate,250),gtag("event","select_item",{transport_type:"beacon",items:[{item_id:productBlock.dataset.productId,item_name:productBlock.dataset.title,price:productBlock.dataset.price,variant:variantValue||variantColor,index:itemIndex,image_url:restoredLink}],currency,item_list_name:channel,item_list_id:"ctl",type:"anchor",event_callback:navigate})}catch{const link=productLink.getAttribute("href");link&&(window.location.href=link)}}))})}catch{}rootElement.trackCTLCarouselHandler&&document.removeEventListener("on:carousel-slider:select",rootElement.trackCTLCarouselHandler),rootElement.trackCTLCarouselHandler=event=>{if(event.target&&!rootElement.contains(event.target))return;productBlocksArray.slice(columnCount,event.detail.index+columnCount).forEach(productBlock=>{if(!productBlock)return;const productImg=productBlock.querySelector("img");if(!productImg)return;const itemIndex=productBlockIndexMap.get(productBlock)??0,src=productImg.getAttribute("src"),restoredLink=urlRestore(src),variantColor=getVariantColor(productBlock);gtag("event","view_item_list",{items:[{item_id:productBlock.dataset.productId,item_name:productBlock.dataset.title,price:productBlock.dataset.price,variant:variantColor,index:itemIndex,item_category5:restoredLink,item_list_name:channel}],currency,item_list_name:channel,item_list_id:"ctl",transport_type:"beacon"});const dataIndex=productBlocksArray.indexOf(productBlock);productBlocksArray[dataIndex]=!1})},document.addEventListener("on:carousel-slider:select",rootElement.trackCTLCarouselHandler)}if(!window.customElements.get("the-looks")){class TheLooks extends HTMLElement{static observedAttributes=["data-option","data-update-count"];constructor(){super(),this.option=this.dataset.option||"",this.theLookDates=new Map,this.currentProductId=this.dataset.productId,this.theLookVariants=null,this.productUrl=this.dataset.url,this.isInitialized=!1,this.currentTheLookRequestToken=0,this.boundSwitchHandle=this.switchHandle.bind(this),this.loadingSwatchLabel=null,this.loadingSwatchSpinner=null}connectedCallback(){this.dataset.channel=this.dataset.title||"";const color=new URLSearchParams(window.location.search).get("Color");color&&(this.option=color,this.dataset.option=color),window.initLazyScript?window.initLazyScript(this,()=>this.initializeTheLook(),500):this.initializeTheLook()}
1disconnectedCallback(){this.closest(".js-product")?.removeEventListener("on:variant:change",this.boundSwitchHandle),this.ajaxLoadUrlFetchAbortController&&this.ajaxLoadUrlFetchAbortController.abort("TheLooks disconnected"),this.clearLoadingSwatch(),this.trackCTLCarouselHandler&&document.removeEventListener("on:carousel-slider:select",this.trackCTLCarouselHandler)}initializeTheLook(){if(this.isInitialized)return;if(this.theLookVariants=this.getTheLookVariants(),!this.theLookVariants||this.theLookVariants.size===0){this.classList.add("complete-the-look-hide");return}if(this.templateMarkup=this.buildTemplateMarkup(),!this.templateMarkup){this.classList.add("complete-the-look-hide");return}const currentProductContainer=this.closest(".product-form[data-product-id], .js-product[data-product-id]");if(!currentProductContainer)return;const currentProductId=currentProductContainer.dataset.productId;currentProductId&&currentProductId!==this.currentProductId||(this.closest(".js-product")?.addEventListener("on:variant:change",this.boundSwitchHandle),this.isInitialized=!0,this.getCurrentTheLookDate(this.dataset.option||this.option||""))}buildTemplateMarkup(){const headingTag=this.dataset.headingTag||"h4",headingText=this.dataset.heading||"",debugLabel=this.dataset.showDebugLabel==="true"?'<span style="font-size: 1.2rem; color: #ff6b6b; margin-left: 1rem;">[\u8C03\u8BD5\u6A21\u5F0F]</span>':"";return`
2<div class="page-width">
3  <carousel-slider class="carousel block collection-slider">
4    ${headingText?`
5      <div class="opposing-items opposing-items--valign-base very-lightly-spaced-row">
6        <${headingTag} class="inline-richtext align-left">
7          ${ctlEscapeHtml(headingText)}
8          ${debugLabel}
9        </${headingTag}>
10        <div class="no-wrap slider-nav">
11          <button name="prev" class="slider-nav__btn has-ltr-icon" type="button" aria-label="Previous">
12            <svg aria-hidden="true" focusable="false" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M14.7 6.7L9.4 12l5.3 5.3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
13          </button>
14          <button name="next" class="slider-nav__btn has-ltr-icon" type="button" aria-label="Next">
15            <svg aria-hidden="true" focusable="false" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M9.3 17.3L14.6 12 9.3 6.7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
16          </button>
17        </div>
18      </div>
19    `:""}
20    <div class="collection-listing fade-in-up slider slider--edge-peek slider--no-scrollbar is-grabbable">
21      <div class="slider__grid product-grid product-grid--carousel product-grid--per-row-2 product-grid--per-row-mob-2 complete-the-look__grid" id="Slider-${ctlEscapeAttribute(this.dataset.blockId||"")}" role="list"></div>
22    </div>
23  </carousel-slider>
24</div>`}switchHandle(event){const option=event?.detail?.selectedOptions?.[0];option&&option!==this.dataset.option&&(this.setLoadingSwatchFromEvent(event),this.dataset.option=option)}clearLoadingSwatch(){this.loadingSwatchSpinner&&this.loadingSwatchSpinner.parentNode&&this.loadingSwatchSpinner.remove(),this.loadingSwatchLabel&&(this.loadingSwatchLabel.classList.remove("is-media-loading"),this.loadingSwatchLabel.removeAttribute("aria-busy")),this.loadingSwatchLabel=null,this.loadingSwatchSpinner=null}setLoadingSwatchFromEvent(event){this.clearLoadingSwatch();const trigger=event?.detail?.trigger;if(!trigger)return;const input=trigger.matches(".js-option")?trigger:trigger.closest(".js-option");if(!input?.id)return;const variantPicker=input.closest("variant-picker"),productRoot=this.closest(".js-product"),label=variantPicker?.querySelector(`label[for="${CSS.escape(input.id)}"]`)||productRoot?.querySelector(`label[for="${CSS.escape(input.id)}"]`);if(!label||!label.classList.contains("opt-label"))return;label.classList.add("is-media-loading"),label.setAttribute("aria-busy","true");const spinner=document.createElement("span");spinner.className="opt-label__loading-spinner",spinner.setAttribute("aria-hidden","true"),label.appendChild(spinner),this.loadingSwatchLabel=label,this.loadingSwatchSpinner=spinner}getTheLookVariants(){if(this.theLookVariants instanceof Map)return this.theLookVariants;const blockId=this.dataset.blockId||this.id.replace("complete-the-look-",""),dataElement=document.getElementById(`the-look-data-${blockId}`);if(!dataElement)return new Map;try{return new Map(Object.entries(JSON.parse(dataElement.textContent||"{}")))}catch(error){return console.error("TheLooks: failed to parse look data.",error),new Map}}getLookVariantIds(option){const normalizedOption=this.getNormalizedOptionValue(option);for(const[key,value]of this.theLookVariants.entries())if(this.getNormalizedOptionValue(key)===normalizedOption)return value;return null}ensureTemplateRendered(){this.querySelector(".slider__grid")||this.templateMarkup&&this.insertAdjacentHTML("beforeend",this.templateMarkup)}
24renderLoadingState(){this.ensureTemplateRendered();const completeContainer=this.querySelector(".slider__grid");completeContainer&&(this.classList.remove("complete-the-look-hide"),this.classList.add("complete-the-look--loading"),completeContainer.innerHTML=this.renderSkeletonCards())}renderSkeletonCards(count=4){return Array.from({length:count},(_,index)=>`
25<div id="Slide-skeleton-${index}" class="slider__item">
26  <div class="ctl-skeleton-card" aria-hidden="true">
27    <div class="ctl-skeleton-card__image theme-skeleton theme-skeleton--media"></div>
28    <span class="quickadd-icon-btn ctl-skeleton-card__quickadd" aria-hidden="true"></span>
29    <div class="ctl-skeleton-card__content">
30      <div class="ctl-skeleton-card__title theme-skeleton theme-skeleton--text theme-skeleton--title"></div>
31      <div class="ctl-skeleton-card__price theme-skeleton theme-skeleton--text"></div>
32    </div>
33  </div>
34</div>`).join("")}async getProductsByIds(ids){return this.shopifyFetch(`
35query GetTheLookByVariants($variantIds: [ID!]!) {
36  nodes(ids: $variantIds) {
37    ... on ProductVariant {
38      id
39      title
40      sku
41      image {
42        url(transform: { maxWidth: 512, preferredContentType: WEBP })
43      }
44      price {
45        amount
46      }
47      selectedOptions {
48        name
49        value
50      }
51      quantityAvailable
52      availableForSale
53      hide_preorder_info: metafield(namespace: "custom", key: "hide_preorder_info") {
54        value
55      }
56      pre_order_limit: metafield(namespace: "custom", key: "pre_order_limit") {
57        value
58      }
59      pre_order_shipping_message: metafield(namespace: "custom", key: "pre_order_shipping_message") {
60        value
61      }
62      product {
63        id
64        title
65        handle
66        onlineStoreUrl
67        images(first: 1) {
68          edges {
69            node {
70              url(transform: { maxWidth: 512, preferredContentType: WEBP })
71            }
72          }
73        }
74        variants(first: 100) {
75          nodes {
76            id
77            title
78            quantityAvailable
79            availableForSale
80            image {
81              url(transform: { maxWidth: 512, preferredContentType: WEBP })
82            }
83            price {
84              amount
85            }
86            hide_preorder_info: metafield(namespace: "custom", key: "hide_preorder_info") {
87              value
88            }
89            pre_order_limit: metafield(namespace: "custom", key: "pre_order_limit") {
90              value
91            }
92            pre_order_shipping_message: metafield(namespace: "custom", key: "pre_order_shipping_message") {
93              value
94            }
95            selectedOptions {
96              name
97              value
98            }
99          }
100        }
101        listingChildren: metafield(namespace: "custom", key: "listing_children") {
102          references(first: 25) {
103            nodes {
104              ... on Product {
105                id
106                title
107                handle
108                onlineStoreUrl
109                images(first: 1) {
110                  edges {
111                    node {
112                      url(transform: { maxWidth: 512, preferredContentType: WEBP })
113                    }
114                  }
115                }
116                variants(first: 100) {
117                  nodes {
118                    id
119                    title
120                    quantityAvailable
121                    availableForSale
122                    image {
123                      url(transform: { maxWidth: 512, preferredContentType: WEBP })
124                    }
125                    price {
126                      amount
127                    }
128                    hide_preorder_info: metafield(namespace: "custom", key: "hide_preorder_info") {
129                      value
130                    }
131                    pre_order_limit: metafield(namespace: "custom", key: "pre_order_limit") {
132                      value
133                    }
134                    pre_order_shipping_message: metafield(namespace: "custom", key: "pre_order_shipping_message") {
135                      value
136                    }
137                    selectedOptions {
138                      name
139                      value
140                    }
141                  }
142                }
143              }
144            }
145          }
146        }
147      }
148    }
149  }
150}
151            `,{variantIds:ids})}getNormalizedOptionValue(value){return typeof value=="string"?value.replace(/\u200C/g,"").trim().toLowerCase():""}getColorOptionValue(selectedOptions=[]){return(selectedOptions||[]).find(item=>this.getNormalizedOptionValue(item?.name)==="color")?.value||""}getSameColorVariants(variants=[],colorValue=""){const normalizedColor=this.getNormalizedOptionValue(colorValue);return normalizedColor?(variants||[]).filter(variant=>{const variantColor=this.getColorOptionValue(variant?.selectedOptions||[]);return this.getNormalizedOptionValue(variantColor)===normalizedColor}):[]}getEntityId(gid=""){return typeof gid=="string"?gid.split("/").pop():""}appendWidthParam(url,width){if(!url)return"";const separator=url.includes("?")?"&":"?";return`${url}${separator}width=${width}`}
151formatAmount(amount){const parsed=Number.parseFloat(amount);return Number.isNaN(parsed)?amount||"":Number.isInteger(parsed)?String(parsed):parsed.toFixed(2)}buildProductUrl(baseUrl,variantId,colorKey,channel){const url=baseUrl||`/products/${this.dataset.handle||""}`,separator=url.includes("?")?"&":"?",params=new URLSearchParams({variant:variantId,from_section:"ctl",from_title:this.dataset.title||"",from_color:colorKey,channel});return`${url}${separator}${params.toString()}`}resolveDisplayProduct(productVariant){const parentProduct=productVariant?.product;if(!parentProduct)return null;const colorValue=this.getColorOptionValue(productVariant.selectedOptions||[]),parentVariants=parentProduct?.variants?.nodes||[],displayProduct=(parentProduct?.listingChildren?.references?.nodes||[]).find(childProduct=>{const childVariants=childProduct?.variants?.nodes||[];return this.getSameColorVariants(childVariants,colorValue).length>0})||parentProduct;let displayVariants=this.getSameColorVariants(displayProduct?.variants?.nodes||[],colorValue);displayVariants.length||(displayVariants=this.getSameColorVariants(parentVariants,colorValue)),!displayVariants.length&&productVariant&&(displayVariants=[productVariant]);const anchorVariant=displayVariants[0]||productVariant,cardImage=anchorVariant?.image?.url||productVariant?.image?.url||displayProduct?.images?.edges?.[0]?.node?.url||parentProduct?.images?.edges?.[0]?.node?.url||"";return{amount:anchorVariant?.price?.amount||productVariant?.price?.amount||"",anchorVariant,cardImage,colorValue,displayProduct,displayVariants}}async getCurrentTheLookDate(option){if(!this.isInitialized)return;const key=(option||"").trim(),normalizedKey=this.getNormalizedOptionValue(key);if(!normalizedKey){this.clearLoadingSwatch(),this.classList.add("complete-the-look-hide");return}const requestToken=++this.currentTheLookRequestToken,currentTheLook=this.getLookVariantIds(key),currentChannel=this.dataset.title||"";if(this.dataset.channel=currentChannel,!currentTheLook||!Array.isArray(currentTheLook)||!currentTheLook.length){this.clearLoadingSwatch(),this.classList.add("complete-the-look-hide");return}this.renderLoadingState();const variantIdsUrl=currentTheLook.map(variantId=>`gid://shopify/ProductVariant/${variantId}`);let products=null;if(this.theLookDates.get(normalizedKey)?products=this.theLookDates.get(normalizedKey):(products=await this.getProductsByIds(variantIdsUrl),products&&this.theLookDates.set(normalizedKey,products)),requestToken!==this.currentTheLookRequestToken||this.getNormalizedOptionValue(this.dataset.option)!==normalizedKey||(this.clearLoadingSwatch(),!products?.nodes))return;this.ensureTemplateRendered();const completeContainer=this.querySelector(".slider__grid");if(!completeContainer)return;const renderedProductKeys=new Set,productCards=products.nodes.map((productVariant,index)=>{if(!productVariant)return"";const resolvedProduct=this.resolveDisplayProduct(productVariant);if(!resolvedProduct)return"";const{amount,anchorVariant,cardImage,colorValue,displayProduct,displayVariants}=resolvedProduct,productId=this.getEntityId(displayProduct.id);if(productId===this.currentProductId)return"";const variant=anchorVariant?.title||productVariant.title||"",currentProductVariantId=this.getEntityId(anchorVariant?.id||productVariant.id),renderedProductKey=`${productId}::${this.getNormalizedOptionValue(colorValue)}`;if(renderedProductKeys.has(renderedProductKey))return"";renderedProductKeys.add(renderedProductKey);const sizesVariantList=displayVariants.map(currentColorVariant=>{const title=currentColorVariant?.title||"",titleParts=title.split("/"),size=(titleParts[1]||titleParts[titleParts.length-1]||"").trim(),id=this.getEntityId(currentColorVariant?.id),available=Number(currentColorVariant?.quantityAvailable)||0,availableForSale=currentColorVariant?.availableForSale===!0,preOrderMessage=currentColorVariant?.pre_order_shipping_message?.value||this.dataset.defaultPreorderMessage||"",isPreOrder=available<1&&availableForSale,isSoldOut=!available&&!availableForSale,cssClass=isPreOrder?"pre-order":available?"":"sold-out",statusText=isPreOrder?"| Pre-Order":available?"":"| Sold Out";return`<li data-preorder-message="${ctlEscapeAttribute(preOrderMessage)}" data-available="${isPreOrder?1:available}" data-size="${ctlEscapeAttribute(size)}" data-title="${ctlEscapeAttribute(displayProduct.title||"")}" data-variants="${ctlEscapeAttribute(title)}" data-id="${ctlEscapeAttribute(id)}" class="${cssClass}${isSoldOut?" sold-out":""}">${ctlEscapeHtml(size)} ${statusText}</li>`}).join("");return this.productBlockBuildHtml({index,id:productId,href:this.buildProductUrl(displayProduct.onlineStoreUrl||`/products/${displayProduct.handle}`,currentProductVariantId,key,currentChannel),imgSrc:cardImage,amount,title:displayProduct.title||"",variant,sizesVariantUl:`<ul>${sizesVariantList}</ul>`})}
151).filter(Boolean);productCards.length>0&&this.getNormalizedOptionValue(this.dataset.option)===normalizedKey&&requestToken===this.currentTheLookRequestToken?(this.classList.remove("complete-the-look-hide"),this.classList.remove("complete-the-look--loading"),completeContainer.innerHTML=productCards.join(""),ctlTrackView(this,currentChannel),requestAnimationFrame(()=>{this.dataset.updateCount="1"})):(this.classList.remove("complete-the-look--loading"),this.classList.add("complete-the-look-hide"))}productBlockBuildHtml({id,href,imgSrc,amount,title,index,variant,sizesVariantUl}){const image1080=this.appendWidthParam(imgSrc,1080),image425=this.appendWidthParam(imgSrc,425),image1350=this.appendWidthParam(imgSrc,1350),displayAmount=this.formatAmount(amount),safeTitle=ctlEscapeHtml(title),safeHref=ctlEscapeAttribute(href),safeVariant=ctlEscapeAttribute(variant),safeAmount=ctlEscapeAttribute(amount),safeProductId=ctlEscapeAttribute(id),safeIcon=ctlEscapeAttribute(this.dataset.addCartIcon||""),isSimpleModal=this.dataset.simpleModal==="true"?"true":"false";return`
152<div id="Slide-${ctlEscapeAttribute(this.currentProductId)}-${index}" class="slider__item">
153  <product-block class="product-block" data-variant="${safeVariant}" data-price="${safeAmount}" data-title="${ctlEscapeAttribute(title)}" data-product-id="${safeProductId}" data-product-handle="handle">
154    <div class="block-inner">
155      <div class="block-inner-inner">
156        <div class="image-cont">
157          <a class="product-link" href="${safeHref}" aria-hidden="true" tabindex="-1">
158            <div class="image-label-wrap">
159              <div>
160                <div class="product-block__image product-block__image--primary product-block__image--active product-media product-media--image" data-media-id="${safeProductId}">
161                  <div class="img-ar img-ar--cover" style="--aspect-ratio: 0.75">
162                    <img src="${ctlEscapeAttribute(image1080)}" alt="" width="1080" height="1296" loading="lazy" sizes="100vw" srcset="${ctlEscapeAttribute(image425)} 540w, ${ctlEscapeAttribute(image1350)} 1080w" class="theme-img">
163                  </div>
164                </div>
165              </div>
166            </div>
167          </a>
168          <a class="quickadd-icon-btn quickadd-toggle" data-simple-modal="${isSimpleModal}" href="${safeHref}">
169            <span class="visually-hidden">Quick buy</span>
170            <img src="${safeIcon}">
171          </a>
172        </div>
173        <div class="product-block__detail align-ltr-left">
174          <div class="inner">
175            <div class="innerer">
176              <a class="product-link" href="${safeHref}">
177                <div class="product-block__title">${safeTitle}</div>
178                <div class="product-price product-price--block">
179                  <div class="price">
180                    <div class="price__default">
181                      <span class="price__current">$${ctlEscapeHtml(displayAmount)}</span>
182                    </div>
183                  </div>
184                </div>
185              </a>
186            </div>
187          </div>
188        </div>
189      </div>
190    </div>
191    <div class="alert-product">
192      <div class="quickadd-container use-color-scheme use-color-scheme--default">
193        <div class="inner"></div>
194      </div>
195    </div>
196    <div class="hide size-varint-template">
197      ${sizesVariantUl}
198    </div>
199  </product-block>
200</div>`}attributeChangedCallback(name,oldValue,newValue){if(name==="data-option"&&oldValue!==newValue&&Promise.resolve().then(()=>{const key=(newValue||"").replace(/\u200C/g,"");this.getCurrentTheLookDate(key)}),name==="data-update-count"){const slider=this.querySelector("carousel-slider");slider&&typeof slider.init=="function"&&slider.init()}}async shopifyFetch(query,variables={}){const storeDomain="3d54b1-24.myshopify.com",storefrontAccessToken="e568a4e85eae05f90490fc8e90b40098",fetchImpl=window.__themeNativeFetch||(window.fetch?window.fetch.bind(window):null);if(!fetchImpl)return console.error("TheLooks.shopifyFetch: fetch API is unavailable."),null;this.ajaxLoadUrlFetchAbortController&&this.ajaxLoadUrlFetchAbortController.abort("Existing request not needed"),this.ajaxLoadUrlFetchAbortController=new AbortController;let response;try{response=await fetchImpl(`https://${storeDomain}/api/2025-01/graphql.json`,{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":storefrontAccessToken},body:JSON.stringify({query,variables}),signal:this.ajaxLoadUrlFetchAbortController.signal})}catch(error){return error?.name==="AbortError"||console.error("TheLooks.shopifyFetch request failed:",error),null}let result;try{if(response&&typeof response.json=="function")result=await response.json();else if(response&&typeof response=="object")result=response;else return console.error("TheLooks.shopifyFetch received an unexpected response:",response),null}catch(error){return console.error("TheLooks.shopifyFetch could not parse the response:",error,response),null}return result.errors?(console.error("GraphQL Errors:",result.errors),null):result.data}}window.customElements.define("the-looks",TheLooks)}
201//# sourceMappingURL=/cdn/shop/t/74/assets/complete-the-look.js.map?v=90429923439566045021791443236

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.