PageSourceSearch

https://biberger.de/cdn/shop/t/112/assets/filters.js?v=46559197096893498341769772283

js biberger.de collected 2026-10-06 13:50:16 UTC 8,270 bytes, 2 lines download raw bytes

1(function(){const FILTERS_ID="FacetDrawer",STICKY_FILTERS_ID="FacetDrawerSticky",SLIDER_SELECTOR=".filter-slider",SLIDER_BUTTON_SELECTOR=".filter-slider__button",SLIDER_BUTTON_MIN_SELECTOR=".filter-slider__button_min",SLIDER_BUTTON_MAX_SELECTOR=".filter-slider__button_max",ACTIVE_CHOICE_BUTTON_CLASS="filter-choice__btn_active";let pressedSliderButton=null;function isMobile(){return document.documentElement.clientWidth<1280}function getDrawerId(child){return child.closest(".facet-drawer").id}function getFilterName(child){return child.closest(".filter-range").dataset.name}function getFilterTitle(child){return child.closest(".filter-range").dataset.title}function getFilterFromValue(filter){return parseFloat(filter.querySelector("[data-from-input]").value)}function getFilterToValue(filter){return parseFloat(filter.querySelector("[data-to-input]").value)}function getFilterMaxValue(filter){return parseFloat(filter.querySelector("[data-to-input]").getAttribute("max"))}function getLeftTouchOffset(slider,touchPosition){return touchPosition-slider.getBoundingClientRect().left}function getRightTouchOffset(slider,touchPosition){return slider.getBoundingClientRect().right-touchPosition}function getMaxAllowedOffset(slider,left){const oppositeOffset=parseInt(left?slider.style.borderRightWidth:slider.style.borderLeftWidth)||0;return slider.offsetWidth-oppositeOffset}class SliderFilter{type;name;title;from;to;max;constructor(params){for(let key in params)this[key]=params[key]}get slider(){return document.body.querySelector(`#${this.type} .filter-range[data-name="${this.name}"] .filter-slider`)}get sliderWidth(){return this.slider?.offsetWidth}get leftOffset(){return this.from/this.max*this.sliderWidth}get rightOffset(){return(1-this.to/this.max)*this.sliderWidth}get isActive(){return this.from!==0||this.to!==this.max}get urlToRemove(){const url=new URL(window.location.href);return url.searchParams.delete(this.name),url.toString()}get label(){return this.from===this.to?`${this.title}: ${this.from}`:`${this.title}: ${this.from} - ${this.to}`}fixValues(){if(this.from<=this.to)return;const tmp=this.from;this.from=this.to,this.to=tmp}setFromByOffset(offset){this.from=Math.round(offset/this.sliderWidth*this.max),this.render()}setToByOffset(offset){this.to=Math.round((1-offset/this.sliderWidth)*this.max),this.render()}reset(){this.from=0,this.to=this.max,this.render()}render(){const slider=this.slider;slider.style.borderLeftWidth=`${this.leftOffset}px`,slider.style.borderRightWidth=`${this.rightOffset}px`;const sliderParent=slider.parentElement;sliderParent.querySelector("[data-from-input]").value=this.from,sliderParent.querySelector("[data-to-input]").value=this.to}}function initFilters(){return[...document.body.querySelectorAll(".filter-range")].map(filter=>new SliderFilter({type:getDrawerId(filter),name:getFilterName(filter),title:getFilterTitle(filter),from:getFilterFromValue(filter),to:getFilterToValue(filter),max:getFilterMaxValue(filter)}))}function onMouseDown(e){const target=e.target;if(!target.matches(SLIDER_BUTTON_SELECTOR))return;if(target.matches(SLIDER_BUTTON_MIN_SELECTOR)){pressedSliderButton=target;return}const slider=target.parentElement;pressedSliderButton=parseInt(slider.style.borderLeftWidth)===parseInt(slider.offsetWidth)?slider.querySelector(SLIDER_BUTTON_MIN_SELECTOR):target}function onMouseMove(e){if(!pressedSliderButton)return;const position=e.touches?.length?e.touches[0].clientX:e.clientX;if(!position)return;const slider=pressedSliderButton.parentElement,isLeftButton=pressedSliderButton.matches(SLIDER_BUTTON_MIN_SELECTOR),offset=isLeftButton?getLeftTouchOffset(slider,position):getRightTouchOffset(slider,position),fixedOffset=Math.min(Math.max(offset,0),getMaxAllowedOffset(slider,isLeftButton));isLeftButton?setSliderFromValue(slider,fixedOffset):setSliderToValue(slider,fixedOffset)}function onMouseUp(){pressedSliderButton&&(selectCheckboxesBySlider(pressedSliderButton.parentElement),pressedSliderButton=null)}function setSliderFromValue(slider,offset){getFilterState(slider).setFromByOffset(offset)}function setSliderToValue(slider,offset){getFilterState(slider).setToByOffset(offset)}function getFilterState(child){const drawerId=getDrawerId(child),name=getFilterName(child);return rangeFilters.find(filter=>filter.type===drawerId&&filter.name===name)}function selectCheckboxesBySlider(slider){const sliderSection=slider.closest(".details__content"),checkboxes=[...sliderSection.querySelectorAll('input[type="checkbox"]')],min=parseFloat(sliderSection.querySelector("[data-from-input]").value),max=parseFloat(sliderSection.querySelector("[data-to-input]").value),
1checkboxGroups=groupCheckboxes(checkboxes,min,max);checkboxGroups.check.forEach(c=>{c.checked=!0}),checkboxGroups.uncheck.forEach(c=>{c.checked=!1});const event=new Event("change",{view:window,bubbles:!0,cancelable:!0});checkboxes[0].dispatchEvent(event)}function dispatchChangeEvent(elem){const event=new Event("change",{view:window,bubbles:!0,cancelable:!0});elem.dispatchEvent(event)}function groupCheckboxes(checkboxes,min,max){const result={uncheck:[],check:[]};return result.check=getCheckboxesToCheck(checkboxes,min,max),result.uncheck=getCheckboxesToUncheck(checkboxes,min,max),result.uncheck.length||(result.uncheck=checkboxes,result.check=[]),result}function getCheckboxesToCheck(checkboxes,min,max){return checkboxes.filter(c=>{const value=parseFloat(c.value);return value>=min&&value<=max})}function getCheckboxesToUncheck(checkboxes,min,max){return checkboxes.filter(c=>{const value=parseFloat(c.value);return value<min||value>max})}window.updateRangeFilters=function(){for(const filter of rangeFilters)filter.render()},window.updateActiveFilters=function(){const activeFacetsContainer=document.body.querySelector(".active-facets"),activeFilters=window.rangeFilters.filter(f=>f.isActive);for(const filter of activeFilters){if(activeFacetsContainer.querySelector(`[data-facet-range][data-name="${filter.name}"]`))continue;const facets=activeFacetsContainer.querySelectorAll(`[data-from-slider][data-name="${filter.name}"]`),facetClone=activeFacetsContainer.querySelector("[data-facet-template]").cloneNode(!0);for(const facet of facets)facet.remove();facetClone.querySelector(".facet-title").innerText=filter.label,facetClone.querySelector("a").setAttribute("href",filter.urlToRemove),facetClone.style.display="",facetClone.removeAttribute("data-facet-template"),facetClone.setAttribute("data-name",filter.name),facetClone.setAttribute("data-facet-range","data-facet-range"),activeFacetsContainer.prepend(facetClone)}},window.resetRangeFilter=function(name){window.rangeFilters.filter(f=>f.isActive&&f.name===name).forEach(f=>f.reset())},window.rangeFilters=initFilters(),window.updateActiveFilters(),document.body.addEventListener("mousedown",onMouseDown),document.body.addEventListener("touchstart",onMouseDown),document.body.addEventListener("mousemove",onMouseMove),document.body.addEventListener("touchmove",onMouseMove),document.body.addEventListener("mouseup",onMouseUp),document.body.addEventListener("touchend",onMouseUp),document.body.addEventListener("click",e=>{e.target.matches(".facet-clear-all")&&window.rangeFilters.forEach(f=>f.reset())}),document.body.addEventListener("input",e=>{if(!e.target.closest(".filter-range"))return;const min=parseFloat(e.target.getAttribute("min"));!isNaN(min)&&parseFloat(e.target.value)<min&&(e.target.value=min);const max=parseFloat(e.target.getAttribute("max"));!isNaN(max)&&parseFloat(e.target.value)>max&&(e.target.value=max)}),document.body.addEventListener("change",e=>{if(!e.target.closest(".filter-range"))return;e.preventDefault(),e.stopImmediatePropagation();const value=parseFloat(e.target.value);if(isNaN(value))return;const filter=getFilterState(e.target);e.target.hasAttribute("data-from-input")?filter.from=value:e.target.hasAttribute("data-to-input")&&(filter.to=value),filter.fixValues(),filter.render(),selectCheckboxesBySlider(filter.slider)}),document.body.addEventListener("keydown",e=>{e.target.closest(".filter-range")&&e.code==="Enter"&&(e.preventDefault(),e.stopPropagation(),e.target.matches('input[type="number"]')&&dispatchChangeEvent(e.target))})})();
2//# sourceMappingURL=/cdn/shop/t/112/assets/filters.js.map?v=46559197096893498341769772283

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.