PageSourceSearch

https://www.lyleandscott.com/cdn/shop/t/458/assets/algolia-filter-utils.js?v=94076911290993508741788364383

js lyleandscott.com collected 2026-09-24 22:59:47 UTC 2,319 bytes, 2 lines download raw bytes

1const DEFAULT_SEARCH_FILTERS=[{labelKey:"colour",value:"metafields.colour.colour_swatch_name"},{labelKey:"size",value:"sizesAvailable"},{labelKey:"price",value:"price"}];export function buildAlgoliaFilters({baseFilters=[],facets={},includeRefinements=!0,ranges={}}={}){const filters=baseFilters.filter(Boolean);return includeRefinements&&(Object.entries(facets).forEach(([attribute,values])=>{values.length&&filters.push(`(${values.map(value=>`${attribute}:"${escapeAlgoliaFilterValue(value)}"`).join(" OR ")})`)}),Object.entries(ranges).forEach(([attribute,range])=>{const hasMin=range.min!==null&&range.min!==void 0&&String(range.min).trim()!=="",hasMax=range.max!==null&&range.max!==void 0&&String(range.max).trim()!=="",min=Number(range.min),max=Number(range.max);hasMin&&Number.isFinite(min)&&filters.push(`${attribute} >= ${min}`),hasMax&&Number.isFinite(max)&&filters.push(`${attribute} <= ${max}`)})),filters.join(" AND ")}export function defaultSearchFilterOptions(filterLabels={}){return DEFAULT_SEARCH_FILTERS.map(filter=>({label:filterLabels[filter.labelKey]||filter.labelKey,value:filter.value}))}export function resolveFilterOptions({filterOptions=[],includeFilter=()=>!0,marketHandle=""}={}){return filterOptions.map(filter=>isPriceAttribute(filter.value)?{...filter,value:`price.${marketHandle}.amount`}:filter).filter(filter=>filter.value).filter(includeFilter)}export function isPriceAttribute(attribute){return String(attribute).toLowerCase().includes("price")}export function rangeBounds(stats){const max=Math.ceil(Number(stats.max||0)*1.25/5)*5;return{min:0,max:Math.max(max,Math.ceil(stats.max||0))}}export function rangeTicks(min,max){const step=(max-min)/5;return Array.from({length:6},(_,index)=>String(Math.round(min+step*index)))}export function rangeStyle(min,max,bounds){return`--range-start: ${rangePercent(min,bounds)}%; --range-end: ${rangePercent(max,bounds)}%;`}export function rangePercent(value,bounds){const range=bounds.max-bounds.min;return range?(Number(value)-bounds.min)/range*100:0}export function clamp(value,min,max){return Math.min(Math.max(value,min),max)}export function escapeAlgoliaFilterValue(value){return String(value).replace(/\\/g,"\\\\").replace(/"/g,'\\"')}
2//# sourceMappingURL=/cdn/shop/t/458/assets/algolia-filter-utils.js.map?v=94076911290993508741788364383

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.