PageSourceSearch

https://thistletavern.com/cdn/shop/t/24/assets/facets.js?v=180213177704946072441789716391

js thistletavern.com collected 2026-10-03 21:36:47 UTC 14,743 bytes, 1 lines download raw bytes

1class FacetFiltersForm extends HTMLElement{constructor(){super(),this.onActiveFilterClick=this.onActiveFilterClick.bind(this),this.debouncedOnSubmit=debounce(e=>{this.onSubmitHandler(e)},800);const e=this.querySelector("form");e.addEventListener("input",this.debouncedOnSubmit.bind(this)),e.addEventListener("change",e=>{"SELECT"===e.target.tagName&&this.debouncedOnSubmit(e)});const t=this.querySelector("#FacetsWrapperDesktop");t&&t.addEventListener("keyup",onKeyUpEscape)}static setListeners(){window.addEventListener("popstate",e=>{const t=e.state?e.state.searchParams:FacetFiltersForm.searchParamsInitial;t!==FacetFiltersForm.searchParamsPrev&&FacetFiltersForm.renderPage(t,null,!1)})}static toggleActiveFacets(e=!0){document.querySelectorAll(".js-facet-remove").forEach(t=>{t.classList.toggle("disabled",e)})}static renderPage(e,t,r=!0){FacetFiltersForm.searchParamsPrev=e;const o=FacetFiltersForm.getSections(),i=document.getElementById("ProductCount"),a=document.getElementById("ProductCountDesktop");document.querySelectorAll(".facets-container .loading__spinner, facet-filters-form .loading__spinner").forEach(e=>e.classList.remove("hidden")),document.getElementById("ProductGridContainer").querySelector(".collection").classList.add("loading"),i&&i.classList.add("loading"),a&&a.classList.add("loading"),o.forEach(r=>{const o=`${window.location.pathname}?section_id=${r.section}&${e}`,i=e=>e.url===o;FacetFiltersForm.filterData.some(i)?FacetFiltersForm.renderSectionFromCache(i,t):FacetFiltersForm.renderSectionFromFetch(o,t)}),r&&FacetFiltersForm.updateURLHash(e)}static renderSectionFromFetch(e,t){fetch(e).then(e=>e.text()).then(r=>{const o=r;FacetFiltersForm.filterData=[...FacetFiltersForm.filterData,{html:o,url:e}],FacetFiltersForm.renderFilters(o,t),FacetFiltersForm.renderProductGridContainer(o),FacetFiltersForm.renderProductCount(o),FacetFiltersForm.syncRarityFilterActiveState(),"function"==typeof initializeScrollAnimationTrigger&&initializeScrollAnimationTrigger(o.innerHTML)})}static renderSectionFromCache(e,t){const r=FacetFiltersForm.filterData.find(e).html;FacetFiltersForm.renderFilters(r,t),FacetFiltersForm.renderProductGridContainer(r),FacetFiltersForm.renderProductCount(r),FacetFiltersForm.syncRarityFilterActiveState(),"function"==typeof initializeScrollAnimationTrigger&&initializeScrollAnimationTrigger(r.innerHTML)}static renderProductGridContainer(e){document.getElementById("ProductGridContainer").innerHTML=(new DOMParser).parseFromString(e,"text/html").getElementById("ProductGridContainer").innerHTML,document.getElementById("ProductGridContainer").querySelectorAll(".scroll-trigger").forEach(e=>{e.classList.add("scroll-trigger--cancel")}),FacetFiltersForm.resetContextualPriceSort(),FacetFiltersForm.initContextualPriceSortGrid({scrollToTop:!0})}static renderProductCount(e){const t=(new DOMParser).parseFromString(e,"text/html").getElementById("ProductCount").innerHTML,r=document.getElementById("ProductCount"),o=document.getElementById("ProductCountDesktop");r.innerHTML=t,r.classList.remove("loading"),o&&(o.innerHTML=t,o.classList.remove("loading"));document.querySelectorAll(".facets-container .loading__spinner, facet-filters-form .loading__spinner").forEach(e=>e.classList.add("hidden"))}static renderFilters(e,t){const r=(new DOMParser).parseFromString(e,"text/html"),o=r.querySelectorAll("#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter"),i=document.querySelectorAll("#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter");Array.from(i).forEach(e=>{Array.from(o).some(({id:t})=>e.id===t)||e.remove()});const a=e=>{const r=t?t.target.closest(".js-filter"):void 0;return!!r&&e.id===r.id},n=Array.from(o).filter(e=>!a(e)),c=Array.from(o).find(a);if(n.forEach((e,t)=>{if(document.getElementById(e.id))document.getElementById(e.id).innerHTML=e.innerHTML;else{if(t>0){const{className:r,id:o}=n[t-1];if(e.className===r)return void document.getElementById(o).after(e)}e.parentElement&&document.querySelector(`#${e.parentElement.id} .js-filter`).before(e)}}),FacetFiltersForm.renderActiveFacets(r),FacetFiltersForm.renderAdditionalElements(r),c){const e=t.target.closest(".
1js-filter").id;if(e){FacetFiltersForm.renderCounts(c,t.target.closest(".js-filter")),FacetFiltersForm.renderMobileCounts(c,document.getElementById(e));const r=document.getElementById(e),o=r.classList.contains("mobile-facets__details")?".mobile-facets__close-button":".facets__summary",i=r.querySelector(o),a="text"===t.target.getAttribute("type");i&&!a&&i.focus()}}}static renderActiveFacets(e){[".active-facets-mobile",".active-facets-desktop"].forEach(t=>{const r=e.querySelector(t);r&&(document.querySelector(t).innerHTML=r.innerHTML)}),FacetFiltersForm.toggleActiveFacets(!1)}static renderAdditionalElements(e){[".mobile-facets__open",".mobile-facets__count",".sorting"].forEach(t=>{e.querySelector(t)&&(document.querySelector(t).innerHTML=e.querySelector(t).innerHTML)}),document.getElementById("FacetFiltersFormMobile")?.closest("menu-drawer")?.bindEvents()}static renderCounts(e,t){const r=t.querySelector(".facets__summary"),o=e.querySelector(".facets__summary");o&&r&&(r.outerHTML=o.outerHTML);const i=t.querySelector(".facets__header"),a=e.querySelector(".facets__header");a&&i&&(i.outerHTML=a.outerHTML);const n=t.querySelector(".facets-wrap"),c=e.querySelector(".facets-wrap");if(c&&n){Boolean(t.querySelector("show-more-button .label-show-more.hidden"))&&c.querySelectorAll(".facets__item.hidden").forEach(e=>e.classList.replace("hidden","show-more-item")),n.outerHTML=c.outerHTML}}static renderMobileCounts(e,t){const r=t.querySelector(".mobile-facets__list"),o=e.querySelector(".mobile-facets__list");o&&r&&(r.outerHTML=o.outerHTML)}static updateURLHash(e){history.pushState({searchParams:e},"",`${window.location.pathname}${e&&"?".concat(e)}`),FacetFiltersForm.syncRarityFilterActiveState()}static buildSearchParams(e){const t=new URLSearchParams(window.location.search);if(t.delete("page"),t.delete("section_id"),!e)return t.toString();const r=new FormData(e);if("FacetSortForm"===e.id||"FacetSortDrawerForm"===e.id||"FacetFiltersFormMobile"===e.id&&r.has("sort_by")&&!e.classList.contains("mobile-facets")){const e=r.get("sort_by");return e&&t.set("sort_by",e),t.toString()}if("FacetFiltersForm"===e.id||e.classList.contains("mobile-facets")){if([...t.keys()].forEach(e=>{e.startsWith("filter.")&&t.delete(e)}),r.forEach((e,r)=>{r.startsWith("filter.")&&t.append(r,e),"sort_by"===r&&t.set("sort_by",e)}),!t.has("sort_by")){const e=document.getElementById("FacetSortDrawerForm")||document.getElementById("FacetSortForm");if(e){const r=new FormData(e).get("sort_by");r&&t.set("sort_by",r)}}return t.toString()}return r.forEach((e,r)=>{t.delete(r),t.append(r,e)}),t.toString()}static onRarityFilterClick(e){const t=e.getAttribute("href")||"",r=t.indexOf("?"),o=new URLSearchParams(-1===r?"":t.slice(r+1)),i=new URLSearchParams(window.location.search);i.has("sort_by")&&o.set("sort_by",i.get("sort_by")),FacetFiltersForm.toggleActiveFacets(),FacetFiltersForm.renderPage(o.toString())}static syncRarityFilterActiveState(){const e=new URLSearchParams(window.location.search),t=new Set(e.getAll("filter.p.m.custom.rarity"));document.querySelectorAll(".js-rarity-filter").forEach(e=>{const r=e.dataset.filterValue,o=null!=r&&t.has(r);e.classList.toggle("is-active",o),e.setAttribute("aria-pressed",o?"true":"false")})}static isContextualPriceSortActive(){const e=new URLSearchParams(window.location.search),t=e.get("sort_by");return("price-ascending"===t||"price-descending"===t)&&[...e.keys()].some(e=>e.startsWith("filter."))}static resetContextualPriceSort(){FacetFiltersForm.contextualPriceSortGeneration+=1,FacetFiltersForm.contextualPriceSort={allItems:[],displayedCount:0,pageSize:16}}static scrollToProductGrid(){const e=document.getElementById("ProductGridContainer");e&&e.scrollIntoView({behavior:"smooth",block:"start"})}static getProductGridItemPrice(e){const t="price-descending"===new URLSearchParams(window.location.search).get("sort_by")?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,r=e.querySelector("[data-variant-price]");if(!r)return t;const o=Number(r.dataset.variantPrice);return Number.isFinite(o)?o:t}static sortProductGridItems(e){const t="price-descending"===new URLSearchParams(window.location.search).get("sort_by");return[...e].sort((e,r)=>{const o=FacetFiltersForm.getProductGridItemPrice(e)-FacetFiltersForm.getProductGridItemPrice(r);return t?-o:o})}static parseProductGridItems(e){const t=(new DOMParser).parseFromString(e,"text/html");return Array.from(t.querySelectorAll("#product-grid > li.grid__item"))}static fetchCollectionSectionPage(e,t,r){const o=new URLSearchParams(r);o.delete("page"),o.delete("section_id"),o.set("page",String(t));const i=`${window.location.pathname}?section_id=${e}&${o.toString()}`;return fetch(i).then(e=>e.text())}static configureContextualLoadMoreButton(e,t,r){e&&(e.dataset.originalText=e.dataset.originalText||e.textContent.trim(),e.dataset.contextualSort="true",e.dataset.displayedCount=String(t),e.dataset.totalItems=String(r),e.disabled=!1,e.classList.remove("loading"),e.textContent=e.dataset.originalText,t>=r&&e.closest(".collection-load-more-wrapper")?.remove())}static async initContextualPriceSortGrid({scrollToTop:e=!1}={}){if(!FacetFiltersForm.isContextualPriceSortActive())return void FacetFiltersForm.resetContextualPriceSort();const t=FacetFiltersForm.contextualPriceSortGeneration,r=document.getElementById("product-grid");if(!r)return;const o=r.dataset.id,i=document.getElementById("ProductGridContainer")?.querySelector(".collection"),a=document.querySelector('.collection-load-more-button[data-section-id="'+o+'"]'),n=Number(a?.dataset.totalPages||1),c=Array.from(r.querySelectorAll(":scope > li.grid__item")),s=c.length||16;i?.classList.add("loading"),a&&(a.disabled=!0,a.classList.add("loading"));try{let i=[...c];if(n>1){const e=window.location.search.slice(1),r=await Promise.all(Array.from({length:n-1},(t,r)=>FacetFiltersForm.fetchCollectionSectionPage(o,r+2,e)));if(t!==FacetFiltersForm.contextualPriceSortGeneration)return;
1r.forEach(e=>{i.push(...FacetFiltersForm.parseProductGridItems(e))})}if(i=FacetFiltersForm.sortProductGridItems(i),t!==FacetFiltersForm.contextualPriceSortGeneration)return;const l=Math.min(s,i.length);FacetFiltersForm.contextualPriceSort={allItems:i,displayedCount:l,pageSize:s},r.replaceChildren(...i.slice(0,l)),FacetFiltersForm.configureContextualLoadMoreButton(a,l,i.length),e&&FacetFiltersForm.scrollToProductGrid(),"function"==typeof initializeScrollAnimationTrigger&&initializeScrollAnimationTrigger()}catch(e){console.error("Contextual price sort failed",e),a&&(a.disabled=!1,a.classList.remove("loading"))}finally{i?.classList.remove("loading")}}static appendContextualPriceSortPage(e){const t=FacetFiltersForm.contextualPriceSort;if(!t.allItems.length)return;const r=document.getElementById("product-grid");if(!r)return;const o=Math.min(t.displayedCount+t.pageSize,t.allItems.length),i=t.allItems.slice(t.displayedCount,o);i.length?(i.forEach(e=>r.appendChild(e)),t.displayedCount=o,FacetFiltersForm.configureContextualLoadMoreButton(e,o,t.allItems.length),"function"==typeof initializeScrollAnimationTrigger&&initializeScrollAnimationTrigger()):e.closest(".collection-load-more-wrapper")?.remove()}static getSections(){return[{section:document.getElementById("product-grid").dataset.id}]}createSearchParams(e){const t=new FormData(e);return new URLSearchParams(t).toString()}onSubmitForm(e,t){FacetFiltersForm.renderPage(e,t)}onSubmitHandler(e){e.preventDefault();const t=e.target.closest("form"),r=FacetFiltersForm.buildSearchParams(t);this.onSubmitForm(r,e)}onActiveFilterClick(e){e.preventDefault(),FacetFiltersForm.toggleActiveFacets();const t=-1==e.currentTarget.href.indexOf("?")?"":e.currentTarget.href.slice(e.currentTarget.href.indexOf("?")+1);FacetFiltersForm.renderPage(t)}}FacetFiltersForm.filterData=[],FacetFiltersForm.searchParamsInitial=window.location.search.slice(1),FacetFiltersForm.searchParamsPrev=window.location.search.slice(1),FacetFiltersForm.contextualPriceSortGeneration=0,FacetFiltersForm.contextualPriceSort={allItems:[],displayedCount:0,pageSize:16},customElements.define("facet-filters-form",FacetFiltersForm),FacetFiltersForm.setListeners();class PriceRange extends HTMLElement{constructor(){super(),this.querySelectorAll("input").forEach(e=>{e.addEventListener("change",this.onRangeChange.bind(this)),e.addEventListener("keydown",this.onKeyDown.bind(this))}),this.setMinAndMaxValues()}onRangeChange(e){this.adjustToValidValues(e.currentTarget),this.setMinAndMaxValues()}onKeyDown(e){if(e.metaKey)return;e.key.match(/[0-9]|\.|,|'| |Tab|Backspace|Enter|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Delete|Escape/)||e.preventDefault()}setMinAndMaxValues(){const e=this.querySelectorAll("input"),t=e[0],r=e[1];r.value&&t.setAttribute("data-max",r.value),t.value&&r.setAttribute("data-min",t.value),""===t.value&&r.setAttribute("data-min",0),""===r.value&&t.setAttribute("data-max",r.getAttribute("data-max"))}adjustToValidValues(e){const t=Number(e.value),r=Number(e.getAttribute("data-min")),o=Number(e.getAttribute("data-max"));t<r&&(e.value=r),t>o&&(e.value=o)}}customElements.define("price-range",PriceRange);class FacetRemove extends HTMLElement{constructor(){super();const e=this.querySelector("a");e.setAttribute("role","button"),e.addEventListener("click",this.closeFilter.bind(this)),e.addEventListener("keyup",e=>{e.preventDefault(),"SPACE"===e.code.toUpperCase()&&this.closeFilter(e)})}closeFilter(e){e.preventDefault();(this.closest("facet-filters-form")||document.querySelector("facet-filters-form")).onActiveFilterClick(e)}}function syncCollectionSortChipValue(e){const t=e.closest(".collection-sort-chip");if(!t)return;const r=t.querySelector(".collection-sort-chip__value"),o=e.options[e.selectedIndex];r&&o&&(r.textContent=o.text)}function initCollectionSortChips(){document.querySelectorAll(".collection-sort-chip select").forEach(syncCollectionSortChipValue)}customElements.define("facet-remove",FacetRemove),document.addEventListener("change",e=>{e.target.matches(".collection-sort-chip select")&&syncCollectionSortChipValue(e.target)}),document.addEventListener("DOMContentLoaded",()=>{initCollectionSortChips(),FacetFiltersForm.syncRarityFilterActiveState(),FacetFiltersForm.initContextualPriceSortGrid()}),document.addEventListener("shopify:section:load",()=>{initCollectionSortChips(),FacetFiltersForm.syncRarityFilterActiveState(),FacetFiltersForm.initContextualPriceSortGrid()}),document.addEventListener("click",e=>
1{const t=e.target.closest(".js-rarity-filter");t&&(e.preventDefault(),FacetFiltersForm.onRarityFilterClick(t))});

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.