1function KirraFilters(settings){const defaults={filterForm:".js-filter-form",resultSelector:".js-filter-result-container",singleResultSelector:".column-overview",resultStatusSelector:".js-no-items",autoSubmit:true,debounceLength:200};this.settings=Object.assign({},defaults,settings||{});this.filterForm=document.querySelector(this.settings.filterForm);this.resultContainer=document.querySelector(this.settings.resultSelector);this.request=null;this.debounce=null;this.init()}KirraFilters.prototype.init=function(){const self=this;const results_message=document.querySelector(this.settings.resultStatusSelector);if(results_message!==null){const results_container=this.resultContainer?this.resultContainer:document.querySelector(".filter-result-container");const results=results_container.querySelectorAll(this.settings.singleResultSelector);const has_results_message=results_message.getAttribute("data-results-message");const no_results_message=results_message.getAttribute("data-no-results-message");results_message.innerHTML=results.length?has_results_message:no_results_message}if(this.settings.autoSubmit&&this.resultContainer){self.filterForm.addEventListener("submit",function(event){event.preventDefault();self.submitForm()});self.filterForm.addEventListener("reset",()=>setTimeout(()=>self.submitForm(),0));self.filterForm.querySelectorAll('select,input[type="radio"],input[type="checkbox"]').forEach(function(element){element.onchange=()=>setTimeout(()=>self.submitForm(),0)});self.filterForm.querySelectorAll('input[type="search"]').forEach(function(element){element.oninput=()=>{clearTimeout(self.debounce);self.debounce=setTimeout(()=>self.submitForm(),self.settings.debounceLength)}})}self.filterForm.querySelectorAll("[data-collapsible-options-toggle]").forEach(toggle_button=>{toggle_button.addEventListener("click",()=>{const collapsible_options_wrapper=document.getElementById(toggle_button.getAttribute("aria-controls"));if(collapsible_options_wrapper){toggle_button.setAttribute("aria-expanded",toggle_button.getAttribute("aria-expanded")!=="true"?"true":"false");collapsible_options_wrapper.setAttribute("aria-hidden",collapsible_options_wrapper.getAttribute("aria-hidden")!=="true"?"true":"false");document.dispatchEvent(new CustomEvent(KirraFilters.name+":onToggleCollapsibleOptions",{detail:{collapsible_options_wrapper:collapsible_options_wrapper,toggle_button:toggle_button}}))}})})};KirraFilters.prototype.submitForm=function(){const self=this;if(!this.resultContainer){this.filterForm.submit()}else{const method=(this.filterForm.getAttribute("method")||"GET").toUpperCase();let action=this.filterForm.getAttribute("action");const serialized_data=self.serializeForm(this.filterForm);if(self.request!==null){self.request.abort()}self.request=new XMLHttpRequest;if(method==="GET"){action+=(action.includes("?")?"&":"?")+serialized_data}this.resultContainer.classList.add("loading","loading-filtering");self.request.addEventListener("load",function(){if(self.request.status!==200){console.warn("response status is not 200")}self.changeContent(self.request.responseText)});document.dispatchEvent(new CustomEvent(KirraFilters.name+":beforeFilterUpdate",{detail:{container:this.resultContainer,method:method,action:action,serialized_data:serialized_data}}));self.request.open(method,action);if(method!=="GET"){self.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");self.request.send(serialized_data)}else{self.request.send()}}};KirraFilters.prototype.changeContent=function(responseText){document.dispatchEvent(new CustomEvent(KirraFilters.name+":beforeChangeContent",{detail:{container:this.resultContainer,content:responseText}}
1));const responseElement=document.createElement("html");responseElement.innerHTML=responseText.trim();const results_wrapper=responseElement.querySelector(this.settings.resultSelector);const new_results_message=responseElement.querySelector(this.settings.resultStatusSelector);if(new_results_message!==null){const results=results_wrapper.querySelectorAll(this.settings.singleResultSelector);const has_results_message=new_results_message.getAttribute("data-results-message");const no_results_message=new_results_message.getAttribute("data-no-results-message");const orig_results_message=document.querySelector(this.settings.resultStatusSelector);orig_results_message.innerHTML=results.length?has_results_message:no_results_message}if(results_wrapper){this.resultContainer.innerHTML=results_wrapper.innerHTML;document.dispatchEvent(new CustomEvent(KirraFilters.name+":afterChangeContent",{detail:{container:this.resultContainer,content:responseText}}))}this.resultContainer.classList.remove("loading","loading-filtering");self.request=null};KirraFilters.prototype.serializeForm=function(form){let field,s=[];if(typeof form==="object"&&form.nodeName==="FORM"){const len=form.elements.length;for(i=0;i<len;i++){field=form.elements[i];if(field.name&&!field.disabled&&field.type!=="file"&&field.type!=="reset"&&field.type!=="submit"&&field.type!=="button"){if(field.type==="select-multiple"){for(j=form.elements[i].options.length-1;j>=0;j--){if(field.options[j].selected){s[s.length]=encodeURIComponent(field.name)+"="+encodeURIComponent(field.options[j].value)}}}else if(field.type!=="checkbox"&&field.type!=="radio"||field.checked){s[s.length]=encodeURIComponent(field.name)+"="+encodeURIComponent(field.value)}}}}return s.join("&")};const kirraFilters=new KirraFilters; 2function FilterFormHistory(settings){const defaults={filterFormSelector:".js-filter-form"};this.settings=Object.assign({},defaults,settings||{});this.kirraFilters=kirraFilters;this.inHistoryPopState=false;this.url="";if(!this.kirraFilters){console.warn("Kirra filters were undefined.");return}const filter=this.getFilterForm();if(!filter||filter.dataset.filterFormHistory==="false"){return}document.addEventListener("KirraFilters:beforeFilterUpdate",this.onBeforeFilterUpdate.bind(this));window.onpopstate=this.onPopState.bind(this)}FilterFormHistory.prototype.onBeforeFilterUpdate=function(event){const parameters=this.removeEmptyParameters(event.detail.action.split("?")[1]);this.url=event.detail.action.split("?")[0];if(parameters){this.url+="?"+parameters}const state={source:FilterFormHistory.name,action:this.url,serialized_data:event.detail.serialized_data};if(!this.inHistoryPopState&&document.dispatchEvent(new CustomEvent(FilterFormHistory.name+":beforePushHistory",{detail:{url:this.url,form:this.getFilterForm(),filterFormHistory:this,state:state}}))){window.history.pushState(state,"",this.url)}};FilterFormHistory.prototype.onPopState=function(event){let data,form;if(!(form=this.getFilterForm())||event.state&&event.state.source!==FilterFormHistory.name){return}this.inHistoryPopState=true;if(event.state){data=this.deserializeData(event.state.serialized_data)}else{data=[];for(let i=0;i<form.elements.length;i++){data.push({key:form.elements[i].name,value:""})}}if(this.populateForm(form,data)){this.kirraFilters.submitForm()}this.inHistoryPopState=false};FilterFormHistory.prototype.getFilterForm=function(){return document.querySelector(this.settings.filterFormSelector)};FilterFormHistory.prototype.populateForm=function(form,data){let modified=false;const valuesPerField={};data.forEach(function(dataField){if(!valuesPerField[dataField.key]){valuesPerField[dataField.key]=[]}valuesPerField[dataField.key].push(dataField.value)});function updateCheckbox(checkbox,values){const checked=values.includes(checkbox.value);if(checked!==checkbox.checked){modified=true}checkbox.checked=checked}for(let key in valuesPerField){const field=form.elements[key];if(!field){continue}const values=valuesPerField[key];if(field instanceof RadioNodeList){field.forEach(input=>updateCheckbox(input,values))}else if(field.type==="checkbox"||field.type==="radio"){updateCheckbox(field,values)}else if(field.value!==values[0]){modified=true;field.value=values[0]}}return modified};FilterFormHistory.prototype.removeEmptyParameters=function(serialized_data){const data=this.deserializeData(serialized_data).filter(field=>!!field.value);return this.serializeData(data)};FilterFormHistory.prototype.serializeData=function serializeData(data){if(data.length===0){return""}return data.map(field=>`${field.key}=${encodeURIComponent(field.value)}`).join("&")};FilterFormHistory.prototype.deserializeData=function(serialized_data){const map=[];if(serialized_data[0]==="?"){serialized_data=serialized_data.substring(1)}if(serialized_data!==""){const pairs=serialized_data.split("&");for(let i=0;i<pairs.length;i+=1){const keyValuePair=pairs[i].split("=");const key=decodeURIComponent(keyValuePair[0]);map.push({key:key,value:keyValuePair.length>
21?decodeURIComponent(keyValuePair[1]):undefined})}}return map};document.addEventListener("DOMContentLoaded",function(){new FilterFormHistory}); 3document.addEventListener(KirraFilters.name+":afterChangeContent",function(event){if(jQuery.fn.foundation){$(event.detail.container).foundation()}if(jQuery.fn.responsiveImage){$(event.detail.container).find("[data-responsive-image]").responsiveImage()}else{var script=document.createElement("script");script.src="/bundles/kirraframework/js/responsive-image.min.js";document.head.appendChild(script);script.onload=function(){$(event.detail.container).find("[data-responsive-image]").responsiveImage()}}document.dispatchEvent(new CustomEvent("KirraResponsiveImageRatio:SetSizes",{}))}); 4document.addEventListener("DOMContentLoaded",function(){const filterForm=".js-filter-form";const filterFormVisibleClass="filter-form-visible";const filterToggleButton=".js-form-filter-overlay-button";const filterCloseButton=".js-filter-form-close-button";const $html=$("html");$(document).on("click",filterToggleButton,function(){if($html.hasClass(filterFormVisibleClass)){hideFilterForm()}else{$html.toggleClass(filterFormVisibleClass);$(filterForm).attr("aria-hidden","false")}});$(document).on("keyup",function(e){if(e.keyCode===27){hideFilterForm()}});$(document).on("click",filterCloseButton,function(e){e.preventDefault();hideFilterForm()});function hideFilterForm(){$html.toggleClass(filterFormVisibleClass);$(filterForm).attr("aria-hidden","true")}});
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.