const e=new Map,t=Symbol(`getValue`),n=Symbol(`htmlStore`),r=Symbol(`undefinedValue`),i=e=>{let n=new EventTarget,i=e=>new Proxy(e,{get:(e,n)=>{if(n===t)return e;let a=e[n];return!a||typeof a!=`object`?Object.assign(a??r,{[t]:()=>e[n]}):i(a)},set:(e,t,r)=>(e[t]=r,n.dispatchEvent(new Event(`change`)),!0)});return{state:i(e),emitter:n}},a=t=>{let r=()=>{let e=new EventTarget,n=i(t.setup());return n.emitter.addEventListener(`change`,()=>{e.dispatchEvent(new Event(`change`))}),{emitter:e,state:n.state}};return{create:r,get:t=>{for(;t;){if(n in t){let e=t[n];if(!e.has(void 0))continue;return e.get(void 0)}t=t.parentElement||void 0}return e.has(void 0)||e.set(void 0,r()),e.get(void 0)}}},o=e=>{let t=new EventTarget;return{emitter:t,get:n=>{let r=n.get(e);return r.emitter.addEventListener(`change`,()=>{t.dispatchEvent(new Event(`change`))}),r.state}}},s=e=>a({setup:()=>({value:e})});function c(e){return e&&typeof e==`object`&&e&&t in e?e[t]():e}const l=(e,...t)=>e.flatMap((e,n)=>[e,c(t[n])??``]),u=e=>{let t=t=>({toHtmlElement:()=>{let n=document.createElement(`div`);n.style.display=`content`;let r=o(n),i={context:r.get,props:t},a=e(i);return r.emitter.addEventListener(`change`,()=>{a(n)}),a(n),n}});return Object.assign(t,{toHtmlElement:()=>t({}).toHtmlElement()})},d=e=>{if(e instanceof HTMLElement||e instanceof Text)return e;let t=Object.getOwnPropertyDescriptor(e,`toHtmlElement`);return t&&typeof t.value==`function`?t.value():typeof e==`object`?document.createTextNode(JSON.stringify(e)):e===void 0?document.createTextNode(``):document.createTextNode(String(e))},f=e=>{let t=t=>(n,...r)=>{let i=e=>{for(let[n,r]of Object.entries(t))typeof r==`function`&&e.addEventListener(n,()=>r());if(`style`in t)for(let[n,r]of Object.entries(t.style))e.style[n]=r;let i=l(n,...r).map(d).filter(Boolean);e.innerHTML=``;for(let t of i)e.appendChild(t)};return Object.assign(i,{toHtmlElement:()=>{let t=typeof e==`function`?e():document.createElement(e);return i(t),t}})};return Object.assign((e,...n)=>t({})(e,...n),{$:e=>(n,...r)=>t(e)(n,...r)})},p=f(`div`),m=f(`h1`),h=f(`p`),g=f(`button`),_=(...e)=>f(()=>{let t=document.createElement(`div`);t.style.display=`content`;let r=new Map;t[n]=r;for(let t of e)r.set(t,t.create());return t});export{g as button,u as component,p as div,l as expandTemplateStringFromStore,c as getWithStore,m as h1,f as html,o as htmlElementContext,h as p,_ as scope,a as store,n as storeSymbol,s as value};