PageSourceSearch

https://www.ddows.org/wp-content/cache/min/1/wp-content/plugins/br…/assets/frontend.js?ver=1787043598

js ddows.org collected 2026-09-25 05:39:23 UTC 26,619 bytes, 89 lines download raw bytes

1(function(){var IS_TOUCH_PRIMARY=!!(window.matchMedia&&window.matchMedia("(hover: none) and (pointer: coarse)").matches);function bindScrollSync(target,handler){target.addEventListener("scroll",handler,{passive:!0});if(IS_TOUCH_PRIMARY){target.addEventListener("touchmove",handler,{passive:!0});target.addEventListener("scrollend",handler,{passive:!0})}}
2function syncRows(wrapper){if(!wrapper||!wrapper.isConnected)return;var labels=wrapper.querySelectorAll(".vergleich-labels .vergleich-label");var cards=wrapper.querySelectorAll(".vergleich-card");if(!labels.length||!cards.length)return;labels.forEach(function(el){el.style.minHeight=""});var cardCells=[];cards.forEach(function(card){var cells=[];card.querySelectorAll(".vergleich-zelle").forEach(function(el){if(el.closest(".vergleich-card")===card)cells.push(el)});cardCells.push(cells);cells.forEach(function(el){el.style.minHeight=""})});for(var i=0;i<labels.length;i++){var max=labels[i].offsetHeight;for(var c=0;c<cardCells.length;c++){var cell=cardCells[c][i];if(cell)max=Math.max(max,cell.offsetHeight)}
3labels[i].style.minHeight=max+"px";for(var c2=0;c2<cardCells.length;c2++){var cell2=cardCells[c2][i];if(cell2)cell2.style.minHeight=max+"px"}}}
4function bindExpand(wrapper){if(!wrapper||wrapper._vglBound)return;wrapper._vglBound=!0;var root=wrapper.closest(".vergleich-root")||wrapper.parentNode;var btn=root?root.querySelector(".vergleich-expand-btn"):null;if(!btn)return;btn.addEventListener("click",function(){wrapper.classList.toggle("is-collapsed");var isCollapsed=wrapper.classList.contains("is-collapsed");btn.setAttribute("aria-expanded",isCollapsed?"false":"true");var txt=btn.querySelector(".vergleich-expand-text");if(txt){txt.textContent=isCollapsed?btn.getAttribute("data-label-expand"):btn.getAttribute("data-label-collapse")}
5var iconWrap=btn.querySelector(".vergleich-expand-icon");if(iconWrap)iconWrap.style.transform=isCollapsed?"rotate(0deg)":"rotate(180deg)";requestAnimationFrame(function(){syncRows(wrapper);updateNav(wrapper)})})}
6function findCounter(wrapper){var id=wrapper.getAttribute("data-counter");if(id){var byId=document.getElementById(id);if(byId)return byId}
7var root=wrapper.closest(".vergleich-root")||wrapper.parentNode;return root?root.querySelector("[data-vgl-counter]"):null}
8function updateNavPosition(wrapper){var rootEl=wrapper.closest(".vergleich-root")||wrapper.parentNode;if(!rootEl)return;var prev=rootEl.querySelector(".vergleich-nav--prev");var next=rootEl.querySelector(".vergleich-nav--next");if(!prev&&!next)return;var rect=wrapper.getBoundingClientRect();var vh=window.innerHeight||document.documentElement.clientHeight||0;if(vh<=0)return;if(rect.bottom<=0||rect.top>=vh)return;var rootRect=rootEl.getBoundingClientRect();var cs=window.getComputedStyle(wrapper);var anchor=wrapper.querySelector(".vergleich-card > .vergleich-zelle:nth-child(2)")||wrapper.querySelector(".vergleich-card > .vergleich-zelle")||wrapper;var aRect=anchor.getBoundingClientRect();var nudgeYRaw=parseFloat(cs.getPropertyValue("--vgl-nav-offset-y"));var nudgeY=isNaN(nudgeYRaw)?0:nudgeYRaw;var defaultScreenY=aRect.top+aRect.height/2+nudgeY;var stickyScreenY=40;var screenY=Math.max(defaultScreenY,stickyScreenY);var maxScreenY=rect.bottom-30;if(screenY>maxScreenY)screenY=maxScreenY;var topInRoot=screenY-rootRect.top;var topVal=topInRoot+"px";if(prev)prev.style.top=topVal;if(next)next.style.top=topVal;var navOffsetRaw=parseFloat(cs.getPropertyValue("--vgl-nav-offset"));var navOffset=isNaN(navOffsetRaw)?12:navOffsetRaw;var nudgeXRaw=parseFloat(cs.getPropertyValue("--vgl-nav-offset-x"));var nudgeX=isNaN(nudgeXRaw)?0:nudgeXRaw;var scroll=wrapper.querySelector(".vergleich-scroll");if(scroll){var sRect=scroll.getBoundingClientRect();var viewportLeft=sRect.left;var viewportRight=sRect.left+scroll.clientWidth;var pinnedCard=scroll.querySelector(".vergleich-card.is-pinned");if(pinnedCard){var pRect=pinnedCard.getBoundingClientRect();if(pRect.right>viewportLeft){viewportLeft=pRect.right}}
9if(prev){prev.style.left=(viewportLeft-rootRect.left+navOffset+nudgeX)+"px";prev.style.right="auto"}
10if(next){next.style.right=(rootRect.right-viewportRight+navOffset-nudgeX)+"px";next.style.left="auto"}}}
11function updateNav(wrapper){var scroll=wrapper.querySelector(".vergleich-scroll");
11if(!scroll)return;var counter=findCounter(wrapper);var rootEl=wrapper.closest(".vergleich-root")||wrapper.parentNode;var prev=rootEl?rootEl.querySelector(".vergleich-nav--prev"):null;var next=rootEl?rootEl.querySelector(".vergleich-nav--next"):null;var overflows=scroll.scrollWidth-scroll.clientWidth>1;var atStart=scroll.scrollLeft<=4;var atEnd=scroll.scrollLeft>=scroll.scrollWidth-scroll.clientWidth-4;updateNavPosition(wrapper);if(prev&&next){prev.hidden=!overflows||atStart;next.hidden=!overflows||atEnd}
12if(counter){var cards=scroll.querySelectorAll(".vergleich-card");var total=cards.length;if(total===0){counter.textContent=""}else{var firstCard=cards[0];var cardW=firstCard?firstCard.getBoundingClientRect().width:0;if(!cardW||cardW<1)cardW=1;var cw=scroll.clientWidth||cardW;var visible=Math.max(1,Math.round(cw/cardW));var start=Math.floor(scroll.scrollLeft/cardW)+1;if(start<1)start=1;if(start>total)start=total;var end=Math.min(start+visible-1,total);var fmt=counter.getAttribute("data-format")||"{start}–{end} von {total}";counter.textContent=fmt.replace("{start}",start).replace("{end}",end).replace("{total}",total)}}}
13function bindNav(wrapper){if(wrapper._vglNavBound){updateNav(wrapper);return}
14wrapper._vglNavBound=!0;var rootForClicks=wrapper.closest(".vergleich-root")||wrapper.parentNode;(rootForClicks||wrapper).addEventListener("click",function(e){var btn=e.target&&e.target.closest?e.target.closest("[data-vgl-nav]"):null;if(!btn)return;var clickRoot=btn.closest(".vergleich-root");if(clickRoot&&clickRoot!==rootForClicks)return;var scroll=wrapper.querySelector(".vergleich-scroll");if(!scroll)return;var dir=btn.getAttribute("data-vgl-nav");var stepMode=wrapper.classList.contains("vgl-nav-step-view")?"view":"card";var cards=scroll.querySelectorAll(".vergleich-card");var step;if(stepMode==="view"){step=Math.max(scroll.clientWidth-20,100)}else if(cards.length>=2){step=cards[1].offsetLeft-cards[0].offsetLeft}else if(cards.length===1){step=cards[0].offsetWidth}else{step=200}
15var delta=(dir==="prev"?-step:step);var target=scroll.scrollLeft+delta;var max=scroll.scrollWidth-scroll.clientWidth;if(target<0)target=0;if(target>max)target=max;scroll.scrollLeft=target;var t="translate3d("+target+"px,0,0)";wrapper.style.setProperty("--vgl-scroll-left",target+"px");var pinnedCard=scroll.querySelector(".vergleich-card.is-pinned");if(pinnedCard)pinnedCard.style.transform=t;var navRoot=wrapper.closest(".vergleich-root")||wrapper.parentNode;if(navRoot){var pinnedLabel=navRoot.querySelector(".vergleich-product-label-item.is-pinned-label");if(pinnedLabel)pinnedLabel.style.transform=t}
16updateNav(wrapper)});var handler=function(){updateNav(wrapper)};var posHandler=function(){updateNavPosition(wrapper)};var scroll=wrapper.querySelector(".vergleich-scroll");if(scroll)bindScrollSync(scroll,handler);window.addEventListener("resize",handler);bindScrollSync(window,posHandler);document.addEventListener("scroll",posHandler,{passive:!0,capture:!0});if(IS_TOUCH_PRIMARY){document.addEventListener("touchmove",posHandler,{passive:!0,capture:!0})}
17if(typeof ResizeObserver!=="undefined"){var ro=new ResizeObserver(handler);if(scroll)ro.observe(scroll);ro.observe(wrapper)}
18requestAnimationFrame(handler);setTimeout(handler,250);setTimeout(handler,800)}
19function bindLabelRowSync(wrapper){if(!wrapper||wrapper._vglLabelRowBound)return;var root=wrapper.closest(".vergleich-root")||wrapper.parentNode;if(!root)return;var track=root.querySelector(".vergleich-product-label-row__track");if(!track)return;var scroll=wrapper.querySelector(".vergleich-scroll");if(!scroll)return;wrapper._vglLabelRowBound=!0;var ticking=!1;function apply(){track.style.transform="translateX("+(-scroll.scrollLeft)+"px)"}
20scroll.addEventListener("scroll",function(){if(ticking)return;ticking=!0;requestAnimationFrame(function(){apply();ticking=!1})},{passive:!0});apply()}
21function bindRowHover(wrapper){if(wrapper._vglRowHoverBound)return;wrapper._vglRowHoverBound=!0;function rowEls(idx){return wrapper.querySelectorAll('[data-row-index="'+idx+'"]')}
22function clearActive(){var active=wrapper.querySelectorAll(".is-row-hover");for(var i=0;i<active.length;i++)active[i].classList.remove("is-row-hover");}
23wrapper.addEventListener("mouseover",function(e){if(!wrapper.classList.contains("has-row-hover"))return;var el=e.target&&e.target.closest?e.target.closest("[data-row-index]"):null;if(!el||!wrapper.contains(el))return;var idx=el.getAttribute("data-row-index");if(idx===null)return;clearActive();var els=rowEls(idx);for(var i=0;i<els.length;i++)els[i].classList.add("is-row-hover");});wrapper.addEventListener("mouseleave",clearActive)}
24function bindStickyRows(wrapper){if(wrapper._vglStickyBound)return;var root=wrapper.closest(".vergleich-root")||wrapper.parentNode;if(!root)return;var rowMap={};root.querySelectorAll(".is-sticky-row").forEach(function(cell){var idx=cell.getAttribute("data-row-index");if(idx===null)return;(rowMap[idx]=rowMap[idx]||[]).push(cell)});if(!Object.keys(rowMap).length)return;wrapper._vglStickyBound=!0;wrapper.querySelectorAll(".vergleich-card").forEach(function(card){var rank=card.querySelector(":scope > .vergleich-rank");if(!rank)return;var firstStickyCell=card.querySelector(":scope > .vergleich-zelle.is-sticky-row");if(!firstStickyCell)return;firstStickyCell.style.position="relative";firstStickyCell.appendChild(rank)});var sortedIdxs=Object.keys(rowMap).sort(function(a,b){return parseInt(a,10)-parseInt(b,10)});var baseOffset=0;var rows=[];var lastTy=[];function measure(){var cs=window.getComputedStyle(wrapper);var offsetRaw=parseFloat(cs.getPropertyValue("--vgl-sticky-row-top"));baseOffset=isNaN(offsetRaw)?0:offsetRaw;rows=[];lastTy=[];for(var k=0;k<sortedIdxs.length;k++){var cellsK=rowMap[sortedIdxs[k]];for(var i=0;i<cellsK.length;i++)cellsK[i].style.transform=""}
25var wrapRect=wrapper.getBoundingClientRect();var wrapTop=wrapRect.top;for(var m=0;m<sortedIdxs.length;m++){var cellsM=rowMap[sortedIdxs[m]];if(!cellsM.length)continue;var r=cellsM[0].getBoundingClientRect();rows.push({cells:cellsM,offsetInWrap:r.top-wrapTop,height:r.height});lastTy.push(-1)}}
26var pinEls=wrapper.querySelectorAll(".vergleich-card > .vergleich-pin, .vergleich-card > .vergleich-rank");var lastPinTy=-1;
26function update(){if(!rows.length)return;var wrapRect=wrapper.getBoundingClientRect();var wrapTop=wrapRect.top;var wrapBottom=wrapRect.bottom;var topAccum=baseOffset;var firstRowTy=0;for(var i=0;i<rows.length;i++){var row=rows[i];var naturalTop=wrapTop+row.offsetInWrap;var translateY=0;if(naturalTop<topAccum){translateY=topAccum-naturalTop;var maxTranslate=wrapBottom-naturalTop-row.height;if(maxTranslate<0)maxTranslate=0;if(translateY>maxTranslate)translateY=maxTranslate}
27var tyRounded=Math.round(translateY);if(tyRounded!==lastTy[i]){var t=tyRounded>0?"translate3d(0,"+tyRounded+"px,0)":"";for(var c=0;c<row.cells.length;c++){row.cells[c].style.transform=t}
28lastTy[i]=tyRounded}
29if(i===0)firstRowTy=tyRounded;if(translateY>0)topAccum+=row.height}
30if(pinEls.length&&firstRowTy!==lastPinTy){for(var p=0;p<pinEls.length;p++){if(firstRowTy>0){pinEls[p].style.setProperty("transform","translate3d(0,"+firstRowTy+"px,0)","important")}else{pinEls[p].style.removeProperty("transform")}}
31lastPinTy=firstRowTy}}
32var pending=!1;function schedule(){if(pending)return;pending=!0;requestAnimationFrame(function(){update();pending=!1})}
33function remeasure(){measure();schedule()}
34measure();update();bindScrollSync(window,schedule);window.addEventListener("resize",remeasure);if(typeof ResizeObserver!=="undefined"){var ro=new ResizeObserver(remeasure);ro.observe(wrapper)}
35setTimeout(remeasure,100);setTimeout(remeasure,500)}
36function bindStickyBottomRows(wrapper){if(wrapper._vglStickyBottomBound)return;var rowMap={};wrapper.querySelectorAll(".is-sticky-bottom-overlay").forEach(function(cell){var idx=cell.getAttribute("data-row-index");if(idx===null)return;(rowMap[idx]=rowMap[idx]||[]).push(cell)});if(!Object.keys(rowMap).length)return;wrapper._vglStickyBottomBound=!0;var sortedIdxs=Object.keys(rowMap).sort(function(a,b){return parseInt(b,10)-parseInt(a,10)});var rows=[];var lastTy=[];var labelsCol=wrapper.querySelector(".vergleich-labels");var cardsList=wrapper.querySelectorAll(".vergleich-card");var totalPadding=0;var paddingActive=!1;var suppressResize=!1;var suppressTimer=0;function setBottomPadding(px){var v=px>0?px+"px":"";if(labelsCol)labelsCol.style.paddingBottom=v;cardsList.forEach(function(c){c.style.paddingBottom=v})}
37function applyPadding(needed){if(needed===paddingActive)return;suppressResize=!0;setBottomPadding(needed&&totalPadding>0?totalPadding:0);paddingActive=needed;if(suppressTimer)clearTimeout(suppressTimer);suppressTimer=setTimeout(function(){suppressResize=!1},50)}
38var labelsBg="";var cardsBg=[];function readBackgrounds(){function clean(bg){return(bg&&bg!=="rgba(0, 0, 0, 0)"&&bg!=="transparent")?bg:""}
39if(labelsCol)labelsBg=clean(window.getComputedStyle(labelsCol).backgroundColor);cardsBg=[];for(var i=0;i<cardsList.length;i++){cardsBg.push(clean(window.getComputedStyle(cardsList[i]).backgroundColor))}}
40function measure(){rows=[];lastTy=[];for(var k=0;k<sortedIdxs.length;k++){var cellsK=rowMap[sortedIdxs[k]];for(var i=0;i<cellsK.length;i++)cellsK[i].style.transform=""}
41setBottomPadding(0);paddingActive=!1;var wrapRect=wrapper.getBoundingClientRect();var wrapTop=wrapRect.top;totalPadding=0;for(var m=0;m<sortedIdxs.length;m++){var cellsM=rowMap[sortedIdxs[m]];if(!cellsM.length)continue;var r=cellsM[0].getBoundingClientRect();rows.push({cells:cellsM,offsetInWrap:r.top-wrapTop,height:r.height});lastTy.push(0);totalPadding+=r.height}
42readBackgrounds()}
43function update(){if(!rows.length)return;var wrapRect=wrapper.getBoundingClientRect();var wrapTop=wrapRect.top;var wrapBottom=wrapRect.bottom;var vh=window.innerHeight||document.documentElement.clientHeight;var bottomAccum=0;var anyPinned=!1;var stickyTopHeight=0;var stickyTopCells=wrapper.querySelectorAll(".vergleich-labels .vergleich-label.is-sticky-row");for(var st=0;st<stickyTopCells.length;st++){stickyTopHeight+=stickyTopCells[st].getBoundingClientRect().height}
44var baseOffsetRaw=parseFloat(window.getComputedStyle(wrapper).getPropertyValue("--vgl-sticky-row-top"));var baseOffset=isNaN(baseOffsetRaw)?0:baseOffsetRaw;var stickyTopReserved=baseOffset+stickyTopHeight;for(var i=0;i<rows.length;i++){var row=rows[i];var naturalTop=wrapTop+row.offsetInWrap;var naturalBottom=naturalTop+row.height;var anchorBottom=Math.min(vh-bottomAccum,wrapBottom);var anchorTop=anchorBottom-row.height;var rowFullyVisible=(row.height>0)&&(naturalTop>=0)&&(naturalBottom<=vh);var cellHasEnteredViewport=(naturalTop<vh)||(naturalBottom<0);var translateY=0;if(!rowFullyVisible&&cellHasEnteredViewport){translateY=anchorBottom-naturalBottom;var minT=Math.max(wrapTop-naturalTop,stickyTopReserved-naturalTop);var maxT=wrapBottom-naturalBottom;if(minT>maxT){translateY=0}else{if(translateY<minT)translateY=minT;if(translateY>maxT)translateY=maxT}}
45var tyRounded=Math.round(translateY);if(tyRounded!==0&&!anyPinned){applyPadding(!0);anyPinned=!0}
46var wasActive=(lastTy[i]!==0);var isActive=(tyRounded!==0);var justActivated=isActive&&!wasActive;var justDeactivated=!isActive&&wasActive;if(tyRounded!==lastTy[i]){var t=isActive?"translate3d(0,"+tyRounded+"px,0)":"";for(var c=0;c<row.cells.length;c++){var cell=row.cells[c];if(justActivated){var bg="";if(cell.classList.contains("vergleich-label")){bg=labelsBg}else{var card=cell.closest(".vergleich-card");if(card){var ci=Array.prototype.indexOf.call(cardsList,card);if(ci>=0)bg=cardsBg[ci]}}
47if(bg)cell.style.backgroundColor=bg;cell.style.transition="transform 0s";cell.style.transform="translate3d(0,"+(tyRounded+row.height)+"px,0)";cell.offsetHeight;cell.style.transition="transform 280ms cubic-bezier(0.22, 0.61, 0.36, 1)";(function(c2){setTimeout(function(){c2.style.transition=""},320)})(cell)}else if(justDeactivated){cell.style.backgroundColor="";cell.style.transition=""}
48cell.style.transform=t}
49lastTy[i]=tyRounded}
50if(tyRounded!==0)bottomAccum+=row.height}
51if(!anyPinned)applyPadding(!1)}
52var pending=!1;function schedule(){if(pending)return;pending=!0;
52requestAnimationFrame(function(){update();pending=!1})}
53function remeasure(){measure();schedule()}
54measure();update();bindScrollSync(window,schedule);window.addEventListener("resize",remeasure);if(typeof ResizeObserver!=="undefined"){var ro=new ResizeObserver(function(){if(suppressResize)return;remeasure()});ro.observe(wrapper)}
55setTimeout(remeasure,100);setTimeout(remeasure,500)}
56function bindPin(wrapper){if(wrapper._vglPinBound)return;if(!wrapper.classList.contains("has-pin"))return;wrapper._vglPinBound=!0;var scroll=wrapper.querySelector(".vergleich-scroll");var track=wrapper.querySelector(".vergleich-track");if(!scroll||!track)return;function updateAvailability(){var cards=track.querySelectorAll(".vergleich-card");if(cards.length<2){wrapper.classList.remove("can-pin");return}
57var ref=null;for(var i=0;i<cards.length;i++){if(!cards[i].classList.contains("is-pinned")){ref=cards[i];break}}
58if(!ref)ref=cards[0];var cardW=ref.offsetWidth;if(!cardW||cardW<1){wrapper.classList.remove("can-pin");return}
59var visible=Math.floor(scroll.clientWidth/cardW);if(visible>=2){wrapper.classList.add("can-pin")}else{wrapper.classList.remove("can-pin");var pinned=track.querySelector(".vergleich-card.is-pinned");if(pinned)unpin(pinned)}}
60var rootEl=wrapper.closest(".vergleich-root")||wrapper.parentNode;function ensureOriginalIndexes(){var cards=track.querySelectorAll(".vergleich-card");for(var i=0;i<cards.length;i++){if(!cards[i].hasAttribute("data-vgl-original-index")){cards[i].setAttribute("data-vgl-original-index",String(i))}}
61if(rootEl){var items=rootEl.querySelectorAll(".vergleich-product-label-item");for(var j=0;j<items.length;j++){if(!items[j].hasAttribute("data-vgl-original-index")){items[j].setAttribute("data-vgl-original-index",String(j))}}}}
62ensureOriginalIndexes();function restoreCardOrder(){var cards=Array.prototype.slice.call(track.querySelectorAll(".vergleich-card"));cards.sort(function(a,b){return(+a.getAttribute("data-vgl-original-index"))-(+b.getAttribute("data-vgl-original-index"))});var frag=document.createDocumentFragment();for(var i=0;i<cards.length;i++)frag.appendChild(cards[i]);track.appendChild(frag)}
63function labelTrackEl(){return rootEl?rootEl.querySelector(".vergleich-product-label-row__track"):null}
64function restoreLabelOrder(){var labelTrack=labelTrackEl();if(!labelTrack)return;var items=Array.prototype.slice.call(labelTrack.querySelectorAll(".vergleich-product-label-item"));items.sort(function(a,b){return(+a.getAttribute("data-vgl-original-index"))-(+b.getAttribute("data-vgl-original-index"))});var frag=document.createDocumentFragment();for(var i=0;i<items.length;i++)frag.appendChild(items[i]);labelTrack.appendChild(frag)}
65function labelItemForCard(card){if(!rootEl)return null;var idx=card.getAttribute("data-vgl-original-index");if(idx===null)return null;return rootEl.querySelector('.vergleich-product-label-item[data-vgl-original-index="'+idx+'"]')}
66function clearAllPinnedLabels(){if(!rootEl)return;rootEl.querySelectorAll(".vergleich-product-label-item.is-pinned-label").forEach(function(el){el.classList.remove("is-pinned-label");el.style.transform=""})}
67function pin(card){var prev=track.querySelector(".vergleich-card.is-pinned");if(prev&&prev!==card){prev.classList.remove("is-pinned");prev.style.transform="";var prevBtn=prev.querySelector(".vergleich-pin");if(prevBtn)prevBtn.setAttribute("aria-pressed","false")}
68clearAllPinnedLabels();restoreCardOrder();restoreLabelOrder();track.insertBefore(card,track.firstElementChild);card.classList.add("is-pinned");var btn=card.querySelector(".vergleich-pin");if(btn)btn.setAttribute("aria-pressed","true");var label=labelItemForCard(card);var labelTrack=labelTrackEl();if(label&&labelTrack){labelTrack.insertBefore(label,labelTrack.firstElementChild);label.classList.add("is-pinned-label")}
69scroll.scrollLeft=0;pinnedCardRef=card;pinnedLabelRef=label||null;applySyncNow();requestAnimationFrame(function(){syncRows(wrapper);updateNav(wrapper)})}
70function unpin(card){card.classList.remove("is-pinned");card.style.transform="";var btn=card.querySelector(".vergleich-pin");
70if(btn)btn.setAttribute("aria-pressed","false");clearAllPinnedLabels();restoreCardOrder();restoreLabelOrder();pinnedCardRef=null;pinnedLabelRef=null;applySyncNow();requestAnimationFrame(function(){syncRows(wrapper);updateNav(wrapper)})}
71var pinnedCardRef=null;var pinnedLabelRef=null;var pendingRAF=!1;function refreshPinRefs(){pinnedCardRef=track.querySelector(".vergleich-card.is-pinned");pinnedLabelRef=rootEl?rootEl.querySelector(".vergleich-product-label-item.is-pinned-label"):null}
72function applySyncNow(){var x=scroll.scrollLeft;wrapper.style.setProperty("--vgl-scroll-left",x+"px");var t="translate3d("+x+"px,0,0)";if(pinnedCardRef)pinnedCardRef.style.transform=t;if(pinnedLabelRef)pinnedLabelRef.style.transform=t}
73function syncScrollVar(){if(pendingRAF)return;pendingRAF=!0;requestAnimationFrame(function(){pendingRAF=!1;applySyncNow()})}
74scroll.addEventListener("scroll",syncScrollVar,{passive:!0});applySyncNow();track.addEventListener("click",function(e){var btn=e.target&&e.target.closest?e.target.closest("[data-vgl-pin]"):null;if(!btn)return;var card=btn.closest(".vergleich-card");if(!card)return;e.preventDefault();if(card.classList.contains("is-pinned")){unpin(card)}else{if(!wrapper.classList.contains("can-pin"))return;pin(card)}});updateAvailability();window.addEventListener("resize",updateAvailability);if(typeof ResizeObserver!=="undefined"){var ro=new ResizeObserver(updateAvailability);ro.observe(scroll)}
75setTimeout(updateAvailability,250);setTimeout(updateAvailability,800)}
76function init(wrapper){syncRows(wrapper);bindExpand(wrapper);bindNav(wrapper);bindRowHover(wrapper);bindLabelRowSync(wrapper);bindStickyRows(wrapper);bindStickyBottomRows(wrapper);bindPin(wrapper);var burst=0;(function tick(){if(!wrapper.isConnected)return;syncRows(wrapper);if(++burst<20)requestAnimationFrame(tick)})();if(typeof ResizeObserver!=="undefined"){var ro=new ResizeObserver(function(){syncRows(wrapper)});ro.observe(wrapper);wrapper.querySelectorAll("img").forEach(function(img){if(!img.complete)img.addEventListener("load",function(){syncRows(wrapper)},{once:!0})})}}
77function boot(){document.querySelectorAll(".vergleich-wrapper").forEach(init)}
78if(!document._vglLightboxBound){document._vglLightboxBound=!0;function setTriggerExpanded(dlgId,expanded){if(!dlgId)return;var triggers=document.querySelectorAll('[data-vgl-lightbox-open="'+dlgId+'"]');for(var i=0;i<triggers.length;i++){triggers[i].setAttribute("aria-expanded",expanded?"true":"false")}}
79document.addEventListener("click",function(e){var t=e.target;if(!t||!t.closest)return;var trigger=t.closest("[data-vgl-lightbox-open]");if(trigger){var id=trigger.getAttribute("data-vgl-lightbox-open");var dlg=id?document.getElementById(id):null;if(dlg&&typeof dlg.showModal==="function"){try{dlg.showModal();setTriggerExpanded(id,!0)}catch(err){}}else if(dlg&&typeof dlg.show==="function"){try{dlg.show();setTriggerExpanded(id,!0)}catch(err){}}
80return}
81var closer=t.closest("[data-vgl-lightbox-close]");if(closer){var dlg2=closer.closest("dialog.vergleich-lightbox-dialog");if(dlg2&&typeof dlg2.close==="function")dlg2.close();return}
82if(t.tagName==="DIALOG"&&t.classList.contains("vergleich-lightbox-dialog")){if(typeof t.close==="function")t.close()}});document.addEventListener("close",function(e){var dlg=e.target;if(!dlg||dlg.tagName!=="DIALOG")return;if(!dlg.classList||!dlg.classList.contains("vergleich-lightbox-dialog"))return;setTriggerExpanded(dlg.id,!1)},!0)}
83var toastEl=null;var toastTimer=null;var toastHideTimer=null;function ensureToast(){if(toastEl)return toastEl;toastEl=document.createElement("div");toastEl.className="vergleich-toast";toastEl.setAttribute("role","status");toastEl.setAttribute("aria-live","polite");toastEl.innerHTML='<span class="vergleich-toast__icon" aria-hidden="true">'+'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>'+'</span>'+'<span class="vergleich-toast__text"></span>';document.body.appendChild(toastEl);return toastEl}
84function showToast(text){var el=ensureToast();var textEl=el.querySelector(".vergleich-toast__text");if(textEl)textEl.textContent=text||"";if(toastTimer)clearTimeout(toastTimer);if(toastHideTimer)clearTimeout(toastHideTimer);el.classList.remove("is-visible");void el.offsetWidth;el.classList.add("is-visible");toastTimer=setTimeout(function(){el.classList.remove("is-visible")},2200)}
85function copyToClipboard(text){if(navigator.clipboard&&window.isSecureContext){return navigator.clipboard.writeText(text)}
86return new Promise(function(resolve,reject){try{var ta=document.createElement("textarea");ta.value=text;ta.setAttribute("readonly","");ta.style.position="fixed";ta.style.opacity="0";ta.style.pointerEvents="none";document.body.appendChild(ta);ta.select();ta.setSelectionRange(0,text.length);var ok=document.execCommand("copy");document.body.removeChild(ta);ok?resolve():reject(new Error("execCommand copy failed"))}catch(e){reject(e)}})}
87if(!document._vglCouponBound){document._vglCouponBound=!0;document.addEventListener("click",function(e){var t=e.target;if(!t||!t.closest)return;var btn=t.closest("[data-vgl-copy-code]");if(!btn)return;var code=btn.getAttribute("data-vgl-copy-code")||"";var toast=btn.getAttribute("data-vgl-copy-toast")||"";copyToClipboard(code).then(function(){btn.classList.add("is-copied");if(btn._vglCopyTimer)clearTimeout(btn._vglCopyTimer);btn._vglCopyTimer=setTimeout(function(){btn.classList.remove("is-copied")},1600);showToast(toast)}).catch(function(){showToast(toast)})})}
88if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",boot)}else{boot()}
89if(typeof MutationObserver!=="undefined"){var mo=new MutationObserver(function(mutations){for(var i=0;i<mutations.length;i++){var added=mutations[i].addedNodes;for(var j=0;j<added.length;j++){var n=added[j];if(!n||n.nodeType!==1)continue;if((n.classList&&n.classList.contains("vergleich-wrapper"))||(n.querySelector&&n.querySelector(".vergleich-wrapper"))){boot();return}}}});mo.observe(document.body||document.documentElement,{childList:!0,subtree:!0})}})()

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.