PageSourceSearch

https://fairinvestments.se/wp-content/themes/generation-theme/asse…/modules/listing.min.js?ver=2.13.39

js fairinvestments.se collected 2026-10-02 23:55:02 UTC 13,949 bytes, 1 lines download raw bytes

1class ListingModule{static setupModules(){const t=document.querySelectorAll(".gt-module-listing");for(const e of t){const t=new ListingModule(e);e.gtModule=t,t.init()}}constructor(t){this.moduleEl=t,this.uid=this.moduleEl.dataset.uid,this.showFilter="false"!==this.moduleEl.dataset.showFilter,this.baseUrl=this.moduleEl.dataset.baseUrl||"",this.paginationType=this.moduleEl.dataset.paginationType,this.paginationUrl=this.moduleEl.dataset.paginationUrl||"",this.listingFilterWrapperSelector=".gt-listing-filter-wrapper",this.listingItemsWrapperSelector=".gt-listing-items-wrapper",this.postItemSelector=".gt-listing-post",this.loadingClass="gt-loading",this.loadMoreSelector=".gt-listing-load-more-btn",this.searchWrapperSelector=".gt-listing-search-wrapper",this.searchFormSelector=".gt-listing-search-form",this.currentFilterItemClass="gt-current-listing-filter",this.filterItemSelector=".gt-listing-filter-item",this.filterAllSelector=".gt-module-listing-filter-all",this.filterTaxonomySelector=".gt-listing-filter-taxonomy",this.filterDropdownTaxonomySelector=".gt-listing-filter-taxonomy.gt-terms-dropdown",this.activeItemWrapper=".gt-filter-active-tags-wrapper",this.activeItemSelector=".gt-listing-active-filter-item",this.clearActiveItemSelector=".gt-listing-active-filter-item-remove",this.paginationSelector=".gt-listing-pagination",this.pageNumbersSelector=".page-numbers",this.clearFilterClass=".gt-listing-clear-filter",this.dropdownSelector=".gt-dropdown-wrapper",this.dropdownLabel=".gt-dropdown-label",this.closeDropDownOutsideClickListener=this.closeDropDownOutsideClick.bind(this),this.openDropDown=null,this.fetching=!1,this.useAjax="false"!==this.moduleEl.dataset.ajax,this.searchQuery="",this.filters={},this.page=1}getBaseUrl(){return this.baseUrl}buildUrl(){let t=this.baseUrl,e=t;this.page>1&&(t=this.paginationUrl.replace(/%_%/i,this.page),"page_numbers"===this.paginationType&&(e=t));const s=[];for(const t in this.filters)this.filters[t].length<=0||s.push(t+"="+this.filters[t].join(","));const i=new URL(t),l=new URL(e);new URLSearchParams(window.location.search).forEach(((t,e)=>{"filter"!==e&&(i.searchParams.set(e,t),l.searchParams.set(e,t))}));const r=s.join("&");return r.length>0?(i.searchParams.set("filter",r),l.searchParams.set("filter",r)):(i.searchParams.delete("filter"),l.searchParams.delete("filter")),this.searchQuery.length>0?(i.searchParams.set("query",this.searchQuery),l.searchParams.set("query",this.searchQuery)):(i.searchParams.delete("query"),l.searchParams.delete("query")),i.searchParams.set("gt_render_component",this.uid),{filteredUrl:l.toString(),componentParamUrl:i.toString()}}parseParams(t){let e={};const s=t.match(/\?(.+)#?/);return s&&(e=this.parseQueryParams(s[1])),e}parseQueryParams(t){const e={},s=t.split("&");for(let t=0;t<s.length;++t){const i=s[t].split("=");
12===i.length&&(e[i[0]]=i[1])}return e}resetFilters(){this.filters={},this.page=1,this.searchQuery=""}parseUrl(){this.resetFilters();const t=window.location.href.split("#")[0],e=t.match(/\/page\/([0-9]+)/);if(e&&(this.page=e[1]),this.showFilter){const e=this.parseParams(t);if("filter"in e){const t=decodeURIComponent(e.filter),s=this.parseQueryParams(t),i=Object.keys(s);for(const t of i)this.filters[t]=s[t].split(",")}"query"in e&&(this.searchQuery=decodeURIComponent(e.query))}this.updateSelection(),this.handleActiveTermsLoad()}init(){this.addEvents(),this.parseUrl()}addEvents(){this.useAjax&&(this.moduleEl.addEventListener("click",(t=>{t.target.closest([this.filterTaxonomySelector,this.filterItemSelector].join(" "))?this.handleTaxonomyFilter(t):t.target.closest([this.filterTaxonomySelector,this.filterAllSelector].join(" "))?this.handleTaxonomyFilterAll(t):t.target.closest(this.loadMoreSelector)?this.handleLoadMore(t):t.target.closest([this.paginationSelector,this.pageNumbersSelector].join(" "))?this.handlePagination(t):t.target.closest(this.clearFilterClass)?this.handleClearFilter(t):t.target.closest(this.clearActiveItemSelector)?this.handleRemoveItemFilter(t):t.target.closest(this.dropdownLabel)&&this.toggleFilterDropdown(t)}),!0),this.moduleEl.addEventListener("submit",(t=>{t.target.closest([this.searchWrapperSelector,this.searchFormSelector].join(" "))&&this.handleSearch(t)}),!0),window.addEventListener("popstate",(t=>this.handlePopState(t))))}updateSelection(){this.moduleEl.querySelectorAll(this.filterItemSelector).forEach((t=>{t.classList.remove(this.currentFilterItemClass)})),this.moduleEl.querySelectorAll(this.filterAllSelector).forEach((t=>{t.classList.add(this.currentFilterItemClass)})),this.handleClearActiveWrapper();for(const t in this.filters)if(this.isTaxonomyFilter(t)){const e=this.filters[t],s=this.moduleEl.querySelector(this.filterTaxonomySelector+'[data-taxonomy="'+t+'"]');e.length>0&&s.querySelectorAll(this.filterAllSelector).forEach((t=>{t.classList.remove(this.currentFilterItemClass)}));const i=s.querySelectorAll(this.filterItemSelector);i.forEach((t=>{t.classList.remove(this.currentFilterItemClass)}));const l=s.closest(this.listingFilterWrapperSelector).querySelector(this.activeItemWrapper);for(const t of e)i.forEach((e=>{e.matches('[data-term="'+t+'"]')&&(e.classList.add(this.currentFilterItemClass),l&&this.addActiveTag(l,e))}))}this.moduleEl.querySelectorAll([this.searchWrapperSelector,this.searchFormSelector,'[name="query"]'].join(" ")).forEach((t=>{t.value=this.searchQuery}))}addActiveTag(t,e){t.innerHTML+=`<div class="gt-listing-active-filter-item" data-term="${e.dataset.term}">\n\t\t\t${e.innerHTML}\n\t\t\t<span class="gt-filter-tooltip">${e.closest(this.filterTaxonomySelector).dataset.taxonomySingularLabel}</span>\n\t\t\t<button class="gt-listing-active-filter-item-remove" type="submit">${GTModuleListingVars.translations.REMOVE_ACTIVE_FILTER}</button>\n\t\t</div>`}isTaxonomyFilter(t){const e=[];return this.moduleEl.querySelectorAll(this.filterTaxonomySelector).forEach((s=>{s.matches('[data-taxonomy="'+t+'"]')&&e.push(s)})),e.length>0}handlePopState(){const t={};Object.assign(t,this.filters);const e=this.searchQuery,s=this.page;if(this.parseUrl(),JSON.stringify(t)+s+e===JSON.stringify(this.filters)+this.page+this.searchQuery)return;const i=new CustomEvent("gt-module-listing:state-changed",{detail:{listingModule:this}});this.moduleEl.dispatchEvent(i),this.fetch(!1,!1)}handlePagination(t){if(t.preventDefault(),this.fetching)return;const e=t.target.closest(".page-numbers"),s=parseInt(e.dataset.page);if(s===this.page)return;const i=new CustomEvent("gt-module-listing:paginate",{detail:{listingModule:this,page:s}});this.moduleEl.dispatchEvent(i),this.page=s,this.fetch(!1,!0)}handleLoadMore(t){if(t.preventDefault(),this.fetching)return;this.page+=1;const e=new CustomEvent("gt-module-listing:load-more",{detail:{listingModule:this,page:this.page}});this.moduleEl.dispatchEvent(e),this.fetch(!0,!1)}handleTaxonomyFilterAll(t){if(t.preventDefault(),this.fetching)return;const e=t.target.closest(this.filterTaxonomySelector),s=e.querySelector(this.filterAllSelector);let i="";s&&(i=s.textContent.trim());const l=e.dataset.taxonomy;this.filters[l]=[],e.querySelectorAll(this.filterItemSelector).forEach((t=>{t.classList.remove(this.currentFilterItemClass)})),e.querySelectorAll(this.filterAllSelector).forEach((t=>{t.classList.add(this.currentFilterItemClass)})),this.updateSelection();const r=new CustomEvent("gt-module-listing:taxonomy-filter",{detail:{listingModule:this,wrapper:e,taxonomyFilters:this.filters[l]}});this.moduleEl.dispatchEvent(r);const o=e.querySelector(".gt-dropdown-label");o&&o.setAttribute("data-term",this.decodeHtml(i)),this.fetch(!1,!0)}handleTaxonomyFilter(t){if(t.preventDefault(),this.fetching)return;const e=t.target.closest(this.filterItemSelector),s=e.closest(this.filterTaxonomySelector),i=t.target.closest(this.listingFilterWrapperSelector).querySelector(this.activeItemWrapper),l=t.target.closest(this.filterTaxonomySelector).querySelector(this.dropdownSelector),r=s.querySelector(this.filterAllSelector);let o="";r&&(o=r.textContent.trim());const a=e.dataset.term,n=s.dataset.taxonomy,c=s.dataset.multiSelect;n in this.filters||(this.filters[n]=[]);const h=this.filters[n].indexOf(a);h>=0&&1===this.filters[n].length?(i&&i.querySelectorAll(".gt-listing-active-filter-item").forEach((t=>{t.querySelector("span").innerHTML.indexOf(e.querySelector("span").innerHTML.trim())>=0&&t.remove()})),e.classList.remove(this.currentFilterItemClass),this.filters[n]=[],s.querySelectorAll(this.filterAllSelector).forEach((t=>{t.classList.add(this.currentFilterItemClass)}))):c?(s.querySelectorAll(this.filterAllSelector).forEach((t=>{t.classList.remove(this.currentFilterItemClass)})),h>=0?(this.filters[n].splice(h,1),e.classList.remove(this.currentFilterItemClass),i&&i.querySelectorAll(".gt-listing-active-filter-item").forEach((t=>{t.querySelector("span").innerHTML.indexOf(e.querySelector("span").innerHTML.trim())>=0&&t.remove()}))):(this.filters[n].push(a),e.classList.add(this.currentFilterItemClass),i&&this.addActiveTag(i,e))):(s.querySelectorAll([this.filterItemSelector,this.filterAllSelector].join(", ")).forEac
1h((t=>{t.classList.remove(this.currentFilterItemClass)})),this.filters[n]=[a],e.classList.add(this.currentFilterItemClass),this.updateSelection()),this.filters[n].length<=0&&c?l&&l.querySelector(".gt-dropdown-label").setAttribute("data-term",this.decodeHtml(o)):this.handleActiveTermsLoad(),this.page=1;const d=new CustomEvent("gt-module-listing:taxonomy-filter",{detail:{listingModule:this,filterItem:e,wrapper:s,taxonomyFilters:this.filters[n]}});this.moduleEl.dispatchEvent(d),this.fetch(!1,!0)}handleClearActiveWrapper(){this.moduleEl.querySelectorAll(this.activeItemWrapper).forEach((t=>{t.innerHTML=""}))}handleActiveTermsLoad(){this.moduleEl.querySelectorAll(this.filterDropdownTaxonomySelector).forEach((t=>{const e=[];t.querySelectorAll(`.${this.currentFilterItemClass}`).forEach((s=>{e.push(s.querySelector("span").innerHTML);const i=t.querySelector(this.dropdownLabel),l=e.join(", ");i.setAttribute("data-term",this.decodeHtml(l))}))}))}toggleFilterDropdown(t){const e=t.target.closest(this.dropdownSelector);e.classList.contains("open")?(e.classList.remove("open"),document.removeEventListener("click",this.closeDropDownOutsideClickListener),this.openDropDown=null):(e.classList.add("open"),this.openDropDown?this.openDropDown.classList.remove("open"):document.addEventListener("click",this.closeDropDownOutsideClickListener),this.openDropDown=e)}closeDropDownOutsideClick(t){t.target.closest(this.dropdownSelector)!==this.openDropDown&&(this.openDropDown.classList.remove("open"),document.removeEventListener("click",this.closeDropDownOutsideClickListener),this.openDropDown=null)}handleSearch(t){if(t.preventDefault(),this.fetching)return;const e=this.moduleEl.querySelector('[name="query"]');this.searchQuery=e.value,this.page=1;const s=new CustomEvent("gt-module-listing:search",{detail:{listingModule:this,searchInput:e,searchQuery:this.searchQuery}});this.moduleEl.dispatchEvent(s),this.fetch(!1,!0)}handleClearFilter(t){if(t.preventDefault(),this.fetching)return;this.resetFilters(),this.updateSelection(),this.handleActiveTermsLoad();const e=new CustomEvent("gt-module-listing:filters-reset",{detail:{listingModule:this}});this.moduleEl.dispatchEvent(e),this.fetch(!1,!0)}handleRemoveItemFilter(t){if(t.preventDefault(),this.fetching)return;const e=t.target.closest(this.activeItemSelector),s=e.dataset.term;for(const t in this.filters)if(this.isTaxonomyFilter(t)){const i=this.filters[t];i.forEach(((t,l)=>{if(s!==t)return;const r=e.dataset.term;e.closest(this.listingFilterWrapperSelector).querySelectorAll(this.filterTaxonomySelector).forEach((t=>{t.querySelector('[data-term="'+r+'"]')&&t.querySelectorAll(this.filterItemSelector).forEach((t=>{t.matches('[data-term="'+r+'"]')&&t.classList.remove(this.currentFilterItemClass)})),t.querySelectorAll("."+this.currentFilterItemClass).length<=0&&t.querySelectorAll(this.filterAllSelector).forEach((t=>t.classList.add(this.currentFilterItemClass)))})),i.splice(l,1),e.remove()}))}this.handleActiveTermsLoad();const i=new CustomEvent("gt-module-listing:filter-removed",{detail:{listingModule:this}});this.moduleEl.dispatchEvent(i),this.fetch(!1,!0)}fetch(t=!1,e=!1){const s=this.buildUrl(),i=s.componentParamUrl,l=s.filteredUrl;this.moduleEl.classList.add(this.loadingClass);const r=new CustomEvent("gt-module-listing:loading",{detail:{listingModule:this}});this.moduleEl.dispatchEvent(r),this.fetching=!0,fetch(i,{method:"GET"}).then((t=>t.json())).then((s=>{this.fetching=!1;const i=this.htmlToElement(s),r=this.moduleEl.querySelector(this.listingItemsWrapperSelector),o=i.querySelectorAll(this.postItemSelector);if(t){for(const t of o)r.appendChild(t);const t=new CustomEvent("gt-module-listing:items-appended",{detail:{listingModule:this,listingItems:o,response:s}});this.moduleEl.dispatchEvent(t)}else{r.parentElement.replaceChild(i.querySelector(this.listingItemsWrapperSelector),r);const t=new CustomEvent("gt-module-listing:wrapper-refreshed",{detail:{listingModule:this,response:s}});this.moduleEl.dispatchEvent(t)}const a=this.moduleEl.querySelector(this.paginationSelector);if(a){const t=i.querySelector(this.paginationSelector);a.parentElement.replaceChild(t,a)}e&&window.location.href!==l&&window.history.pushState("","",l),this.moduleEl.classList.remove(this.loadingClass);const n=new CustomEvent("gt-module-listing:loaded",{detail:{listingModule:this,response:s}});this.moduleEl.dispatchEvent(n)}))}htmlToElement(t){const e=document.createElement("template");return e.innerHTML=t.trim(),e.content.firstChild}decodeHtml(t){const e={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;","\n":"&#10;","\t":"&#09;","{":"&#123;","}":"&#125;","[":"&#91;","]":"&#93;",'"':"&quot;"},s=Object.keys(e);for(const i of s)t=t.replaceAll(e[i],i);return t}}"interactive"===document.readyState||"complete"===document.readyState?ListingModule.setupModules():document.addEventListener("DOMContentLoaded",ListingModule.setupModules);

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.