@realmorg/realm 2.0.0-alpha.4 → 2.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/chunks/{assemble-DpEMX9rI.js → assemble-CknmSUSM.js} +1 -1
- package/dist/chunks/src-BCKbb531.js +1 -0
- package/dist/compiler.js +1 -1
- package/dist/index.js +1 -1
- package/dist/realm.js +1 -1
- package/dist/types/css.d.ts +1 -0
- package/package.json +1 -1
- package/dist/chunks/src-0QRNqnEZ.js +0 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
REALM turns a `<custom-element>` tag into a native web component. You write its script, style and markup in one place, in plain HTML, and the browser runs exactly what you wrote. There is no compiler, no bundler and no config file. The runtime is about 16 KB gzipped and works in current Chrome, Edge, Firefox and Safari.
|
|
19
19
|
|
|
20
|
-
> REALM v2 is in alpha.
|
|
20
|
+
> REALM v2 is in alpha. `realm.js.org/dist` always serves the latest build, so in production pin an exact npm version, such as `@realmorg/realm@2.0.0-alpha.2` (on jsDelivr: `https://cdn.jsdelivr.net/npm/@realmorg/realm@2.0.0-alpha.2/dist/realm.js`).
|
|
21
21
|
|
|
22
22
|
## Try it
|
|
23
23
|
|
|
@@ -28,8 +28,8 @@ Save this as `index.html` and open it in a browser:
|
|
|
28
28
|
<html lang="en">
|
|
29
29
|
<head>
|
|
30
30
|
<meta charset="utf-8">
|
|
31
|
-
<link rel="stylesheet" href="https://
|
|
32
|
-
<script type="module" src="https://
|
|
31
|
+
<link rel="stylesheet" href="https://realm.js.org/dist/realm.css">
|
|
32
|
+
<script type="module" src="https://realm.js.org/dist/realm.js"></script>
|
|
33
33
|
</head>
|
|
34
34
|
<body>
|
|
35
35
|
<custom-element name="click-counter">
|
|
@@ -78,8 +78,8 @@ A component file can import the files it depends on in the same way.
|
|
|
78
78
|
**Use ready-made components.** [REALM UI](https://realm.js.org/components/) has about 60 accessible components (buttons, dialogs, forms, tables, menus, charts) and a theme with dark mode. Load all of them, or one file per component:
|
|
79
79
|
|
|
80
80
|
```html
|
|
81
|
-
<link rel="stylesheet" href="https://
|
|
82
|
-
<import-element from="https://
|
|
81
|
+
<link rel="stylesheet" href="https://realm.js.org/dist/ui/theme.css">
|
|
82
|
+
<import-element from="https://realm.js.org/dist/ui/components/button.html"></import-element>
|
|
83
83
|
|
|
84
84
|
<ui-button variant="outline">Save draft</ui-button>
|
|
85
85
|
```
|
|
@@ -2,7 +2,7 @@ var e=`>>>= ... === !== **= <<= >>= >>> &&= ||= ??= => == != <= >= && || ?? ?. +
|
|
|
2
2
|
`)s=!0,o++;else if(/\s/.test(d))o++;else if(d===`/`&&f===`/`)for(;o<t.length&&t[o]!==`
|
|
3
3
|
`;)o++;else if(d===`/`&&f===`*`){let e=t.indexOf(`*/`,o+2),n=e===-1?t.length:e+2;t.slice(o,n).includes(`
|
|
4
4
|
`)&&(s=!0),o=n}else if(d===`'`||d===`"`){let e=l(o,d);c(`string`,t.slice(o,e)),o=e}else if(d==="`"){let e=u(o);c(`template`,t.slice(o,e)),o=e}else if(/\d/.test(d)||d===`.`&&/\d/.test(f??``)){let e=o+1;for(;e<t.length&&/[\w.]/.test(t[e]);)e++;c(`number`,t.slice(o,e)),o=e}else if(r(d)){let e=o+1;for(;e<t.length&&i(t[e]);)e++;c(`name`,t.slice(o,e)),o=e}else if(d===`/`&&a(n.at(-1))){let e=o+1,n=!1;for(;e<t.length;){let r=t[e];if(r===`\\`)e++;else if(r===`[`)n=!0;else if(r===`]`)n=!1;else if(r===`/`&&!n)break;e++}for(e++;e<t.length&&/[a-z]/.test(t[e]);)e++;c(`regex`,t.slice(o,e)),o=e}else{let n=e.find(e=>t.startsWith(e,o))??d;c(`punct`,n),o+=n.length}}return n},s=new Set([`(`,`[`,`{`]),c=new Set([`)`,`]`,`}`]),l=(e,t)=>e?.type===`punct`&&e.value===t,u=/^(?:[.,?:=+\-*/%&|^<>!~]|=>|\?\.|\(|\[|`)/,d=(e,t)=>e?.type===`punct`&&!c.has(e.value)||t.type===`template`||t.type===`punct`&&u.test(t.value),f=(e,t,n,r)=>{let i=0,a=t;for(;a<e.length;a++){let o=e[a];if(i===0&&(o.type===`punct`&&n.has(o.value)||r&&a>t&&o.newline&&!d(e[a-1],o)))return a;if(o.type===`punct`&&s.has(o.value))i++;else if(o.type===`punct`&&c.has(o.value)){if(i===0)return a;i--}}return a},p=new Set([`,`,`}`,`]`]),m=(e,t,n)=>{let r=e[t];if(!r)return t;if(r.type===`name`)return n.push(r.value),t+1;if(!l(r,`{`)&&!l(r,`[`))return t+1;let i=r.value===`{`?`}`:`]`,a=t+1;for(;a<e.length&&!l(e[a],i);){let t=e[a];l(t,`,`)?a++:(l(t,`...`)?a=m(e,a+1,n):i===`}`&&l(e[a+1],`:`)?a=m(e,a+2,n):i===`}`&&l(t,`[`)?(a=f(e,a+1,p,!1)+1,a=l(e[a],`:`)?m(e,a+1,n):a):a=m(e,a,n),l(e[a],`=`)&&(a=f(e,a+1,p,!1)))}return a+1},h=new Set([`,`,`;`]),g=(e,t,n)=>{let r=t;for(;r<e.length;){if(r=m(e,r,n),l(e[r],`=`)&&(r=f(e,r+1,h,!0)),!l(e[r],`,`))return r;r++}return r},_=(e,t)=>{let n=e[t-1];return!n||n.type===`punct`&&(n.value===`;`||n.value===`}`)||e[t].newline&&!d(n,e[t])},v=e=>{let t=o(e),n=[],r=0,i=0;for(;i<t.length;){let e=t[i];if(e.type===`punct`){s.has(e.value)?r++:c.has(e.value)&&r--,i++;continue}if(r!==0||e.type!==`name`||!_(t,i)){i++;continue}let a=i;t[a]?.value===`async`&&t[a+1]?.value===`function`&&a++;let o=t[a]?.value;if(o===`function`||o===`class`){a++,l(t[a],`*`)&&a++;let e=t[a];e?.type===`name`&&n.push(e.value),i=a+1}else o===`let`||o===`const`||o===`var`?i=g(t,a+1,n):i++}return new Set(n)},y=e=>{let t=[],n=0,r=-1;for(let i=1;i<e.length-1;i++){let a=e[i];a===`\\`&&n===0?i++:n===0&&a===`$`&&e[i+1]===`{`?(n=1,r=i+2,i++):n>0&&a===`{`?n++:n>0&&a===`}`&&--n===0&&t.push(e.slice(r,i))}return t},b=(e,t=new Set)=>{let r=o(e);return r.forEach((e,i)=>{if(e.type===`template`){for(let n of y(e.value))b(n,t);return}if(e.type!==`name`||n.has(e.value))return;let a=r[i-1];l(a,`.`)||l(a,`?.`)||t.add(e.value)}),t},x=/^import\s*(?:([\w$*\s{},]+?)\s*from\s*)?(["'])([^"']+)\2\s*;?/,S=/^(?:\s+|\/\/[^\n]*|\/\*[\s\S]*?\*\/)*/,C=(e,t)=>{let n=e.match(/\{([^}]*)\}/),r=e.replace(/\{[^}]*\}/,``);for(let e of r.split(`,`)){let n=e.trim().split(/\s+as\s+/).at(-1);n&&n!==`*`&&t.add(n)}for(let e of n?.[1]?.split(`,`)??[]){let n=e.trim().split(/\s+as\s+/).at(-1);n&&t.add(n)}},w=(e,t)=>{let n=[],r=new Set,i=e;for(;;){let e=i.match(S)[0],a=i.slice(e.length).match(x);if(!a)break;let[o,s=``,c,l=``]=a,u=t&&/^\.{1,2}\//.test(l)?new URL(l,t).href:l;n.push(o.replace(`${c}${l}${c}`,JSON.stringify(u))),C(s,r),i=i.slice(e.length+o.length)}return{imports:n.join(`
|
|
5
|
-
`),body:i,names:r}},T=`defineProps defineMethods listen useState useChildren tick dispatch attrs observe onConnected onDisconnected onFormReset onFormDisabled onFormStateRestore defineStore lookup prop host refs signal internals setTimeout setInterval clearTimeout clearInterval untrack`.split(` `),E=`realm:on`,D=(e,t)=>`${e.join(`,`)}\u0000${t}`,O=(e,t)=>{let n=e.getAttribute(`index`);return[...t,e.getAttribute(`as`)??`item`,...n?[n]:[]]},k=(e,t=[],n=new Map)=>{for(let r of e){let e=r.localName===`repeat-list`,i=e||r.hasAttribute(`repeat`)?O(r,t):t;for(let t of r.attributes)(t.name.startsWith(`realm:on`)||t.name.length>2&&t.name.startsWith(`on`))&&!e&&n.set(D(i,t.value),[[...i],t.value]);k(r.children,i,n)}return n},A=(e,t,n)=>{let r=new Set([...n,...e,...T,`event`]),i=[...b(t)].filter(e=>!r.has(e));return`function (${[`event`,...e].join(`, `)}) {\n${i.map(e=>`const ${e} = lookup(${JSON.stringify(e)}, true);`).join(`
|
|
5
|
+
`),body:i,names:r}},T=`defineProps defineMethods listen useState useChildren tick dispatch attrs observe onConnected onDisconnected onFormReset onFormDisabled onFormStateRestore defineStore lookup prop host refs signal internals setTimeout setInterval clearTimeout clearInterval untrack`.split(` `),E=`realm:on`,D=(e,t)=>`${e.join(`,`)}\u0000${t}`,O=(e,t)=>{let n=e.getAttribute(`index`);return[...t,e.getAttribute(`as`)??`item`,...n?[n]:[]]},k=(e,t=[],n=new Map)=>{for(let r of e){let e=r.localName===`repeat-list`,i=e||r.hasAttribute(`repeat`)?O(r,t):t;for(let t of r.attributes)(t.name.startsWith(`realm:on`)||t.name.length>2&&t.name.startsWith(`on`))&&!e&&n.set(D(i,t.value),[[...i],t.value]);k(r.children,i,n)}return n},A=(e,t,n)=>{let r=new Set([...n,...e,...T,`event`]),i=[...b(t)].filter(e=>!r.has(e));return`function (${[e.includes(`event`)?`_`:`event`,...e].join(`, `)}) {\n${i.map(e=>`const ${e} = lookup(${JSON.stringify(e)}, true);`).join(`
|
|
6
6
|
`)}\n{\n${t}\n}\n}`},j=(e,t,n)=>{let{imports:r,body:i,names:a}=w(e,t),o=new Set([...a,...v(i)]),s=[...o].map(e=>`case ${JSON.stringify(e)}: return ${e};`).join(`
|
|
7
7
|
`);return{imports:r,setup:`function (__realm) {
|
|
8
8
|
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./assemble-CknmSUSM.js";var i=`[realm]`,a=new Set,o=e=>console.error(i,e),s=e=>{a.has(e)||(a.add(e),console.warn(i,e))},c=(e,t,n)=>{let r=e;return r.has(t)||r.set(t,n()),r.get(t)},l=Symbol(`realm.raw`),u=Symbol(`realm.iterate`),d=100,f=new WeakMap,p=new WeakMap,m=new Set,h,g=!1,_=e=>{h&&(e.add(h),h.deps.add(e))},v=(e,t)=>{h&&_(c(c(f,e,()=>new Map),t,()=>new Set))},y=e=>{if(e)for(let t of[...e])t.notify()},b=(e,t)=>y(f.get(e)?.get(t)),ee=e=>{for(let t of e.deps)t.delete(e);e.deps.clear()},x=()=>{g||(g=!0,queueMicrotask(S))},S=()=>{g=!1;for(let e=0;m.size;e++){if(e===d){m.clear(),o(Error(`Update loop detected: an observer keeps changing state it depends on.`));return}let t=[...m];m.clear();for(let e of t)e.run()}},C=class{fn;deps=new Set;#e;#t=!1;constructor(e){this.fn=e}notify(){m.add(this),x()}run(){if(this.#t)return;this.#n();let e=h;h=this;try{let e=this.fn();typeof e==`function`&&(this.#e=e)}catch(e){o(e)}finally{h=e}}stop(){this.#t=!0,m.delete(this),this.#n()}#n(){ee(this);let e=this.#e;this.#e=void 0,e?.()}},te=class{getter;deps=new Set;subscribers=new Set;dirty=!0;value;error;failed=!1;constructor(e){this.getter=e}notify(){this.dirty||(this.dirty=!0,y(this.subscribers))}get(){if(_(this.subscribers),this.dirty){ee(this);let e=h;h=this;try{this.value=this.getter(),this.failed=!1}catch(e){this.error=e,this.failed=!0}finally{this.dirty=!1,h=e}}if(this.failed)throw this.error;return this.value}},ne=async()=>{await Promise.resolve(),S()},w=e=>{let t=new C(e);return t.run(),()=>t.stop()},T=e=>{let t=h;h=void 0;try{return e()}finally{h=t}},re=e=>{if(typeof e!=`object`||!e||Object.isFrozen(e))return!1;let t=Object.getPrototypeOf(e);return!t||t===Object.prototype||Array.isArray(e)},E=e=>typeof e==`object`&&!!e&&e[l]||e,ie=e=>E(e)!==e,ae=new Set(`push pop shift unshift splice sort reverse fill copyWithin`.split(` `)),oe=new Set([`includes`,`indexOf`,`lastIndexOf`]),se=(e,t,n)=>{let r=Array.prototype[t];return ae.has(t)?(...e)=>T(()=>r.apply(n,e)):(...t)=>{v(e,u);let i=r.apply(e,t.map(E));return i===-1||i===!1?r.apply(n,t):i}},ce=(e,t)=>{let n=f.get(e);if(n)for(let[e,r]of n)typeof e==`string`&&Number(e)>=t&&y(r)},D=e=>{if(!re(e)||ie(e))return e;let t=p.get(e);if(t)return t;let n=new Map,r=Array.isArray(e),i=new Proxy(e,{get(e,t,i){if(t===l)return e;if(r&&typeof t==`string`&&(ae.has(t)||oe.has(t)))return se(e,t,i);let a=Object.getOwnPropertyDescriptor(e,t)?.get;if(a)return c(n,t,()=>new te(()=>a.call(i))).get();v(e,t);let o=Reflect.get(e,t,i);return re(o)?D(o):o},set(e,t,n,i){let a=Object.getOwnPropertyDescriptor(e,t)?.set;if(a)return a.call(i,n),!0;let o=E(n),s=Object.hasOwn(e,t),c=e[t],l=r?e.length:0;if(e[t]=o,s&&Object.is(c,o))return!0;if(b(e,t),s||b(e,u),r){let n=e.length;n!==l&&t!==`length`&&b(e,`length`),t===`length`&&(b(e,u),ce(e,n))}return!0},deleteProperty(e,t){let n=Object.hasOwn(e,t);return delete e[t],n&&(b(e,t),b(e,u)),!0},has(e,t){return v(e,t),Reflect.has(e,t)},ownKeys(e){return v(e,u),r&&v(e,`length`),Reflect.ownKeys(e)}});return p.set(e,i),i},le=new Set(`script style iframe frame frameset object embed link meta base template noscript`.split(` `)),ue=new Set(`href src action formaction xlink:href poster to from values`.split(` `)),de=/^\s*(?:javascript|vbscript|data:text\/html)/i,O=e=>new DOMParser().parseFromString(`<body>${e}`,`text/html`).body,k=e=>{for(let t of[...e.querySelectorAll(`*`)])if(le.has(t.localName))t.remove();else for(let{name:e,value:n}of[...t.attributes])(e.startsWith(`on`)||e===`srcdoc`||ue.has(e)&&de.test(n))&&t.removeAttribute(e);return e},fe=e=>{let t=document.createDocumentFragment();for(let n of[...e.childNodes])t.append(document.importNode(n,!0));return t},pe=e=>fe(k(O(e))),me=/^(!?)([#@])([A-Za-z_$][\w$]*(?:\.[\w$-]+)*)$/,he=e=>{let t=e.trim().match(me);if(t)return{text:e,negate:t[1]===`!`,kind:t[2],path:t[3].split(`.`)}},A=(e,t,n)=>{let r=he(e??``);return r||s(`<${n.instance.host.localName}> ${t}="${e??``}" must be a reference like "#state.path" or "@prop".`),r},ge=(e,t)=>{let n=e.path[0],{instance:r}=t;if(e.kind===`@`)return r.props?.[n];let i=t.vars.findLast(([e])=>e===n);if(i)return i[1].value;if(r.has(n))return r.get(n);let a=r.findInParents(n,!0);return a||s(`<${r.host.localName}> "${e.text}" is not defined in this component or its parents.`),a?.get(n)},j=(e,t)=>{let n=ge(e,t);for(let t of e.path.slice(1))n=n?.[t];return e.negate?!n:n},_e=(e,t,n)=>{if(e.kind===`@`||e.path.length<2||e.negate){s(`<${t.instance.host.localName}> "${e.text}" can't be written. Use a state property like "#todo.items".`);return}let r=j({...e,path:e.path.slice(0,-1)},t),i=e.path.at(-1);typeof r!=`object`||!r?s(`<${t.instance.host.localName}> "${e.text}" can't be written because its parent is not an object.`):r[i]=n(r[i])},ve=e=>{let t=new AbortController;return e.addEventListener(`abort`,()=>t.abort(e.reason),{signal:t.signal}),t},ye={ms:1,s:1e3,m:6e4},M=e=>{let t=e.trim().match(/^(\d+(?:\.\d+)?)(ms|s|m)?$/);return t?Number(t[1])*ye[t[2]??`ms`]:(s(`"${e}" is not a duration. Use values like "300ms", "2s" or "1m".`),0)},be=(e,t,n)=>{let r=e.getAttribute(`debounce`),i=e.getAttribute(`throttle`);if(r!==null){let e=M(r),i;return n.addEventListener(`abort`,()=>clearTimeout(i)),n=>{clearTimeout(i),i=setTimeout(()=>t(n),e)}}if(i!==null){let e=M(i),n=-1/0;return r=>{let i=performance.now();i-n<e||(n=i,t(r))}}return t},xe=new Set(`replace outer append prepend before after remove text merge`.split(` `)),Se={form:`submit`,a:`click`},N=new Map,Ce=async e=>({ok:e.ok,status:e.status,headers:e.headers,text:await e.text(),url:e.url}),we=(e,t)=>{let n=`${e}\u0000${[...t].join(`\0`)}`,r=N.get(n);return r||(r=fetch(e,{headers:t}).then(Ce),N.set(n,r),r.finally(()=>N.delete(n)).catch(()=>{})),r},Te=(e,t)=>new Promise((n,r)=>{t.addEventListener(`abort`,()=>r(t.reason),{once:!0}),e.then(n,r)}),Ee=e=>{if(!e.headers.get(`content-type`)?.includes(`json`))return e.text;try{return JSON.parse(e.text)}catch{return e.text}},De=e=>e.hasAttribute(`fetch`)||(e.localName===`form`||e.localName===`a`)&&(e.hasAttribute(`into`)||e.hasAttribute(`render`)||e.hasAttribute(`busy`)),Oe=e=>e.localName===`form`?`submit`:e.localName===`input`||e.localName===`select`||e.localName===`textarea`?`change`:`click`,ke=(e,t)=>{if(e.nodeType!==t.nodeType||e.nodeName!==t.nodeName){e.replaceWith(t);return}if(!(e instanceof Element)){e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue);return}let n=t;for(let{name:t}of[...e.attributes])n.hasAttribute(t)||e.removeAttribute(t);for(let{name:t,value:r}of[...n.attributes])e.getAttribute(t)!==r&&e.setAttribute(t,r);e.matches(`:focus`)||Ae(e,n)},Ae=(e,t)=>{let n=[...t.childNodes],r=[...e.childNodes];n.forEach((t,n)=>{let i=r[n];i?ke(i,t):e.append(t)});for(let e of r.slice(n.length))e.remove()},je={append:(e,t)=>[...e,...t],prepend:(e,t)=>[...t,...e],update:(e,t,n)=>{let r=new Map(t.map(e=>[e[n],e]));return[...e.map(e=>{let t=r.get(e[n]);return r.delete(e[n]),t??e}),...r.values()]},remove:(e,t,n)=>{let r=new Set(t.map(e=>e[n]));return e.filter(e=>!r.has(e[n]))}},Me=(e,t,n)=>{let r=A(e,`trigger`,n);if(!r)return;let i,a=w(()=>{let e=JSON.stringify(j(r,n))??``;i!==void 0&&e!==i&&T(()=>t(new CustomEvent(`change`))),i=e});n.signal.addEventListener(`abort`,a)},Ne=(e,t)=>e.replaceChildren(t),Pe={replace:Ne,outer:(e,t)=>e.replaceWith(t),append:(e,t)=>e.append(t),prepend:(e,t)=>e.prepend(t),before:(e,t)=>e.before(t),after:(e,t)=>e.after(t),merge:(e,t)=>Ae(e,t)},Fe=(e,t,n,r)=>{if(n===`text`&&(e.textContent=t),n===`remove`&&e.remove(),n===`text`||n===`remove`)return;let i=k(O(t));r&&i.replaceChildren(...i.querySelectorAll(r)),(Pe[n]??Ne)(e,fe(i))},Ie=(e,t,n)=>{let r=e.getAttribute(`params`);if(r)for(let e of r.split(`,`)){let[r=``,i=``]=e.split(`:`),a=r.trim(),o=A(i.trim(),`params ${a}`,t);if(!o)continue;let s=j(o,t);n.append(a,typeof s==`object`&&s?JSON.stringify(s):String(s??``))}},Le=(e,t)=>{if(e instanceof HTMLFormElement)return new FormData(e,t);let n=new FormData,r=e;return r.name&&`value`in r&&n.append(r.name,r.value),n},Re=(e,t)=>{let{instance:n}=t,r=n.host.localName,i=e.hasAttribute(`into`)?A(e.getAttribute(`into`),`into`,t):void 0,a=e.hasAttribute(`busy`)?A(e.getAttribute(`busy`),`busy`,t):void 0,o=e.hasAttribute(`headers`)?he(e.getAttribute(`headers`)):void 0,c=e.getAttribute(`render`),l=e.getAttribute(`render-mode`)??`replace`;xe.has(l)||s(`<${r}> render-mode="${l}" is not supported.`);let u,d=(t,n,r=!1)=>e.dispatchEvent(new CustomEvent(t,{detail:n,cancelable:r})),f=n=>{a&&_e(a,t,()=>n),n?e.setAttribute(`aria-busy`,`true`):e.removeAttribute(`aria-busy`)},p=async a=>{S();let p=e instanceof HTMLFormElement?e:null,m=e instanceof HTMLAnchorElement?e:null,h=a?.getAttribute(`formaction`)??e.getAttribute(`fetch`)??(p?p.action:m.href),g=new URL(h,e.baseURI),_=(a?.getAttribute(`formmethod`)??e.getAttribute(`method`)??`get`).toUpperCase();if(!d(`loadstart`,{url:g.href,method:_},!0))return;u?.abort();let v=ve(t.signal),{signal:y}=v;u=v;let b=e.getAttribute(`timeout`),ee=b?setTimeout(()=>v.abort(new DOMException(`Timed out`,`TimeoutError`)),M(b)):void 0,x=Le(e,a);Ie(e,t,x);let C=new Headers(o&&j(o,t)||void 0);n.setLoading(1),f(!0);try{let a;if(_===`GET`){for(let[e,t]of x)g.searchParams.append(e,t);a=we(g.href,C)}else{let e=p?.enctype===`multipart/form-data`?x:new URLSearchParams(x);a=fetch(g,{method:_,body:e,headers:C}).then(Ce)}let o=await Te(a,y),u={status:o.status,data:Ee(o),headers:o.headers,url:o.url};if(!o.ok){d(`error`,u);return}if(i){let n=e.getAttribute(`into-mode`)??`replace`;_e(i,t,t=>{if(n===`replace`)return u.data;let r=Array.isArray(t)?t:[],i=Array.isArray(u.data)?u.data:[u.data];return(je[n]??je.append)(r,i,e.getAttribute(`into-key`)??`id`)})}if(c!==null){let t=n.refs[c];t?Fe(t,o.text,l,e.getAttribute(`render-select`)):s(`<${r}> render="${c}" does not match any ref.`)}m&&c!==null&&history.pushState({},``,g),d(`load`,u)}catch(e){if(y.aborted){let e=y.reason;d(e.name===`TimeoutError`?`timeout`:`abort`,{url:g.href})}else d(`error`,{status:0,data:void 0,message:e.message,url:g.href})}finally{clearTimeout(ee),v.abort(),n.setLoading(-1),u===v&&(u=void 0,f(!1)),d(`loadend`,{url:g.href})}},m=e=>void p(e instanceof SubmitEvent?e.submitter:null),h=be(e,m,t.signal),g=Se[e.localName];g&&e.addEventListener(g,e=>e.preventDefault(),{signal:t.signal});let _=(e.getAttribute(`trigger`)??Oe(e)).split(/[\s,]+/).filter(Boolean);for(let n of _)if(n===`load`)queueMicrotask(()=>m());else if(n===`visible`){let n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&m()});n.observe(e),t.signal.addEventListener(`abort`,()=>n.disconnect())}else/^[#@]/.test(n)?Me(n,h,t):e.addEventListener(n,h,{signal:t.signal});let v=e.getAttribute(`poll`);if(v){let e=setInterval(m,M(v));t.signal.addEventListener(`abort`,()=>clearInterval(e))}},ze=`button, a[href], input, select, textarea, [tabindex]`,Be=`:disabled, [disabled], [aria-disabled="true"], [inert], [hidden]`,Ve={ArrowRight:{axis:`inline`,step:1},ArrowLeft:{axis:`inline`,step:-1},ArrowDown:{axis:`block`,step:1},ArrowUp:{axis:`block`,step:-1}},He=e=>e.shadowRoot?.delegatesFocus?[]:Ue(e.shadowRoot??e),Ue=e=>[...e.children].flatMap(e=>e instanceof HTMLSlotElement?e.assignedElements({flatten:!0}).flatMap(e=>[e,...He(e)]):[e,...He(e)]),We=e=>Ue(e).filter(e=>(e.matches(ze)||e.shadowRoot?.delegatesFocus===!0)&&!e.matches(Be)&&e.getAttribute(`tabindex`)!==`-2`&&e.checkVisibility()),Ge=(e,t)=>{e.addEventListener(`keydown`,t=>{let n=new Set((e.getAttribute(`focusgroup`)??``).split(/\s+/).filter(Boolean)),r=n.has(`inline`)||n.has(`block`),i=t.key,a=We(e),o=a.indexOf(t.composedPath().find(e=>a.includes(e))),s=Ve[i],c={Home:0,End:a.length-1}[i];if(o===-1||c===void 0&&(!s||r&&!n.has(s.axis)))return;let l=s?.axis===`inline`&&getComputedStyle(e).direction===`rtl`?-1:1,u=c??o+s.step*l,d=n.has(`wrap`)?(u+a.length)%a.length:Math.min(Math.max(u,0),a.length-1);t.preventDefault(),a[d].focus()},{signal:t})},Ke=6,qe=new Map,P=new Map,F=new Map,I=new Set,L=new Map,Je=class extends Error{url;status;constructor(e,t){super(`Could not import ${e}${t?` (HTTP ${t})`:``}`),this.url=e,this.status=t}},Ye=e=>new Promise(t=>{let n=P.get(e)??0;if(n<Ke)P.set(e,n+1),t();else{let n=F.get(e)??[];n.push(()=>t()),F.set(e,n)}}),Xe=e=>{let t=F.get(e)?.shift();t?t():P.set(e,P.get(e)-1)},Ze=e=>{let t=qe.get(e);if(t)return t;let{origin:n}=new URL(e);return t=Ye(n).then(()=>fetch(e)).then(async t=>{if(!t.ok)throw new Je(e,t.status);return new DOMParser().parseFromString(await t.text(),`text/html`)}).catch(t=>{throw t instanceof Je?t:new Je(e,0)}).finally(()=>Xe(n)),qe.set(e,t),t},Qe=async(e,t=new Set)=>{let n=await Ze(e),r=new Set([...t,e]),i=[...n.querySelectorAll(`import-element[from]`)].filter(e=>!e.closest(`custom-element`)).map(t=>new URL(t.getAttribute(`from`),e).href).filter(e=>!r.has(e));await Promise.all(i.map(e=>Qe(e,r))),await Promise.all([...n.querySelectorAll(`custom-element`)].map(t=>vn(t.cloneNode(!0),e,!1)))},R=e=>{if(!I.has(e)){I.add(e);for(let t of L.get(e)??[])t();L.delete(e)}},$e=e=>new Promise(t=>{if(e.some(e=>I.has(e)||document.querySelector(e)))return t();for(let n of e)L.set(n,[...L.get(n)??[],t])}),et=e=>{let t=e=>{e.localName.includes(`-`)&&R(e.localName);for(let t of e.querySelectorAll(`*`))t.localName.includes(`-`)&&R(t.localName)};new MutationObserver(e=>{for(let n of e)for(let e of n.addedNodes)e instanceof Element&&t(e)}).observe(e,{childList:!0,subtree:!0})},tt=class extends HTMLElement{#e=!1;async connectedCallback(){if(this.#e||this.closest(`custom-element`))return;this.#e=!0;let e=this.getAttribute(`from`);if(!e){s(`<import-element> needs a from attribute.`);return}let t=new URL(e,this.baseURI).href,n=(this.getAttribute(`for`)??``).split(/\s+/).filter(Boolean);this.getAttribute(`loading`)===`lazy`&&(n.length?await $e(n):s(`<import-element from="${e}" loading="lazy"> needs a for attribute listing the tags it defines.`));try{await Qe(t),this.isConnected&&this.dispatchEvent(new CustomEvent(`load`,{detail:{url:t}}))}catch(e){let{status:n}=e;s(e.message),this.isConnected&&this.dispatchEvent(new CustomEvent(`error`,{detail:{url:t,status:n}}))}}},nt=new Set([`value`,`checked`,`selected`,`indeterminate`]),rt=new Set([`draggable`,`spellcheck`,`contenteditable`]),it=[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`contains`],z=(e,t)=>{e.disposers.push(w(t))},B=`http://www.w3.org/2000/svg`,at=Object.fromEntries(`viewBox preserveAspectRatio gradientTransform gradientUnits patternTransform patternUnits patternContentUnits clipPathUnits markerHeight markerWidth markerUnits maskUnits maskContentUnits textLength lengthAdjust refX refY pathLength stdDeviation filterUnits primitiveUnits spreadMethod startOffset tableValues baseFrequency numOctaves stitchTiles surfaceScale specularExponent diffuseConstant kernelMatrix edgeMode xChannelSelector yChannelSelector attributeName repeatCount keyTimes keySplines calcMode`.split(` `).map(e=>[e.toLowerCase(),e])),ot=new Set([`progress`,`meter`]),st=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),ct=(e,t,n)=>{let r=e.namespaceURI===B?at[t]??t:t,i=e;if(r.startsWith(`--`)){let t=e.style;n==null||n===!1?t.removeProperty(r):t.setProperty(r,String(n))}else r===`value`&&n==null&&ot.has(e.localName)?e.removeAttribute(r):nt.has(r)&&r in e?i[r]=r===`value`?n??``:!!n:e.localName.includes(`-`)&&typeof n==`object`&&n?i[st(r)]=n:(r.startsWith(`aria-`)||rt.has(r))&&typeof n==`boolean`?e.setAttribute(r,String(n)):n===!0?e.setAttribute(r,``):n===!1||n==null?e.removeAttribute(r):e.setAttribute(r,String(n))},lt=(e,t,n,r)=>{let i=A(n,`_${t}`,r);i&&z(r,()=>ct(e,t,j(i,r)))},ut=(e,t,r,i)=>{let{instance:a,vars:o}=i,s=a.definition.handlers.get(n(o.map(([e])=>e),r)),c=a.scope.handlers[s];if(!c)return;let l=t=>{c.call(e,t,...o.map(([,e])=>e.value))===!1&&t.preventDefault()},u=De(e)?l:be(e,l,i.signal);e.addEventListener(t,u,{signal:i.signal})},dt={text:(e,t)=>e.replaceChildren(t),html:(e,t)=>e.replaceChildren(pe(t)),"html-unsafe":(e,t)=>{e.innerHTML=t}},ft=(e,t)=>{let n=O(`<svg>${e}</svg>`).firstElementChild;return[...(t?k(n):n).childNodes]},pt={html:(e,t)=>e.replaceChildren(...ft(t,!0)),"html-unsafe":(e,t)=>e.replaceChildren(...ft(t,!1))},V=e=>e==null||e===``,mt=(e,t,n)=>{let r=[`html-unsafe`,`html`].find(t=>e.hasAttribute(t))??`text`,i=[...e.childNodes];if(e.namespaceURI===B){let a=r===`text`,o=a?document.createTextNode(``):document.createElementNS(B,`g`);e.replaceWith(o);let s=pt[r];z(n,()=>{let r=j(t,n);a?o.data=V(r)?e.textContent:String(r):V(r)?o.replaceChildren(...i):s(o,String(r))});return}let a=dt[r];z(n,()=>{let r=j(t,n);V(r)?e.replaceChildren(...i):a(e,String(r))})},ht=(e,t,n,r,i)=>{let a=ve(r.signal),o={instance:r.instance,vars:i,signal:a.signal,disposers:[]},s=document.createDocumentFragment();s.append(e.cloneNode(!0)),H(s,o);let c=[...s.childNodes];return t.insertBefore(s,n),{nodes:c,dispose(){a.abort();for(let e of o.disposers)e();for(let e of c)e.remove()}}},gt=e=>{let t=document.createDocumentFragment();return t.append(...e.childNodes),t},_t={eq:(e,t)=>String(e)===t,neq:(e,t)=>String(e)!==t,gt:(e,t)=>Number(e)>Number(t),gte:(e,t)=>Number(e)>=Number(t),lt:(e,t)=>Number(e)<Number(t),lte:(e,t)=>Number(e)<=Number(t),contains:(e,t)=>Array.isArray(e)?e.some(e=>String(e)===t):String(e??``).includes(t)},vt=(e,t,n)=>t?_t[t](e,n):!!e,yt=(e,t)=>{let n=A(e.getAttribute(`when`),`<${e.localName}> when`,t),r=gt(e);if(!n)return;let i=e.localName===`is-hidden`,a=it.find(t=>e.hasAttribute(t)),o=a?e.getAttribute(a):``,s;z(t,()=>{let c=vt(j(n,t),a,o)!==i;T(()=>{c&&!s?s=ht(r,e,null,t,t.vars):!c&&s&&(s.dispose(),s=void 0)})}),t.disposers.push(()=>s?.dispose())},bt=(e,t,n,r,i)=>{let a=A(e.getAttribute(`of`)??e.getAttribute(`repeat`),`repeat`,i);if(!a)return;let o=e.getAttribute(`as`)??`item`,c=e.getAttribute(`index`),l=e.getAttribute(`key`),u=()=>r?.parentNode??n,d=new Map,f=(e,n)=>{let a=D({value:e}),s=D({value:n}),l=[...i.vars,[o,a],...c?[[c,s]]:[]];return{...ht(t,u(),r,i,l),item:a,index:s}};z(i,()=>{let e=j(a,i),t=Array.isArray(e)?[...e]:[];T(()=>{let e=new Map,n=[];t.forEach((t,r)=>{let a=l?t?.[l]:r;e.has(a)&&(s(`<${i.instance.host.localName}> repeat has a duplicate key "${String(a)}".`),a=Symbol());let o=d.get(a);o?(d.delete(a),o.item.value=t,o.index.value=r):o=f(t,r),e.set(a,o),n.push(o)});for(let e of d.values())e.dispose();d=e;let a=r;for(let e of n.reverse())for(let t of e.nodes.toReversed())t.nextSibling!==a&&u().insertBefore(t,a),a=t})}),i.disposers.push(()=>{for(let e of d.values())e.dispose()})},xt=(e,t)=>{let n=document.createComment(`repeat`);e.replaceWith(n);let r=e.cloneNode(!0);for(let e of[`repeat`,`as`,`index`,`key`])r.removeAttribute(e);bt(e,r,n.parentNode,n,t)},St=(e,t)=>{for(let{name:n,value:i}of[...e.attributes])n.length>1&&n.startsWith(`_`)?(e.removeAttribute(n),lt(e,n.slice(1),i,t)):n.startsWith(`realm:on`)?(e.removeAttribute(n),ut(e,n.slice(r.length),i,t)):n===`ref`&&(t.instance.refs[i]=e)},Ct=(e,t)=>{let n=e.localName;if(n===`is-visible`||n===`is-hidden`)return yt(e,t);if(n===`repeat-list`)return bt(e,gt(e),e,null,t);if(e.hasAttribute(`repeat`))return xt(e,t);n.includes(`-`)&&R(n),H(e,t),St(e,t),De(e)&&Re(e,t),e.hasAttribute(`focusgroup`)&&Ge(e,t.signal);let r=e.getAttribute(`name`);if(n===`slot`&&r&&/^[#@!]/.test(r)){let n=A(r,`<slot> name`,t);n&&mt(e,n,t)}},H=(e,t)=>{for(let n of[...e.children])Ct(n,t)},wt=/var\(\s*--((?:attr|state)-[\w-]+)/g,Tt=/:state\(\s*((?:attr|state)-[\w-]+)\s*\)/g,Et=/^(attr|state)-(.+)$/,Dt=/^(attr|state)-(.+?)(?:-(is|gt|gte|lt|lte)-(.+))?$/,Ot={is:`eq`,gt:`gt`,gte:`gte`,lt:`lt`,lte:`lte`},kt=(e,t)=>{for(let n of e.matchAll(wt))t.variables.add(n[1]);for(let n of e.matchAll(Tt))t.states.add(n[1])},U=e=>{if(e.attrs)return e.attrs;let t=e.host,n=D({}),r=()=>{for(let{name:e,value:r}of t.attributes)n[e]=r;for(let e of Object.keys(n))t.hasAttribute(e)||(n[e]=null)};r();let i=new MutationObserver(r);return i.observe(t,{attributes:!0}),e.disposers.push(()=>i.disconnect()),e.attrs=new Proxy(n,{get:(e,t)=>e[t]??null,set(e,n,i){return i==null||i===!1?t.removeAttribute(n):t.setAttribute(n,i===!0?``:String(i)),r(),!0}}),e.attrs},At=(e,t)=>{let{variables:n,states:r}=e.definition.css;if(!n.size&&!r.size)return;let i=(n,r)=>{if(n===`attr`){let t=e.propAttributes.get(r);return t===void 0?U(e)[r]:e.props?.[t]}return j({text:`#${r}`,negate:!1,kind:`#`,path:r.split(`-`)},t)},a=e.host.style;for(let t of n){let[,n,r]=Et.exec(t);e.disposers.push(w(()=>{let e=i(n,r);e==null||typeof e==`object`?a.setProperty(`--${t}`,`initial`):a.setProperty(`--${t}`,String(e))}))}for(let t of r){let[,n,r,a,o=``]=Dt.exec(t),s=a?Ot[a]:void 0;e.disposers.push(w(()=>{vt(i(n,r),s,o)?e.internals.states.add(t):e.internals.states.delete(t)}))}},jt=new Set([`checkbox`,`radio`]),Mt=new Set(`text email password number search tel url date time datetime-local month week`.split(` `)),Nt=e=>{let t=e.refs.control;if(!e.definition.formAssociated||!t)return;let n=e.host,r=new Set(e.propAttributes.values()),i=r.has(`checked`)&&jt.has(t.type),a=typeof e.props?.value==`number`,o=()=>t.willValidate?e.internals.setValidity(t.validity,t.validationMessage,t):e.internals.setValidity({}),s=()=>{i?n.checked=t.checked:r.has(`value`)&&(n.value=a?Number(t.value):t.value),o()},c=[...e.internals.labels].map(e=>e.textContent.trim()).join(` `);c&&!t.hasAttribute(`aria-label`)&&t.setAttribute(`aria-label`,c);let{signal:l}=e;t.addEventListener(`input`,s,{signal:l}),t.addEventListener(`change`,()=>{s(),n.dispatchEvent(new Event(`change`,{bubbles:!0}))},{signal:l}),t.addEventListener(`keydown`,n=>{let r=e.internals.form;n.key===`Enter`&&r&&Mt.has(t.type)&&(n.preventDefault(),HTMLFormElement.prototype.requestSubmit.call(r))},{signal:l}),e.disposers.push(w(()=>{e.props?.value,e.props?.checked,o()}))},Pt=crypto.randomUUID(),W=new Map,G=new Map,Ft={register(e,t){let n=W.get(e);W.delete(e),n?.(t)},handler(e,t){G.set(e,t)}},It=Symbol.for(`realm`),Lt=globalThis,Rt=Lt[It]??new Map;Lt[It]=Rt,Rt.set(Pt,Ft);var K=new Set,zt=`globalThis[Symbol.for("realm")].get(${JSON.stringify(Pt)})`,Bt=0,Vt=e=>`${e}:${++Bt}`,Ht=(e,t,n)=>{let r=document.createElement(`script`);t&&(r.type=`module`),n&&r.addEventListener(`error`,n,{once:!0});let i=document.querySelector(`script[nonce]`)?.nonce;i&&(r.nonce=i),r.textContent=e,document.head.append(r),r.remove()},q=()=>({get:()=>void 0,handlers:[]}),Ut=(e,t,n,r)=>new Promise(i=>{let a=()=>{W.delete(e)&&(s(`<${r}> has an error in its <script>. The component renders without it.`),i(q))};W.set(e,i),Ht(t,n,a),n||a()}),Wt=e=>{let t=Vt(`handler`);Ht(`${zt}.handler(${JSON.stringify(t)}, function (event) {\n${e}\n});`,!1);let n=G.get(t);return G.delete(t),n},Gt=new WeakMap,Kt=(e,t)=>c(c(Gt,e,()=>new Map),t,()=>({fn:null,code:null,listening:!1})),J=(e,t,n,r)=>{let i=Kt(e,t);i.fn=n,i.code=r,n&&!i.listening&&(i.listening=!0,e.addEventListener(t,t=>{i.fn?.call(e,t)===!1&&t.preventDefault()}))},qt=(e,t)=>{let n=t.slice(2);Object.defineProperty(e,t,{configurable:!0,get(){return Gt.get(this)?.get(n)?.fn??null},set(e){J(this,n,typeof e==`function`?e:null,null)}})},Jt=(e,t,n)=>{if(!e.constructor.observedAttributes.includes(t))return;let r=t.slice(2);if(n===null)return J(e,r,null,null);Kt(e,r).code!==n&&J(e,r,Wt(n)??null,n)},Yt=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Y=e=>({ok:!0,value:e}),X=e=>({ok:!1,message:e}),Xt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=class e{kind;rules;constructor(e,t={}){this.kind=e,this.rules=t}#e(t){return new e(this.kind,{...this.rules,...t})}default(e){return this.#e({default:e,hasDefault:!0})}required(){return this.#e({required:!0})}optional(){return this.#e({required:!1})}reflect(){return this.#e({reflect:!0})}attribute(e){return this.#e({attribute:e})}min(e){return this.#e({min:e})}max(e){return this.#e({max:e})}int(){return this.#e({int:!0})}pattern(e){return this.#e({pattern:e})}email(){return this.#e({format:`email`})}url(){return this.#e({format:`url`})}get fallback(){if(this.rules.hasDefault){let e=this.rules.default;return Xt(e)||Array.isArray(e)?structuredClone(e):e}return this.kind!==`boolean`&&void 0}parse(e){if(this.kind===`boolean`)return Y(e!==null);if(e===null)return this.check(void 0);switch(this.kind){case`number`:return e.trim()===``?X(`"${e}" is not a number`):this.check(Number(e));case`date`:return this.check(new Date(e));case`array`:case`object`:try{return this.check(JSON.parse(e))}catch{return X(`"${e}" is not valid JSON`)}default:return this.check(e)}}check(e){if(e==null)return this.rules.hasDefault?Y(this.fallback):this.rules.required?X(`is required`):Y(this.kind!==`boolean`&&e);let t=this.#t(e);return t?X(t):Y(e)}#t(e){let{rules:t}=this;switch(this.kind){case`string`:return typeof e==`string`?t.min!==void 0&&e.length<t.min?`must be at least ${t.min} characters`:t.max!==void 0&&e.length>t.max?`must be at most ${t.max} characters`:t.pattern&&!t.pattern.test(e)?`must match ${t.pattern}`:t.format===`email`&&!Yt.test(e)?`must be an email address`:t.format===`url`&&!URL.canParse(e)?`must be a URL`:void 0:`expected a string, got ${typeof e}`;case`number`:return typeof e!=`number`||Number.isNaN(e)?`"${String(e)}" is not a number`:t.int&&!Number.isInteger(e)?`must be an integer`:t.min!==void 0&&e<t.min?`must be at least ${t.min}`:t.max!==void 0&&e>t.max?`must be at most ${t.max}`:void 0;case`boolean`:return typeof e==`boolean`?void 0:`expected a boolean, got ${typeof e}`;case`enum`:return t.values?.includes(e)?void 0:`must be one of ${t.values?.map(e=>`"${e}"`).join(`, `)}`;case`date`:return e instanceof Date&&!Number.isNaN(e.getTime())?void 0:`is not a valid date`;case`array`:if(!Array.isArray(e))return`expected an array`;for(let[n,r]of e.entries()){let e=t.item?.check(r);if(e&&!e.ok)return`[${n}] ${e.message}`}return;case`object`:if(!Xt(e))return`expected an object`;for(let[n,r]of Object.entries(t.shape??{})){let t=r.check(e[n]);if(!t.ok)return`.${n} ${t.message}`}return}}serialize(e){return e==null||e===!1?null:e===!0?``:e instanceof Date?e.toISOString():typeof e==`object`?JSON.stringify(e):String(e)}},Zt={string:()=>new Z(`string`),number:()=>new Z(`number`),boolean:()=>new Z(`boolean`),date:()=>new Z(`date`),enum:e=>new Z(`enum`,{values:e}),array:e=>new Z(`array`,{item:e}),object:e=>new Z(`object`,{shape:e})},Qt=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),$t=(e,t)=>{if(e.props)throw Error(`<${e.host.localName}> called defineProps more than once.`);let n=e.host,r=n.localName,i=D({}),a=e.propAttributes,o=(e,t,n)=>{n.ok?i[e]=n.value:(s(`<${r}> prop "${e}" ${n.message}. Using the default.`),i[e]=t.fallback)},c=()=>{for(let[e,r]of a)o(r,t[r],t[r].parse(n.getAttribute(e)))};for(let[e,r]of Object.entries(t)){let t=r.rules.attribute??Qt(e);a.set(t,e);let s=Object.hasOwn(n,e),c=n[e];s&&delete n[e],Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:()=>i[e],set:a=>{if(o(e,r,r.check(a)),!r.rules.reflect)return;let s=r.serialize(i[e]);s===null?n.removeAttribute(t):n.setAttribute(t,s)}}),s?n[e]=c:o(e,r,r.parse(n.getAttribute(t)))}let l=new MutationObserver(e=>{for(let r of e){let e=r.attributeName,s=a.get(e),c=t[s],l=n.getAttribute(e);l!==c.serialize(i[s])&&o(s,c,c.parse(l))}});l.observe(n,{attributes:!0,attributeFilter:[...a.keys()]}),e.disposers.push(()=>{l.disconnect();for(let e of Object.keys(t))delete n[e]});let{formAssociated:u}=e.definition;if(e.props=new Proxy(i,{get(t,n,r){let i=Reflect.get(t,n,r);return n===`disabled`&&u?!!i||e.form.disabled:i},set(e,i,a){return typeof i==`string`&&Object.hasOwn(t,i)?n[i]=a:s(`<${r}> "${String(i)}" is not a declared prop.`),!0}}),u){let r=Object.hasOwn(t,`checked`);(r||Object.hasOwn(t,`value`))&&e.disposers.push(w(()=>{let t=i.value===void 0||i.value===null?null:String(i.value);e.internals.setFormValue(r?i.checked?t??`on`:null:t)})),e.formReset.push(c),e.formStateRestore.push(e=>{r?n.checked=e!==null:n.value=e})}return e.props},en=new Map,tn=e=>({get:t=>e.getItem(t),set:(t,n)=>e.setItem(t,n)}),nn=e=>e===`local`?tn(localStorage):e===`session`?tn(sessionStorage):e,rn=(e,t)=>{let n=Object.getOwnPropertyDescriptor(e,t);return!n||`value`in n},an=(e,t,n={})=>{let r=en.get(e);if(r)return r;let i=D(t),a=nn(n.persist);if(en.set(e,i),!a)return i;let o=`realm:${e}`,c=a.get(o);if(c!==null)try{let e=JSON.parse(c);for(let[n,r]of Object.entries(e))rn(t,n)&&(i[n]=r)}catch{s(`Stored value for store "${e}" is not valid JSON and was ignored.`)}let l=i;return w(()=>a.set(o,JSON.stringify(Object.fromEntries(Object.keys(l).filter(e=>rn(t,e)).map(e=>[e,l[e]]))))),i},on={get:()=>void 0,handlers:[]},Q=new WeakMap,$=(e,t)=>!t&&e.assignedSlot||(e.parentNode instanceof ShadowRoot?e.parentNode.host:e.parentNode),sn=e=>{let t=e.getRootNode();return t instanceof ShadowRoot?1+sn(t.host):0},cn=class{host;definition;internals;controller=new AbortController;refs=D({});disposers=[];connected=[];disconnected=[];formReset=[];formDisabled=[];formStateRestore=[];props;propAttributes=new Map;form=D({disabled:!1});childWatchers=new Set;attrs;scope=on;loading=0;constructor(e,t,n){this.host=e,this.definition=t,this.internals=n}get signal(){return this.controller.signal}has(e){return this.definition.names.has(e)}get(e){return this.scope.get(e)}findInParents(e,t){for(let n=$(this.host,t);n;n=$(n,t)){let r=Q.get(n);if(r?.has(e))return t&&!r.host.contains(this.host)&&s(`<${this.host.localName}> reads "${e}" from <${r.host.localName}>.`),r}}setLoading(e){this.loading+=e,this.loading>0?this.internals.states.add(`loading`):this.internals.states.delete(`loading`)}destroy(){for(let e of this.disconnected)e();this.controller.abort();for(let e of this.disposers.splice(0))e();this.host.shadowRoot?.replaceChildren(),Q.delete(this.host)}},ln=e=>{let t=new Set;e.addEventListener(`abort`,()=>{for(let e of t)clearTimeout(e)});let n=e=>{e!==void 0&&t.delete(e),clearTimeout(e)};return{setTimeout(e,n,...r){let i=window.setTimeout(()=>{t.delete(i),e(...r)},n);return t.add(i),i},setInterval(e,n,...r){let i=window.setInterval(e,n,...r);return t.add(i),i},clearTimeout:n,clearInterval:n}},un=e=>({...ln(e.signal),untrack:T,defineProps:t=>$t(e,t),useState:D,useChildren(t,n=[]){let r=e.host,i=D([]),a=()=>{i.length=0,i.push(...[...r.children].filter(e=>e.matches(t)))};a(),e.childWatchers.add(a);let o=new MutationObserver(a);return o.observe(r,{childList:!0,subtree:!0,characterData:!0,attributeFilter:n}),e.disposers.push(()=>o.disconnect()),i},tick:ne,listen:(t,n,r=e.host)=>r.addEventListener(t,n,{signal:e.signal}),defineMethods(t){let n=e.host,r=Object.getOwnPropertyDescriptors(t);for(let[e,t]of Object.entries(r))Object.defineProperty(n,e,{...t,configurable:!0});e.disposers.push(()=>{for(let e of Object.keys(r))delete n[e]})},dispatch:(t,n,r)=>e.host.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,cancelable:!0,detail:n,...r})),attrs:new Proxy({},{get:(t,n)=>U(e)[n],set:(t,n,r)=>(U(e)[n]=r,!0)}),observe(t){let n=w(t);return e.disposers.push(n),n},onConnected:t=>e.connected.push(t),onDisconnected:t=>e.disconnected.push(t),onFormReset:t=>e.formReset.push(t),onFormDisabled:t=>e.formDisabled.push(t),onFormStateRestore:t=>e.formStateRestore.push(t),defineStore:an,lookup:(t,n)=>{let r=e.findInParents(t,n);return r?r.get(t):globalThis[t]},prop:Zt,host:e.host,refs:e.refs,signal:e.signal,internals:e.internals}),dn=class e extends HTMLElement{static definition;#e=this.attachInternals();#t;#n=!1;#r;get#i(){return this.constructor.definition}connectedCallback(t){this.#n=!1;for(let e of this.attributes)Jt(this,e.name,e.value);if(this.#t||this.closest(`custom-element`))return;for(let t=$(this);t;t=$(t)){let n=t instanceof e?t.#r:K.has(t.localName)&&customElements.whenDefined(t.localName);if(n){this.#r=n.then(()=>{this.#r=void 0,this.isConnected&&this.connectedCallback()});return}}let n=sn(this);if(n>1e3){s(`<${this.localName}> is nested 1000 deep. Stop its recursion with a condition.`);return}if(n%32>30&&!t){queueMicrotask(()=>this.isConnected&&this.connectedCallback(!0));return}let r=this.#i;r.slot&&!this.hasAttribute(`slot`)&&(this.slot=r.slot);let i=this.shadowRoot??this.attachShadow({mode:`open`,delegatesFocus:r.delegatesFocus});i.adoptedStyleSheets=r.sheets,r.role&&(this.#e.role=r.role);let a=new cn(this,r,this.#e);this.#t=a,Q.set(this,a),r.formAssociated&&(a.form.disabled=this.matches(`:disabled`));try{a.scope=r.setup(un(a))}catch(e){o(e)}let c={instance:a,vars:[],signal:a.signal,disposers:a.disposers};At(a,c);let l=document.importNode(r.markup,!0);H(l,c),i.append(l),Nt(a);let u=this.parentElement&&Q.get(this.parentElement);if(u)for(let e of u.childWatchers)e();for(let e of a.connected){let t=e();typeof t==`function`&&a.disposers.push(t)}}disconnectedCallback(){this.#n=!0,queueMicrotask(()=>{this.#n&&!this.isConnected&&(this.#t?.destroy(),this.#t=void 0)})}attributeChangedCallback(e,t,n){this.isConnected&&Jt(this,e,n)}formResetCallback(){for(let e of this.#t?.formReset??[])e()}formDisabledCallback(e){this.#t&&(this.#t.form.disabled=e);for(let t of this.#t?.formDisabled??[])t(e)}formStateRestoreCallback(e,t){for(let n of this.#t?.formStateRestore??[])n(e,t)}},fn=e=>{let t=e.events.filter(e=>!(`on${e}`in HTMLElement.prototype)).map(e=>`on${e}`),n=class extends dn{static definition=e;static formAssociated=e.formAssociated;static observedAttributes=t};for(let e of t)qt(n.prototype,e);customElements.define(e.name,n)},pn=new CSSStyleSheet;pn.replaceSync(`is-visible, is-hidden, repeat-list { display: contents; } :host([hidden]), [hidden]:not([hidden='until-found']) { display: none !important; } :not(:defined):not(is-visible, is-hidden, repeat-list) { visibility: hidden; }`);var mn=new Map,hn=/(?:new\s+(?:Custom)?Event|\bdispatch)\s*\(\s*(["'`])([a-z][\w-]*)\1/g,gn=(e,t)=>{let n=new CSSStyleSheet;if(e.localName===`style`)return n.replaceSync(e.textContent),n;let r=new URL(e.getAttribute(`href`)??``,t).href;return fetch(r).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>n.replace(e)).catch(e=>s(`Could not load stylesheet ${r}: ${e.message}`)),n},_n=async(e,t)=>{try{let n=await import(t);e.names=new Set(n.names),e.setup=n.default}catch(n){s(`<${e.name}> could not load its script ${t}: ${n.message}`),e.setup=q}},vn=async(n,i,a)=>{let o=n.getAttribute(`name`)??``;if(!o.includes(`-`)){s(`<custom-element name="${o}"> needs a name that contains a dash, like "todo-app".`);return}let c=n.outerHTML,l=mn.get(o);if(l){l.source!==c&&s(`<${o}> is defined twice with different sources (${l.base} and ${i}). Keeping the first.`);return}if(customElements.get(o)){s(`<${o}> is already defined by another library.`);return}let u=[],d=[pn],f={variables:new Set,states:new Set},p=n.ownerDocument.createDocumentFragment();for(let e of[...n.childNodes])e instanceof Element&&e.localName===`script`?u.push(e):e instanceof Element&&(e.localName===`style`||e.localName===`link`&&e.getAttribute(`rel`)===`stylesheet`)?(d.push(gn(e,i)),kt(e.textContent,f)):p.append(e);u.length>1&&s(`<${o}> has more than one <script>. Only the first is used.`);let m=u[0];a&&m&&m.type!==`realm`&&s(`<${o}> is defined in the page, so its <script> needs type="realm". A plain <script> already ran in the page scope.`);let h=t(p.children);for(let e of p.querySelectorAll(`*`))for(let{name:t,value:n}of[...e.attributes])t.length>2&&t.startsWith(`on`)&&(e.removeAttribute(t),e.setAttribute(r+t.slice(2),n));let g=m?.textContent??``,_=m?.getAttribute(`src`),v={name:o,source:c,base:i,markup:p,sheets:d,names:new Set,handlers:new Map([...h.keys()].map((e,t)=>[e,t])),events:[...new Set([...g.matchAll(hn)].map(e=>e[2]))],formAssociated:n.hasAttribute(`form-associated`),role:n.getAttribute(`role`),slot:n.getAttribute(`slot`),delegatesFocus:n.hasAttribute(`delegates-focus`),css:f,setup:void 0};if(mn.set(o,v),K.add(o),_)await _n(v,new URL(_,i).href);else if(!g.trim()&&!h.size)v.setup=q;else{let t=Vt(o),{imports:n,setup:r,names:a}=e(g,i,h);v.names=a,v.setup=await Ut(t,`${n}\n${zt}.register(${JSON.stringify(t)}, ${r});\n//# sourceURL=${i.split(`#`)[0]}#${o}`,n!==``,o)}K.delete(o),fn(v)},yn=new CSSStyleSheet;yn.replaceSync(`custom-element, import-element { display: none !important; } is-visible, is-hidden, repeat-list { display: contents; }`);var bn=!1,xn=e=>{e.remove(),vn(e,document.baseURI,!0)},Sn=e=>{for(let t of e.querySelectorAll(`custom-element`))xn(t)},Cn=()=>{bn||(bn=!0,document.adoptedStyleSheets=[...document.adoptedStyleSheets,yn],customElements.get(`import-element`)||customElements.define(`import-element`,tt),Sn(document),new MutationObserver(e=>{for(let t of e)for(let e of t.addedNodes)e instanceof Element&&(e.localName===`custom-element`?xn(e):Sn(e))}).observe(document,{childList:!0,subtree:!0}),et(document))};export{Qe as a,D as c,Zt as i,E as l,vn as n,w as o,an as r,S as s,Cn as t,T as u};
|
package/dist/compiler.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,i as t,n}from"./chunks/assemble-
|
|
1
|
+
import{a as e,i as t,n}from"./chunks/assemble-CknmSUSM.js";var r=`style, link[rel=stylesheet]`,i=e=>{let i=[...e.children],a=i.find(e=>e.localName===`script`);if(a?.hasAttribute(`src`))return;let o=i.filter(e=>e.localName!==`script`&&!e.matches(r)),s=a?.textContent??``,c=n(o);if(!s.trim()&&!c.size)return;let{imports:l,setup:u,names:d}=t(s,null,c);return{name:e.getAttribute(`name`)??``,script:a,module:`${l}\nexport const names = ${JSON.stringify([...d])};\nexport default ${u};\n`}};export{i as compileDefinition,e as tokenize};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{n as defineComponent,r as defineStore,s as flush,a as importDefinitions,o as observe,i as prop,t as start,l as toRaw,u as untrack,c as useState}from"./chunks/src-
|
|
1
|
+
export{n as defineComponent,r as defineStore,s as flush,a as importDefinitions,o as observe,i as prop,t as start,l as toRaw,u as untrack,c as useState}from"./chunks/src-BCKbb531.js";
|
package/dist/realm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./chunks/src-
|
|
1
|
+
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./chunks/src-BCKbb531.js";c();export{i as defineComponent,o as defineStore,s as flush,e as importDefinitions,a as observe,n as prop,c as start,r as toRaw,l as untrack,t as useState};
|
package/dist/types/css.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export interface CssBindings {
|
|
|
5
5
|
states: Set<string>;
|
|
6
6
|
}
|
|
7
7
|
export declare const scanCss: (css: string, into: CssBindings) => void;
|
|
8
|
+
export declare const attributesOf: (instance: Instance) => Record<string, string | null>;
|
|
8
9
|
export declare const bindCss: (instance: Instance, scope: Scope) => void;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"./assemble-DpEMX9rI.js";var i=`[realm]`,a=new Set,o=e=>console.error(i,e),s=e=>{a.has(e)||(a.add(e),console.warn(i,e))},c=(e,t,n)=>{let r=e;return r.has(t)||r.set(t,n()),r.get(t)},l=Symbol(`realm.raw`),u=Symbol(`realm.iterate`),d=100,f=new WeakMap,p=new WeakMap,m=new Set,h,g=!1,_=e=>{h&&(e.add(h),h.deps.add(e))},v=(e,t)=>{h&&_(c(c(f,e,()=>new Map),t,()=>new Set))},y=e=>{if(e)for(let t of[...e])t.notify()},b=(e,t)=>y(f.get(e)?.get(t)),ee=e=>{for(let t of e.deps)t.delete(e);e.deps.clear()},x=()=>{g||(g=!0,queueMicrotask(S))},S=()=>{g=!1;for(let e=0;m.size;e++){if(e===d){m.clear(),o(Error(`Update loop detected: an observer keeps changing state it depends on.`));return}let t=[...m];m.clear();for(let e of t)e.run()}},C=class{fn;deps=new Set;#e;#t=!1;constructor(e){this.fn=e}notify(){m.add(this),x()}run(){if(this.#t)return;this.#n();let e=h;h=this;try{let e=this.fn();typeof e==`function`&&(this.#e=e)}catch(e){o(e)}finally{h=e}}stop(){this.#t=!0,m.delete(this),this.#n()}#n(){ee(this);let e=this.#e;this.#e=void 0,e?.()}},te=class{getter;deps=new Set;subscribers=new Set;dirty=!0;value;error;failed=!1;constructor(e){this.getter=e}notify(){this.dirty||(this.dirty=!0,y(this.subscribers))}get(){if(_(this.subscribers),this.dirty){ee(this);let e=h;h=this;try{this.value=this.getter(),this.failed=!1}catch(e){this.error=e,this.failed=!0}finally{this.dirty=!1,h=e}}if(this.failed)throw this.error;return this.value}},ne=async()=>{await Promise.resolve(),S()},w=e=>{let t=new C(e);return t.run(),()=>t.stop()},T=e=>{let t=h;h=void 0;try{return e()}finally{h=t}},re=e=>{if(typeof e!=`object`||!e)return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},E=e=>typeof e==`object`&&!!e&&e[l]||e,ie=e=>E(e)!==e,ae=new Set(`push pop shift unshift splice sort reverse fill copyWithin`.split(` `)),oe=new Set([`includes`,`indexOf`,`lastIndexOf`]),se=(e,t,n)=>{let r=Array.prototype[t];return ae.has(t)?(...e)=>T(()=>r.apply(n,e)):(...t)=>{v(e,u);let i=r.apply(e,t.map(E));return i===-1||i===!1?r.apply(n,t):i}},ce=(e,t)=>{let n=f.get(e);if(n)for(let[e,r]of n)typeof e==`string`&&Number(e)>=t&&y(r)},D=e=>{if(!re(e)||ie(e))return e;let t=p.get(e);if(t)return t;let n=new Map,r=Array.isArray(e),i=new Proxy(e,{get(e,t,i){if(t===l)return e;if(r&&typeof t==`string`&&(ae.has(t)||oe.has(t)))return se(e,t,i);let a=Object.getOwnPropertyDescriptor(e,t)?.get;if(a)return c(n,t,()=>new te(()=>a.call(i))).get();v(e,t);let o=Reflect.get(e,t,i);return re(o)?D(o):o},set(e,t,n,i){let a=Object.getOwnPropertyDescriptor(e,t)?.set;if(a)return a.call(i,n),!0;let o=E(n),s=Object.hasOwn(e,t),c=e[t],l=r?e.length:0;if(e[t]=o,s&&Object.is(c,o))return!0;if(b(e,t),s||b(e,u),r){let n=e.length;n!==l&&t!==`length`&&b(e,`length`),t===`length`&&(b(e,u),ce(e,n))}return!0},deleteProperty(e,t){let n=Object.hasOwn(e,t);return delete e[t],n&&(b(e,t),b(e,u)),!0},has(e,t){return v(e,t),Reflect.has(e,t)},ownKeys(e){return v(e,u),r&&v(e,`length`),Reflect.ownKeys(e)}});return p.set(e,i),i},le=new Set(`script style iframe frame frameset object embed link meta base template noscript`.split(` `)),ue=new Set(`href src action formaction xlink:href poster to from values`.split(` `)),de=/^\s*(?:javascript|vbscript|data:text\/html)/i,O=e=>new DOMParser().parseFromString(`<body>${e}`,`text/html`).body,k=e=>{for(let t of[...e.querySelectorAll(`*`)])if(le.has(t.localName))t.remove();else for(let{name:e,value:n}of[...t.attributes])(e.startsWith(`on`)||e===`srcdoc`||ue.has(e)&&de.test(n))&&t.removeAttribute(e);return e},fe=e=>{let t=document.createDocumentFragment();for(let n of[...e.childNodes])t.append(document.importNode(n,!0));return t},pe=e=>fe(k(O(e))),me=/^(!?)([#@])([A-Za-z_$][\w$]*(?:\.[\w$-]+)*)$/,he=e=>{let t=e.trim().match(me);if(t)return{text:e,negate:t[1]===`!`,kind:t[2],path:t[3].split(`.`)}},A=(e,t,n)=>{let r=he(e??``);return r||s(`<${n.instance.host.localName}> ${t}="${e??``}" must be a reference like "#state.path" or "@prop".`),r},ge=(e,t)=>{let n=e.path[0],{instance:r}=t;if(e.kind===`@`)return r.props?.[n];let i=t.vars.findLast(([e])=>e===n);if(i)return i[1].value;if(r.has(n))return r.get(n);let a=r.findInParents(n,!0);return a||s(`<${r.host.localName}> "${e.text}" is not defined in this component or its parents.`),a?.get(n)},j=(e,t)=>{let n=ge(e,t);for(let t of e.path.slice(1))n=n?.[t];return e.negate?!n:n},_e=(e,t,n)=>{if(e.kind===`@`||e.path.length<2||e.negate){s(`<${t.instance.host.localName}> "${e.text}" can't be written. Use a state property like "#todo.items".`);return}let r=j({...e,path:e.path.slice(0,-1)},t),i=e.path.at(-1);typeof r!=`object`||!r?s(`<${t.instance.host.localName}> "${e.text}" can't be written because its parent is not an object.`):r[i]=n(r[i])},ve=e=>{let t=new AbortController;return e.addEventListener(`abort`,()=>t.abort(e.reason),{signal:t.signal}),t},ye={ms:1,s:1e3,m:6e4},M=e=>{let t=e.trim().match(/^(\d+(?:\.\d+)?)(ms|s|m)?$/);return t?Number(t[1])*ye[t[2]??`ms`]:(s(`"${e}" is not a duration. Use values like "300ms", "2s" or "1m".`),0)},be=(e,t,n)=>{let r=e.getAttribute(`debounce`),i=e.getAttribute(`throttle`);if(r!==null){let e=M(r),i;return n.addEventListener(`abort`,()=>clearTimeout(i)),n=>{clearTimeout(i),i=setTimeout(()=>t(n),e)}}if(i!==null){let e=M(i),n=-1/0;return r=>{let i=performance.now();i-n<e||(n=i,t(r))}}return t},xe=new Set(`replace outer append prepend before after remove text merge`.split(` `)),Se={form:`submit`,a:`click`},Ce=new Map,we=async e=>({ok:e.ok,status:e.status,headers:e.headers,text:await e.text(),url:e.url}),Te=(e,t)=>{let n=`${e}\u0000${[...t].join(`\0`)}`,r=Ce.get(n);return r||(r=fetch(e,{headers:t}).then(we),Ce.set(n,r),r.finally(()=>Ce.delete(n)).catch(()=>{})),r},Ee=(e,t)=>new Promise((n,r)=>{t.addEventListener(`abort`,()=>r(t.reason),{once:!0}),e.then(n,r)}),De=e=>{if(!e.headers.get(`content-type`)?.includes(`json`))return e.text;try{return JSON.parse(e.text)}catch{return e.text}},Oe=e=>e.hasAttribute(`fetch`)||(e.localName===`form`||e.localName===`a`)&&(e.hasAttribute(`into`)||e.hasAttribute(`render`)||e.hasAttribute(`busy`)),ke=e=>e.localName===`form`?`submit`:e.localName===`input`||e.localName===`select`||e.localName===`textarea`?`change`:`click`,Ae=(e,t)=>{if(e.nodeType!==t.nodeType||e.nodeName!==t.nodeName){e.replaceWith(t);return}if(!(e instanceof Element)){e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue);return}let n=t;for(let{name:t}of[...e.attributes])n.hasAttribute(t)||e.removeAttribute(t);for(let{name:t,value:r}of[...n.attributes])e.getAttribute(t)!==r&&e.setAttribute(t,r);e.matches(`:focus`)||je(e,n)},je=(e,t)=>{let n=[...t.childNodes],r=[...e.childNodes];n.forEach((t,n)=>{let i=r[n];i?Ae(i,t):e.append(t)});for(let e of r.slice(n.length))e.remove()},Me={append:(e,t)=>[...e,...t],prepend:(e,t)=>[...t,...e],update:(e,t,n)=>{let r=new Map(t.map(e=>[e[n],e]));return[...e.map(e=>{let t=r.get(e[n]);return r.delete(e[n]),t??e}),...r.values()]},remove:(e,t,n)=>{let r=new Set(t.map(e=>e[n]));return e.filter(e=>!r.has(e[n]))}},Ne=(e,t,n)=>{let r=A(e,`trigger`,n);if(!r)return;let i,a=w(()=>{let e=JSON.stringify(j(r,n))??``;i!==void 0&&e!==i&&T(()=>t(new CustomEvent(`change`))),i=e});n.signal.addEventListener(`abort`,a)},Pe=(e,t)=>e.replaceChildren(t),Fe={replace:Pe,outer:(e,t)=>e.replaceWith(t),append:(e,t)=>e.append(t),prepend:(e,t)=>e.prepend(t),before:(e,t)=>e.before(t),after:(e,t)=>e.after(t),merge:(e,t)=>je(e,t)},Ie=(e,t,n,r)=>{if(n===`text`&&(e.textContent=t),n===`remove`&&e.remove(),n===`text`||n===`remove`)return;let i=k(O(t));r&&i.replaceChildren(...i.querySelectorAll(r)),(Fe[n]??Pe)(e,fe(i))},Le=(e,t,n)=>{let r=e.getAttribute(`params`);if(r)for(let e of r.split(`,`)){let[r=``,i=``]=e.split(`:`),a=r.trim(),o=A(i.trim(),`params ${a}`,t);if(!o)continue;let s=j(o,t);n.append(a,typeof s==`object`&&s?JSON.stringify(s):String(s??``))}},Re=(e,t)=>{if(e instanceof HTMLFormElement)return new FormData(e,t);let n=new FormData,r=e;return r.name&&`value`in r&&n.append(r.name,r.value),n},ze=(e,t)=>{let{instance:n}=t,r=n.host.localName,i=e.hasAttribute(`into`)?A(e.getAttribute(`into`),`into`,t):void 0,a=e.hasAttribute(`busy`)?A(e.getAttribute(`busy`),`busy`,t):void 0,o=e.hasAttribute(`headers`)?he(e.getAttribute(`headers`)):void 0,c=e.getAttribute(`render`),l=e.getAttribute(`render-mode`)??`replace`;xe.has(l)||s(`<${r}> render-mode="${l}" is not supported.`);let u,d=(t,n,r=!1)=>e.dispatchEvent(new CustomEvent(t,{detail:n,cancelable:r})),f=n=>{a&&_e(a,t,()=>n),n?e.setAttribute(`aria-busy`,`true`):e.removeAttribute(`aria-busy`)},p=async a=>{S();let p=e instanceof HTMLFormElement?e:null,m=e instanceof HTMLAnchorElement?e:null,h=a?.getAttribute(`formaction`)??e.getAttribute(`fetch`)??(p?p.action:m.href),g=new URL(h,e.baseURI),_=(a?.getAttribute(`formmethod`)??e.getAttribute(`method`)??`get`).toUpperCase();if(!d(`loadstart`,{url:g.href,method:_},!0))return;u?.abort();let v=ve(t.signal),{signal:y}=v;u=v;let b=e.getAttribute(`timeout`),ee=b?setTimeout(()=>v.abort(new DOMException(`Timed out`,`TimeoutError`)),M(b)):void 0,x=Re(e,a);Le(e,t,x);let C=new Headers(o&&j(o,t)||void 0);n.setLoading(1),f(!0);try{let a;if(_===`GET`){for(let[e,t]of x)g.searchParams.append(e,t);a=Te(g.href,C)}else{let e=p?.enctype===`multipart/form-data`?x:new URLSearchParams(x);a=fetch(g,{method:_,body:e,headers:C}).then(we)}let o=await Ee(a,y),u={status:o.status,data:De(o),headers:o.headers,url:o.url};if(!o.ok){d(`error`,u);return}if(i){let n=e.getAttribute(`into-mode`)??`replace`;_e(i,t,t=>{if(n===`replace`)return u.data;let r=Array.isArray(t)?t:[],i=Array.isArray(u.data)?u.data:[u.data];return(Me[n]??Me.append)(r,i,e.getAttribute(`into-key`)??`id`)})}if(c!==null){let t=n.refs[c];t?Ie(t,o.text,l,e.getAttribute(`render-select`)):s(`<${r}> render="${c}" does not match any ref.`)}m&&c!==null&&history.pushState({},``,g),d(`load`,u)}catch(e){if(y.aborted){let e=y.reason;d(e.name===`TimeoutError`?`timeout`:`abort`,{url:g.href})}else d(`error`,{status:0,data:void 0,message:e.message,url:g.href})}finally{clearTimeout(ee),v.abort(),n.setLoading(-1),u===v&&(u=void 0,f(!1)),d(`loadend`,{url:g.href})}},m=e=>void p(e instanceof SubmitEvent?e.submitter:null),h=be(e,m,t.signal),g=Se[e.localName];g&&e.addEventListener(g,e=>e.preventDefault(),{signal:t.signal});let _=(e.getAttribute(`trigger`)??ke(e)).split(/[\s,]+/).filter(Boolean);for(let n of _)if(n===`load`)queueMicrotask(()=>m());else if(n===`visible`){let n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&m()});n.observe(e),t.signal.addEventListener(`abort`,()=>n.disconnect())}else/^[#@]/.test(n)?Ne(n,h,t):e.addEventListener(n,h,{signal:t.signal});let v=e.getAttribute(`poll`);if(v){let e=setInterval(m,M(v));t.signal.addEventListener(`abort`,()=>clearInterval(e))}},Be=`button, a[href], input, select, textarea, [tabindex]`,Ve=`:disabled, [disabled], [aria-disabled="true"], [inert], [hidden]`,He={ArrowRight:{axis:`inline`,step:1},ArrowLeft:{axis:`inline`,step:-1},ArrowDown:{axis:`block`,step:1},ArrowUp:{axis:`block`,step:-1}},Ue=e=>e.shadowRoot?.delegatesFocus?[]:We(e.shadowRoot??e),We=e=>[...e.children].flatMap(e=>e instanceof HTMLSlotElement?e.assignedElements({flatten:!0}).flatMap(e=>[e,...Ue(e)]):[e,...Ue(e)]),Ge=e=>We(e).filter(e=>(e.matches(Be)||e.shadowRoot?.delegatesFocus===!0)&&!e.matches(Ve)&&e.getAttribute(`tabindex`)!==`-2`&&e.checkVisibility()),Ke=(e,t)=>{e.addEventListener(`keydown`,t=>{let n=new Set((e.getAttribute(`focusgroup`)??``).split(/\s+/).filter(Boolean)),r=n.has(`inline`)||n.has(`block`),i=t.key,a=Ge(e),o=a.indexOf(t.composedPath().find(e=>a.includes(e))),s=He[i],c={Home:0,End:a.length-1}[i];if(o===-1||c===void 0&&(!s||r&&!n.has(s.axis)))return;let l=s?.axis===`inline`&&getComputedStyle(e).direction===`rtl`?-1:1,u=c??o+s.step*l,d=n.has(`wrap`)?(u+a.length)%a.length:Math.min(Math.max(u,0),a.length-1);t.preventDefault(),a[d].focus()},{signal:t})},qe=6,Je=new Map,N=new Map,P=new Map,F=new Set,I=new Map,L=class extends Error{url;status;constructor(e,t){super(`Could not import ${e}${t?` (HTTP ${t})`:``}`),this.url=e,this.status=t}},Ye=e=>new Promise(t=>{let n=N.get(e)??0;if(n<qe)N.set(e,n+1),t();else{let n=P.get(e)??[];n.push(()=>t()),P.set(e,n)}}),Xe=e=>{let t=P.get(e)?.shift();t?t():N.set(e,N.get(e)-1)},Ze=e=>{let t=Je.get(e);if(t)return t;let{origin:n}=new URL(e);return t=Ye(n).then(()=>fetch(e)).then(async t=>{if(!t.ok)throw new L(e,t.status);return new DOMParser().parseFromString(await t.text(),`text/html`)}).catch(t=>{throw t instanceof L?t:new L(e,0)}).finally(()=>Xe(n)),Je.set(e,t),t},R=async(e,t=new Set)=>{let n=await Ze(e),r=new Set([...t,e]),i=[...n.querySelectorAll(`import-element[from]`)].filter(e=>!e.closest(`custom-element`)).map(t=>new URL(t.getAttribute(`from`),e).href).filter(e=>!r.has(e));await Promise.all(i.map(e=>R(e,r))),await Promise.all([...n.querySelectorAll(`custom-element`)].map(t=>$(t.cloneNode(!0),e,!1)))},z=e=>{if(!F.has(e)){F.add(e);for(let t of I.get(e)??[])t();I.delete(e)}},Qe=e=>new Promise(t=>{if(e.some(e=>F.has(e)||document.querySelector(e)))return t();for(let n of e)I.set(n,[...I.get(n)??[],t])}),$e=e=>{let t=e=>{e.localName.includes(`-`)&&z(e.localName);for(let t of e.querySelectorAll(`*`))t.localName.includes(`-`)&&z(t.localName)};new MutationObserver(e=>{for(let n of e)for(let e of n.addedNodes)e instanceof Element&&t(e)}).observe(e,{childList:!0,subtree:!0})},et=class extends HTMLElement{#e=!1;async connectedCallback(){if(this.#e||this.closest(`custom-element`))return;this.#e=!0;let e=this.getAttribute(`from`);if(!e){s(`<import-element> needs a from attribute.`);return}let t=new URL(e,this.baseURI).href,n=(this.getAttribute(`for`)??``).split(/\s+/).filter(Boolean);this.getAttribute(`loading`)===`lazy`&&(n.length?await Qe(n):s(`<import-element from="${e}" loading="lazy"> needs a for attribute listing the tags it defines.`));try{await R(t),this.isConnected&&this.dispatchEvent(new CustomEvent(`load`,{detail:{url:t}}))}catch(e){let{status:n}=e;s(e.message),this.isConnected&&this.dispatchEvent(new CustomEvent(`error`,{detail:{url:t,status:n}}))}}},tt=new Set([`value`,`checked`,`selected`,`indeterminate`]),nt=new Set([`draggable`,`spellcheck`,`contenteditable`]),rt=[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`contains`],B=(e,t)=>{e.disposers.push(w(t))},V=`http://www.w3.org/2000/svg`,it=Object.fromEntries(`viewBox preserveAspectRatio gradientTransform gradientUnits patternTransform patternUnits patternContentUnits clipPathUnits markerHeight markerWidth markerUnits maskUnits maskContentUnits textLength lengthAdjust refX refY pathLength stdDeviation filterUnits primitiveUnits spreadMethod startOffset tableValues baseFrequency numOctaves stitchTiles surfaceScale specularExponent diffuseConstant kernelMatrix edgeMode xChannelSelector yChannelSelector attributeName repeatCount keyTimes keySplines calcMode`.split(` `).map(e=>[e.toLowerCase(),e])),at=new Set([`progress`,`meter`]),ot=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),st=(e,t,n)=>{let r=e.namespaceURI===V?it[t]??t:t,i=e;if(r.startsWith(`--`)){let t=e.style;n==null||n===!1?t.removeProperty(r):t.setProperty(r,String(n))}else r===`value`&&n==null&&at.has(e.localName)?e.removeAttribute(r):tt.has(r)&&r in e?i[r]=r===`value`?n??``:!!n:e.localName.includes(`-`)&&typeof n==`object`&&n?i[ot(r)]=n:(r.startsWith(`aria-`)||nt.has(r))&&typeof n==`boolean`?e.setAttribute(r,String(n)):n===!0?e.setAttribute(r,``):n===!1||n==null?e.removeAttribute(r):e.setAttribute(r,String(n))},ct=(e,t,n,r)=>{let i=A(n,`_${t}`,r);i&&B(r,()=>st(e,t,j(i,r)))},lt=(e,t,r,i)=>{let{instance:a,vars:o}=i,s=a.definition.handlers.get(n(o.map(([e])=>e),r)),c=a.scope.handlers[s];if(!c)return;let l=t=>{c.call(e,t,...o.map(([,e])=>e.value))===!1&&t.preventDefault()},u=Oe(e)?l:be(e,l,i.signal);e.addEventListener(t,u,{signal:i.signal})},ut={text:(e,t)=>e.replaceChildren(t),html:(e,t)=>e.replaceChildren(pe(t)),"html-unsafe":(e,t)=>{e.innerHTML=t}},dt=(e,t)=>{let n=O(`<svg>${e}</svg>`).firstElementChild;return[...(t?k(n):n).childNodes]},ft={html:(e,t)=>e.replaceChildren(...dt(t,!0)),"html-unsafe":(e,t)=>e.replaceChildren(...dt(t,!1))},H=e=>e==null||e===``,pt=(e,t,n)=>{let r=[`html-unsafe`,`html`].find(t=>e.hasAttribute(t))??`text`,i=[...e.childNodes];if(e.namespaceURI===V){let a=r===`text`,o=a?document.createTextNode(``):document.createElementNS(V,`g`);e.replaceWith(o);let s=ft[r];B(n,()=>{let r=j(t,n);a?o.data=H(r)?e.textContent:String(r):H(r)?o.replaceChildren(...i):s(o,String(r))});return}let a=ut[r];B(n,()=>{let r=j(t,n);H(r)?e.replaceChildren(...i):a(e,String(r))})},mt=(e,t,n,r,i)=>{let a=ve(r.signal),o={instance:r.instance,vars:i,signal:a.signal,disposers:[]},s=document.createDocumentFragment();s.append(e.cloneNode(!0)),U(s,o);let c=[...s.childNodes];return t.insertBefore(s,n),{nodes:c,dispose(){a.abort();for(let e of o.disposers)e();for(let e of c)e.remove()}}},ht=e=>{let t=document.createDocumentFragment();return t.append(...e.childNodes),t},gt={eq:(e,t)=>String(e)===t,neq:(e,t)=>String(e)!==t,gt:(e,t)=>Number(e)>Number(t),gte:(e,t)=>Number(e)>=Number(t),lt:(e,t)=>Number(e)<Number(t),lte:(e,t)=>Number(e)<=Number(t),contains:(e,t)=>Array.isArray(e)?e.some(e=>String(e)===t):String(e??``).includes(t)},_t=(e,t,n)=>t?gt[t](e,n):!!e,vt=(e,t)=>{let n=A(e.getAttribute(`when`),`<${e.localName}> when`,t),r=ht(e);if(!n)return;let i=e.localName===`is-hidden`,a=rt.find(t=>e.hasAttribute(t)),o=a?e.getAttribute(a):``,s;B(t,()=>{let c=_t(j(n,t),a,o)!==i;T(()=>{c&&!s?s=mt(r,e,null,t,t.vars):!c&&s&&(s.dispose(),s=void 0)})}),t.disposers.push(()=>s?.dispose())},yt=(e,t,n,r,i)=>{let a=A(e.getAttribute(`of`)??e.getAttribute(`repeat`),`repeat`,i);if(!a)return;let o=e.getAttribute(`as`)??`item`,c=e.getAttribute(`index`),l=e.getAttribute(`key`),u=()=>r?.parentNode??n,d=new Map,f=(e,n)=>{let a=D({value:e}),s=D({value:n}),l=[...i.vars,[o,a],...c?[[c,s]]:[]];return{...mt(t,u(),r,i,l),item:a,index:s}};B(i,()=>{let e=j(a,i),t=Array.isArray(e)?[...e]:[];T(()=>{let e=new Map,n=[];t.forEach((t,r)=>{let a=l?t?.[l]:r;e.has(a)&&(s(`<${i.instance.host.localName}> repeat has a duplicate key "${String(a)}".`),a=Symbol());let o=d.get(a);o?(d.delete(a),o.item.value=t,o.index.value=r):o=f(t,r),e.set(a,o),n.push(o)});for(let e of d.values())e.dispose();d=e;let a=r;for(let e of n.reverse())for(let t of e.nodes.toReversed())t.nextSibling!==a&&u().insertBefore(t,a),a=t})}),i.disposers.push(()=>{for(let e of d.values())e.dispose()})},bt=(e,t)=>{let n=document.createComment(`repeat`);e.replaceWith(n);let r=e.cloneNode(!0);for(let e of[`repeat`,`as`,`index`,`key`])r.removeAttribute(e);yt(e,r,n.parentNode,n,t)},xt=(e,t)=>{for(let{name:n,value:i}of[...e.attributes])n.length>1&&n.startsWith(`_`)?(e.removeAttribute(n),ct(e,n.slice(1),i,t)):n.startsWith(`realm:on`)?(e.removeAttribute(n),lt(e,n.slice(r.length),i,t)):n===`ref`&&(t.instance.refs[i]=e)},St=(e,t)=>{let n=e.localName;if(n===`is-visible`||n===`is-hidden`)return vt(e,t);if(n===`repeat-list`)return yt(e,ht(e),e,null,t);if(e.hasAttribute(`repeat`))return bt(e,t);n.includes(`-`)&&z(n),U(e,t),xt(e,t),Oe(e)&&ze(e,t),e.hasAttribute(`focusgroup`)&&Ke(e,t.signal);let r=e.getAttribute(`name`);if(n===`slot`&&r&&/^[#@!]/.test(r)){let n=A(r,`<slot> name`,t);n&&pt(e,n,t)}},U=(e,t)=>{for(let n of[...e.children])St(n,t)},Ct=/var\(\s*--((?:attr|state)-[\w-]+)/g,wt=/:state\(\s*((?:attr|state)-[\w-]+)\s*\)/g,Tt=/^(attr|state)-(.+)$/,Et=/^(attr|state)-(.+?)(?:-(is|gt|gte|lt|lte)-(.+))?$/,Dt={is:`eq`,gt:`gt`,gte:`gte`,lt:`lt`,lte:`lte`},Ot=(e,t)=>{for(let n of e.matchAll(Ct))t.variables.add(n[1]);for(let n of e.matchAll(wt))t.states.add(n[1])},kt=(e,t)=>{let n=e.host,r=D({}),i=()=>{for(let e of t)r[e]=n.getAttribute(e)};i();let a=new MutationObserver(i);return a.observe(n,{attributes:!0,attributeFilter:t}),e.disposers.push(()=>a.disconnect()),r},At=(e,t)=>{let{variables:n,states:r}=e.definition.css;if(!n.size&&!r.size)return;let i=[...[...n].map(e=>Tt.exec(e)),...[...r].map(e=>Et.exec(e))].filter(t=>t[1]===`attr`&&!e.propAttributes.has(t[2])).map(e=>e[2]),a=kt(e,[...new Set(i)]),o=(n,r)=>{if(n===`attr`){let t=e.propAttributes.get(r);return t===void 0?a[r]:e.props?.[t]}return j({text:`#${r}`,negate:!1,kind:`#`,path:r.split(`-`)},t)},s=e.host.style;for(let t of n){let[,n,r]=Tt.exec(t);e.disposers.push(w(()=>{let e=o(n,r);e==null||typeof e==`object`?s.setProperty(`--${t}`,`initial`):s.setProperty(`--${t}`,String(e))}))}for(let t of r){let[,n,r,i,a=``]=Et.exec(t),s=i?Dt[i]:void 0;e.disposers.push(w(()=>{_t(o(n,r),s,a)?e.internals.states.add(t):e.internals.states.delete(t)}))}},jt=new Set([`checkbox`,`radio`]),Mt=new Set(`text email password number search tel url date time datetime-local month week`.split(` `)),Nt=e=>{let t=e.refs.control;if(!e.definition.formAssociated||!t)return;let n=e.host,r=new Set(e.propAttributes.values()),i=r.has(`checked`)&&jt.has(t.type),a=typeof e.props?.value==`number`,o=()=>t.willValidate?e.internals.setValidity(t.validity,t.validationMessage,t):e.internals.setValidity({}),s=()=>{i?n.checked=t.checked:r.has(`value`)&&(n.value=a?Number(t.value):t.value),o()},c=[...e.internals.labels].map(e=>e.textContent.trim()).join(` `);c&&!t.hasAttribute(`aria-label`)&&t.setAttribute(`aria-label`,c);let{signal:l}=e;t.addEventListener(`input`,s,{signal:l}),t.addEventListener(`change`,()=>{s(),n.dispatchEvent(new Event(`change`,{bubbles:!0}))},{signal:l}),t.addEventListener(`keydown`,n=>{let r=e.internals.form;n.key===`Enter`&&r&&Mt.has(t.type)&&(n.preventDefault(),HTMLFormElement.prototype.requestSubmit.call(r))},{signal:l}),e.disposers.push(w(()=>{e.props?.value,e.props?.checked,o()}))},Pt=crypto.randomUUID(),W=new Map,G=new Map,Ft={register(e,t){let n=W.get(e);W.delete(e),n?.(t)},handler(e,t){G.set(e,t)}},It=Symbol.for(`realm`),Lt=globalThis,Rt=Lt[It]??new Map;Lt[It]=Rt,Rt.set(Pt,Ft);var K=new Set,zt=`globalThis[Symbol.for("realm")].get(${JSON.stringify(Pt)})`,Bt=0,Vt=e=>`${e}:${++Bt}`,Ht=(e,t,n)=>{let r=document.createElement(`script`);t&&(r.type=`module`),n&&r.addEventListener(`error`,n,{once:!0});let i=document.querySelector(`script[nonce]`)?.nonce;i&&(r.nonce=i),r.textContent=e,document.head.append(r),r.remove()},q=()=>({get:()=>void 0,handlers:[]}),Ut=(e,t,n,r)=>new Promise(i=>{let a=()=>{W.delete(e)&&(s(`<${r}> has an error in its <script>. The component renders without it.`),i(q))};W.set(e,i),Ht(t,n,a),n||a()}),Wt=e=>{let t=Vt(`handler`);Ht(`${zt}.handler(${JSON.stringify(t)}, function (event) {\n${e}\n});`,!1);let n=G.get(t);return G.delete(t),n},Gt=new WeakMap,Kt=(e,t)=>c(c(Gt,e,()=>new Map),t,()=>({fn:null,code:null,listening:!1})),qt=(e,t,n,r)=>{let i=Kt(e,t);i.fn=n,i.code=r,n&&!i.listening&&(i.listening=!0,e.addEventListener(t,t=>{i.fn?.call(e,t)===!1&&t.preventDefault()}))},Jt=(e,t)=>{let n=t.slice(2);Object.defineProperty(e,t,{configurable:!0,get(){return Gt.get(this)?.get(n)?.fn??null},set(e){qt(this,n,typeof e==`function`?e:null,null)}})},Yt=(e,t,n)=>{if(!e.constructor.observedAttributes.includes(t))return;let r=t.slice(2);if(n===null)return qt(e,r,null,null);Kt(e,r).code!==n&&qt(e,r,Wt(n)??null,n)},Xt=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,J=e=>({ok:!0,value:e}),Y=e=>({ok:!1,message:e}),Zt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),X=class e{kind;rules;constructor(e,t={}){this.kind=e,this.rules=t}#e(t){return new e(this.kind,{...this.rules,...t})}default(e){return this.#e({default:e,hasDefault:!0})}required(){return this.#e({required:!0})}optional(){return this.#e({required:!1})}reflect(){return this.#e({reflect:!0})}attribute(e){return this.#e({attribute:e})}min(e){return this.#e({min:e})}max(e){return this.#e({max:e})}int(){return this.#e({int:!0})}pattern(e){return this.#e({pattern:e})}email(){return this.#e({format:`email`})}url(){return this.#e({format:`url`})}get fallback(){if(this.rules.hasDefault){let e=this.rules.default;return Zt(e)||Array.isArray(e)?structuredClone(e):e}return this.kind!==`boolean`&&void 0}parse(e){if(this.kind===`boolean`)return J(e!==null);if(e===null)return this.check(void 0);switch(this.kind){case`number`:return e.trim()===``?Y(`"${e}" is not a number`):this.check(Number(e));case`date`:return this.check(new Date(e));case`array`:case`object`:try{return this.check(JSON.parse(e))}catch{return Y(`"${e}" is not valid JSON`)}default:return this.check(e)}}check(e){if(e==null)return this.rules.hasDefault?J(this.fallback):this.rules.required?Y(`is required`):J(this.kind!==`boolean`&&e);let t=this.#t(e);return t?Y(t):J(e)}#t(e){let{rules:t}=this;switch(this.kind){case`string`:return typeof e==`string`?t.min!==void 0&&e.length<t.min?`must be at least ${t.min} characters`:t.max!==void 0&&e.length>t.max?`must be at most ${t.max} characters`:t.pattern&&!t.pattern.test(e)?`must match ${t.pattern}`:t.format===`email`&&!Xt.test(e)?`must be an email address`:t.format===`url`&&!URL.canParse(e)?`must be a URL`:void 0:`expected a string, got ${typeof e}`;case`number`:return typeof e!=`number`||Number.isNaN(e)?`"${String(e)}" is not a number`:t.int&&!Number.isInteger(e)?`must be an integer`:t.min!==void 0&&e<t.min?`must be at least ${t.min}`:t.max!==void 0&&e>t.max?`must be at most ${t.max}`:void 0;case`boolean`:return typeof e==`boolean`?void 0:`expected a boolean, got ${typeof e}`;case`enum`:return t.values?.includes(e)?void 0:`must be one of ${t.values?.map(e=>`"${e}"`).join(`, `)}`;case`date`:return e instanceof Date&&!Number.isNaN(e.getTime())?void 0:`is not a valid date`;case`array`:if(!Array.isArray(e))return`expected an array`;for(let[n,r]of e.entries()){let e=t.item?.check(r);if(e&&!e.ok)return`[${n}] ${e.message}`}return;case`object`:if(!Zt(e))return`expected an object`;for(let[n,r]of Object.entries(t.shape??{})){let t=r.check(e[n]);if(!t.ok)return`.${n} ${t.message}`}return}}serialize(e){return e==null||e===!1?null:e===!0?``:e instanceof Date?e.toISOString():typeof e==`object`?JSON.stringify(e):String(e)}},Qt={string:()=>new X(`string`),number:()=>new X(`number`),boolean:()=>new X(`boolean`),date:()=>new X(`date`),enum:e=>new X(`enum`,{values:e}),array:e=>new X(`array`,{item:e}),object:e=>new X(`object`,{shape:e})},$t=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),en=(e,t)=>{if(e.props)throw Error(`<${e.host.localName}> called defineProps more than once.`);let n=e.host,r=n.localName,i=D({}),a=e.propAttributes,o=(e,t,n)=>{n.ok?i[e]=n.value:(s(`<${r}> prop "${e}" ${n.message}. Using the default.`),i[e]=t.fallback)},c=()=>{for(let[e,r]of a)o(r,t[r],t[r].parse(n.getAttribute(e)))};for(let[e,r]of Object.entries(t)){let t=r.rules.attribute??$t(e);a.set(t,e);let s=Object.hasOwn(n,e),c=n[e];s&&delete n[e],Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:()=>i[e],set:a=>{if(o(e,r,r.check(a)),!r.rules.reflect)return;let s=r.serialize(i[e]);s===null?n.removeAttribute(t):n.setAttribute(t,s)}}),s?n[e]=c:o(e,r,r.parse(n.getAttribute(t)))}let l=new MutationObserver(e=>{for(let r of e){let e=r.attributeName,s=a.get(e),c=t[s],l=n.getAttribute(e);l!==c.serialize(i[s])&&o(s,c,c.parse(l))}});l.observe(n,{attributes:!0,attributeFilter:[...a.keys()]}),e.disposers.push(()=>{l.disconnect();for(let e of Object.keys(t))delete n[e]});let{formAssociated:u}=e.definition;if(e.props=new Proxy(i,{get(t,n,r){let i=Reflect.get(t,n,r);return n===`disabled`&&u?!!i||e.form.disabled:i},set(e,i,a){return typeof i==`string`&&Object.hasOwn(t,i)?n[i]=a:s(`<${r}> "${String(i)}" is not a declared prop.`),!0}}),u){let r=Object.hasOwn(t,`checked`);(r||Object.hasOwn(t,`value`))&&e.disposers.push(w(()=>{let t=i.value===void 0||i.value===null?null:String(i.value);e.internals.setFormValue(r?i.checked?t??`on`:null:t)})),e.formReset.push(c),e.formStateRestore.push(e=>{r?n.checked=e!==null:n.value=e})}return e.props},tn=new Map,nn=e=>({get:t=>e.getItem(t),set:(t,n)=>e.setItem(t,n)}),rn=e=>e===`local`?nn(localStorage):e===`session`?nn(sessionStorage):e,an=(e,t)=>{let n=Object.getOwnPropertyDescriptor(e,t);return!n||`value`in n},on=(e,t,n={})=>{let r=tn.get(e);if(r)return r;let i=D(t),a=rn(n.persist);if(tn.set(e,i),!a)return i;let o=`realm:${e}`,c=a.get(o);if(c!==null)try{let e=JSON.parse(c);for(let[n,r]of Object.entries(e))an(t,n)&&(i[n]=r)}catch{s(`Stored value for store "${e}" is not valid JSON and was ignored.`)}let l=i;return w(()=>a.set(o,JSON.stringify(Object.fromEntries(Object.keys(l).filter(e=>an(t,e)).map(e=>[e,l[e]]))))),i},sn={get:()=>void 0,handlers:[]},Z=new WeakMap,Q=(e,t)=>!t&&e.assignedSlot||(e.parentNode instanceof ShadowRoot?e.parentNode.host:e.parentNode),cn=e=>{let t=e.getRootNode();return t instanceof ShadowRoot?1+cn(t.host):0},ln=e=>{for(let t=Q(e);t;t=Q(t))if(t instanceof Element&&K.has(t.localName))return t.localName},un=class{host;definition;internals;controller=new AbortController;refs=D({});disposers=[];connected=[];disconnected=[];formReset=[];formDisabled=[];formStateRestore=[];props;propAttributes=new Map;form=D({disabled:!1});childWatchers=new Set;attrs;scope=sn;loading=0;constructor(e,t,n){this.host=e,this.definition=t,this.internals=n}get signal(){return this.controller.signal}has(e){return this.definition.names.has(e)}get(e){return this.scope.get(e)}findInParents(e,t){for(let n=Q(this.host,t);n;n=Q(n,t)){let r=Z.get(n);if(r?.has(e))return t&&!r.host.contains(this.host)&&s(`<${this.host.localName}> reads "${e}" from <${r.host.localName}>.`),r}}setLoading(e){this.loading+=e,this.loading>0?this.internals.states.add(`loading`):this.internals.states.delete(`loading`)}destroy(){for(let e of this.disconnected)e();this.controller.abort();for(let e of this.disposers.splice(0))e();this.host.shadowRoot?.replaceChildren(),Z.delete(this.host)}},dn=e=>{if(e.attrs)return e.attrs;let t=e.host,n=D({}),r=()=>{for(let{name:e,value:r}of t.attributes)n[e]=r;for(let e of Object.keys(n))t.hasAttribute(e)||(n[e]=null)};r();let i=new MutationObserver(r);return i.observe(t,{attributes:!0}),e.disposers.push(()=>i.disconnect()),e.attrs=new Proxy(n,{get:(e,t)=>e[t]??null,set(e,n,i){return i==null||i===!1?t.removeAttribute(n):t.setAttribute(n,i===!0?``:String(i)),r(),!0}}),e.attrs},fn=e=>{let t=new Set;e.addEventListener(`abort`,()=>{for(let e of t)clearTimeout(e)});let n=e=>{e!==void 0&&t.delete(e),clearTimeout(e)};return{setTimeout(e,n,...r){let i=window.setTimeout(()=>{t.delete(i),e(...r)},n);return t.add(i),i},setInterval(e,n,...r){let i=window.setInterval(e,n,...r);return t.add(i),i},clearTimeout:n,clearInterval:n}},pn=e=>({...fn(e.signal),untrack:T,defineProps:t=>en(e,t),useState:D,useChildren(t,n=[]){let r=e.host,i=D([]),a=()=>{i.length=0,i.push(...[...r.children].filter(e=>e.matches(t)))};a(),e.childWatchers.add(a);let o=new MutationObserver(a);return o.observe(r,{childList:!0,subtree:!0,characterData:!0,attributeFilter:n}),e.disposers.push(()=>o.disconnect()),i},tick:ne,listen:(t,n,r=e.host)=>r.addEventListener(t,n,{signal:e.signal}),defineMethods(t){let n=e.host,r=Object.getOwnPropertyDescriptors(t);for(let[e,t]of Object.entries(r))Object.defineProperty(n,e,{...t,configurable:!0});e.disposers.push(()=>{for(let e of Object.keys(r))delete n[e]})},dispatch:(t,n,r)=>e.host.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,cancelable:!0,detail:n,...r})),attrs:new Proxy({},{get:(t,n)=>dn(e)[n],set:(t,n,r)=>(dn(e)[n]=r,!0)}),observe(t){let n=w(t);return e.disposers.push(n),n},onConnected:t=>e.connected.push(t),onDisconnected:t=>e.disconnected.push(t),onFormReset:t=>e.formReset.push(t),onFormDisabled:t=>e.formDisabled.push(t),onFormStateRestore:t=>e.formStateRestore.push(t),defineStore:on,lookup:(t,n)=>{let r=e.findInParents(t,n);return r?r.get(t):globalThis[t]},prop:Qt,host:e.host,refs:e.refs,signal:e.signal,internals:e.internals}),mn=class extends HTMLElement{static definition;#e=this.attachInternals();#t;#n=!1;get#r(){return this.constructor.definition}connectedCallback(e){this.#n=!1;for(let e of this.attributes)Yt(this,e.name,e.value);if(this.#t||this.closest(`custom-element`))return;let t=ln(this);if(t){customElements.whenDefined(t).then(()=>{this.isConnected&&this.connectedCallback()});return}let n=cn(this);if(n>1e3){s(`<${this.localName}> is nested 1000 deep. Stop its recursion with a condition.`);return}if(n%32>30&&!e){queueMicrotask(()=>this.isConnected&&this.connectedCallback(!0));return}let r=this.#r;r.slot&&!this.hasAttribute(`slot`)&&(this.slot=r.slot);let i=this.shadowRoot??this.attachShadow({mode:`open`,delegatesFocus:r.delegatesFocus});i.adoptedStyleSheets=r.sheets,r.role&&(this.#e.role=r.role);let a=new un(this,r,this.#e);this.#t=a,Z.set(this,a),r.formAssociated&&(a.form.disabled=this.matches(`:disabled`));try{a.scope=r.setup(pn(a))}catch(e){o(e)}let c={instance:a,vars:[],signal:a.signal,disposers:a.disposers};At(a,c);let l=document.importNode(r.markup,!0);U(l,c),i.append(l),Nt(a);let u=this.parentElement&&Z.get(this.parentElement);if(u)for(let e of u.childWatchers)e();for(let e of a.connected){let t=e();typeof t==`function`&&a.disposers.push(t)}}disconnectedCallback(){this.#n=!0,queueMicrotask(()=>{this.#n&&!this.isConnected&&(this.#t?.destroy(),this.#t=void 0)})}attributeChangedCallback(e,t,n){this.isConnected&&Yt(this,e,n)}formResetCallback(){for(let e of this.#t?.formReset??[])e()}formDisabledCallback(e){this.#t&&(this.#t.form.disabled=e);for(let t of this.#t?.formDisabled??[])t(e)}formStateRestoreCallback(e,t){for(let n of this.#t?.formStateRestore??[])n(e,t)}},hn=e=>{let t=e.events.filter(e=>!(`on${e}`in HTMLElement.prototype)).map(e=>`on${e}`),n=class extends mn{static definition=e;static formAssociated=e.formAssociated;static observedAttributes=t};for(let e of t)Jt(n.prototype,e);customElements.define(e.name,n)},gn=new CSSStyleSheet;gn.replaceSync(`is-visible, is-hidden, repeat-list { display: contents; } :host([hidden]), [hidden]:not([hidden='until-found']) { display: none !important; } :not(:defined):not(is-visible, is-hidden, repeat-list) { visibility: hidden; }`);var _n=new Map,vn=/(?:new\s+(?:Custom)?Event|\bdispatch)\s*\(\s*(["'`])([a-z][\w-]*)\1/g,yn=(e,t)=>{let n=new CSSStyleSheet;if(e.localName===`style`)return n.replaceSync(e.textContent),n;let r=new URL(e.getAttribute(`href`)??``,t).href;return fetch(r).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>n.replace(e)).catch(e=>s(`Could not load stylesheet ${r}: ${e.message}`)),n},bn=async(e,t)=>{try{let n=await import(t);e.names=new Set(n.names),e.setup=n.default}catch(n){s(`<${e.name}> could not load its script ${t}: ${n.message}`),e.setup=q}},$=async(n,i,a)=>{let o=n.getAttribute(`name`)??``;if(!o.includes(`-`)){s(`<custom-element name="${o}"> needs a name that contains a dash, like "todo-app".`);return}let c=n.outerHTML,l=_n.get(o);if(l){l.source!==c&&s(`<${o}> is defined twice with different sources (${l.base} and ${i}). Keeping the first.`);return}if(customElements.get(o)){s(`<${o}> is already defined by another library.`);return}let u=[],d=[gn],f={variables:new Set,states:new Set},p=n.ownerDocument.createDocumentFragment();for(let e of[...n.childNodes])e instanceof Element&&e.localName===`script`?u.push(e):e instanceof Element&&(e.localName===`style`||e.localName===`link`&&e.getAttribute(`rel`)===`stylesheet`)?(d.push(yn(e,i)),Ot(e.textContent,f)):p.append(e);u.length>1&&s(`<${o}> has more than one <script>. Only the first is used.`);let m=u[0];a&&m&&m.type!==`realm`&&s(`<${o}> is defined in the page, so its <script> needs type="realm". A plain <script> already ran in the page scope.`);let h=t(p.children);for(let e of p.querySelectorAll(`*`))for(let{name:t,value:n}of[...e.attributes])t.length>2&&t.startsWith(`on`)&&(e.removeAttribute(t),e.setAttribute(r+t.slice(2),n));let g=m?.textContent??``,_=m?.getAttribute(`src`),v={name:o,source:c,base:i,markup:p,sheets:d,names:new Set,handlers:new Map([...h.keys()].map((e,t)=>[e,t])),events:[...new Set([...g.matchAll(vn)].map(e=>e[2]))],formAssociated:n.hasAttribute(`form-associated`),role:n.getAttribute(`role`),slot:n.getAttribute(`slot`),delegatesFocus:n.hasAttribute(`delegates-focus`),css:f,setup:void 0};if(_n.set(o,v),K.add(o),_)await bn(v,new URL(_,i).href);else if(!g.trim()&&!h.size)v.setup=q;else{let t=Vt(o),{imports:n,setup:r,names:a}=e(g,i,h);v.names=a,v.setup=await Ut(t,`${n}\n${zt}.register(${JSON.stringify(t)}, ${r});\n//# sourceURL=${i.split(`#`)[0]}#${o}`,n!==``,o)}K.delete(o),hn(v)},xn=new CSSStyleSheet;xn.replaceSync(`custom-element, import-element { display: none !important; } is-visible, is-hidden, repeat-list { display: contents; }`);var Sn=!1,Cn=e=>{e.remove(),$(e,document.baseURI,!0)},wn=e=>{for(let t of e.querySelectorAll(`custom-element`))Cn(t)},Tn=()=>{Sn||(Sn=!0,document.adoptedStyleSheets=[...document.adoptedStyleSheets,xn],customElements.get(`import-element`)||customElements.define(`import-element`,et),wn(document),new MutationObserver(e=>{for(let t of e)for(let e of t.addedNodes)e instanceof Element&&(e.localName===`custom-element`?Cn(e):wn(e))}).observe(document,{childList:!0,subtree:!0}),$e(document))};export{R as a,D as c,Qt as i,E as l,$ as n,w as o,on as r,S as s,Tn as t,T as u};
|