1(()=>{const ATTR="data-section-render";function ids(selector=`[${ATTR}]`,root=document){return[...new Set([...root.querySelectorAll(selector)].map(el=>el.getAttribute(ATTR)).filter(Boolean))]}const executedSrc=new Set([...document.querySelectorAll("script[src]")].map(el=>el.src));function reviveScripts(root){const scripts=[...root.querySelectorAll("script[data-section-script]")];if(scripts.length)for(const old of scripts){if(old.src){if(executedSrc.has(old.src))continue;executedSrc.add(old.src)}const script=document.createElement("script");for(const{name,value}of[...old.attributes])script.setAttribute(name,value);script.textContent=old.textContent,old.replaceWith(script)}}function preserveOpen(target,source){for(const el of target.querySelectorAll("[data-preserve-open]")){const key=el.dataset.preserveOpen;if(!key)continue;const fresh=source.querySelector(`[data-preserve-open="${CSS.escape(key)}"]`);fresh&&fresh.toggleAttribute("open",!!el.open)}}function swap(id,source){const target=document.querySelector(`[${ATTR}="${CSS.escape(id)}"]`);if(!target||!source)return!1;const scroll=[...target.querySelectorAll("[data-preserve-scroll]")].map(el=>[el.dataset.preserveScroll,el.scrollTop]);preserveOpen(target,source),target.innerHTML=source.innerHTML;for(const{name,value}of[...source.attributes])name.startsWith("data-")&&name!==ATTR&&target.setAttribute(name,value);for(const[key,top]of scroll){const el=target.querySelector(`[data-
1preserve-scroll="${key}"]`);el&&(el.scrollTop=top)}return reviveScripts(target),target.dispatchEvent(new CustomEvent("section:rendered",{bubbles:!0,detail:{sectionId:id}})),!0}function applyOne(id,html){if(typeof html!="string")return!1;const parsed=new DOMParser().parseFromString(html,"text/html"),source=parsed.querySelector(`[${ATTR}="${CSS.escape(id)}"]`)||parsed.querySelector(`[${ATTR}]`);return swap(id,source)}function apply(sections){if(!sections)return[];const applied=[];for(const[key,html]of Object.entries(sections)){if(typeof html!="string")continue;const sources=[...new DOMParser().parseFromString(html,"text/html").querySelectorAll(`[${ATTR}]`)];if(sources.length)for(const source of sources){const id=source.getAttribute(ATTR)||key;swap(id,source)&&applied.push(id)}}return applied}async function render(sectionIds,url=window.location.href){const list=(Array.isArray(sectionIds)?sectionIds:[sectionIds]).filter(Boolean);if(!list.length)return{};const target=new URL(url,window.location.origin);target.searchParams.set("sections",list.join(","));const res=await fetch(target.toString());if(!res.ok)throw new Error(`section rendering ${res.status}`);const sections=await res.json();return apply(sections),sections}window.HenkSections={ATTR,ids,apply,applyOne,swap,render}})(); 2//# sourceMappingURL=/cdn/shop/t/3/assets/henk-section-renderer.js.map?v=150633584827130445441788869035
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.