1const pageLoadTime=Math.round(new Date().getTime()/1e3),preorderTime=Math.round(pageLoadTime+3600*24*90),publishStatusWidgetGroupings={published:{title:"Published",test:item=>new Date(+item.name*1e3).getTime()<=pageLoadTime*1e3,refinements:{"<=":pageLoadTime}},preorder:{title:"Pre-order",test:item=>{const publishedTime=new Date(+item.name*1e3).getTime()/1e3;return publishedTime>pageLoadTime&&publishedTime<=preorderTime},refinements:{">":pageLoadTime,"<=":preorderTime},additionalRefinements:{exclusions:{"options.format":"ebook"}}},notForPurchase:{title:"Available soon",test:item=>new Date(+item.name*1e3).getTime()/1e3>preorderTime,refinements:{">":preorderTime}}},applyPublishStatusGrouping=(helper,attribute,grouping)=>{for(const[operator,value]of Object.entries(grouping.refinements))helper.addNumericRefinement(attribute,operator,value);if(grouping.additionalRefinements&&grouping.additionalRefinements.exclusions)for(const[attribute2,value]of Object.entries(grouping.additionalRefinements.exclusions))helper.state.facets.includes(attribute2)||helper.state.facets.push(attribute2),helper.addExclude(attribute2,value)},removePublishStatusGrouping=(helper,attribute,grouping)=>{for(const[operator,value]of Object.entries(grouping.refinements))helper.removeNumericRefinement(attribute,operator,value);if(grouping.additionalRefinements&&grouping.additionalRefinements.exclusions)for(const[attribute2,value]of Object.entries(grouping.additionalRefinements.exclusions))helper.state.facets.includes(attribute2)||helper.state.facets.push(attribute2),helper.removeExclude(attribute2,value)},createPublishStatusWidgetRenderer=({container})=>{const containerNode=typeof container=="string"?document.querySelector(container):container;return{render:({items,refine})=>{containerNode.innerHTML=` 2 <div class="ais-RefinementList ais-facet"> 3 <ul class="ais-RefinementList-list"> 4 ${items.sort((a,b)=>a.isChecked&&!b.isChecked?-1:b.isChecked&&!a.isChecked?1:Object.keys(publishStatusWidgetGroupings).indexOf(a.key)-Object.keys(publishStatusWidgetGroupings).indexOf(b.key)).map(item=>` 5 <li class="ais-RefinementList-item ais-facet--item"> 6 <div> 7 <label class="ais-RefinementList-label ais-facet--label" title=""> 8 <input class="ais-RefinementList-checkbox ais-facet--checkbox" type="checkbox" data-key="${item.key}"${item.isChecked?' checked="checked"':""} /> 9 ${item.grouping.title} 10 </label> 11 </div> 12 </li> 13 `).join("")} 14 </ul> 15 </div> 16 `,refine&&containerNode.querySelectorAll("input").forEach(input=>{input.addEventListener("change",event=>{const key=event.target.dataset.key,grouping=publishStatusWidgetGroupings[key];refine(grouping)})})},dispose:()=>{containerNode.innerHTML=""}}},isGroupingSelected=(helper,attribute,grouping)=>Object.entries(grouping.refinements).every(([operator,value])=>(helper.getNumericRefinement(attribute,operator)||[]).includes(value)),connectPublishStatusWidget=(renderFn,unmountFn=()=>{})=>widgetParams=>{const{attribute}=widgetParams,connectorState={items:[],refine:!1,widgetParams},getSelectedKeysFromSearchParameters=searchParameters=>{const numeric=(searchParameters.numericRefinements||{})[attribute]||{};return Object.keys(publishStatusWidgetGroupings).filter(key=>{const grouping=publishStatusWidgetGroupings[key];return Object.entries(grouping.refinements).every(([operator,value])=>(numeric[operator]||[]).includes(value))})};return{$$type:"harpercollins.publishStatusWidget",getWidgetRenderState({results,helper}){if(!results)return connectorState.items=[],connectorState.refine=!1,connectorState;const groupedItems=(results.getFacetValues(attribute,{sortBy:["name:asc"]})||[]).reduce((acc,item)=>{const matchingGroupingKvp=Object.entries(publishStatusWidgetGroupings).find(([key,grouping])=>grouping.test(item));if(matchingGroupingKvp){const key=matchingGroupingKvp[0];acc[key]?acc[key]++:acc[key]=1}return acc},{});for(const key of Object.keys(publishStatusWidgetGroupings))groupedItems[key]||(groupedItems[key]=0);return connectorState.items=Object.entries(groupedItems).map(([key,count])=>({key,grouping:publishStatusWidgetGroupings[key],count,isChecked:isGroupingSelected(helper,attribute,publishStatusWidgetGroupings[key])})),connectorState.refine||(connectorState.refine=grouping=>{isGroupingSelected(helper,attribute,grouping)?removePublishStatusGrouping(helper,attribute,grouping):applyPublishStatusGrouping(helper,attribute,grouping),helper.search()}),connectorState},getRenderState(renderState,renderOptions){return{...renderState,publishStatus:{...renderState.publishStatus,[attribute]:this.getWidgetRenderState(renderOptions)}}},init(initOptions){const{instantSearchInstance}=initOptions;renderFn({...this.getWidgetRenderState(initOptions),instantSearchInstance},!0)},render(renderOptions){const{instantSearchInstance}=renderOptions;renderFn({...this.getWidgetRenderState(renderOptions),instantSearchInstance},!1)},dispose(disposeOptions){unmountFn()},getWidgetUiState(uiState,{searchParameters}){const values=getSelectedKeysFromSearchParameters(searchParameters),refinementList={...uiState.refinementList||{}};return values.length?refinementList[attribute]=values:delete refinementList[attribute],{...uiState,refinementList}},getWidgetState(uiState,{searchParameters}){return this.getWidgetUiState(uiState,{searchParameters})},getWidgetSearchParameters(searchParameters,{uiState}){let state=searchParameters.addFacet(attribute);const values=uiState.refinementList&&uiState.refinementList[attribute];for(const value of values||[]){const grouping=publishStatusWidgetGroupings[value];if(grouping)for(const[operator,value2]of Object.entries(grouping.refinements))state=state.addNumericRefinement(attribute,operator,value2)}return state}}},publishStatusWidget=params=>{const{container,...connectorParams}=params,{render,dispose}=createPublishStatusWidgetRenderer({container});return{...connectPublishStatusWidget(render,dispose)(connectorParams),$$widgetType:"harpercollins.publishStatusWidget"}};(function(algolia){"use strict";var rangeSlider=algolia.externals.widgets.rangeSlider,menu=algolia.externals.widgets.menu,refinementList=algolia.externals.widgets.refinementList,TYPES_TO_WIDGET={slider:{name:"rangeSlider",useDefault:!0,widget:rangeSlider},menu:{name:"menu",params:{limit:6,showMore:!0,showMoreLimit:200},widget:menu},conjunctive:{name:"refinementList",params:{operator:"and",limit:6,showMore:!0,showMoreLimit:200},widget:refinementList},disjunctive:{name:"refinementList",params:{operator:"or",limit:6,showMore:!0,showMoreLimit:200},widget:refinementList},publishStatus:{name:"publishStatus",params:{showMoreLimit:1e5},widget:publishStatusWidget}},sortByRefined=function(sortFunction){return function(a,b){if(a.refined!==b.refined){if(a.refined)return-1;if(b.refined)return 1}return sortFunction(a,b)}};algolia.facetSortFunctions={price_range:sortByRefined(function(a,b){return a.name.length===b.name.length?a.name.localeCompare(b.name):a.name.length-b.name.length}),inventory_available:function(a,b){const orders={true:1,false:2};return orders[a.name]-orders[b.name]}},algolia.facetDisplayFunctions={price_range:function(value){var values=value.split(":");return values.map(function(e){return algolia.formatMoney(Number(e)*100).replace(/\.\d+/,"")}).join(" - ")}
16,inventory_available:function(value){return{true:"In Stock",false:"Out Of Stock"}[value]}},algolia.facetCssClasses={root:"ais-facet",header:"ais-facet--header",body:"ais-facet--body",item:"ais-facet--item",label:"ais-facet--label",checkbox:"ais-facet--checkbox",active:"ais-facet--active",count:"ais-facet--count"},window.showStockStatusFacet&&algolia.config.facets.splice(0,0,{name:"inventory_available",title:"Stock Status",searchable:!1,enabled:!0,available_types:["disjunctive"],type:"disjunctive"}),window.showPublicationStatusFacet&&algolia.config.facets.splice(0,0,{name:"meta.hc-defined.publishdtimestamp",title:"Publication Status",searchable:!1,enabled:!0,available_types:["publishStatus"],type:"publishStatus"}),algolia.config.facets.splice(0,0,{name:"options.format",title:"Format",searchable:!1,enabled:!0,available_types:["hidden"],type:"hidden"});var enabledFacets=algolia.config.facets.filter(function(facet){return facet.enabled||parseInt(facet.enabled,10)});algolia.facets=enabledFacets.map(function(facet){return algolia.assign({},facet,{escapedName:encodeURIComponent(facet.name)})}),algolia.shownFacets=algolia.facets.filter(function(facet){return facet.type!=="hidden"}),algolia.hiddenFacets=algolia.config.facets.filter(function(facet){return facet.type==="hidden"});var facetToWidget=function(facet){var widget=TYPES_TO_WIDGET[facet.type],params=algolia.assign({},widget.params);params.container="[class~='ais-facet-"+facet.escapedName+"-container']",params.attribute=facet.name,params.templates={},params.cssClasses=algolia.facetCssClasses,facet.searchable&&(params.searchForFacetValues={placeholder:"Search for "+facet.name,isAlwaysActive:!0},params.searchForFacetValues.templates={noResults:"<div> No matching "+facet.name+"</div>"}),params.templates.header=function(){return facet.title},widget.useDefault||(params.templates.item=algolia.getTemplate("instant_search_facet_item")),algolia.facetSortFunctions[facet.name]&&(params.sortBy=algolia.facetSortFunctions[facet.name]);var displayFunction=algolia.facetDisplayFunctions[facet.name];return params.transformItems=function(items){return items.map(function(item){var transformedItem=algolia.assign({},item),label=item.value,labelHandleized=label.replace(/\W+/g,"-").toLowerCase();return transformedItem.type={},transformedItem.type[facet.type]=!0,transformedItem.label=displayFunction?displayFunction(item.value):item.value,transformedItem.is_color=facet.name=="options.color",transformedItem.swatch=facet.name=="options.color"?"//cdn.shopify.com/s/files/1/0076/8088/4813/files/color-"+labelHandleized+".png":"",transformedItem.facet={title:facet.title},transformedItem})},{name:widget.name,params,widget:widget.widget}},collection_facets=algolia.current_collection_id&&algolia.config.collection_facets&&algolia.config.collection_facets[algolia.current_collection_id]?algolia.config.collection_facets[algolia.current_collection_id]:algolia.config.collection_facets&&algolia.config.collection_facets.default;if(collection_facets){var enabledCollectionFacets=collection_facets.filter(function(facet){return facet.enabled||parseInt(facet.enabled,10)});algolia.collectionFacets=enabledCollectionFacets.map(function(facet){return algolia.assign({},facet,{escapedName:encodeURIComponent(facet.name)})}),algolia.collectionShownFacets=algolia.collectionFacets.filter(function(facet){return facet.type!=="hidden"}),algolia.collectionHiddenFacets=collection_facets.filter(function(facet){return facet.type==="hidden"}),algolia.collectionFacetsWidgets=algolia.collectionShownFacets.map(facetToWidget)}algolia.facetsWidgets=algolia.shownFacets.map(facetToWidget)})(window.algoliaShopify); 17//# sourceMappingURL=/cdn/shop/t/9/assets/algolia_facets.js.map?v=105611019149675684701769017100
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.