import"@vendor/constructor-client";const CONSTRUCTOR_CAMPAIGN_QSPS=["g_adgroupid","utm_term","utm_campaign","boost"];class ConstructorClient{constructor(indexKey=__DNA_GLOBAL__?.constructor?.key){this.client=new ConstructorioClient({apiKey:indexKey,segments:this.getSegments(),userId:getUserId()})}get country(){return window?.Shopify?.country??__DNA_GLOBAL__?.constructor?.country}getSegments(){const segments=[this.country],queryParams=new URLSearchParams(new URL(window.location).search),urlBasedCampaignParams=[];for(const[key,value]of queryParams.entries())CONSTRUCTOR_CAMPAIGN_QSPS.includes(key.toLowerCase())&&urlBasedCampaignParams.push(value);if(urlBasedCampaignParams.length>0)try{window.sessionStorage.setItem("constructor_segments",JSON.stringify(urlBasedCampaignParams))}catch{}let storedSegments=[];try{storedSegments=JSON.parse(window.sessionStorage.getItem("constructor_segments"))}catch{}return storedSegments&&storedSegments.length>0&&segments.push(...storedSegments),segments}get hiddenFields(){return[`price_${this.country}`,`compareprice_${this.country}`,`colorCountByMarket.${this.country}`]}get hiddenFacets(){return[`price_${this.country}`]}preFilterExpression(filters,arg_online_availability){let online_availability=arg_online_availability;if(online_availability===void 0){const filterKeys=filters&&Object.keys(filters)||[];online_availability=filterKeys.length!==0&&!filterKeys.includes("store_availability")}const andArray=[{name:"published",value:"True"},{name:"countries_published",value:this.country}];return online_availability&&andArray.push({name:"online_availability",value:"True"}),{and:andArray}}async getRecommendationPod(pod_id,{numResults=20,filters,...options},hideOOS=!1){const recommendationResults=await this.client.recommendations.getRecommendations(pod_id,{numResults,preFilterExpression:this.preFilterExpression(filters,hideOOS),filters,hiddenFacets:this.hiddenFacets,hiddenFields:this.hiddenFields,...options});if(recommendationResults)return{display_name:recommendationResults.response.pod.display_name,result_id:recommendationResults.result_id,products:normalizeProductData(recommendationResults.response.results)}}async getRecommendationTerms(pod_id,{numResults=20,...options}){const recommendationTermResults=await this.client.recommendations.getRecommendations(pod_id,{numResults,...options});if(recommendationTermResults)return{searchTerms:normalizeTermData(recommendationTermResults.response?.results),resultId:recommendationTermResults?.result_id}}async getBrowseProducts(id,{filters={},sortBy="relevance",sortOrder="descending",page=1,resultsPerPage=__DNA_GLOBAL__?.constructor?.resultsPerPage}){const browseData=await this.client.browse.getBrowseResults("group_id",id,{preFilterExpression:this.preFilterExpression(filters),filters,hiddenFacets:this.hiddenFacets,hiddenFields:this.hiddenFields,sortBy,sortOrder,page,resultsPerPage});return normalizeBrowseAndSearchData(browseData,{isSearch:!1})}async getBrowseFilters(id,resultsPerPage){return(await this.client.browse.getBrowseResults("group_id",id,{resultsPerPage,hiddenFacets:this.hiddenFacets,hiddenFields:this.hiddenFields}))?.response?.facets}async getRawSearchResults(term,options){return await this.client.search.getSearchResults(term,options)}async getSearchResults(term,{filters={},sortBy="relevance",sortOrder="descending",page=1,resultsPerPage=__DNA_GLOBAL__?.constructor?.searchResultsPerPage}){const searchResults=await this.client.search.getSearchResults(term,{preFilterExpression:this.preFilterExpression(filters),filters,sortBy,sortOrder,page,resultsPerPage,hiddenFacets:this.hiddenFacets,hiddenFields:this.hiddenFields});return normalizeBrowseAndSearchData(searchResults,{isSearch:!0})}async getAutocompleteProducts(query,numProducts,numSearchSuggestions){if(!query)return[];const response=await this.client.autocomplete.getAutocompleteResults(query,{resultsPerSection:{Products:numProducts,"Search Suggestions":numSearchSuggestions},preFilterExpression:this.preFilterExpression(),hiddenFacets:this.hiddenFacets,hiddenFields:this.hiddenFields}),normalizeProducts=normalizeProductData(response?.sections?.Products);return{searchTerms:normalizeTermData(response?.sections["Search Suggestions"]),products:normalizeProducts}}}export const client=new ConstructorClient;function normalizeProductData(rawData){return!rawData||!Array.isArray(rawData)?[]:rawData.map(product=>({id:product?.data?.id,strategy_id:product?.strategy?.id,title:product?.value,handle:product?.data?.product_handle,onlineStoreUrl:product?.data?.url,sku:product?.data?.sku,featuredMedia:{altText:null,originalSrc:product?.data?.image_url},media:normalizeMediaData(product?.data?.media),facets:product?.data?.facets,is_slotted:product?.is_slotted,result_id:product?.result_id,prices:extractPrefixedValues(product?.data,"price_"),compareAtPrices:extractPrefixedValues(product?.data,"compareprice_"),type:product?.data?.type,barcode:product?.data?.barcode,color:product?.data?.color,giftcard:product?.data?.giftcard,variation_id:product?.data?.variation_id,variants:normalizeVariantData(product?.variations),groups:product?.data?.groups,metafields:{rothys:{badges:product?.data?.badges,maximum_order_quantity:product?.data?.maxorderquantity,preorder_backorder_experience:product?.data?.preorder_backorder_experience,estimated_ship_date:product?.data?.estimated_ship_date,return_rules:product?.data?.return_rules},yotpo:{reviews_count:product?.data?.number_of_total_reviews,reviews_average:product?.data?.avg_review_rating}},marketAvailability:extractPrefixedValues(product?.data,"included_"),available:product?.data?.online_availability,description:null,minPrice:null,maxPrice:null,vendor:null,createdAt:null,updatedAt:null,launchedAt:product?.data?.launched_at||null,publishedAt:null,tags:[`storefront:category:${product?.data?.category}`],options:null,collections:null,isDiscounted:null,addOnItemsPresent:product?.data?.addOnItemsPresent||!1,colorCountByMarket:product?.data?.colorCountByMarket||{},best_selling_30_days:product?.data?.best_selling_30_days||!1,sales_velocity_7_days:product?.data?.sales_velocity_7_days,sales_velocity_30_days:product?.data?.sales_velocity_30_days,sales_velocity_24_hours:product?.data?.sales_velocity_24_hours,primary_badge:product?.data?.primary_badge,primary_badge_type:product?.data?.primary_badge_type,secondary_badge:product?.data?.secondary_badge}))}function extractPrefixedValues(obj,prefix){if(!obj||typeof obj!="object")return{};const priceObj={};for(const key in obj)if(key.startsWith(prefix)){const prefixKey=key.slice(prefix.length);priceObj[prefixKey]=obj[key]}return priceObj}function normalizeMediaData(obj){const schema={type:"image",alt:"",url:""},normalizedObject=[];for(const key in obj){const entry=obj[key];if(!entry.alt_text.startsWith("PDP |")){const normalizedEntry={type:(entry.media_type||schema.type).toLowerCase(),alt:entry.alt_text||schema.alt,url:entry.url||schema.url};normalizedObject.push(normalizedEntry)}}return normalizedObject}function normalizeVariantData(obj){const schema={title:"",available:!1,id:"",sku:"",prices:[],compareAtPrices:[]},normalizedObject=[];for(const key in obj){const entry=obj[key].data,normalizedEntry={title:(entry.size||schema.title).toString(),available:entry.online_availability||schema.available,id:Number.parseInt(entry.variation_id||schema.id),sku:entry.sku,prices:extractPrefixedValues(entry,"price_"),compareAtPrices:extractPrefixedValues(entry,"compareprice_"),variant_position:entry.variant_position,width:entry.width||null,low_stock:entry.low_stock};normalizedObject.push(normalizedEntry)}return normalizedObject.sort((a,b)=>a.variant_position-b.variant_position),normalizedObject}const paginateBrowse=browseResponse=>{const total=browseResponse?.response?.total_num_results,perPage=browseResponse?.request?.num_results_per_page,currentPage=browseResponse?.request?.page,hasNext=total>currentPage*perPage,hasPrev=currentPage>1;return{page:currentPage,total:Math.ceil(total/perPage),hasNext,hasPrev,totalResults:total}},normalizeFiterData=browseResponse=>browseResponse?.response?.facets.map(facet=>({display_name:facet.display_name,name:facet.name,hidden:facet.hidden,type:facet.type,data:facet.data,options:facet?.options.map(option=>({count:option?.count,name:option?.display_name,value:option?.value,status:option?.status})),range:facet?.type==="range"&&{min:facet?.min,max:facet?.max}})),normalizeSortOptionsData=browseResponse=>{const selected=browseResponse?.response?.sort_options?.find(option=>option?.status==="selected");return{options:browseResponse?.response?.sort_options,selected}},normalizeSearchandisingData=browseResponse=>browseResponse?.response?.refined_content?.map(content=>({header_text:content.data.header,body_text:content.data.body,cta_text:content.data.ctaText,cta_link:content.data.ctaLink,second_cta_text:content.data.ctaText2,second_cta_link:content.data.ctaLink2,image_url:content.data.assetUrl,image_alt:content.data.altText,mobile_image_url:content.data.mobileAssetUrl,mobile_image_alt:content.data.mobileAssetAltText,tag_key:content.data.TagKey}));function normalizeBrowseAndSearchData(results,{isSearch=!1}={}){return{products:normalizeProductData(results?.response?.results),searchandising:normalizeSearchandisingData(results),pagination:paginateBrowse(results),filters:normalizeFiterData(results),sort:normalizeSortOptionsData(results),meta:{totalCount:results?.response?.total_num_results||0},redirect:isSearch?void 0:results?.response?.redirect||!1}}function normalizeTermData(obj){const schema={id:""},normalizedObject=[];for(const key in obj){const normalizeEntry={id:obj[key].data.id||schema.id};normalizedObject.push(normalizeEntry)}return normalizedObject}function getUserId(){let userId="";const rothysUserId=window.sessionStorage.getItem("rothys_user_id");return rothysUserId&&(userId=rothysUserId),userId} //# sourceMappingURL=/cdn/shop/t/1163/assets/lib-constructor.js.map?v=170434839191316245371760566305