@zeix/ui-element
Version:
UIElement - a HTML-first library for reactive Web Components
4 lines (2 loc) • 30.8 kB
JavaScript
var W=(L)=>typeof L==="function",E1=(L,x)=>Object.prototype.toString.call(L)===`[object ${x}]`,X1=(L)=>L instanceof Error?L:Error(String(L));class y1 extends Error{constructor(L){super(`Circular dependency in ${L} detected`);return this}}var K,i=new Set,Y1=0,A1=new Map,$,O1=()=>{$=void 0;let L=Array.from(A1.values());A1.clear();for(let x of L)x()},jL=()=>{if($)cancelAnimationFrame($);$=requestAnimationFrame(O1)};queueMicrotask(O1);var S1=(L)=>{let x=new Set,M=L;return M.off=(H)=>{x.add(H)},M.cleanup=()=>{for(let H of x)H();x.clear()},M},l=(L)=>{if(K&&!L.has(K)){let x=K;L.add(x),K.off(()=>{L.delete(x)})}},Z=(L)=>{for(let x of L)if(Y1)i.add(x);else x()},g1=()=>{while(i.size){let L=Array.from(i);i.clear();for(let x of L)x()}},h=(L)=>{Y1++;try{L()}finally{g1(),Y1--}},w1=(L,x)=>{let M=K;K=x;try{L()}finally{K=M}},a=(L,x)=>new Promise((M,H)=>{A1.set(x||Symbol(),()=>{try{M(L())}catch(C){H(C)}}),jL()}),I1="State",Q=(L)=>{let x=new Set,M=L,H={[Symbol.toStringTag]:I1,get:()=>{return l(x),M},set:(C)=>{if(Object.is(M,C))return;if(M=C,Z(x),N===M)x.clear()},update:(C)=>{H.set(C(M))}};return H},r=(L)=>E1(L,I1),t="Computed",m=(L)=>{let x=new Set,M=N,H,C,j=!0,k=!1,F=!1,G=(T)=>{if(!Object.is(T,M))M=T,k=!0;H=void 0,j=!1},V=()=>{k=N!==M,M=N,H=void 0},P=(T)=>{let U=X1(T);k=!H||U.name!==H.name||U.message!==H.message,M=N,H=U},z=(T)=>(U)=>{if(F=!1,C=void 0,T(U),k)Z(x)},A=S1(()=>{if(j=!0,C?.abort("Aborted because source signal changed"),x.size)Z(x);else A.cleanup()}),q=()=>w1(()=>{if(F)throw new y1("computed");if(k=!1,W(L)&&L.constructor.name==="AsyncFunction"){if(C)return M;C=new AbortController,C.signal.addEventListener("abort",()=>{F=!1,C=void 0,q()},{once:!0})}let T;F=!0;try{T=C?L(C.signal):L()}catch(U){if(U instanceof DOMException&&U.name==="AbortError")V();else P(U);F=!1;return}if(T instanceof Promise)T.then(z(G),z(P));else if(T==null||N===T)V();else G(T);F=!1},A);return{[Symbol.toStringTag]:t,get:()=>{if(l(x),g1(),j)q();if(H)throw H;return M}}},m1=(L)=>E1(L,t),kL=(L)=>W(L)&&L.length<2,N=Symbol(),e=(L)=>r(L)||m1(L),d1=(L)=>e(L)?L:kL(L)?m(L):Q(L);function v(L){let{signals:x,ok:M,err:H=console.error,nil:C=()=>{}}=W(L)?{signals:[],ok:L}:L,j=!1,k=S1(()=>w1(()=>{if(j)throw new y1("effect");j=!0;let F=[],G=!1,V=x.map((z)=>{try{let A=z.get();if(A===N)G=!0;return A}catch(A){return F.push(X1(A)),N}}),P=void 0;try{P=G?C():F.length?H(...F):M(...V)}catch(z){P=H(X1(z))}finally{if(W(P))k.off(P)}j=!1},k));return k(),()=>k.cleanup()}var d=!1,FL="debug";var VL="warn",L1="error",PL=(L)=>L?`#${L}`:"",zL=(L)=>L?.length?`.${Array.from(L).join(".")}`:"",K1=(L)=>!!L&&typeof L==="object",p=(L)=>typeof L==="string",GL=(L,x)=>p(x)&&(x in L)&&W(L[x]),XL=(L)=>L.nodeType===Node.ELEMENT_NODE,p1=(L)=>L.localName.includes("-"),R=(L)=>L?`<${L.localName}${PL(L.id)}${zL(L.classList)}>`:"<unknown>",s=(L)=>p(L)?`"${L}"`:K1(L)?JSON.stringify(L):String(L),z1=(L)=>{if(L===null)return"null";if(typeof L!=="object")return typeof L;if(Array.isArray(L))return"Array";if(Symbol.toStringTag in Object(L))return L[Symbol.toStringTag];return L.constructor?.name||"Object"},g=(L,x,M=FL)=>{if(d||[L1,VL].includes(M))console[M](x,L);return L};class f1 extends Error{constructor(L){super(L);this.name="CircularMutationError"}}var YL=(L)=>{let x=new Set;if(L.includes("."))x.add("class");if(L.includes("#"))x.add("id");if(L.includes("[")){let M=L.split("[");for(let H=1;H<M.length;H++){let C=M[H];if(!C.includes("]"))continue;let j=C.split("=")[0].trim().replace(/[^a-zA-Z0-9_-]/g,"");if(j)x.add(j)}}return[...x]},AL=(L,x)=>{if(L.length!==x.length)return!1;let M=new Set(L);for(let H of x)if(!M.has(H))return!1;return!0},O=(L,x,M)=>(H)=>{let C=new Set,j=W(L)?L(H):L,k=new Map,F,G=()=>{for(let[V,P]of Object.entries(M)){let z=(A)=>{let q=A.target;if(!q)return;let T=q.closest(x);if(!T||!H.contains(T))return;A.stopPropagation();try{let U=P({event:A,host:H,target:T,value:j});if(U==null)return;if(!Object.is(U,j)){if(j=U,C.size>0)Z(C);else if(F)F()}}catch(U){throw A.stopImmediatePropagation(),U}};k.set(V,z),H.addEventListener(V,z)}F=()=>{if(k.size){for(let[V,P]of k)H.removeEventListener(V,P);k.clear()}F=void 0}};return{[Symbol.toStringTag]:t,get(){if(l(C),C.size&&!k.size)G();return j}}},J1=(L,x,M)=>{let H=new MutationObserver(M),C={childList:!0,subtree:!0},j=YL(x);if(j.length)C.attributes=!0,C.attributeFilter=j;return H.observe(L,C),H},w=(L)=>(x)=>{let M=new Set,H=()=>Array.from((x.shadowRoot??x).querySelectorAll(L)),C=N,j,k=0,F=2,G=()=>{C=H(),j=J1(x,L,()=>{if(!M.size){j?.disconnect(),j=void 0;return}if(k++,k>F)throw j?.disconnect(),j=void 0,k=0,new f1("Circular mutation in element selection detected");try{let V=H();if(!AL(C,V))C=V,Z(M)}finally{k--}})};return{[Symbol.toStringTag]:t,get(){if(l(M),!M.size)C=H();else if(!j)G();return C}}},h1=(L,x,M,H)=>m(()=>w(x)(L).get().reduce(M,H)),n1=(L,x,M)=>{if(!L)return()=>M;if(!p1(L))throw new TypeError("Target element must be a custom element");let H=m(async()=>{return await customElements.whenDefined(L.localName),L.getSignal(x)});return()=>{let C=H.get();return C===N?M:C.get()}},_=(L,x)=>{let M=L.querySelector(x);if(!M)throw new Error(`Component ${R(L)} does not contain required <${x}> element`);return M},E=Symbol(),TL=new Set(["constructor","prototype"]),bL=new Set(["id","class","className","title","role","style","dataset","lang","dir","hidden","children","innerHTML","outerHTML","textContent","innerText"]),G1=(L)=>W(L)&&L.length>=2,U1=(L)=>{if(TL.has(L))return`Property name "${L}" is a reserved word`;if(bL.has(L))return`Property name "${L}" conflicts with inherited HTMLElement property`;return null},T1=(L,x,M=x)=>{let H=L.filter(W).map((C)=>C(x,M));return()=>{H.filter(W).forEach((C)=>C()),H.length=0}},yL=()=>({first:(L,...x)=>(M)=>{let H=(M.shadowRoot||M).querySelector(L);if(H)T1(x,M,H)},all:(L,...x)=>(M)=>{let H=new Map,C=M.shadowRoot||M,j=(V)=>{if(!H.has(V))H.set(V,T1(x,M,V))},k=(V)=>{let P=H.get(V);if(W(P))P();H.delete(V)},F=(V)=>(P)=>{if(XL(P)){if(P.matches(L))V(P);P.querySelectorAll(L).forEach(V)}},G=J1(C,L,(V)=>{for(let P of V)P.addedNodes.forEach(F(j)),P.removedNodes.forEach(F(k))});return C.querySelectorAll(L).forEach(j),()=>{G.disconnect(),H.forEach((V)=>V()),H.clear()}}}),X=(L,x={},M)=>{for(let H of Object.keys(x)){let C=U1(H);if(C)throw new TypeError(`${C} in component "${L}".`)}customElements.define(L,class extends HTMLElement{debug;#L={};#x;static observedAttributes=Object.entries(x)?.filter(([,H])=>G1(H)).map(([H])=>H)??[];constructor(){super();for(let[H,C]of Object.entries(x)){if(C==null)continue;let j=G1(C)?C(this,null):W(C)?C(this):C;if(j!=null)this.setSignal(H,d1(j))}}connectedCallback(){if(d){if(this.debug=this.hasAttribute("debug"),this.debug)g(this,"Connected")}let H=M(this,yL());if(!Array.isArray(H))throw new TypeError(`Expected array of functions as return value of setup function in ${R(this)}`);this.#x=T1(H,this)}disconnectedCallback(){if(W(this.#x))this.#x();if(d&&this.debug)g(this,"Disconnected")}attributeChangedCallback(H,C,j){if(j===C||m1(this.#L[H]))return;let k=x[H];if(!G1(k))return;let F=k(this,j,C);if(d&&this.debug)g(j,`Attribute "${H}" of ${R(this)} changed from ${s(C)} to ${s(j)}, parsed as <${z1(F)}> ${s(F)}`);this[H]=F}getSignal(H){let C=this.#L[H];if(d&&this.debug)g(C,`Get ${z1(C)} "${String(H)}" in ${R(this)}`);return C}setSignal(H,C){let j=U1(String(H));if(j)throw new TypeError(`${j} on ${R(this)}.`);if(!e(C))throw new TypeError(`Expected signal as value for property "${String(H)}" on ${R(this)}.`);let k=this.#L[H],F=r(C);if(this.#L[H]=C,Object.defineProperty(this,H,{get:C.get,set:F?C.set:void 0,enumerable:!0,configurable:F}),k&&r(k))k.set(N);if(d&&this.debug)g(C,`Set ${z1(C)} "${String(H)} in ${R(this)}`)}})},_1="context-request";var x1=(L)=>(x)=>{let M=(H)=>{let{context:C,callback:j}=H;if(L.includes(C)&&W(j))H.stopImmediatePropagation(),j(x.getSignal(String(C)))};return x.addEventListener(_1,M),()=>x.removeEventListener(_1,M)};var W1=(L,x)=>{if(x==null)return;let M=L(x);return Number.isFinite(M)?M:void 0},H1=()=>(L,x)=>x!=null&&x!=="false",I=(L=0)=>(x,M)=>{if(M==null)return L;let H=M.trim();if(H.toLowerCase().startsWith("0x"))return W1((j)=>parseInt(j,16),H)??L;let C=W1(parseFloat,M);return C!=null?Math.trunc(C):L};var f=(L="")=>(x,M)=>M??L;var M1=Symbol("RESOLVE_ERROR"),Q1=(L,x,M,H)=>{try{return p(L)?x.getSignal(L).get():e(L)?L.get():W(L)?L(M):E}catch(C){if(H)g(C,`Failed to resolve value of ${s(L)}${H?` for ${H}`:""} in ${R(M)}${x!==M?` in ${R(x)}`:""}`,L1);return M1}},QL=(L,x="")=>{return{a:"attribute ",c:"class ",d:"dataset ",h:"inner HTML",m:"method call ",p:"property ",s:"style property ",t:"text content"}[L]+x},NL=(L,x,M,H,C)=>{return{ok:(j)=>()=>{if(d&&L.debug)g(x,`${j} ${M} of ${R(x)} in ${R(L)}`);H?.(x)},err:(j)=>(k)=>{g(k,`Failed to ${j} ${M} of ${R(x)} in ${R(L)}`,L1),C?.(k)}}},b1=(L,x)=>{return Symbol(x?`${L}:${x}`:L)},DL=(L,x,M,H,C)=>{return v(()=>{let j=Q1(L,x,M,H);if(j===M1)return;C(j)})},RL=(L)=>{if(/^(mailto|tel):/i.test(L))return!0;if(L.includes("://"))try{let x=new URL(L,window.location.origin);return["http:","https:","ftp:"].includes(x.protocol)}catch{return!1}return!0},qL=(L,x,M)=>{if(/^on/i.test(x))throw new Error(`Unsafe attribute: ${x}`);if(M=String(M).trim(),!RL(M))throw new Error(`Unsafe URL for ${x}: ${M}`);L.setAttribute(x,M)},J=(L,x)=>(M,H)=>{let{op:C,name:j="",read:k,update:F}=x,G=k(H),V=QL(C,j);if(p(L)&&p(G)&&M[L]===E)M.attributeChangedCallback(L,null,G);let{ok:P,err:z}=NL(M,H,V,x.resolve,x.reject);return v(()=>{let A=b1(C,j),q=Q1(L,M,H,V);if(q===M1)return;let T=q===E?G:q===N?x.delete?null:G:q;if(x.delete&&T===null)a(()=>{return x.delete(H),!0},A).then(P("Deleted")).catch(z("delete"));else if(T!=null){let U=k(H);if(Object.is(T,U))return;a(()=>{return F(H,T),!0},A).then(P("Updated")).catch(z("update"))}})},o=(L,x)=>(M,H)=>{let C=(k)=>()=>{if(d&&M.debug)g(H,`${k} element in ${R(H)} in ${R(M)}`);if(W(x?.resolve))x.resolve(H);else{let F=e(L)?L:p(L)?M.getSignal(L):void 0;if(r(F))F.set(0)}},j=(k)=>(F)=>{g(F,`Failed to ${k} element in ${R(H)} in ${R(M)}`,L1),x?.reject?.(F)};return v(()=>{let k=b1("i"),F=b1("r"),G=Q1(L,M,H,"insertion or deletion");if(G===M1)return;let V=G===E?0:G;if(V>0){if(!x)throw new TypeError("No inserter provided");a(()=>{for(let P=0;P<V;P++){let z=x.create(H);if(!z)continue;H.insertAdjacentElement(x.position??"beforeend",z)}return!0},k).then(C("Inserted")).catch(j("insert"))}else if(V<0)a(()=>{if(x&&(x.position==="afterbegin"||x.position==="beforeend"))for(let P=0;P>V;P--)if(x.position==="afterbegin")H.firstElementChild?.remove();else H.lastElementChild?.remove();else H.remove();return!0},F).then(C("Removed")).catch(j("remove"))})},b=(L)=>J(L,{op:"t",read:(x)=>x.textContent,update:(x,M)=>{Array.from(x.childNodes).filter((H)=>H.nodeType!==Node.COMMENT_NODE).forEach((H)=>H.remove()),x.append(document.createTextNode(M))}}),y=(L,x=L)=>J(x,{op:"p",name:String(L),read:(M)=>(L in M)?M[L]:N,update:(M,H)=>{M[L]=H}}),D=(L)=>J(L,{op:"p",name:"hidden",read:(x)=>!x.hidden,update:(x,M)=>{x.hidden=!M}});var S=(L,x=L)=>J(x,{op:"a",name:L,read:(M)=>M.getAttribute(L),update:(M,H)=>{qL(M,L,H)},delete:(M)=>{M.removeAttribute(L)}}),C1=(L,x=L)=>J(x,{op:"a",name:L,read:(M)=>M.hasAttribute(L),update:(M,H)=>{M.toggleAttribute(L,H)}}),n=(L,x=L)=>J(x,{op:"c",name:L,read:(M)=>M.classList.contains(L),update:(M,H)=>{M.classList.toggle(L,H)}});var j1=(L,x={})=>J(L,{op:"h",read:(M)=>(M.shadowRoot||!x.shadowRootMode?M:null)?.innerHTML??"",update:(M,H)=>{let{shadowRootMode:C,allowScripts:j}=x;if(!H){if(M.shadowRoot)M.shadowRoot.innerHTML="<slot></slot>";return""}if(C&&!M.shadowRoot)M.attachShadow({mode:C});let k=M.shadowRoot||M;if(k.innerHTML=H,!j)return"";return k.querySelectorAll("script").forEach((F)=>{let G=document.createElement("script");G.appendChild(document.createTextNode(F.textContent??"")),k.appendChild(G),F.remove()})," with scripts"}}),Y=(L,x,M=!1)=>(H,C)=>{if(!W(x))throw new TypeError(`Invalid event listener provided for "${L} event on element ${R(C)}`);return C.addEventListener(L,x,M),()=>C.removeEventListener(L,x)},B1=(L,x)=>(M,H)=>DL(x,M,H,`custom event "${L}" detail`,(C)=>{if(C===E||C===N)return;H.dispatchEvent(new CustomEvent(L,{detail:C,bubbles:!0}))}),c=(L)=>(x,M)=>{if(!K1(L))throw new TypeError("Reactives must be an object of passed signals");if(!p1(M))throw new TypeError(`Target ${R(M)} is not a custom element`);customElements.whenDefined(M.localName).then(()=>{if(!GL(M,"setSignal"))throw new TypeError(`Target ${R(M)} is not a UIElement component`);for(let[H,C]of Object.entries(L))M.setSignal(H,p(C)?x.getSignal(C):d1(C))}).catch((H)=>{throw new Error(`Failed to pass signals to ${R(M)}`,{cause:H})})};var Z1=new Map,UL=(L)=>{let x=L.toLowerCase().split(",").map((H)=>H.trim()),M={noCache:!1,noStore:!1,maxAge:void 0};for(let H of x)if(H==="no-cache")M.noCache=!0;else if(H==="no-store")M.noStore=!0;else if(H.startsWith("max-age=")){let C=parseInt(H.substring(8),10);if(!isNaN(C))M.maxAge=C}return M},_L=(L)=>{if(L.maxAge!==void 0)return(Date.now()-L.timestamp)/1000<L.maxAge;return!0},k1=async(L,x)=>{let M=Z1.get(L),H={};if(M?.etag)H["If-None-Match"]=M.etag;if(M?.lastModified)H["If-Modified-Since"]=M.lastModified;let C=await fetch(L,{signal:x,headers:H});if(C.status===304&&M)return{content:M.content,fromCache:!0};if(!C.ok)throw new Error(`HTTP error! status: ${C.status}`);let j=await C.text(),k=C.headers.get("cache-control"),F=C.headers.get("etag"),G=C.headers.get("last-modified"),V=k?UL(k):{noCache:!1,noStore:!1};if(!V.noStore){let P={content:j,timestamp:Date.now(),etag:F||void 0,lastModified:G||void 0,maxAge:V.maxAge};if(!V.noCache||_L(P))Z1.set(L,P)}return{content:j,fromCache:!1}};var N1=(L)=>{if(L||!(L instanceof HTMLAnchorElement))return!1;let x=L.getAttribute("href");if(!x||x.startsWith("#"))return!1;try{return new URL(x,window.location.href).origin===window.location.origin}catch{return!1}};var B="router-pathname",v1="router-query",Lx=X("context-router",{[B]:window.location.pathname,[v1]:()=>{let L=new Map;for(let[H,C]of new URLSearchParams(window.location.search))L.set(H,Q(C));let x=(H,C)=>{if(!L.has(H))L.set(H,Q(C??N));else if(C!=null)L.get(H).set(C);return L.get(H).get()},M=()=>{let H=new URLSearchParams;for(let[C,j]of L){let k=j.get();if(k&&k!==N)H.set(C,k)}window.history.replaceState(null,"",`${window.location.pathname}?${H.toString()}${window.location.hash}`)};return()=>new Proxy({},{has(H,C){return L.has(C)},get(H,C){return x(C)},set(H,C,j){return x(C,j),M(),!0},ownKeys(){return[...L.keys()]}})}},(L,{all:x,first:M})=>{let H=L.getAttribute("outlet")??"main",C=Q("");for(let k of L.querySelectorAll("a[href]")){let F=k.getAttribute("href");if(F&&!F.startsWith("#")&&!F.includes("://")&&!F.startsWith("/"))try{let G=new URL(F,window.location.href);k.setAttribute("href",G.pathname)}catch{}}let j=m(async(k)=>{let F=String(L[B]),G=String(new URL(F,window.location.origin));if(k?.aborted)return j.get();try{C.set("");let{content:V}=await k1(G,k),P=new DOMParser().parseFromString(V,"text/html"),z=P.querySelector("title")?.textContent;if(z)document.title=z;if(F!==window.location.pathname)window.history.pushState({},"",G);return P.querySelector(H)?.innerHTML??""}catch(V){let P=`Navigation failed: ${V instanceof Error?V.message:String(V)}`;return C.set(P),j.get()}});return[x1([B,v1]),x('a[href]:not([href^="#"])',n("active",(k)=>N1(k)&&L[B]===k.pathname),Y("click",(k)=>{if(!N1(k.target))return;let F=new URL(k.target.href);if(F.origin===window.location.origin)k.preventDefault(),L[B]=F.pathname})),M(H,j1(j,{allowScripts:!0})),M("card-callout",D(()=>!!C.get())),M(".error",b(C)),()=>{let k=()=>{L[B]=window.location.pathname};return window.addEventListener("popstate",k),()=>{window.removeEventListener("popstate",k)}}]});var o1="media-motion",c1="media-theme",u1="media-viewport",i1="media-orientation",Mx=X("context-media",{[o1]:()=>{let L=matchMedia("(prefers-reduced-motion: reduce)"),x=Q(L.matches);return L.addEventListener("change",(M)=>{x.set(M.matches)}),x},[c1]:()=>{let L=matchMedia("(prefers-color-scheme: dark)"),x=Q(L.matches?"dark":"light");return L.addEventListener("change",(M)=>{x.set(M.matches?"dark":"light")}),x},[u1]:(L)=>{let x=(G,V)=>{let z=L.getAttribute(G)?.trim();if(!z)return V;let A=z.match(/em$/)?"em":"px",q=parseFloat(z);return Number.isFinite(q)?q+A:V},M=matchMedia(`(min-width: ${x("sm","32em")})`),H=matchMedia(`(min-width: ${x("md","48em")})`),C=matchMedia(`(min-width: ${x("lg","72em")})`),j=matchMedia(`(min-width: ${x("xl","104em")})`),k=()=>{if(j.matches)return"xl";if(C.matches)return"lg";if(H.matches)return"md";if(M.matches)return"sm";return"xs"},F=Q(k());return M.addEventListener("change",()=>{F.set(k())}),H.addEventListener("change",()=>{F.set(k())}),C.addEventListener("change",()=>{F.set(k())}),j.addEventListener("change",()=>{F.set(k())}),F},[i1]:()=>{let L=matchMedia("(orientation: landscape)"),x=Q(L.matches?"landscape":"portrait");return L.addEventListener("change",(M)=>{x.set(M.matches?"landscape":"portrait")}),x}},()=>[x1([o1,c1,u1,i1])]);var kx=X("hello-world",{name:f(E)},(L,{first:x})=>{return _(L,"span"),[x("input",Y("input",(M)=>{L.name=M.target.value||E})),x("span",b("name"))]});var Px=X("basic-counter",{count:O((L)=>I()(L,L.querySelector("span")?.textContent),"button",{click:({value:L})=>++L})},(L,{first:x})=>[x("span",b("count"))]);var Yx=X("basic-button",{disabled:H1(),label:f(E),badge:f()},(L,{first:x})=>{return _(L,"button"),_(L,".label"),[x("button",y("disabled")),x(".label",b("label")),x(".badge",b("badge"))]});var bx=X("form-checkbox",{checked:O((L)=>L.querySelector("input")?.checked,"input",{change:({target:L})=>L.checked}),label:f(E)},(L,{first:x})=>{return _(L,'input[type="checkbox"]'),_(L,".label"),[C1("checked"),x(".label",b("label"))]});var WL=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"],$1=(L,x)=>{let M=Q(x(L));return[Y("change",()=>{M.set(x(L))}),Y("keydown",(H)=>{let{key:C}=H;if(WL.includes(C)){if(H.preventDefault(),H.stopPropagation(),C==="Home")M.set(0);else if(C==="End")M.set(L.length-1);else M.update((j)=>Math.min(Math.max(j+(C==="ArrowRight"||C==="ArrowDown"?1:-1),0),L.length-1));if(L[M.get()])L[M.get()].focus()}})]};var EL=({target:L})=>L.value,OL=({event:L,target:x})=>{if(L.key==="Enter")x.click()},qx=X("form-radiogroup",{value:O((L)=>L.querySelector("input:checked")?.value??"","input",{change:EL,keyup:OL})},(L,{all:x})=>[S("value"),x("input",y("tabIndex",(M)=>M.value===L.value?0:-1),...$1(Array.from(L.querySelectorAll("input")),(M)=>M.findIndex((H)=>H.checked))),x("label",n("selected",(M)=>L.value===M.querySelector("input")?.value))]);var F1=(L)=>()=>{L.value="",L.setCustomValidity(""),L.checkValidity(),L.dispatchEvent(new Event("input",{bubbles:!0})),L.dispatchEvent(new Event("change",{bubbles:!0}))};var Sx=X("form-textbox",{value:"",length:0,error:"",description:"",clear(){}},(L,{first:x})=>{let M=L.querySelector("input, textarea");if(!M)throw new Error("No Input or textarea element found");L.clear=F1(M);let H=L.querySelector(".description");if(H?.dataset.remaining&&M.maxLength)L.setSignal("description",m(()=>H.dataset.remaining.replace("${n}",String(M.maxLength-L.length))));else if(H?.textContent)L.description=H.textContent.trim();let C=L.querySelector(".error")?.id,j=H?.id;return[S("value"),x("input, textarea",y("ariaInvalid",()=>String(!!L.error)),S("aria-errormessage",()=>L.error&&C?C:N),S("aria-describedby",()=>L.description&&j?j:N),Y("change",()=>{M.checkValidity(),h(()=>{L.value=M.value,L.error=M.validationMessage??""})}),Y("input",()=>{L.length=M.value.length})),x(".clear",D(()=>!!L.length),Y("click",()=>{L.clear()})),x(".error",b("error")),x(".description",b("description"))]});var mx=X("form-combobox",{value:"",length:0,error:"",description:"",clear(){}},(L,{first:x,all:M})=>{let H=L.querySelector("input");if(!H)throw new Error("Input element not found");let C=Q("idle"),j=Q(-1),k=Q(""),F=Q(!1),G=w('[role="option"]:not([hidden])')(L),V=()=>C.get()==="editing"&&F.get(),P=(z)=>{H.value=z,H.setCustomValidity(""),H.checkValidity(),h(()=>{C.set("selected"),L.value=z,L.length=z.length,L.error=H.validationMessage??"",k.set(z.toLowerCase()),j.set(-1),F.set(H.required&&!H.value||!1)})};return L.clear=F1(H),[S("value"),()=>v(()=>{let z=C.get(),A=j.get();if(z==="idle")return;else if(z==="editing"&&A>=0)G.get().at(A)?.focus();else H.focus()}),Y("keydown",(z)=>{let{key:A,altKey:q}=z;if(["ArrowDown","ArrowUp"].includes(A))if(z.preventDefault(),z.stopPropagation(),C.set("editing"),q)F.set(A==="ArrowDown");else j.update((T)=>A==="ArrowDown"?Math.min(T+1,G.get().length-1):Math.max(T-1,-1))}),Y("keyup",(z)=>{let{key:A}=z;if(A==="Delete")z.preventDefault(),z.stopPropagation(),P("")}),Y("focusout",()=>{requestAnimationFrame(()=>{if(!L.contains(document.activeElement))C.set("idle")})}),x(".error",b("error")),x(".description",b("description")),x("input",y("ariaInvalid",()=>String(!!L.error)),S("aria-errormessage",()=>L.error&&L.querySelector(".error")?.id?L.querySelector(".error")?.id:N),S("aria-describedby",()=>L.description&&L.querySelector(".description")?.id?L.querySelector(".description")?.id:N),y("ariaExpanded",()=>String(V())),Y("change",()=>{H.checkValidity(),h(()=>{L.value=H.value,L.error=H.validationMessage??""})}),Y("input",()=>{h(()=>{C.set("editing"),F.set(!0),k.set(H.value.trim().toLowerCase()),L.length=H.value.length})})),x(".clear",D(()=>!!L.length),Y("click",()=>{L.clear()})),x('[role="listbox"]',D(V),Y("keyup",(z)=>{let{key:A}=z;if(A==="Enter")P(G.get().at(j.get())?.textContent?.trim()||"");else if(A==="Escape")P(L.value);else{let q=A.toLowerCase(),T=G.get().findIndex((U)=>(U.textContent?.trim().toLowerCase()||"").startsWith(q));if(T!==-1)j.set(T)}})),M('[role="option"]',y("ariaSelected",(z)=>String(z.textContent?.trim().toLowerCase()===L.value.toLowerCase())),D((z)=>z.textContent?.trim().toLowerCase().includes(k.get())),Y("click",(z)=>{P(z.target.textContent?.trim()||"")}))]});var SL=({target:L,value:x})=>x+(L.classList.contains("decrement")?-1:1),gL=({event:L,value:x})=>{let{key:M}=L;if(["ArrowUp","ArrowDown","-","+"].includes(M))return L.stopPropagation(),L.preventDefault(),x+(M==="ArrowDown"||M==="-"?-1:1)},px=X("form-spinbutton",{value:O((L)=>I()(L,L.querySelector(".value")?.textContent),"button",{click:SL,keydown:gL})},(L,{first:x})=>{let M=L.getAttribute("zero-label")||"Add to Cart",H=L.getAttribute("increment-label")||"Increment",C=I(9)(L,L.getAttribute("max")),j=()=>L.value!==0;return[x(".value",b("value"),D(j)),x(".decrement",D(j)),x(".increment",b(()=>j()?"+":M),y("ariaLabel",()=>j()?H:M),y("disabled",()=>L.value>=C))]});var s1=(L,x)=>(L+x)%x,wL=({host:L,target:x,value:M})=>{let H=L.slides.length,C=x.classList.contains("prev")?M-1:x.classList.contains("next")?M+1:parseInt(x.dataset.index||"0");return Number.isInteger(C)?s1(C,H):0},IL=({event:L,host:x,value:M})=>{let H=L.key;if(["ArrowLeft","ArrowRight","Home","End"].includes(H)){L.preventDefault(),L.stopPropagation();let C=x.slides.length,j=H==="Home"?0:H==="End"?C-1:s1(M+(H==="ArrowLeft"?-1:1),C);return x.slides[j].focus(),j}},hx=X("module-carousel",{slides:w('[role="tabpanel"]'),index:O((L)=>Math.max(L.slides.findIndex((x)=>x.ariaCurrent==="true"),0),"nav button",{click:wL,keyup:IL})},(L,{all:x})=>{let M=(H)=>H.dataset.index===String(L.index);return[x('[role="tab"]',y("ariaSelected",(H)=>String(M(H))),y("tabIndex",(H)=>M(H)?0:-1)),x('[role="tabpanel"]',y("ariaCurrent",(H)=>String(H.id===L.slides[L.index].id)))]});var vx=X("module-catalog",{},(L,{first:x})=>{let M=h1(L,"form-spinbutton",(H,C)=>H+C.value,0);return[x("basic-button",c({badge:()=>M.get()>0?String(M.get()):"",disabled:()=>!M.get()}))]});var a1="success",mL="error",r1=(L,x)=>(M,H)=>Y("click",async()=>{let C=H.textContent?.trim()??"",j=a1;try{await navigator.clipboard.writeText(L.textContent?.trim()??"")}catch(k){console.error("Error while trying to use navigator.clipboard.writeText()",k),j=mL}H.disabled=!0,H.label=x[j]??C,setTimeout(()=>{H.disabled=!1,H.label=C},j===a1?1000:3000)})(M,H);var sx=X("module-codeblock",{collapsed:H1()},(L,{first:x})=>{let M=_(L,"code");return[C1("collapsed"),x(".overlay",Y("click",()=>{L.collapsed=!1})),x(".copy",r1(M,{success:L.getAttribute("copy-success")||"Copied!",error:L.getAttribute("copy-success")||"Error trying to copy to clipboard!"}))]});var V1=(L)=>L?.getAttribute("aria-controls")??"",l1=(L,x,M=0)=>V1(L[Math.min(Math.max(L.findIndex(x)+M,0),L.length-1)]),dL=({target:L})=>V1(L),KL=({event:L,host:x,target:M})=>{let H=L.key;if(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"].includes(H)){L.preventDefault(),L.stopPropagation();let C=l1(x.tabs,(j)=>j===M,H==="Home"?-x.tabs.length:H==="End"?x.tabs.length:H==="ArrowLeft"||H==="ArrowUp"?-1:1);return x.tabs.filter((j)=>V1(j)===C)[0].focus(),C}},lx=X("module-tabgroup",{tabs:w('[role="tab"]'),selected:O((L)=>l1(L.tabs,(x)=>x.ariaSelected==="true"),'[role="tab"]',{click:dL,keyup:KL})},(L,{all:x})=>{_(L,'[role="tablist"]'),_(L,'[role="tab"]'),_(L,'[role="tabpanel"]');let M=(H)=>L.selected===V1(H);return[x('[role="tab"]',y("ariaSelected",(H)=>String(M(H))),y("tabIndex",(H)=>M(H)?0:-1)),x('[role="tabpanel"]',D((H)=>L.selected===H.id))]});var t1=new Map,pL,fL=()=>{pL=void 0;let L=Array.from(t1.values());t1.clear();for(let x of L)x()};queueMicrotask(fL);var u=Symbol();var uL=(L)=>L?`#${L}`:"",iL=(L)=>L?.length?`.${Array.from(L).join(".")}`:"";var ML=(L)=>L?`<${L.localName}${uL(L.id)}${iL(L.classList)}>`:"<unknown>";var q1=(L,x)=>{let M=L.querySelector(x);if(!M)throw new Error(`Component ${ML(L)} does not contain required <${x}> element`);return M};var CL=(L,x)=>{let M="",H="";if(!x)H="No URL provided";else if((L.parentElement||L.getRootNode().host)?.closest(`${L.localName}[src="${x}"]`))H="Recursive loading detected";else try{let C=new URL(x,location.href);if(C.origin===location.origin)M=String(C);else H="Invalid URL origin"}catch(C){H=String(C)}return{value:M,error:H}};var B0=X("module-lazy",{src:CL},(L,{first:x})=>{q1(L,"card-callout"),q1(L,".error");let M=Q(""),H=m(async(C)=>{let j=L.src.value;if(L.src.error||!j)return M.set(L.src.error??"No URL provided"),"";try{M.set(""),L.querySelector(".loading")?.remove();let{content:k}=await k1(j,C);return k}catch(k){let F=k instanceof Error?k.message:String(k);return M.set(F),""}});return[j1(H),x("card-callout",D(()=>!!M.get()||H.get()===N),n("danger",()=>!M.get())),x(".error",b(M))]});var c0=X("module-todo",{active:w("form-checkbox:not([checked])"),completed:w("form-checkbox[checked]")},(L,{first:x})=>{let M=_(L,"form-textbox"),H=_(L,"template"),C=_(L,"ol"),j=L.querySelector("form-radiogroup");return[x(".submit",c({disabled:()=>!M.length})),x("form",Y("submit",(k)=>{k.preventDefault(),queueMicrotask(()=>{let F=M.value.trim();if(!F)return;let G=document.importNode(H.content,!0).firstElementChild;if(!(G instanceof HTMLLIElement))throw new Error("Invalid template for list item; expected <li>");G.querySelector("slot")?.replaceWith(F),C.append(G),M.clear()})})),x("ol",S("filter",n1(j,"value","all")),Y("click",(k)=>{let F=k.target;if(F.closest("button"))F.closest("li").remove()})),x(".count",b(()=>String(L.active.length))),x(".singular",D(()=>L.active.length===1)),x(".plural",D(()=>L.active.length>1)),x(".remaining",D(()=>!!L.active.length)),x(".all-done",D(()=>!L.active.length)),x(".clear-completed",c({disabled:()=>!L.completed.length,badge:()=>L.completed.length>0?String(L.completed.length):""}),Y("click",()=>{let k=Array.from(L.querySelectorAll("ol li"));for(let F=k.length-1;F>=0;F--)if(k[F].querySelector("form-checkbox")?.checked)k[F].remove()}))]});var $0=X("rating-stars",{value:I()},(L,{all:x})=>{let M=(H)=>parseInt(H.dataset.key||"0");return[B1("change-rating","value"),x("input",y("checked",(H)=>L.value===M(H)),Y("change",(H)=>{H.stopPropagation();let C=parseInt(H.currentTarget?.value);L.value=C+1})),x(".label",b((H)=>M(H)<=L.value?"\u2605":"\u2606"))]});var r0=X("rating-feedback",{},(L,{all:x,first:M})=>{let H=Q(0),C=Q(!0),j=Q(!1);if(!L.querySelector("rating-stars"))throw new Error("No rating-stars component found");return[Y("change-rating",(F)=>{H.set(F.detail)}),Y("submit",(F)=>{F.preventDefault(),j.set(!0),console.log("Feedback submitted")}),M(".hide",Y("click",()=>{let F=L.querySelector(".feedback");if(F)F.hidden=!0})),M("textarea",Y("input",(F)=>{C.set(F.target?.value.trim()==="")})),M(".feedback",D(()=>!j.get()&&!!H.get())),x(".feedback p",D((F)=>H.get()===parseInt(F.dataset.key||"0"))),M("basic-button",y("disabled",C))]});var e0=X("calc-table",{columns:I(),rows:I()},(L,{all:x,first:M})=>{let C=L.querySelector(".calc-table-row"),j=L.querySelector(".calc-table-colhead"),k=L.querySelector(".calc-table-cell");if(!C||!j||!k)throw new Error("Missing template elements");let F=new Map;for(let V=0;V<L.columns;V++)F.set("ABCDEFGHIJKLMNOPQRSTUVWXYZ"[V],Q(0));let G=(V)=>{return Array.from(L.querySelectorAll(`tbody input[data-key="${V}"]`)).map((P)=>Number.isFinite(P.valueAsNumber)?P.valueAsNumber:0).reduce((P,z)=>P+z,0)};return[y("rows",()=>L.querySelector(".rows form-spinbutton")?.value),y("columns",()=>L.querySelector(".columns form-spinbutton")?.value),M("tbody",o((V)=>L.rows-V.querySelectorAll("tr").length,{position:"beforeend",create:(V)=>{let P=document.importNode(C.content,!0).firstElementChild;if(!(P instanceof HTMLTableRowElement))throw new Error(`Expected <tr> as root in table row template, got ${P}`);let z=String(V.querySelectorAll("tr").length+1);return P.dataset.key=z,P.querySelector("slot")?.replaceWith(document.createTextNode(z)),P},resolve:()=>{for(let[V,P]of F)P.set(G(V))}})),M("thead tr",o((V)=>L.columns-(V.querySelectorAll("th").length-1),{position:"beforeend",create:(V)=>{let P=document.importNode(j.content,!0).firstElementChild;if(!(P instanceof HTMLTableCellElement))throw new Error(`Expected <th> as root in column header template, got ${P}`);let z="ABCDEFGHIJKLMNOPQRSTUVWXYZ"[V.querySelectorAll("th").length-1];return F.set(z,Q(0)),P.querySelector("slot")?.replaceWith(document.createTextNode(z)),P}})),x("tbody tr",o((V)=>L.columns-V.querySelectorAll("td").length,{position:"beforeend",create:(V)=>{let P=document.importNode(k.content,!0).firstElementChild;if(!(P instanceof HTMLTableCellElement))throw new Error(`Expected <td> as root in cell template, got ${P}`);let z=V.dataset.key,A="ABCDEFGHIJKLMNOPQRSTUVWXYZ"[V.querySelectorAll("td").length],q=P.querySelector("input");if(!q)throw new Error("No input found in cell template");return q.dataset.key=A,P.querySelector("slot")?.replaceWith(document.createTextNode(`${A}${z}`)),P}})),M("tfoot tr",o((V)=>L.columns-V.querySelectorAll("td").length,{position:"beforeend",create:(V)=>{let P=document.createElement("td"),z="ABCDEFGHIJKLMNOPQRSTUVWXYZ"[V.querySelectorAll("td").length];return P.dataset.key=z,P}})),x("tbody input",Y("change",(V)=>{let P=V.target?.dataset.key;F.get(P)?.set(G(P))})),x("tfoot td",b((V)=>String(F.get(V.dataset.key).get())))]});
//# debugId=CEC01DE62E1B02DD64756E2164756E21