1function assignUniqueIds(t){t.querySelectorAll('[id*="id-placeholder"]').forEach(e=>{const i=e.id,s=Math.random().toString(36).slice(2,10),r=i.replace(/id-placeholder[\w-]*/,s);e.id=r,t.querySelectorAll(`[aria-labelledby="${i}"]`).forEach(t=>{t.setAttribute("aria-labelledby",r)})})}class FilterBase extends HTMLElement{emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}updateUrl(t,e){const i=new URL(location.href);[...i.searchParams.keys()].filter(e=>e.startsWith(`filters[${t}]`)).forEach(t=>i.searchParams.delete(t)),Array.isArray(e)?e.forEach(e=>{null!=e&&i.searchParams.append(`filters[${t}][]`,e)}):null!=e&&""!==e&&i.searchParams.set(`filters[${t}]`,e),history.pushState({},"",decodeURIComponent(i.toString()))}}class FilterCheckboxTags extends FilterBase{static observedAttributes=["filters","buckets"];constructor(){super(),this.name=this.getAttribute("name"),this.buckets={},this.checkedOptions=[],this.deactivatedFilter=!1,this.activeCheckboxes=[];const t=new URLSearchParams(window.location.search);for(const[e,i]of t.entries())e.startsWith(`filters[${this.name}]`)&&this.activeCheckboxes.push(i);const e=this.closest("disgovery-list-widget");e.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&(this.checkedOptions=[],this.#t())}),e.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&(this.checkedOptions=this.checkedOptions.filter(e=>e!==t.detail.data),this.#t())}),e.addEventListener("filter-event:buckets",t=>{this.#e(t.detail[this.name])}),e.addEventListener("filter-event:prefilter-topic",()=>{this.#i()})}connectedCallback(){const t=void 0;JSON.parse(this.getAttribute("filters")).length>0?(this.deactivatedFilter=!0,this.style.display="none"):this.#s()}#s(){const t=document.getElementById("filter-template--checkbox").content.cloneNode(!0);assignUniqueIds(t),t.querySelector('slot[name="filter-button"]').textContent=this.getAttribute("button-name"),t.querySelector(".dgf-filter__list").innerHTML="",this.appendChild(t),this.#r()}#e(t){if(!t||0===t.length||this.deactivatedFilter)return void(this.style.display="none");if(this.style.display="block",JSON.stringify(t)===JSON.stringify(this.buckets))return;this.buckets=t;const e=this.querySelector(".dgf-filter__list");e&&(e.innerHTML="",t.forEach(t=>{const i=document.createElement("li"),s=this.checkedOptions.includes(String(t.id));i.innerHTML=`<label class="dgf-filter__label">\n <input type="checkbox" name="${t.value}" value="${t.id}" class="dgf-filter__checkbox"${s?" checked":""} />\n <span class="title">${t.value}</span>\n <span aria-hidden="true" class="count">${t.count}</span>\n </label>`,e.appendChild(i)}))}#i(){if(!this.activeCheckboxes.length)return;const t=this.querySelectorAll(".dgf-filter__checkbox"),e=[],i=[];t.forEach(t=>{this.activeCheckboxes.includes(t.value)&&(e.push(t.value),i.push(t.name),this.checkedOptions.push(t.value),t.checked=!0)}),e.length>0&&(this.#l(),this.emit({key:this.name,data:e,tag:i})),this.updateUrl(this.name,e)}#r(){this.querySelector(".dgf-filter__button--submit").addEventListener("click",()=>{const t=this.querySelectorAll(".dgf-filter__checkbox"),e=[],i=[];this.checkedOptions=[],t.forEach(t=>{t.checked&&(e.push(t.value),i.push(t.name),this.checkedOptions.push(t.value))}),this.#l(),this.emit({key:this.name,data:e,tag:i}),this.updateUrl(this.name,e),this.#n()}),this.querySelector(".dgf-filter__button--reset").addEventListener("click",()=>{this.checkedOptions=[],this.emit({key:this.name,data:[]}),this.#t(),this.#n()})}#t(){this.querySelectorAll(".dgf-filter__checkbox").forEach(t=>{this.checkedOptions.includes(t.value)||(t.checked=!1)}),this.updateUrl(this.name,this.checkedOptions),this.#l()}#l(){const t=this.querySelector(".dgf-filter__button"),e=t?.querySelector(".counter"),i=this.checkedOptions.length;if(t?.classList.toggle("dgf-filter__button--active",i>0),i>0)if(e)e.textContent=i;else{const e=document.createElement("span");e.classList.add("counter"),e.textContent=i,t.appendChild(e)}else e?.remove()}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-checkbox-tags",FilterCheckboxTags);class FilterCheckbox extends HTMLElement{static observedAttributes=["filters","buckets"];constructor(){super(),this.name=this.getAttribute("name"),this.buckets={},this.checkedOptions=[],this.deactivatedFilter=!1;const t=this.closest("disgovery-list-widget");t.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&(this.checkedOptions=[],this.#t())}),t.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&(this.checkedOptions=this.checkedOptions.filter(e=>e!==t.detail.data),this.#t())}),t.addEventListener("filter-event:buckets",t=>{const e=t.detail[this.name];this.#e(e)})}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}connectedCallback(){const t=void 0;JSON.parse(this.getAttribute("filters")).length>0?(this.deactivatedFilter=!0,this.style.display="none"):this.#s()}#s(){const t=document.getElementById("filter-template--checkbox").content.cloneNode(!0);assignUniqueIds(t),t.querySelector('slot[name="filter-button"]').textContent=this.getAttribute("button-name"),t.querySelector(".dgf-filter__list").innerHTML="",this.appendChild(t),this.#r()}#e(t){if(!t||0===t.length||this.deactivatedFilter)return void(this.style.display="none");if(this.style.display="block",JSON.stringify(t)===JSON.stringify(this.buckets))return;this.buckets=t;const e=this.querySelector(".dgf-filter__list");e&&(e.innerHTML="",t.forEach(t=>{const i=document.createElement("li"),s=this.checkedOptions.includes(t.value);i.innerHTML=`<label class="dgf-filter__label">\n <input type="checkbox" value="${t.value}" class="dgf-filter__checkbox"${s?" checked":""} />
1\n <span class="title">${t.value}</span>\n <span aria-hidden="true" class="count">${t.count}</span>\n </label>`,e.appendChild(i)}))}#r(){this.querySelector(".dgf-filter__button--submit").addEventListener("click",()=>{const t=this.querySelectorAll(".dgf-filter__checkbox"),e=[];this.checkedOptions=[],t.forEach(t=>{t.checked&&(e.push(t.value),this.checkedOptions.push(t.value))}),this.#l(),this.emit({key:this.name,data:e}),this.#n()}),this.querySelector(".dgf-filter__button--reset").addEventListener("click",()=>{this.checkedOptions=[],this.emit({key:this.name,data:[]}),this.#t(),this.#n()})}#t(){this.querySelectorAll(".dgf-filter__checkbox").forEach(t=>{this.checkedOptions.includes(t.value)||(t.checked=!1)}),this.#l()}#l(){const t=this.querySelector(".dgf-filter__button"),e=t.querySelector(".counter"),i=this.checkedOptions.length;if(t.classList.toggle("dgf-filter__button--active",i>0),i>0)if(e)e.textContent=i;else{const e=document.createElement("span");e.classList.add("counter"),e.textContent=i,t.appendChild(e)}else e?.remove()}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-checkbox",FilterCheckbox);class FilterDate extends HTMLElement{static observedAttributes=["date-from","date-to"];constructor(){super();const t=this.closest("disgovery-list-widget");["filter-event:reset-all","filter-event:reset-date"].forEach(e=>{t.addEventListener(e,t=>{!0===t.detail&&this.#a()})})}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}connectedCallback(){this.getAttribute("date-from")||this.getAttribute("date-to")?this.style.display="none":this.#s()}#s(){const t=document.getElementById("filter-template--datePicker").content.cloneNode(!0);assignUniqueIds(t);const e=t.querySelector('slot[name="filter-button"]');e&&(e.textContent=this.getAttribute("button-name"));const i=new Date,s=new Date(i);s.setDate(s.getDate()-1);const r=t.querySelector('input[name="dateFrom"]'),l=t.querySelector('input[name="dateTo"]');r&&(r.valueAsDate=s),l&&(l.valueAsDate=i),this.appendChild(t),this.#r()}#r(){this.querySelector(".dgf-filter__button--submit").addEventListener("click",()=>{const t=void 0,e=[...this.querySelectorAll('.dgf-filter__input[type="date"]')].map(t=>t.value),i=this.#o(e[0]),s=this.#o(e[1]),r=this.querySelector(".dgf-filter__button");if(i||s){const t=i&&s&&i!==s?`${i} - ${s}`:i||s;r.textContent=t,r.classList.add("dgf-filter__button--active"),this.emit({key:"datePublished",data:e,tag:t})}else r.textContent=this.getAttribute("button-name"),r.classList.remove("dgf-filter__button--active"),this.emit({key:"datePublished",data:e});this.#n()}),this.querySelector(".dgf-filter__button--reset").addEventListener("click",()=>{this.#a(),this.emit({key:"datePublished",data:[]}),this.#n()})}#a(){this.querySelectorAll('.dgf-filter__input[type="date"]').forEach(t=>t.value="");const t=this.querySelector(".dgf-filter__button");t&&(t.textContent=this.getAttribute("button-name"),t.classList.remove("dgf-filter__button--active"))}#o(t){return t?new Date(t).toLocaleDateString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit"}):null}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-date",FilterDate);class DisgoveryListWidget extends HTMLElement{static observedAttributes=["endpoint","type","label","sort","limit","listView","template","options","filters","slider","document","reload"];#d;constructor(){super(),this.isLoading=!1,this.results="",this.resultsMap="",this.resultsLength=0,this.totalResultsLength=0,this.buckets={},this.filterTags=new Map,this.isIOS=/iphone|ipad|ipod/i.test(navigator.userAgent),this.scrollY=0,this.page=1,this.hasLoadedMore=!1,this.firstLoad=!0,this.resetAllFilters=!1,this.mapViewTriggered=!1,this.endpoint=this.getAttribute("endpoint"),this.document=this.getAttribute("document"),this.type=this.getAttribute("type"),this.label=this.getAttribute("label")??this.type,this.sort=this.getAttribute("sort")?"&sort="+this.getAttribute("sort"):"",this.limit=parseInt(this.getAttribute("limit")),this.view=this.getAttribute("listView"),this.template=this.getAttribute("template"),this.options=this.#c(JSON.parse(this.getAttribute("options")),"options"),this.filters=JSON.parse(this.getAttribute("filters")),this.#d=JSON.parse(this.getAttribute("filters")),this.slider=this.getAttribute("slider"),this.reloadButton=this.getAttribute("reload")??"true","map"===this.view&&(this.mapViewTriggered=!0,this.limit=1e3)}connectedCallback(){this.#r(),this.getListData()}#r(){this.addEventListener("filter-event:filter",t=>{const{key:e,data:i,tag:s}=t.detail;this.getListData(e,i,s)}),this.addEventListener("filter-event:filter-reset",()=>{this.resetAllFilters=!0,this.getListData()});const t=this.querySelector(".dgf-filter--button"),e=this.querySelector(".dgf-filter--button + .dropdown-menu");t&&e&&t.addEventListener("click",()=>{e.classList.contains("show")?this.openFilterDropdown():this.closeFilterDropdown()})}
1render(){if(this.slider&&"0"!==this.slider)this.#h();else if(this.#u(),this.#f(),this.checkFilterAvailability(),!this.isLoading){if("function"!=typeof disgoveryListFunctions)throw new Error("Function disgoveryListFunctions doesn't exist");disgoveryListFunctions(this)}}#u(){const t=this.querySelector(".dgf-filter__results");if(!t)return;let e=this.querySelector(".dgf-filter__loading");if(e||(e=document.createElement("div"),e.classList.add("dgf-filter__loading"),e.innerHTML='<div class="spinner"></div>',t.insertBefore(e,t.firstChild)),e.classList.toggle("visible",this.isLoading),this.isLoading)return;const i="false"!==this.reloadButton&&this.totalResultsLength>this.resultsLength,s="false"!==this.reloadButton&&this.totalResultsLength>0&&(i||this.hasLoadedMore),[r,l]=(this.label??"").split("|"),n=l??r??"";let a=this.querySelector(".dgf-filter__reload");if(!a){const e=document.getElementById("filter-template--reload");if(e){a=e.content.cloneNode(!0).querySelector(".dgf-filter__reload");const t=a.querySelector(".dgf-filter__reload__button");t.textContent=(t.dataset.labelPattern??"Mehr laden").replace("%label%",n)}else a=document.createElement("div"),a.classList.add("dgf-filter__reload"),a.innerHTML='<p class="dgf-filter__reload__status"><span class="dgf-filter__reload__current-count"></span></p><div class="dgf-filter__reload__progress-bar"><div class="dgf-filter__reload__progress-bar__fill"></div></div><button class="button dgf-filter__reload__button">Mehr laden</button>';a.querySelector(".dgf-filter__reload__button").addEventListener("click",()=>{this.hasLoadedMore=!0,this.page++,this.getListData()}),t.appendChild(a)}if(s){const t=this.resultsLength/this.totalResultsLength*100,e=a.querySelector(".dgf-filter__reload__current-count"),s=e?.dataset.statusPattern??"%current% von %total%";e&&(e.textContent=s.replace("%current%",this.resultsLength).replace("%total%",this.totalResultsLength).replace("%label%",n)),a.querySelector(".dgf-filter__reload__progress-bar__fill").style.width=t+"%",a.querySelector(".dgf-filter__reload__button")?.classList.toggle("is-hidden",!i)}a?.classList.toggle("visible",s);const o=t.querySelector(".dgf-list__body");o&&(this.page>1?o.innerHTML+=this.results:o.innerHTML=this.results),this.querySelectorAll(".empty-alert button").forEach(t=>{t.addEventListener("click",()=>{this.resetAllFilters=!0,this.getListData()})})}#f(){const mapContainer=this.querySelector(".dgf-filter__results .dgf-list__map");if(!mapContainer||this.isLoading)return;if(!this.resultsMap)return void(mapContainer.innerHTML="Keine Ergebnisse für die Karte");mapContainer.innerHTML=this.resultsMap;const script=mapContainer.querySelector("script");script&&"undefined"!=typeof MapManager&&eval?.(script.innerHTML);const showReload="false"!==this.reloadButton&&this.totalResultsLength>this.resultsLength,showContainer="false"!==this.reloadButton&&this.totalResultsLength>0&&(showReload||this.hasLoadedMore),reloadButton=this.querySelector(".dgf-filter__reload");this.querySelector(".dgf-list__button--map")?.addEventListener("click",()=>{reloadButton?.classList.remove("visible"),"undefined"!=typeof MapManager?this.loadMapView():mapContainer.querySelector(".ccm-plugin--script-placeholder button")?.addEventListener("click",()=>setTimeout(()=>this.loadMapView(),300))}),this.querySelector(".dgf-list__button--grid")?.addEventListener("click",()=>{reloadButton?.classList.toggle("visible",showContainer)}),this.querySelector(".dgf-list__button--list")?.addEventListener("click",()=>{reloadButton?.classList.toggle("visible",showContainer)}),"undefined"==typeof MapManager&&mapContainer.querySelector(".ccm-plugin--script-placeholder button")?.addEventListener("click",()=>setTimeout(()=>this.loadMapView(),300))}#h(){const t=this.querySelector(".splide__list");t&&(t.innerHTML=this.results),"smart"===this.slider&&new Splide(this.querySelector(".splide")).mount()}loadMapView(){this.mapViewTriggered||(this.limit=1e3,this.page=1,this.hasLoadedMore=!1,this.getListData(),this.mapViewTriggered=!0);const script=this.querySelector(".dgf-filter__results .dgf-list__map script");script&&eval?.(script.innerHTML)}
1async getListData(t,e,i,s){const r=this.querySelector(".dgf-filter--button");r?.classList.contains("show")&&r.click();try{this.isLoading=!0,this.render(),(t||this.resetAllFilters)&&(this.page=1,this.hasLoadedMore=!1),this.resetAllFilters?(this.filters=JSON.parse(this.getAttribute("filters")),this.filterTags=new Map):s?this.#g(t,e,i):this.#p(t,e,i);const r=this.#c(this.filters,"filters"),l=["src="+this.document,"limit="+this.limit,"page="+this.page,"view="+this.view,"template="+this.template,this.options,r].filter(Boolean).join("&")+this.sort,n=await fetch(this.endpoint+"?"+l);if(!n.ok)throw new Error(`HTTP ${n.status}`);const a=await n.json();this.buckets=a.buckets,this.results=a.results,this.resultsMap=a.results_map,this.totalResultsLength=a.meta.total,this.resultsLength=this.page>1?this.resultsLength+a.results_length:a.results_length,this.dispatchEvent(new CustomEvent("filter-event:buckets",{bubbles:!0,detail:this.buckets})),this.dispatchEvent(new CustomEvent("filter-event:reset-all",{bubbles:!0,detail:this.resetAllFilters}))}catch(t){console.error("Fehler beim Abrufen der Daten:",t)}finally{this.resetAllFilters=!1,this.isLoading=!1,this.render(),this.#m(),equalHeight?.(),await(document.fonts?.ready),equalHeight?.(),this.firstLoad&&(this.firstLoad=!1,this.dispatchEvent(new CustomEvent("filter-event:prefilter",{bubbles:!0}))),this.dispatchEvent(new CustomEvent("filter-event:rendered",{bubbles:!0})),this.results=""}}#g(t,e,i){if("date"===t){const e=this.querySelector('filter-time[name="today"]');return this.filters[t]=[e?.getAttribute("time-from")??"",""],this.filterTags.delete(t),void this.dispatchEvent(new CustomEvent("filter-event:reset-date",{bubbles:!0,detail:!0}))}if("datePublished"===t)return delete this.filters[t],this.filterTags.delete(t),void this.dispatchEvent(new CustomEvent("filter-event:reset-date",{bubbles:!0,detail:!0}));if(Array.isArray(this.filters[t])){const i=Array.isArray(e)?e:[e];this.filters[t]=this.filters[t].filter(t=>!i.includes(t)),0===this.filters[t].length&&(this.#d[t]?.length>0?this.filters[t]=this.#d[t]:delete this.filters[t])}else delete this.filters[t];const s=this.filterTags.get(t);if(s){const e=s.filter(t=>t.label!==i);e.length>0?this.filterTags.set(t,e):this.filterTags.delete(t)}this.dispatchEvent(new CustomEvent("filter-event:reset",{bubbles:!0,detail:{key:t,data:e}}))}#p(t,e,i){if(!t)return;const s=void 0;if(null==e||""===e||"0"===e||Array.isArray(e)&&0===e.filter(Boolean).length){if("date"===t){const e=this.querySelector('filter-time[name="today"]');this.filters[t]=[e?.getAttribute("time-from")??"",""]}else delete this.filters[t];this.filterTags.delete(t)}else if(this.filters[t]=e,Array.isArray(e)&&Array.isArray(i)&&e.length===i.length)this.filterTags.set(t,e.map((t,e)=>({label:String(i[e]),value:t})).filter(t=>null!==t.value&&void 0!==t.value));else if(Array.isArray(e)&&!i)this.filterTags.set(t,e.filter(Boolean).map(t=>({label:String(t),value:t})));else if(i){const s=Array.isArray(e)&&1===e.length?e[0]:e;this.filterTags.set(t,[{label:String(i),value:s}])}else"string"==typeof e&&this.filterTags.set(t,[{label:e,value:e}])}#m(){const t=this.querySelector(".dgf-list__tags");if(!t)return;const[e,i]=this.label.split("|"),s=1===this.totalResultsLength?e:i,r=this.totalResultsLength>this.resultsLength?`${this.resultsLength} von ${this.totalResultsLength} ${s}:`:`${this.resultsLength} ${s}:`;t.innerHTML=`<b>${r}</b>`;let l=!1;for(const[e,i]of this.filterTags)for(const{label:s,value:r}of i){if(!s)continue;const i=document.createElement("button");i.classList.add("dgf-list__tag"),i.textContent=s,i.addEventListener("click",()=>this.getListData(e,r,s,!0)),t.appendChild(i),l=!0}if(l){const e=document.createElement("button");e.classList.add("dgf-list__tag","dgf-list__tag--reset"),e.innerHTML='<span class="icon icon--fluid" aria-hidden="true"><img src="/bundles/hitcomfrontend/img/material-design-icons/outlined/refresh.svg" class="icon__image" width="24" height="24" alt loading="lazy"></span>Alle Filter zurücksetzen',e.addEventListener("click",()=>{this.resetAllFilters=!0,this.getListData()}),t.appendChild(e)}this.querySelector(".empty-alert")?.classList.toggle("empty-alert--filtered",l)}checkFilterAvailability(){const t=this.querySelector(".dgf-filter__group");if(!t)return;const e=Array.from(t.children).some(t=>"none"!==t.style.display);this.querySelector(".dgf-filter__container")?.classList.toggle("no-filters",!e)}closeFilterDropdown(){this.isIOS?(document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo(0,this.scrollY)):document.body.style.overflow=""}openFilterDropdown(){this.isIOS?(this.scrollY=window.scrollY,document.body.style.position="fixed",document.body.style.top=`-${this.scrollY}px`,document.body.style.width="100%"):document.body.style.overflow="hidden"}renderResults(){return this.results}#c(t,e=""){const i=[];for(const[s,r]of Object.entries(t))if(Array.isArray(r))"datePublished"===s||"date"===s?(r[0]&&i.push(`${e}[${s}][from]=${encodeURIComponent(r[0])}`),r[1]&&i.push(`${e}[${s}][to]=${encodeURIComponent(r[1])}`)):r.forEach(t=>{null!==t&&i.push(`${e}[${s}][]=${encodeURIComponent(t)}`)});else if(null!==r&&"object"==typeof r){const t=this.#c(r,`${e}[${s}]`);t&&i.push(t)}else null!==r&&i.push(`${e}[${s}]=${encodeURIComponent(r)}`);return i.join("&")}}customElements.define("disgovery-list-widget",DisgoveryListWidget);class FilterLetter extends HTMLElement{static observedAttributes=["filters"];constructor(){super(),this.name=this.getAttribute("name"),this.selectedLetters=[],this.committedLetters=[],this.deactivatedFilter=!1;const t=this.closest("disgovery-list-widget");t.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&(this.selectedLetters=[],this.committedLetters=[],this.#b(),this.#l())}),t.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&(this.selectedLetters=this.selectedLetters.filter(e=>e!==t.detail.data),this.committedLetters=[...this.selectedLetters],this.#b(),this.#l())}),t.addEventListener("filter-event:buckets",t=>{if(this.deactivatedFilter)return;const e=t.detail[this.name];this.#y(e)})}connectedCallback(){"1"===this.getAttribute("filters")?(this.deactivatedFilter=!0,this.style.display="none"):this.#s()}#s(){const t=document.getElementById("filter-template--letter").content.cloneNode(!0);assignUniqueIds(t),t.querySelector('slot[name="filter-button"]').textContent=this.getAttribute("button-name"),this.appendChild(t),this.#v(),this.#r()}#v(){const t=this.querySelector(".dgf-filter__letter__grid");
1t&&"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").forEach(e=>{const i=document.createElement("button");i.type="button",i.className="dgf-filter__letter__button",i.textContent=e,i.dataset.letter=e,i.disabled=!0,t.appendChild(i)})}#y(t){if(!t||0===t.length)return void(this.style.display="none");this.style.display="";const e=new Set(t.map(t=>String(t.value).toUpperCase()));this.querySelectorAll(".dgf-filter__letter__button").forEach(t=>{t.disabled=!e.has(t.dataset.letter)})}#r(){this.querySelector(".dgf-filter__letter__grid").addEventListener("click",t=>{const e=t.target.closest(".dgf-filter__letter__button");if(!e||e.disabled)return;const i=e.dataset.letter;this.selectedLetters.includes(i)?this.selectedLetters=this.selectedLetters.filter(t=>t!==i):this.selectedLetters.push(i),this.#b()}),this.querySelector(".dgf-filter__button--submit").addEventListener("click",()=>{this.committedLetters=[...this.selectedLetters],this.#l(),this.emit({key:this.name,data:[...this.selectedLetters]}),this.#n()}),this.querySelector(".dgf-filter__button--reset").addEventListener("click",()=>{this.selectedLetters=[],this.committedLetters=[],this.emit({key:this.name,data:[]}),this.#b(),this.#l(),this.#n()})}#b(){this.querySelectorAll(".dgf-filter__letter__button").forEach(t=>{t.classList.toggle("dgf-filter__letter__button--active",this.selectedLetters.includes(t.dataset.letter))})}#l(){const t=this.querySelector(".dgf-filter__button"),e=t?.querySelector(".counter"),i=this.committedLetters.length;if(t?.classList.toggle("dgf-filter__button--active",i>0),i>0)if(e)e.textContent=i;else{const e=document.createElement("span");e.classList.add("counter"),e.textContent=i,t.appendChild(e)}else e?.remove()}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-letter",FilterLetter);class FilterRange extends HTMLElement{static observedAttributes=["filters"];constructor(){super(),this.name=this.getAttribute("name"),this.filterValueLat=null,this.filterValueLng=null,this.activeFilterValues=null;const t=this.closest("disgovery-list-widget");t.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&this.#_()}),t.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&this.#_()})}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}connectedCallback(){this.#s(),this.#L()}#s(){const t=document.getElementById("filter-template--range").content.cloneNode(!0);assignUniqueIds(t),t.querySelector('slot[name="filter-button"]').textContent=this.getAttribute("button-name"),this.appendChild(t),this.#k()}#k(){const t=this.querySelector(".dgf-filter__geolocation-permission-button");if(t)if(this.filterValueLat&&this.filterValueLng){t.classList.remove("dgf-filter__geolocation-permission-button--active");const e=this.querySelector(".dgf-filter__range__input"),i=this.querySelector(".dgf-filter__range__value");e.addEventListener("input",()=>this.#S(e,i)),this.#S(e,i),this.querySelector(".dgf-filter__button--submit").addEventListener("click",()=>{this.activeFilterValues={lat:this.filterValueLat,lng:this.filterValueLng,radius:e.value},this.emit({key:this.name,data:this.activeFilterValues,tag:`${this.getAttribute("button-name")}: ${e.value} km`}),this.#l(),this.#n()}),this.querySelector(".dgf-filter__button--reset").addEventListener("click",()=>{this.#_(),this.#n()})}else{t.classList.add("dgf-filter__geolocation-permission-button--active");const e=t.cloneNode(!0);t.replaceWith(e),e.addEventListener("click",()=>this.#E())}}#_(){this.activeFilterValues=null,this.emit({key:this.name,data:""}),this.#l()}#l(){this.querySelector(".dgf-filter__button")?.classList.toggle("dgf-filter__button--active",!!this.activeFilterValues)}#S(t,e){const i=t.value,s=t.min||0,r=t.max||20;e.textContent=`${i} km`,t.style.backgroundSize=(i-s)/(r-s)*100+"% 100%"}#E(){"geolocation"in navigator?navigator.geolocation.getCurrentPosition(t=>{this.filterValueLat=t.coords.latitude,this.filterValueLng=t.coords.longitude,this.#k()},t=>{console.error("Geolocation-Fehler:",t.message)}):alert("Geolocation wird von deinem Browser nicht unterstützt.")}#L(){navigator.permissions?.query({name:"geolocation"}).then(t=>{"granted"===t.state&&this.#E()})}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-range",FilterRange);class FilterSearch extends HTMLElement{static observedAttributes=[];constructor(){super(),this.name=this.getAttribute("name");const t=this.closest("disgovery-list-widget");t.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&this.#A()}),t.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&this.#A()})}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}connectedCallback(){this.#s()}#s(){const t=document.getElementById("filter-template--search").content.cloneNode(!0),e=t.querySelector(".dgf-search__input");e.setAttribute("placeholder",this.getAttribute("placeholder")),e.setAttribute("aria-label",this.getAttribute("placeholder")),this.appendChild(t),this.#r()}#r(){const t=this.querySelector(".dgf-search__input"),e=this.querySelector(".dgf-search__button");t.addEventListener("keydown",t=>{"Enter"===t.key&&e.click()}),e.addEventListener("click",()=>
1{this.emit({key:this.name,data:t.value})})}#A(){const t=this.querySelector(".dgf-search__input");t&&(t.value="")}}customElements.define("filter-search",FilterSearch);class FilterSwitchTags extends FilterBase{static observedAttributes=["filters"];constructor(){super(),this.name=this.getAttribute("name"),this.activeSwitchId=null;const t=new URLSearchParams(window.location.search);for(const[e,i]of t.entries())if(e.startsWith(`filters[${this.name}]`)){this.activeSwitchId=i;break}const e=this.closest("disgovery-list-widget");e.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&this.#w()}),e.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&this.#w()}),e.addEventListener("filter-event:prefilter-topic",()=>{this.#i()})}connectedCallback(){"1"===this.getAttribute("filters")?this.style.display="none":this.#s()}#s(){const t=document.getElementById("filter-template--switch").content.cloneNode(!0),e=t.querySelector('slot[name="filter-button"]'),i=this.getAttribute("icon");i?(e.innerHTML=`<img src="${i}" class="icon__image" width="24" height="24" loading="lazy" alt="" />`,t.querySelector(".dgf-filter__button").setAttribute("aria-label",this.getAttribute("button-name"))):e.textContent=this.getAttribute("button-name"),this.appendChild(t),this.#r()}#i(){if(this.getAttribute("value")!==this.activeSwitchId)return;const t=this.getAttribute("value")?[this.getAttribute("value")]:[];this.querySelector(".dgf-filter__button--switch")?.classList.add("dgf-filter__button--active"),this.emit({key:this.name,data:t,tag:this.getAttribute("button-name")})}#r(){const t=this.querySelector(".dgf-filter__button--switch");t.addEventListener("click",()=>{if(t.classList.contains("dgf-filter__button--active"))this.#w();else{const e=this.getAttribute("value")?[this.getAttribute("value")]:[];t.classList.add("dgf-filter__button--active"),this.emit({key:this.name,data:e,tag:this.getAttribute("button-name")}),this.updateUrl(this.name,e)}})}#w(){this.querySelector(".dgf-filter__button--switch")?.classList.remove("dgf-filter__button--active"),this.emit({key:this.name,data:[]}),this.updateUrl(this.name,[])}}customElements.define("filter-switch-tags",FilterSwitchTags);class FilterSwitch extends HTMLElement{static observedAttributes=["filters"];constructor(){super(),this.name=this.getAttribute("name");const t=this.closest("disgovery-list-widget");t.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&this.#w()}),t.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&this.#w()})}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}connectedCallback(){"1"===this.getAttribute("filters")?this.style.display="none":this.#s()}#s(){const t=document.getElementById("filter-template--switch").content.cloneNode(!0),e=t.querySelector('slot[name="filter-button"]'),i=this.getAttribute("icon");i?(e.innerHTML=`<img src="${i}" class="icon__image" width="24" height="24" loading="lazy" alt="" />`,t.querySelector(".dgf-filter__button").setAttribute("aria-label",this.getAttribute("button-name"))):e.textContent=this.getAttribute("button-name"),this.appendChild(t),this.#r()}#r(){const t=this.querySelector(".dgf-filter__button--switch");t.addEventListener("click",()=>{t.classList.contains("dgf-filter__button--active")?(t.classList.remove("dgf-filter__button--active"),this.emit({key:this.name,data:"0"})):(t.classList.add("dgf-filter__button--active"),this.emit({key:this.name,data:"1",tag:this.getAttribute("button-name")}))})}#w(){this.querySelector(".dgf-filter__button--switch")?.classList.remove("dgf-filter__button--active")}}customElements.define("filter-switch",FilterSwitch);class FilterTags extends FilterBase{static observedAttributes=["filters","topics","headline","layout-type"];constructor(){super(),this.name=this.getAttribute("name"),this.topics=JSON.parse(this.getAttribute("topics")),this.headline=this.getAttribute("headline"),this.layoutType=this.getAttribute("layout-type"),this.activeTopicId=null;const t=new URLSearchParams(window.location.search);for(const[e,i]of t.entries())if(e.startsWith(`filters[${this.name}]`)){this.activeTopicId=i;break}const e=this.closest("disgovery-list-widget");e.addEventListener("filter-event:reset-all",t=>{!0===t.detail&&this.#q()}),e.addEventListener("filter-event:reset",t=>{t.detail?.key===this.name&&this.#q()}),e.addEventListener("filter-event:prefilter",()=>{this.#i()})}connectedCallback(){this.topics.length>0&&this.#s()}#s(){const t=document.getElementById("filter-template--select").content.cloneNode(!0);assignUniqueIds(t);const e=t.querySelector(".dgf-select__heading"),i=t.querySelector(".dgf-filter__button"),s=t.querySelector(".dgf-select__list");e.textContent=this.headline,this.topics.forEach((t,e)=>{const r="Alles"===t.name?"Alle Themen":t.name,l=null!==this.activeTopicId?String(t.id)===String(this.activeTopicId):0===e,n=document.createElement("li");if(n.innerHTML=`<button type="button" class="dgf-select__option" data-id="${t.id}" data-name="${r}">${r}</button>`,l){i.textContent=r;const t=n.querySelector(".dgf-select__option");t.setAttribute("aria-pressed","true"),t.setAttribute("disabled","disabled")}s.appendChild(n)}),this.appendChild(t),"dropdown"===this.layoutType&&requestAnimationFrame(()=>{const t=this.querySelector(".dgf-select__dropdown-menu"),e=this.querySelector(".dgf-filter__button");t&&e&&(t.style.visibility="hidden",t.style.display="block",e.style.width=t.offsetWidth+"px",t.style.display="",t.style.visibility="")}),this.#r()}#i(){const t=this.querySelector('.dgf-select__option[aria-pressed="true"]');if(!t)return;
1this.emit({key:this.name,data:[t.dataset.id],tag:t.dataset.name}),this.updateUrl(this.name,[t.dataset.id]);const e=this.closest("disgovery-list-widget");queueMicrotask(()=>{const t=()=>{e.removeEventListener("filter-event:rendered",t),this.dispatchEvent(new CustomEvent("filter-event:prefilter-topic",{bubbles:!0}))};e.addEventListener("filter-event:rendered",t)})}#r(){const t=this.querySelector(".dgf-filter__button"),e=this.querySelectorAll(".dgf-select__option");e.forEach(i=>{i.addEventListener("click",()=>{e.forEach(t=>{t.setAttribute("aria-pressed","false"),t.removeAttribute("disabled")}),i.setAttribute("aria-pressed","true"),i.setAttribute("disabled","disabled"),t.textContent=i.dataset.name,this.emit({key:this.name,data:[i.dataset.id],tag:i.dataset.name}),this.updateUrl(this.name,[i.dataset.id]),this.#n()})})}#q(){const t=this.querySelectorAll(".dgf-select__option");t.length&&(t.forEach(t=>{t.setAttribute("aria-pressed","false"),t.removeAttribute("disabled")}),t[0].setAttribute("aria-pressed","true"),t[0].setAttribute("disabled","disabled"),this.querySelector(".dgf-filter__button").textContent=t[0].dataset.name,this.updateUrl(this.name,[]))}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-tags",FilterTags);class FilterTime extends HTMLElement{static observedAttributes=["time-from","time-to"];get#C(){return"time"===this.getAttribute("name")}constructor(){super();const t=this.closest("disgovery-list-widget");["filter-event:reset-all","filter-event:reset-date"].forEach(e=>{t.addEventListener(e,t=>{!0===t.detail&&this.#F()})})}emit(t){return this.dispatchEvent(new CustomEvent("filter-event:filter",{bubbles:!0,detail:t}))}connectedCallback(){const t=this.getAttribute("time-from"),e=this.getAttribute("time-to");this.#C&&(t||e)?this.closest("disgovery-list-widget").querySelectorAll("filter-time").forEach(t=>t.style.display="none"):this.#s()}#s(){if(this.#C){const t=document.getElementById("filter-template--timePicker").content.cloneNode(!0);assignUniqueIds(t);const e=t.querySelector('slot[name="filter-button"]');e&&(e.textContent=this.getAttribute("button-name"));const i=new Date,s=new Date(i);s.setDate(s.getDate()+1);const r=t.querySelector('input[name="timeFrom"]'),l=t.querySelector('input[name="timeTo"]');r&&(r.valueAsDate=i),l&&(l.valueAsDate=s),this.appendChild(t),this.#x()}else{const t=document.getElementById("filter-template--button").content.cloneNode(!0),e=t.querySelector('slot[name="filter-button"]');e&&(e.textContent=this.getAttribute("button-name")),this.appendChild(t),this.#T()}}#x(){this.querySelector(".dgf-filter__button--submit").addEventListener("click",()=>{const t=void 0,e=[...this.querySelectorAll('.dgf-filter__input[type="date"]')].map(t=>t.value),i=[e[0]?e[0]+" 00:00:00":"",e[1]?e[1]+" 23:59:59":""],s=this.#o(e[0]),r=this.#o(e[1]),l=this.querySelector(".dgf-filter__button");if(s||r){const t=s&&r&&s!==r?`${s} - ${r}`:s||r;l.textContent=t,l.classList.add("dgf-filter__button--active"),this.emit({key:"date",data:i,tag:t})}else l.textContent=this.getAttribute("button-name"),l.classList.remove("dgf-filter__button--active"),this.emit({key:"date",data:i});this.#D(),this.#n()}),this.querySelector(".dgf-filter__button--reset").addEventListener("click",()=>{this.#F(),this.emit({key:"date",data:[]}),this.#n()})}#T(){const t=this.querySelector(".dgf-filter__button--submit");t.addEventListener("click",()=>{if(t.classList.contains("active"))t.classList.remove("active"),this.emit({key:"date",data:[]});else{this.#D(),t.classList.add("active");const e=this.getAttribute("time-from"),i=this.getAttribute("time-to")||e;this.emit({key:"date",data:[e,i],tag:this.getAttribute("button-name")})}})}#F(){if(this.#C){const t=this.querySelectorAll('.dgf-filter__input[type="date"]'),e=new Date,i=new Date(e);i.setDate(i.getDate()+1),t.forEach((t,s)=>{t.valueAsDate=0===s?e:i})}const t=this.querySelector(".dgf-filter__button");t&&(t.textContent=this.getAttribute("button-name"),t.classList.remove("dgf-filter__button--active")),this.#D()}#D(){this.closest("disgovery-list-widget").querySelectorAll("filter-time .dgf-filter__button--submit").forEach(t=>t.classList.remove("active"))}#o(t){return t?new Date(t).toLocaleDateString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit"}):null}#n(){this.querySelector(".dgf-filter__button").click()}}customElements.define("filter-time",FilterTime);
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.