1import{F as n,P as o,U as c,C as h,a as g,b as d}from"./FiltersArrow-BGaP8X04.js";class f{constructor(){if(this.container=document.querySelector(".pallet-rack"),!this.container){console.warn("[PalletRackFilterManager] Container .pallet-rack not found");return}this.config=this.parseConfig(),this.filterState={select:{},range:{}},this.choicesIntegration=null,this.ajaxClient=null,this.gridRenderer=null,this.urlStateManager=null,this.isLoading=!1,this._clearing=!1,this._hasPendingRequest=!1,this.init()}parseConfig(){const e=this.container.querySelector("[data-filter-config]");if(!e){const t=this.container.dataset.filterConfig;if(t)try{return JSON.parse(t)}catch(i){console.error("[PalletRackFilterManager] Failed to parse filter config:",i)}return{}}try{return JSON.parse(e.dataset.filterConfig)}catch(t){return console.error("[PalletRackFilterManager] Failed to parse filter config:",t),{}}}init(){console.log("[PalletRackFilterManager] Initializing with config:",this.config),this.ajaxClient=new n(this.config.ajax_url,300),this.gridRenderer=new o,this.initializeChoices(),this.bindEvents(),this.urlStateManager=new c,this.urlStateManager.hasFilterParams()?this.restoreStateFromUrl():this.initializeState(),this.urlStateManager.init(this.handlePopState.bind(this)),console.log("[PalletRackFilterManager] Initialization complete"),console.log("[PalletRackFilterManager] Category ID:",this.config.category_id),console.log("[PalletRackFilterManager] Initial state:",this.getFilterState())}initializeChoices(){this.container.querySelectorAll(".js-rack-filter-select").length>0?this.choicesIntegration=new h(this.container,".js-rack-filter-select"):console.log("[PalletRackFilterManager] No rack filter selects found")}bindEvents(){document.addEventListener("choice:changed",this.handleSelectFilterChange.bind(this));const e=this.container.querySelector(".js-clear-rack-filters");e&&e.addEventListener("click",this.handleClearFilters.bind(this))}initializeState(){this.choicesIntegration&&(this.filterState.select=this.choicesIntegration.getAllFilterValues())}restoreStateFromUrl(){const e=this.urlStateManager.parseUrlParameters();if(console.log("[PalletRackFilterManager] Restoring state from URL:",e),this.filterState.select=e.select||{},this.filterState.range=e.range||{},this.choicesIntegration)for(const[t,i]of Object.entries(e.select||{}))this.choicesIntegration.setSelectedValues(t,i);this.updateClearButtonVisibility(),this.logFilterState(),this.applyFilters()}handleSelectFilterChange(e){const{filterKey:t,selectedValues:i,filterType:r}=e.detail;this.container.querySelector(`[name="${t}"]`)&&(this._clearing||(console.log("[PalletRackFilterManager] Filter changed:",{filterKey:t,selectedValues:i,filterType:r}),i.length>0?this.filterState.select[t]=i:delete this.filterState.select[t],this.logFilterState(),this.updateClearButtonVisibility(),this.emitFiltersChanged(),this.applyFilters()))}async handleClearFilters(){if(console.log("[PalletRackFilterManager] Clearing all filters"),this._clearing=!0,this.choicesIntegration&&this.choicesIntegration.clearAllSelections(),this.filterState.select={},this.urlStateManager&&this.urlStateManager.clearUrl(),this.logFilterState(),this.updateClearButtonVisibility(),this.emitFiltersChanged(),this._clearing=!1,!this.config.category_id){console.error("[PalletRackFilterManager] No category ID found in config");return}this.isLoading=!0,this.disableFilters(),this.gridRenderer.showLoading();try{const e=await this.ajaxClient.sendImmediateRequest(this.filterState,this.config.category_id,this.config.orderby);e&&this.handleAjaxSuccess(e)}catch(e){this.handleAjaxError(e)}finally{this.isLoading=!1,this.enableFilters(),this.gridRenderer.hideLoading()}}getFilterState(){return{select:{...this.filterState.select},range:{...this.filterState.range}}}hasActiveFilters(){return Object.keys(this.filterState.select).length>0}getActiveFilterCount(){let e=0;for(const t of Object.values(this.filterState.select))e+=t.length;return e}updateClearButtonVisibility(){const e=this.container.querySelector(".js-clear-rack-filters");e&&(e.style.display=this.hasActiveFilters()?"inline-block":"none")}logFilterState(){console.log("=".repeat(50)),console.log("[PalletRackFilterManager] Current Filter State:"),console.log("Select filters:",this.filterState.select),console.log("Has active filters:",this.hasActiveFilters()),console.log("=".repeat(50))}emitFiltersChanged(){const e=new CustomEvent("filters:changed",{bubbles:!0,detail:{state:this.getFilterState(),hasActiveFilters:this.hasActiveFilters(),activeFilterCount:this.getActiveFilterCount(),config:this.config}});document.dispatchEvent(e)}
1async applyFilters(){if(!this.config.category_id){console.error("[PalletRackFilterManager] No category ID found in config");return}if(this.isLoading){this._hasPendingRequest=!0;return}this.isLoading=!0,this.disableFilters(),this.gridRenderer.showLoading();try{const e=await this.ajaxClient.sendRequest(this.filterState,this.config.category_id,this.config.orderby);e&&this.handleAjaxSuccess(e)}catch(e){this.handleAjaxError(e)}finally{this.isLoading=!1,this.enableFilters(),this.gridRenderer.hideLoading(),this._hasPendingRequest&&(this._hasPendingRequest=!1,this.applyFilters())}}handleAjaxSuccess(e){console.log("[PalletRackFilterManager] AJAX success:",{product_count:e.product_count,has_filters:!!e.filters}),e.product_count===0?this.gridRenderer.showNoResults():(this.gridRenderer.renderProducts(e.html,e.product_count),this.gridRenderer.reInitializeProductScripts()),this.updateArchiveCount(e.product_count),e.filters&&this.updateFilterOptions(e.filters),this.urlStateManager&&this.urlStateManager.updateUrl(this.filterState)}handleAjaxError(e){var i;console.error("[PalletRackFilterManager] AJAX error:",e);const t=((i=this.config.strings)==null?void 0:i.error)||"WystÄ
piÅ bÅÄ
d podczas filtrowania.";this.gridRenderer.showError(t)}updateArchiveCount(e){const t=document.querySelector(".js-archive-product-count");if(!t)return;let i;e===1?i="produkt":e>=2&&e<=4||e>20&&(e%10===2||e%10===3||e%10===4)?i="produkty":i="produktów",t.textContent=`(${e} ${i})`}updateFilterOptions(e){if(this.choicesIntegration){for(const[t,i]of Object.entries(e))if(i.options){const r=Object.entries(i.options).map(([s,a])=>({value:s,label:a.label,count:a.count,selected:a.selected}));this.choicesIntegration.updateChoiceOptions(t,r)}}}disableFilters(){this.choicesIntegration&&this.choicesIntegration.disableAllChoices()}enableFilters(){this.choicesIntegration&&this.choicesIntegration.enableAllChoices()}destroy(){console.log("[PalletRackFilterManager] Destroying..."),document.removeEventListener("choice:changed",this.handleSelectFilterChange),this.choicesIntegration&&this.choicesIntegration.destroy(),this.ajaxClient&&this.ajaxClient.destroy(),this.gridRenderer&&this.gridRenderer.destroy(),this.urlStateManager&&this.urlStateManager.destroy(),this.filterState={select:{},range:{}},this.isLoading=!1,console.log("[PalletRackFilterManager] Destroyed")}async handlePopState(e){if(console.log("[PalletRackFilterManager] Popstate triggered:",e),this.filterState.select=e.select||{},this.choicesIntegration){this.choicesIntegration.clearAllSelections();for(const[t,i]of Object.entries(e.select||{}))this.choicesIntegration.setSelectedValues(t,i)}this.updateClearButtonVisibility(),await this.applyFilters()}}const l=new f,u=new g(l);new d(l,u);window.palletRackFilterManager=l;console.log("[palletRackFilters] Module loaded");
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.