@domphy/theme 0.1.1 → 0.1.2

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 CHANGED
@@ -1,6 +1,15 @@
1
1
  # @domphy/theme
2
2
 
3
- Context-aware color, size, and spacing for Domphy. WCAG 4.5:1 contrast is guaranteed by palette structure — no runtime contrast checks, no token memorization.
3
+ Context-aware color, size, and spacing for Domphy.
4
+
5
+ It provides:
6
+
7
+ - `themeColor()` for colors
8
+ - `themeSize()` for font size
9
+ - `themeDensity()` for the current density factor
10
+ - `themeSpacing()` for spacing and radius
11
+
12
+ ## Install
4
13
 
5
14
  ```bash
6
15
  npm install @domphy/theme
@@ -8,7 +17,7 @@ npm install @domphy/theme
8
17
 
9
18
  ## Setup
10
19
 
11
- Call once on mount. Injects CSS variables for all registered themes into `<head>`.
20
+ Call `themeApply()` once on the client:
12
21
 
13
22
  ```ts
14
23
  import { themeApply } from "@domphy/theme"
@@ -16,71 +25,51 @@ import { themeApply } from "@domphy/theme"
16
25
  themeApply()
17
26
  ```
18
27
 
19
- Then set `dataTheme` on any element. Children inherit it automatically — no providers needed.
28
+ Then set `dataTheme` on a root element:
20
29
 
21
30
  ```ts
22
- { div: [App], dataTheme: "light" } // or "dark" — both built in
31
+ { div: [App], dataTheme: "light" }
23
32
  ```
24
33
 
25
- ## Color
34
+ `light` and `dark` are built in.
26
35
 
27
- `themeColor(listener, tone, color?)` resolves a color CSS variable from the element's DOM context. Any two tones 6 steps apart pass WCAG 4.5:1.
36
+ ## Quick Example
28
37
 
29
38
  ```ts
30
- import { themeColor } from "@domphy/theme"
31
-
32
- style: {
33
- backgroundColor: (l) => themeColor(l, "inherit", "primary"),
34
- color: (l) => themeColor(l, "shift-6", "primary"), // guaranteed contrast
35
- outline: (l) => `1px solid ${themeColor(l, "shift-3", "primary")}`,
36
- "&:hover": {
37
- backgroundColor: (l) => themeColor(l, "increase-1", "primary"),
39
+ import { themeColor, themeDensity, themeSize, themeSpacing } from "@domphy/theme"
40
+
41
+ const button = {
42
+ button: "Save",
43
+ style: {
44
+ fontSize: (listener) => themeSize(listener, "inherit"),
45
+ paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),
46
+ paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),
47
+ borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),
48
+ backgroundColor: (listener) => themeColor(listener, "inherit", "primary"),
49
+ color: (listener) => themeColor(listener, "shift-6", "primary"),
38
50
  },
39
51
  }
40
52
  ```
41
53
 
42
- ## Spacing
43
-
44
- `themeSpacing(n)` returns `n × (fontSize / 4)` in em — equivalent to the 4pt grid at standard size, scales automatically with font size.
45
-
46
- ```ts
47
- import { themeSpacing } from "@domphy/theme"
48
-
49
- style: {
50
- padding: `${themeSpacing(1)} ${themeSpacing(3)}`, // 4px 12px at 16px base
51
- borderRadius: themeSpacing(2), // 8px
52
- }
53
- ```
54
-
55
- ## Font Size
56
-
57
- `themeSize(listener, key)` resolves a font size from the element's `dataSize` context. Set `dataSize` on a parent; all children scale automatically.
58
-
59
- ```ts
60
- import { themeSize } from "@domphy/theme"
61
-
62
- style: {
63
- fontSize: (l) => themeSize(l, "inherit"), // current context size
64
- fontSize: (l) => themeSize(l, "increase-1"), // one step larger
65
- }
66
- ```
67
-
68
- ## Custom theme
54
+ ## Theme Registry
69
55
 
70
56
  ```ts
71
- import { setTheme, createDark, getTheme, themeApply } from "@domphy/theme"
57
+ import { setTheme, getTheme, createDark } from "@domphy/theme"
72
58
 
73
59
  setTheme("brand", {
74
60
  colors: {
75
- primary: ["#fff", "#eef2ff", "#c7d2fe", "#a5b4fc", "#818cf8",
76
- "#6366f1", "#4f46e5", "#4338ca", "#3730a3", "#312e81", "#1e1b4b", "#000"],
61
+ primary: ["#fff", "#eef2ff", "#c7d2fe", "#a5b4fc", "#818cf8", "#6366f1", "#4f46e5", "#4338ca", "#3730a3", "#312e81", "#1e1b4b", "#000"],
62
+ },
63
+ baseTones: {
64
+ primary: 5,
77
65
  },
78
- baseTones: { primary: 5 }
79
66
  })
67
+
80
68
  setTheme("brand-dark", createDark(getTheme("brand")))
81
- themeApply()
82
69
  ```
83
70
 
84
- ---
71
+ ## Docs
85
72
 
86
- **[Full documentation →](https://www.domphy.com/docs/theme/)**
73
+ - [Theme guide](https://www.domphy.com/docs/theme/)
74
+ - [Theme setup](https://www.domphy.com/docs/theme/setup)
75
+ - [Theme API](https://www.domphy.com/docs/theme/api)
@@ -1,5 +1,5 @@
1
- "use strict";var Domphy=(()=>{var M=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var L=(e,t)=>{for(var s in t)M(e,s,{get:t[s],enumerable:!0})},ne=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of se(t))!ie.call(e,n)&&n!==s&&M(e,n,{get:()=>t[n],enumerable:!(i=te(t,n))||i.enumerable});return e};var re=e=>ne(M({},"__esModule",{value:!0}),e);var Me={};L(Me,{core:()=>T,theme:()=>$});var T={};L(T,{AttributeList:()=>q,BooleanAttributes:()=>P,CamelAttributes:()=>G,ElementList:()=>K,ElementNode:()=>c,HtmlTags:()=>A,Notifier:()=>I,PrefixCSS:()=>y,State:()=>O,VoidTags:()=>de,hashString:()=>B,merge:()=>v,toState:()=>ae});var oe=["onAbort","onAuxClick","onBeforeMatch","onBeforeToggle","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onPause","onPlay","onPlaying","onProgress","onRateChange","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onSubmit","onSuspend","onTimeUpdate","onToggle","onVolumeChange","onWaiting","onWheel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onGotPointerCapture","onLostPointerCapture","onCompositionStart","onCompositionUpdate","onCompositionEnd","onTransitionEnd","onTransitionStart","onAnimationStart","onAnimationEnd","onAnimationIteration","onFullscreenChange","onFullscreenError","onFocusIn","onFocusOut"],le=oe.reduce((e,t)=>{let s=t.slice(2).toLowerCase();return e[s]=t,e},{}),A=["a","abbr","address","article","aside","audio","b","base","blockquote","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","i","iframe","img","input","ins","kbd","label","legend","li","main","map","mark","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","slot","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","bdi","bdo","math","menu","search","area","embed","hr","animate","animateMotion","animateTransform","circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","prefetch","radialGradient","rect","set","solidColor","stop","svg","switch","symbol","tbreak","text","textPath","tspan","use","view"],I=class{constructor(){this._listeners={}}_dispose(){if(this._listeners)for(let e in this._listeners)this._listeners[e].clear();this._listeners=null}addListener(e,t){if(!this._listeners)return()=>{};if(typeof e!="string"||typeof t!="function")throw new Error("Event name must be a string, listener must be a function");this._listeners[e]||(this._listeners[e]=new Set);let s=()=>this.removeListener(e,t);return this._listeners[e].has(t)||(this._listeners[e].add(t),typeof t.onSubscribe=="function"&&t.onSubscribe(s)),s}removeListener(e,t){if(!this._listeners)return;let s=this._listeners[e];s&&s.has(t)&&(s.delete(t),s.size===0&&delete this._listeners[e])}notify(e,...t){if(!this._listeners)return;let s=this._listeners[e];if(s)for(let i of[...s])try{i(...t)}catch(n){console.error(n)}}},O=class{constructor(e){this._notifier=new I,this.initialValue=e,this._value=e}get(e){return e&&this.onChange(e),this._value}set(e){this._notifier&&(this._value=e,this._notifier.notify("change",e))}reset(){this.set(this.initialValue)}onChange(e){return this._notifier?this._notifier.addListener("change",e):()=>{}}_dispose(){this._notifier&&(this._notifier._dispose(),this._notifier=null)}};function v(e={},t={}){let s=["animation","transition","boxShadow","textShadow","background","fontFamily"],i=["class","rel","transform","acceptCharset","sandbox"],n=["content"];Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t)===Object.prototype&&(t=g(t));for(let r in t){let o=t[r];if(!(o==null||o===""))if(typeof o=="object"&&!Array.isArray(o))typeof e[r]=="object"?e[r]=v(e[r],o):e[r]=o;else if(s.includes(r))if(typeof e[r]=="function"||typeof o=="function"){let l=e[r];e[r]=h=>{let a=typeof l=="function"?l(h):l,f=typeof o=="function"?o(h):o;return[a,f].filter(u=>u).join(", ")}}else e[r]=[e[r],o].filter(l=>l).join(", ");else if(n.includes(r))if(typeof e[r]=="function"||typeof o=="function"){let l=e[r];e[r]=h=>{let a=typeof l=="function"?l(h):l,f=typeof o=="function"?o(h):o;return[a,f].filter(u=>u).join("")}}else e[r]=[e[r],o].filter(l=>l).join("");else if(i.includes(r))if(typeof e[r]=="function"||typeof o=="function"){let l=e[r];e[r]=h=>{let a=typeof l=="function"?l(h):l,f=typeof o=="function"?o(h):o;return[a,f].filter(u=>u).join(" ")}}else e[r]=[e[r],o].filter(l=>l).join(" ");else if(r.startsWith("on")){let l=r.replace("on","").toLowerCase();fe(e,l,o)}else if(r.startsWith("_on")){let l=r.replace("_on","");he(e,l,o)}else e[r]=o}return e}function ae(e){return e instanceof O?e:new O(e)}function B(e=""){let t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=t*16777619>>>0;return String.fromCharCode(97+t%26)+t.toString(16)}function he(e,t,s){let i=`_on${t}`,n=e[i];typeof n=="function"?e[i]=(...r)=>{n(...r),s(...r)}:e[i]=s}function fe(e,t,s){let i=le[t];if(!i)throw Error(`invalid event name "${t}"`);let n=e[i];typeof n=="function"?e[i]=(r,o)=>{n(r,o),s(r,o)}:e[i]=s}function g(e,t=new WeakMap){if(e===null||typeof e!="object"||typeof e=="function")return e;if(t.has(e))return t.get(e);let s=Object.getPrototypeOf(e);if(s!==Object.prototype&&!Array.isArray(e))return e;let i;if(Array.isArray(e)){i=[],t.set(e,i);for(let n of e)i.push(g(n,t));return i}if(e instanceof Date)return new Date(e);if(e instanceof RegExp)return new RegExp(e);if(e instanceof Map){i=new Map,t.set(e,i);for(let[n,r]of e)i.set(g(n,t),g(r,t));return i}if(e instanceof Set){i=new Set,t.set(e,i);for(let n of e)i.add(g(n,t));return i}if(ArrayBuffer.isView(e))return new e.constructor(e);if(e instanceof ArrayBuffer)return e.slice(0);i=Object.create(s),t.set(e,i);for(let n of Reflect.ownKeys(e))i[n]=g(e[n],t);return i}function W(e,t=!1){if(Object.prototype.toString.call(e)!=="[object Object]")throw Error(`typeof ${e} is invalid DomphyElement`);let s=Object.keys(e);for(let i=0;i<s.length;i++){let n=s[i],r=e[n];if(i==0&&!A.includes(n)&&!n.includes("-")&&!t)throw Error(`key ${n} is not valid HTML tag name`);if(n=="style"&&r&&Object.prototype.toString.call(r)!=="[object Object]")throw Error('"style" must be a object');if(n=="$")e.$.forEach(o=>W(o,!0));else{if(n.startsWith("_on")&&typeof r!="function")throw Error(`hook ${n} value "${r}" must be a function `);if(n.startsWith("on")&&typeof r!="function")throw Error(`event ${n} value "${r}" must be a function `);if(n=="_portal"&&typeof r!="function")throw Error('"_portal" must be a function return HTMLElement');if(n=="_context"&&Object.prototype.toString.call(r)!=="[object Object]")throw Error('"_context" must be a object');if(n=="_metadata"&&Object.prototype.toString.call(r)!=="[object Object]")throw Error('"_metadata" must be a object');if(n=="_key"&&typeof r!="string"&&typeof r!="number")throw Error('"_key" must be a string or number')}}return!0}function ue(e){return/<([a-z][\w-]*)(\s[^>]*)?>.*<\/\1>|<([a-z][\w-]*)(\s[^>]*)?\/>/i.test(e.trim())}function H(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function me(e){return Object.keys(e).find(t=>A.includes(t))}function F(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function ce(e){if(e.indexOf("@")===0)return[e];for(var t=[],s=0,i=0,n="",r=0,o=e.length;r<o;r++){var l=e[r];if(l==="(")s+=1;else if(l===")")s-=1;else if(l==="[")i+=1;else if(l==="]")i-=1;else if(l===","&&!s&&!i){t.push(n.trim()),n="";continue}n+=l}return t.push(n.trim()),t}var V=e=>{if(Array.isArray(e.$)){let t={};return e.$.forEach(s=>v(t,V(s))),delete e.$,v(t,e),t}else return e},de=["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"],P=["allowFullScreen","async","autoFocus","autoPlay","checked","compact","contentEditable","controls","declare","default","defer","disabled","formNoValidate","hidden","isMap","itemScope","loop","multiple","muted","noHref","noShade","noValidate","open","playsInline","readonly","required","reversed","scoped","selected","sortable","trueSpeed","typeMustMatch","wmode","autoCapitalize","translate","spellCheck","inert","download","noModule","paused","autoPictureInPicture"],y={transform:["webkit","ms"],transition:["webkit","ms"],animation:["webkit"],userSelect:["webkit","ms"],flexDirection:["webkit","ms"],flexWrap:["webkit","ms"],justifyContent:["webkit","ms"],alignItems:["webkit","ms"],alignSelf:["webkit","ms"],order:["webkit","ms"],flexGrow:["webkit","ms"],flexShrink:["webkit","ms"],flexBasis:["webkit","ms"],columns:["webkit"],columnCount:["webkit"],columnGap:["webkit"],columnRule:["webkit"],columnWidth:["webkit"],boxSizing:["webkit"],appearance:["webkit","moz"],filter:["webkit"],backdropFilter:["webkit"],clipPath:["webkit"],mask:["webkit"],maskImage:["webkit"],textSizeAdjust:["webkit","ms"],hyphens:["webkit","ms"],writingMode:["webkit","ms"],gridTemplateColumns:["ms"],gridTemplateRows:["ms"],gridAutoColumns:["ms"],gridAutoRows:["ms"],gridColumn:["ms"],gridRow:["ms"],marginInlineStart:["webkit"],marginInlineEnd:["webkit"],paddingInlineStart:["webkit"],paddingInlineEnd:["webkit"],minInlineSize:["webkit"],maxInlineSize:["webkit"],minBlockSize:["webkit"],maxBlockSize:["webkit"],inlineSize:["webkit"],blockSize:["webkit"],tabSize:["moz"],overscrollBehavior:["webkit","ms"],touchAction:["ms"],resize:["webkit"],printColorAdjust:["webkit"],backgroundClip:["webkit"],boxDecorationBreak:["webkit"],overflowScrolling:["webkit"]},G=["viewBox","preserveAspectRatio","gradientTransform","gradientUnits","spreadMethod","markerStart","markerMid","markerEnd","markerHeight","markerWidth","markerUnits","refX","refY","patternContentUnits","patternTransform","patternUnits","filterUnits","primitiveUnits","kernelUnitLength","clipPathUnits","maskContentUnits","maskUnits"],pe=class{constructor(e,t,s){this.parent=s,this.isBoolean=P.includes(e),G.includes(e)?this.name=e:this.name=F(e),this.value=void 0,this.set(t)}render(){if(!this.parent||!this.parent.domElement)return;let e=this.parent.domElement,t=["value"];this.isBoolean?this.value===!1||this.value==null?e.removeAttribute(this.name):e.setAttribute(this.name,this.value===!0?"":this.value):this.value==null?e.removeAttribute(this.name):t.includes(this.name)?e[this.name]=this.value:e.setAttribute(this.name,this.value)}set(e){if(e==null){this.value=null,this.render();return}if(typeof e=="string"&&/<\/?[a-z][\s\S]*>/i.test(e))this.value=H(e);else if(typeof e=="function"){let t=()=>{t&&(this.value=this.isBoolean?!!e():e(),this.render())};t.elementNode=this.parent,t.onSubscribe=s=>{this.parent&&this.parent.addHook("BeforeRemove",()=>{s(),t=null})},this.value=this.isBoolean?!!e(t):e(t)}else this.value=this.isBoolean?!!e:e;this.render()}remove(){this.parent&&this.parent.attributes&&this.parent.attributes.remove(this.name),this._dispose()}_dispose(){this.value=null,this.parent=null}generateHTML(){let{name:e,value:t}=this;if(this.isBoolean)return t?`${e}`:"";{let s=Array.isArray(t)?JSON.stringify(t):t;return`${e}="${H(String(s))}"`}}},q=class{constructor(e){this._notifier=new I,this.items={},this.parent=e}generateHTML(){if(!this.items)return"";let e=Object.values(this.items).map(t=>t.generateHTML()).join(" ");return e?` ${e}`:""}get(e){var t;if(this.items)return(t=this.items[e])==null?void 0:t.value}set(e,t){!this.items||!this.parent||(this.items[e]?(this.items[e].set(t),this.parent.domElement&&this._notifier.notify(e,this.items[e].value)):this.items[e]=new pe(e,t,this.parent))}onChange(e,t){var s;if(this.has(e)&&(s=this.parent)!=null&&s.domElement){let i=t;i.onSubscribe=n=>{var r;return(r=this.parent)==null?void 0:r.addHook("BeforeRemove",n)},this._notifier.addListener(e,i)}}has(e){return this.items?Object.prototype.hasOwnProperty.call(this.items,e):!1}remove(e){this.items&&(this.items[e]&&(this.items[e]._dispose(),delete this.items[e]),this.parent&&this.parent.domElement&&this.parent.domElement instanceof Element&&this.parent.domElement.removeAttribute(e))}_dispose(){if(this.items)for(let e in this.items)this.items[e]._dispose();this._notifier._dispose(),this.items=null,this.parent=null}toggle(e,t){if(!P.includes(e))throw Error(`${e} is not a boolean attribute`);t===!0?this.set(e,!0):t===!1?this.remove(e):this.has(e)?this.remove(e):this.set(e,!0)}addClass(e){if(!e||typeof e!="string")return;let t=(i,n)=>{let r=(i||"").split(" ").filter(o=>o);return!r.includes(n)&&r.push(e),r.join(" ")},s=this.get("class");typeof s=="function"?this.set("class",()=>t(s(),e)):this.set("class",t(s,e))}hasClass(e){return!e||typeof e!="string"?!1:(this.get("class")||"").split(" ").filter(t=>t).includes(e)}toggleClass(e){!e||typeof e!="string"||(this.hasClass(e)?this.removeClass(e):this.addClass(e))}removeClass(e){if(!e||typeof e!="string")return;let t=(this.get("class")||"").split(" ").filter(s=>s).filter(s=>s!==e);t.length>0?this.set("class",t.join(" ")):this.remove("class")}replaceClass(e,t){!e||!t||typeof e!="string"||typeof t!="string"||this.hasClass(e)&&(this.removeClass(e),this.addClass(t))}},ye=class{constructor(e,t){this.type="TextNode",this.parent=t,this.text=e===""?"\u200B":String(e)}_createDOMNode(){let e;if(ue(this.text)){let t=document.createElement("template");t.innerHTML=this.text.trim(),e=t.content.firstChild||document.createTextNode("")}else e=document.createTextNode(this.text);return this.domText=e,e}_dispose(){this.domText=void 0,this.text=""}generateHTML(){return this.text==="\u200B"?"&#8203;":this.text}render(e){let t=this._createDOMNode();e.appendChild(t)}},K=class{constructor(e){this.items=[],this.owner=e}_createNode(e,t=0){return typeof e=="object"&&e!==null?new c(e,this.owner,t):new ye(e==null?"":String(e),this.owner)}_moveDomElement(e,t){if(!this.owner||!this.owner.domElement)return;let s=this.owner.domElement,i=e instanceof c?e.domElement:e.domText;if(i){let n=s.childNodes[t]||null;i!==n&&s.insertBefore(i,n)}}_swapDomElement(e,t){if(!this.owner||!this.owner.domElement)return;let s=this.owner.domElement,i=e instanceof c?e.domElement:e.domText,n=t instanceof c?t.domElement:t.domText;if(!i||!n)return;let r=i.nextSibling,o=n.nextSibling;s.insertBefore(i,o),s.insertBefore(n,r)}update(e,t=!0,s=!1){var i,n,r,o;let l=this.items.slice(),h=new Map;for(let a of l)a instanceof c&&a.key!==null&&a.key!==void 0&&h.set(a.key,a);!s&&this.owner.domElement&&((n=(i=this.owner._hooks)==null?void 0:i.BeforeUpdate)==null||n.call(i,this.owner,e));for(let a=0;a<e.length;a++){let f=e[a],u=typeof f=="object"&&f!==null?f._key:void 0;if(u!==void 0){let m=h.get(u);if(m){h.delete(u);let S=this.items.indexOf(m);if(S!==a&&S>=0){let d=m instanceof c&&!!m._portal;this.move(S,a,d?!1:t,!0)}m.parent=this.owner;continue}}this.insert(f,a,t,!0)}for(;this.items.length>e.length;)this.remove(this.items[this.items.length-1],t,!0);h.forEach(a=>this.remove(a,t,!0)),s||(o=(r=this.owner._hooks)==null?void 0:r.Update)==null||o.call(r,this.owner)}insert(e,t,s=!0,i=!1){var n,r;let o=this.items.length,l=typeof t!="number"||isNaN(t)||t<0||t>o?o:t,h=this._createNode(e,l);if(this.items.splice(l,0,h),h instanceof c){h._hooks.Insert&&h._hooks.Insert(h);let a=this.owner.domElement;if(s&&a)if(h._portal){let f=h._portal(this.owner.getRoot());f&&h.render(f)}else{let f=h._createDOMNode(),u=(n=a.childNodes[l])!=null?n:null;a.insertBefore(f,u);let m=a.getRootNode(),S=(m instanceof ShadowRoot?m:document.head).querySelector("#domphy-style");h.styles.render(S),h._hooks.Mount&&h._hooks.Mount(h),h.children.items.forEach(d=>{if(d instanceof c&&d._portal){let U=d._portal(d.getRoot());U&&d.render(U)}else d.render(f)})}}else{let a=this.owner.domElement;if(s&&a){let f=h._createDOMNode(),u=(r=a.childNodes[l])!=null?r:null;a.insertBefore(f,u)}}return!i&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner),h}remove(e,t=!0,s=!1){let i=this.items.indexOf(e);if(!(i<0)){if(e instanceof c){let n=()=>{var r,o;let l=e.domElement;this.items.splice(i,1),t&&l&&l.remove(),(o=(r=e._hooks)==null?void 0:r.Remove)==null||o.call(r,e),e._dispose()};e._hooks&&e._hooks.BeforeRemove&&e.domElement?e._hooks.BeforeRemove(e,n):n()}else{let n=e.domText;this.items.splice(i,1),t&&n&&n.remove(),e._dispose()}!s&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}}clear(e=!0,t=!1){if(this.items.length===0)return;let s=this.items.slice();for(let i of s)this.remove(i,e,!0);!t&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}_dispose(){this.items=[]}swap(e,t,s=!0,i=!1){if(e<0||t<0||e>=this.items.length||t>=this.items.length||e===t)return;let n=this.items[e],r=this.items[t];this.items[e]=r,this.items[t]=n,s&&this._swapDomElement(n,r),!i&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}move(e,t,s=!0,i=!1){if(e<0||e>=this.items.length||t<0||t>=this.items.length||e===t)return;let n=this.items[e];this.items.splice(e,1),this.items.splice(t,0,n),s&&this._moveDomElement(n,t),!i&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}generateHTML(){let e="";for(let t of this.items)e+=t.generateHTML();return e}},ge=class{constructor(e,t,s){this.value="",this.name=e,this.cssName=F(e),this.parentRule=s,this.set(t)}_domUpdate(){if(!this.parentRule)return;let e=this.parentRule.domRule;if(e&&e.style){let t=e.style;t.setProperty(this.cssName,String(this.value)),y[this.name]&&y[this.name].forEach(s=>{t.setProperty(`-${s}-${this.cssName}`,String(this.value))})}}_dispose(){this.value="",this.parentRule=null}set(e){if(typeof e=="function"){let t=()=>{t&&(this.value=e(t),this._domUpdate())};t.onSubscribe=s=>{var i;(i=this.parentRule.parentNode)==null||i.addHook("BeforeRemove",()=>{s(),t=null})},t.elementNode=this.parentRule.root,this.value=e(t)}else this.value=e;this._domUpdate()}remove(){if(this.parentRule){if(this.parentRule.domRule instanceof CSSStyleRule){let e=this.parentRule.domRule.style;e.removeProperty(this.cssName),y[this.name]&&y[this.name].forEach(t=>{e.removeProperty(`-${t}-${this.cssName}`)})}delete this.parentRule.styleBlock[this.name],this._dispose()}}cssText(){let e=`${this.cssName}: ${this.value}`;return y[this.name]&&y[this.name].forEach(t=>{e+=`; -${t}-${this.cssName}: ${this.value}`}),e}},p=class j{constructor(t,s){this.domRule=null,this.styleBlock={},this.selectorText=t,this.styleList=new J(this),this.parent=s}_dispose(){if(this.styleBlock)for(let t of Object.values(this.styleBlock))t._dispose();this.styleList&&this.styleList._dispose(),this.styleBlock=null,this.styleList=null,this.domRule=null,this.parent=null}get root(){let t=this.parent;for(;t instanceof j;)t=t.parent;return t}get parentNode(){let t=this.parent;for(;t&&t instanceof j;)t=t.parent;return t}insertStyle(t,s){this.styleBlock&&(this.styleBlock[t]?this.styleBlock[t].set(s):this.styleBlock[t]=new ge(t,s,this))}removeStyle(t){this.styleBlock&&this.styleBlock[t]&&this.styleBlock[t].remove()}cssText(){if(!this.styleBlock||!this.styleList)return"";let t=Object.values(this.styleBlock).map(i=>i.cssText()).join(";"),s=this.styleList.cssText();return`${this.selectorText} { ${t} ${s} } `}mount(t){!t||!this.styleList||(this.domRule=t,"cssRules"in t&&this.styleList.mount(t.cssRules))}remove(){if(this.domRule&&this.domRule.parentStyleSheet){let t=this.domRule.parentStyleSheet,s=t.cssRules;for(let i=0;i<s.length;i++)if(s[i]===this.domRule){t.deleteRule(i);break}}this._dispose()}render(t){if(!this.styleBlock||!this.styleList)return;let s=Object.values(this.styleBlock).map(i=>i.cssText()).join(";");try{if(this.selectorText.startsWith("@")){if(/^@(media|supports|container|layer)\b/.test(this.selectorText)){let i=t.insertRule(`${this.selectorText} {}`,t.cssRules.length),n=t.cssRules[i];"cssRules"in n&&(this.mount(n),this.styleList.render(n))}else if(this.selectorText.startsWith("@keyframes")||this.selectorText.startsWith("@font-face")){let i=this.cssText(),n=t.insertRule(i,t.cssRules.length),r=t.cssRules[n];this.mount(r)}}else{let i=`${this.selectorText} { ${s} }`,n=t.insertRule(i,t.cssRules.length),r=t.cssRules[n];r&&"selectorText"in r&&this.mount(r)}}catch(i){console.warn("Failed to insert rule:",this.selectorText,i)}}},J=class{constructor(e){this.items=[],this.domStyle=null,this.parent=e}get parentNode(){let e=this.parent;for(;e&&e instanceof p;)e=e.parent;return e}addCSS(e,t=""){if(!this.items||!this.parent)return;let s={};function i(n,r){return n.startsWith("&")?`${r}${n.slice(1)}`:`${r} ${n}`}for(let n in e){let r=e[n],o=ce(n);for(let l of o){let h=i(l,t);if(/^@(container|layer|supports|media)\b/.test(l)){if(typeof r=="object"&&r!=null){let a=new p(l,this.parent);a.styleList.addCSS(r,t),this.items.push(a)}}else if(l.startsWith("@keyframes")){let a=new p(l,this.parent);a.styleList.addCSS(r,""),this.items.push(a)}else if(l.startsWith("@font-face")){let a=new p(l,this.parent);for(let f in r)a.insertStyle(f,r[f]);this.items.push(a)}else if(typeof r=="object"&&r!=null){let a=new p(h,this.parent);this.items.push(a);for(let[f,u]of Object.entries(r))if(typeof u=="object"&&u!=null){let m=i(f,h);f.startsWith("&")?this.addCSS(u,m):a.styleList.insertRule(m).styleList.addCSS(u,m)}else a.insertStyle(f,u)}else s[l]=r}}if(Object.keys(s).length){let n=new p(t,this.parent);for(let r in s)n.insertStyle(r,s[r]);this.items.push(n)}}cssText(){return this.items?this.items.map(e=>e.cssText()).join(""):""}insertRule(e){if(!this.items||!this.parent)return null;let t=this.items.find(s=>s.selectorText===e);return t||(t=new p(e,this.parent),this.items.push(t)),t}mount(e){if(!this.items)return;if(!e)throw Error("Require domRuleList argument");let t=0,s=i=>i.replace("(odd)","(2n+1)").replace("(even)","(2n)");this.items.forEach((i,n)=>{let r=n-t,o=e[r];o&&(i.selectorText.startsWith("@")&&o instanceof CSSKeyframesRule||"keyText"in o?i.mount(o):"selectorText"in o?o.selectorText!==s(i.selectorText)?t+=1:i.mount(o):"cssRules"in o&&i.mount(o))})}render(e){e instanceof HTMLStyleElement?(this.domStyle=e,this.items.forEach(t=>t.render(e.sheet))):e instanceof CSSGroupingRule&&this.items.forEach(t=>t.render(e))}_dispose(){if(this.items)for(let e=0;e<this.items.length;e++)this.items[e]._dispose();this.items=[],this.parent=null,this.domStyle=null}},c=class E{constructor(t,s=null,i=0){this.type="ElementNode",this.parent=null,this.children=new K(this),this.styles=new J(this),this.attributes=new q(this),this.domElement=null,this._hooks={},this._events=null,this._context={},this._metadata={},this.key=null;var n,r;t=g(t),W(t),t.style=t.style||{},this.parent=s,this.tagName=me(t),t=V(t),this.key=(n=t._key)!=null?n:null,this._context=t._context||{},this._metadata=t._metadata||{};let o=`${(r=this.parent)==null?void 0:r.getPath()}.${i}`,l=JSON.stringify(t.style||{},(a,f)=>typeof f=="function"?o:f);this.nodeId=B(o+l),this.attributes.addClass(`${this.tagName}_${this.nodeId}`),t._onSchedule&&t._onSchedule(this,t),this.merge(t);let h=t[this.tagName];if(h!=null&&h!=null)if(typeof h=="function"){let a=()=>{let f=h(a);this.children.update(Array.isArray(f)?f:[f])};a.elementNode=this,a.onSubscribe=f=>this.addHook("BeforeRemove",()=>{f(),a=null}),a&&a()}else this.children.update(Array.isArray(h)?h:[h]);this._hooks.Init&&this._hooks.Init(this)}_createDOMNode(){let t=["svg","circle","path","rect","ellipse","line","polyline","polygon","g","defs","use","symbol","linearGradient","radialGradient","stop","clipPath","mask","filter","text","tspan","textPath","image","pattern","marker","animate","animateTransform","animateMotion","feGaussianBlur","feComposite","feColorMatrix","feMerge","feMergeNode","feOffset","feFlood","feBlend","foreignObject"].includes(this.tagName)?document.createElementNS("http://www.w3.org/2000/svg",this.tagName):document.createElement(this.tagName);if(this.domElement=t,this._events)for(let s in this._events){let i=s,n=this._events[i],r=o=>n(o,this);t.addEventListener(i,r),this.addHook("BeforeRemove",o=>{o.domElement.removeEventListener(i,r),r=null})}return this.attributes&&Object.values(this.attributes.items).forEach(s=>s.render()),t}_dispose(){this.children&&this.children._dispose(),this.styles&&(this.styles.items.forEach(t=>t.remove()),this.styles._dispose()),this.attributes&&this.attributes._dispose(),this.domElement=null,this._hooks={},this._events=null,this._context={},this._metadata={},this.parent=null}get pathId(){return B(this.getPath())}merge(t){v(this._context,t._context),v(this._metadata,t._metadata);let s=Object.keys(t);for(let i=0;i<s.length;i++){let n=s[i],r=t[n];["$","_onSchedule","_key","_context","_metadata","style",this.tagName].includes(n)||(["_onInit","_onInsert","_onMount","_onBeforeUpdate","_onUpdate","_onBeforeRemove","_onRemove"].includes(n)?this.addHook(n.substring(3),r):n.startsWith("on")?this.addEvent(n.substring(2).toLowerCase(),r):n=="_portal"?this._portal=r:n=="class"&&typeof r=="string"?this.attributes.addClass(r):this.attributes.set(n,r))}t.style&&this.styles.addCSS(t.style||{},`.${`${this.tagName}_${this.nodeId}`}`)}getPath(){let t=[],s=this;for(;s&&s.parent;){let i=s.parent,n=i.children.items.indexOf(s);t.push(n),s=i}return t.reverse().join(".")}addEvent(t,s){this._events=this._events||{};let i=this._events[t];typeof i=="function"?this._events[t]=(n,r)=>{i(n,r),s(n,r)}:this._events[t]=s}addHook(t,s){let i=this._hooks[t];typeof i=="function"?this._hooks[t]=((...n)=>{i(...n),s(...n)}):this._hooks[t]=s}getRoot(){let t=this;for(;t&&t instanceof E&&t.parent;)t=t.parent;return t}getContext(t){let s=this;for(;s&&(!s._context||!Object.prototype.hasOwnProperty.call(s._context,t));)s=s.parent;return s&&s._context?s._context[t]:void 0}setContext(t,s){this._context=this._context||{},this._context[t]=s}getMetadata(t){return this._metadata?this._metadata[t]:void 0}setMetadata(t,s){this._metadata=this._metadata||{},this._metadata[t]=s}generateCSS(){if(!this.styles||!this.children)return"";let t=this.styles.cssText();return t+=this.children.items.map(s=>s instanceof E?s.generateCSS():"").join(""),t}generateHTML(){if(!this.children||!this.attributes)return"";let t=this.children.generateHTML(),s=this.attributes.generateHTML();return`<${this.tagName}${s}>${t}</${this.tagName}>`}mount(t,s){if(!t)throw new Error("Missing dom node on bind");if(this.domElement=t,this._events)for(let i in this._events){let n=i,r=this._events[n],o=l=>r(l,this);t.addEventListener(n,o),this.addHook("BeforeRemove",l=>{l.domElement.removeEventListener(n,o),o=null})}this.children&&this.children.items.forEach((i,n)=>{let r=t.childNodes[n];r instanceof Node&&i instanceof E&&i.mount(r,s)}),this._hooks.Mount&&this._hooks.Mount(this)}render(t,s=null){let i=this._createDOMNode();t.appendChild(i),this._hooks.Mount&&this._hooks.Mount(this),s||(s=this.getRoot().styles.domStyle);let n=t.getRootNode(),r=n instanceof ShadowRoot?n:document.head;return s||(s=r.querySelector("#domphy-style")),s||(s=document.createElement("style"),s.id="domphy-style",r.appendChild(s)),this.styles.render(s),this.children.items.forEach(o=>{if(o instanceof E&&o._portal){let l=o._portal(this.getRoot());l&&o.render(l)}else o.render(i)}),i}remove(){var t;this.parent?this.parent.children.remove(this):((t=this.domElement)==null||t.remove(),this._dispose())}};var $={};L($,{contextColor:()=>Re,createDark:()=>X,getTheme:()=>w,setTheme:()=>we,themeApply:()=>Se,themeCSS:()=>D,themeColor:()=>$e,themeName:()=>C,themeSize:()=>Te,themeSpacing:()=>Ee,themeTokens:()=>_e,themeVars:()=>b});var be={direction:"darken",colors:{highlight:["#ffffff","#fcf4d6","#fddc69","#f1c21b","#d2a106","#b28600","#8e6a00","#684e00","#483700","#302400","#1c1500","#000000"],warning:["#ffffff","#fff2e8","#ffd9be","#ffb784","#ff832b","#eb6200","#ba4e00","#8a3800","#5e2900","#3e1a00","#231000","#000000"],error:["#ffffff","#fff1f1","#ffd7d9","#ffb3b8","#ff8389","#fa4d56","#da1e28","#a2191f","#750e13","#520408","#2d0709","#000000"],danger:["#ffffff","#fff1f1","#ffd7d9","#ffb3b8","#ff8389","#fa4d56","#da1e28","#a2191f","#750e13","#520408","#2d0709","#000000"],secondary:["#ffffff","#fff0f7","#ffd6e8","#ffafd2","#ff7eb6","#ee5396","#d02670","#9f1853","#740937","#510224","#2a0a18","#000000"],primary:["#ffffff","#edf5ff","#d0e2ff","#a6c8ff","#78a9ff","#4589ff","#0f62fe","#0043ce","#002d9c","#001d6c","#001141","#000000"],info:["#ffffff","#e5f6ff","#bae6ff","#82cfff","#33b1ff","#1192e8","#0072c3","#00539a","#003a6d","#012749","#061727","#000000"],success:["#ffffff","#defbe6","#a7f0ba","#6fdc8c","#42be65","#24a148","#198038","#0e6027","#044317","#022d0d","#071908","#000000"],neutral:["#ffffff","#f4f4f4","#e0e0e0","#c6c6c6","#a8a8a8","#8d8d8d","#6f6f6f","#525252","#393939","#262626","#161616","#000000"]},baseTones:{highlight:3,warning:4,error:5,secondary:5,primary:6,info:5,success:5,neutral:5},fontSizes:["0.75rem","0.875rem","1rem","1.25rem","1.5625rem","1.9375rem","2.4375rem","3.0625rem"],custom:{}},x=be;var k={light:JSON.parse(JSON.stringify(x)),dark:X(x)};function ve(e){for(let t in e)if(!Object.keys(x).includes(t))throw new Error(`Invalid key: ${t}`);if(e.fontSizes&&!Array.isArray(e.fontSizes))throw new Error("fontSize must be array of string");if("custom"in e){let t=e.custom;if(typeof t!="object"||t===null)throw new Error("Invalid custom property: must be an object")}}function Q(e,t){var s;for(let i in t)t[i]&&typeof t[i]=="object"&&!Array.isArray(t[i])?((s=e[i])!=null||(e[i]={}),Q(e[i],t[i])):e[i]=t[i]}function ke(e,t){let s={};for(let n in t){let r=t[n];if(n==="colors")for(let o in t.colors)[...Array(12).keys()].forEach(l=>s[`--${o}-${l}`]=t.colors[o][l]);else if(n==="fontSizes")[...Array(8).keys()].forEach(o=>s[`--fontSize-${o}`]=t.fontSizes[o]);else if(typeof r=="object"&&r!==null)for(let o in r)s[`--${n}-${o.replace("/","_")}`]=r[o]}let i="";for(let n in s)i+=` ${n}: ${s[n]};
1
+ "use strict";var Domphy=(()=>{var L=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var oe=Object.prototype.hasOwnProperty;var B=(e,t)=>{for(var s in t)L(e,s,{get:t[s],enumerable:!0})},le=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of re(t))!oe.call(e,i)&&i!==s&&L(e,i,{get:()=>t[i],enumerable:!(n=ie(t,i))||n.enumerable});return e};var ae=e=>le(L({},"__esModule",{value:!0}),e);var je={};B(je,{core:()=>C,theme:()=>$});var C={};B(C,{AttributeList:()=>X,BooleanAttributes:()=>P,CamelAttributes:()=>J,ElementList:()=>Y,ElementNode:()=>c,HtmlTags:()=>j,Notifier:()=>D,PrefixCSS:()=>y,State:()=>O,VoidTags:()=>be,hashString:()=>A,merge:()=>w,toState:()=>ue});var he=["onAbort","onAuxClick","onBeforeMatch","onBeforeToggle","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onPause","onPlay","onPlaying","onProgress","onRateChange","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onSubmit","onSuspend","onTimeUpdate","onToggle","onVolumeChange","onWaiting","onWheel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onGotPointerCapture","onLostPointerCapture","onCompositionStart","onCompositionUpdate","onCompositionEnd","onTransitionEnd","onTransitionStart","onAnimationStart","onAnimationEnd","onAnimationIteration","onFullscreenChange","onFullscreenError","onFocusIn","onFocusOut"],fe=he.reduce((e,t)=>{let s=t.slice(2).toLowerCase();return e[s]=t,e},{}),j=["a","abbr","address","article","aside","audio","b","base","blockquote","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","i","iframe","img","input","ins","kbd","label","legend","li","main","map","mark","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","slot","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","bdi","bdo","math","menu","search","area","embed","hr","animate","animateMotion","animateTransform","circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","prefetch","radialGradient","rect","set","solidColor","stop","svg","switch","symbol","tbreak","text","textPath","tspan","use","view"],D=class{constructor(){this._listeners={}}_dispose(){if(this._listeners)for(let e in this._listeners)this._listeners[e].clear();this._listeners=null}addListener(e,t){if(!this._listeners)return()=>{};if(typeof e!="string"||typeof t!="function")throw new Error("Event name must be a string, listener must be a function");this._listeners[e]||(this._listeners[e]=new Set);let s=()=>this.removeListener(e,t);return this._listeners[e].has(t)||(this._listeners[e].add(t),typeof t.onSubscribe=="function"&&t.onSubscribe(s)),s}removeListener(e,t){if(!this._listeners)return;let s=this._listeners[e];s&&s.has(t)&&(s.delete(t),s.size===0&&delete this._listeners[e])}notify(e,...t){if(!this._listeners)return;let s=this._listeners[e];if(s)for(let n of[...s])try{n(...t)}catch(i){console.error(i)}}},O=class{constructor(e){this._notifier=new D,this.initialValue=e,this._value=e}get(e){return e&&this.onChange(e),this._value}set(e){this._notifier&&(this._value=e,this._notifier.notify("change",e))}reset(){this.set(this.initialValue)}onChange(e){return this._notifier?this._notifier.addListener("change",e):()=>{}}_dispose(){this._notifier&&(this._notifier._dispose(),this._notifier=null)}};function w(e={},t={}){let s=["animation","transition","boxShadow","textShadow","background","fontFamily"],n=["class","rel","transform","acceptCharset","sandbox"],i=["content"];Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t)===Object.prototype&&(t=b(t));for(let r in t){let o=t[r];if(!(o==null||o===""))if(typeof o=="object"&&!Array.isArray(o))typeof e[r]=="object"?e[r]=w(e[r],o):e[r]=o;else if(s.includes(r))if(typeof e[r]=="function"||typeof o=="function"){let l=e[r];e[r]=h=>{let a=typeof l=="function"?l(h):l,f=typeof o=="function"?o(h):o;return[a,f].filter(u=>u).join(", ")}}else e[r]=[e[r],o].filter(l=>l).join(", ");else if(i.includes(r))if(typeof e[r]=="function"||typeof o=="function"){let l=e[r];e[r]=h=>{let a=typeof l=="function"?l(h):l,f=typeof o=="function"?o(h):o;return[a,f].filter(u=>u).join("")}}else e[r]=[e[r],o].filter(l=>l).join("");else if(n.includes(r))if(typeof e[r]=="function"||typeof o=="function"){let l=e[r];e[r]=h=>{let a=typeof l=="function"?l(h):l,f=typeof o=="function"?o(h):o;return[a,f].filter(u=>u).join(" ")}}else e[r]=[e[r],o].filter(l=>l).join(" ");else if(r.startsWith("on")){let l=r.replace("on","").toLowerCase();ce(e,l,o)}else if(r.startsWith("_on")){let l=r.replace("_on","");me(e,l,o)}else e[r]=o}return e}function ue(e){return e instanceof O?e:new O(e)}function A(e=""){let t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=t*16777619>>>0;return String.fromCharCode(97+t%26)+t.toString(16)}function me(e,t,s){let n=`_on${t}`,i=e[n];typeof i=="function"?e[n]=(...r)=>{i(...r),s(...r)}:e[n]=s}function ce(e,t,s){let n=fe[t];if(!n)throw Error(`invalid event name "${t}"`);let i=e[n];typeof i=="function"?e[n]=(r,o)=>{i(r,o),s(r,o)}:e[n]=s}function b(e,t=new WeakMap){if(e===null||typeof e!="object"||typeof e=="function")return e;if(t.has(e))return t.get(e);let s=Object.getPrototypeOf(e);if(s!==Object.prototype&&!Array.isArray(e))return e;let n;if(Array.isArray(e)){n=[],t.set(e,n);for(let i of e)n.push(b(i,t));return n}if(e instanceof Date)return new Date(e);if(e instanceof RegExp)return new RegExp(e);if(e instanceof Map){n=new Map,t.set(e,n);for(let[i,r]of e)n.set(b(i,t),b(r,t));return n}if(e instanceof Set){n=new Set,t.set(e,n);for(let i of e)n.add(b(i,t));return n}if(ArrayBuffer.isView(e))return new e.constructor(e);if(e instanceof ArrayBuffer)return e.slice(0);n=Object.create(s),t.set(e,n);for(let i of Reflect.ownKeys(e))n[i]=b(e[i],t);return n}function V(e,t=!1){if(Object.prototype.toString.call(e)!=="[object Object]")throw Error(`typeof ${e} is invalid DomphyElement`);let s=Object.keys(e);for(let n=0;n<s.length;n++){let i=s[n],r=e[i];if(n==0&&!j.includes(i)&&!i.includes("-")&&!t)throw Error(`key ${i} is not valid HTML tag name`);if(i=="style"&&r&&Object.prototype.toString.call(r)!=="[object Object]")throw Error('"style" must be a object');if(i=="$")e.$.forEach(o=>V(o,!0));else{if(i.startsWith("_on")&&typeof r!="function")throw Error(`hook ${i} value "${r}" must be a function `);if(i.startsWith("on")&&typeof r!="function")throw Error(`event ${i} value "${r}" must be a function `);if(i=="_portal"&&typeof r!="function")throw Error('"_portal" must be a function return HTMLElement');if(i=="_context"&&Object.prototype.toString.call(r)!=="[object Object]")throw Error('"_context" must be a object');if(i=="_metadata"&&Object.prototype.toString.call(r)!=="[object Object]")throw Error('"_metadata" must be a object');if(i=="_key"&&typeof r!="string"&&typeof r!="number")throw Error('"_key" must be a string or number')}}return!0}function de(e){return/<([a-z][\w-]*)(\s[^>]*)?>.*<\/\1>|<([a-z][\w-]*)(\s[^>]*)?\/>/i.test(e.trim())}function F(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function pe(e){return Object.keys(e).find(t=>j.includes(t))}function G(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function ye(e){if(e.indexOf("@")===0)return[e];for(var t=[],s=0,n=0,i="",r=0,o=e.length;r<o;r++){var l=e[r];if(l==="(")s+=1;else if(l===")")s-=1;else if(l==="[")n+=1;else if(l==="]")n-=1;else if(l===","&&!s&&!n){t.push(i.trim()),i="";continue}i+=l}return t.push(i.trim()),t}function q(e){var t;let s=e.querySelector("#domphy-style");return s||(s=document.createElement("style"),s.id="domphy-style",e.appendChild(s)),s.dataset.domphyBase!=="true"&&((t=s.sheet)==null||t.insertRule("[hidden] { display: none !important; }",0),s.dataset.domphyBase="true"),s}var K=e=>{if(Array.isArray(e.$)){let t={};return e.$.forEach(s=>w(t,K(s))),delete e.$,w(t,e),t}else return e},be=["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"],P=["allowFullScreen","async","autoFocus","autoPlay","checked","compact","contentEditable","controls","declare","default","defer","disabled","formNoValidate","hidden","isMap","itemScope","loop","multiple","muted","noHref","noShade","noValidate","open","playsInline","readonly","required","reversed","scoped","selected","sortable","trueSpeed","typeMustMatch","wmode","autoCapitalize","translate","spellCheck","inert","download","noModule","paused","autoPictureInPicture"],y={transform:["webkit","ms"],transition:["webkit","ms"],animation:["webkit"],userSelect:["webkit","ms"],flexDirection:["webkit","ms"],flexWrap:["webkit","ms"],justifyContent:["webkit","ms"],alignItems:["webkit","ms"],alignSelf:["webkit","ms"],order:["webkit","ms"],flexGrow:["webkit","ms"],flexShrink:["webkit","ms"],flexBasis:["webkit","ms"],columns:["webkit"],columnCount:["webkit"],columnGap:["webkit"],columnRule:["webkit"],columnWidth:["webkit"],boxSizing:["webkit"],appearance:["webkit","moz"],filter:["webkit"],backdropFilter:["webkit"],clipPath:["webkit"],mask:["webkit"],maskImage:["webkit"],textSizeAdjust:["webkit","ms"],hyphens:["webkit","ms"],writingMode:["webkit","ms"],gridTemplateColumns:["ms"],gridTemplateRows:["ms"],gridAutoColumns:["ms"],gridAutoRows:["ms"],gridColumn:["ms"],gridRow:["ms"],marginInlineStart:["webkit"],marginInlineEnd:["webkit"],paddingInlineStart:["webkit"],paddingInlineEnd:["webkit"],minInlineSize:["webkit"],maxInlineSize:["webkit"],minBlockSize:["webkit"],maxBlockSize:["webkit"],inlineSize:["webkit"],blockSize:["webkit"],tabSize:["moz"],overscrollBehavior:["webkit","ms"],touchAction:["ms"],resize:["webkit"],printColorAdjust:["webkit"],backgroundClip:["webkit"],boxDecorationBreak:["webkit"],overflowScrolling:["webkit"]},J=["viewBox","preserveAspectRatio","gradientTransform","gradientUnits","spreadMethod","markerStart","markerMid","markerEnd","markerHeight","markerWidth","markerUnits","refX","refY","patternContentUnits","patternTransform","patternUnits","filterUnits","primitiveUnits","kernelUnitLength","clipPathUnits","maskContentUnits","maskUnits"],ge=class{constructor(e,t,s){this.parent=s,this.isBoolean=P.includes(e),J.includes(e)?this.name=e:this.name=G(e),this.value=void 0,this.set(t)}render(){if(!this.parent||!this.parent.domElement)return;let e=this.parent.domElement,t=["value"];this.isBoolean?this.value===!1||this.value==null?e.removeAttribute(this.name):e.setAttribute(this.name,this.value===!0?"":this.value):this.value==null?e.removeAttribute(this.name):t.includes(this.name)?e[this.name]=this.value:e.setAttribute(this.name,this.value)}set(e){if(e==null){this.value=null,this.render();return}if(typeof e=="string"&&/<\/?[a-z][\s\S]*>/i.test(e))this.value=F(e);else if(typeof e=="function"){let t=()=>{t&&(this.value=this.isBoolean?!!e():e(),this.render())};t.elementNode=this.parent,t.onSubscribe=s=>{this.parent&&this.parent.addHook("BeforeRemove",()=>{s(),t=null})},this.value=this.isBoolean?!!e(t):e(t)}else this.value=this.isBoolean?!!e:e;this.render()}remove(){this.parent&&this.parent.attributes&&this.parent.attributes.remove(this.name),this._dispose()}_dispose(){this.value=null,this.parent=null}generateHTML(){let{name:e,value:t}=this;if(this.isBoolean)return t?`${e}`:"";{let s=Array.isArray(t)?JSON.stringify(t):t;return`${e}="${F(String(s))}"`}}},X=class{constructor(e){this._notifier=new D,this.items={},this.parent=e}generateHTML(){if(!this.items)return"";let e=Object.values(this.items).map(t=>t.generateHTML()).join(" ");return e?` ${e}`:""}get(e){var t;if(this.items)return(t=this.items[e])==null?void 0:t.value}set(e,t){!this.items||!this.parent||(this.items[e]?(this.items[e].set(t),this.parent.domElement&&this._notifier.notify(e,this.items[e].value)):this.items[e]=new ge(e,t,this.parent))}onChange(e,t){var s;if(this.has(e)&&(s=this.parent)!=null&&s.domElement){let n=t;n.onSubscribe=i=>{var r;return(r=this.parent)==null?void 0:r.addHook("BeforeRemove",i)},this._notifier.addListener(e,n)}}has(e){return this.items?Object.prototype.hasOwnProperty.call(this.items,e):!1}remove(e){this.items&&(this.items[e]&&(this.items[e]._dispose(),delete this.items[e]),this.parent&&this.parent.domElement&&this.parent.domElement instanceof Element&&this.parent.domElement.removeAttribute(e))}_dispose(){if(this.items)for(let e in this.items)this.items[e]._dispose();this._notifier._dispose(),this.items=null,this.parent=null}toggle(e,t){if(!P.includes(e))throw Error(`${e} is not a boolean attribute`);t===!0?this.set(e,!0):t===!1?this.remove(e):this.has(e)?this.remove(e):this.set(e,!0)}addClass(e){if(!e||typeof e!="string")return;let t=(n,i)=>{let r=(n||"").split(" ").filter(o=>o);return!r.includes(i)&&r.push(e),r.join(" ")},s=this.get("class");typeof s=="function"?this.set("class",()=>t(s(),e)):this.set("class",t(s,e))}hasClass(e){return!e||typeof e!="string"?!1:(this.get("class")||"").split(" ").filter(t=>t).includes(e)}toggleClass(e){!e||typeof e!="string"||(this.hasClass(e)?this.removeClass(e):this.addClass(e))}removeClass(e){if(!e||typeof e!="string")return;let t=(this.get("class")||"").split(" ").filter(s=>s).filter(s=>s!==e);t.length>0?this.set("class",t.join(" ")):this.remove("class")}replaceClass(e,t){!e||!t||typeof e!="string"||typeof t!="string"||this.hasClass(e)&&(this.removeClass(e),this.addClass(t))}},ve=class{constructor(e,t){this.type="TextNode",this.parent=t,this.text=e===""?"\u200B":String(e)}_createDOMNode(){let e;if(de(this.text)){let t=document.createElement("template");t.innerHTML=this.text.trim(),e=t.content.firstChild||document.createTextNode("")}else e=document.createTextNode(this.text);return this.domText=e,e}_dispose(){this.domText=void 0,this.text=""}generateHTML(){return this.text==="\u200B"?"&#8203;":this.text}render(e){let t=this._createDOMNode();e.appendChild(t)}},Y=class{constructor(e){this.items=[],this.owner=e}_createNode(e,t=0){return typeof e=="object"&&e!==null?new c(e,this.owner,t):new ve(e==null?"":String(e),this.owner)}_moveDomElement(e,t){if(!this.owner||!this.owner.domElement)return;let s=this.owner.domElement,n=e instanceof c?e.domElement:e.domText;if(n){let i=s.childNodes[t]||null;n!==i&&s.insertBefore(n,i)}}_swapDomElement(e,t){if(!this.owner||!this.owner.domElement)return;let s=this.owner.domElement,n=e instanceof c?e.domElement:e.domText,i=t instanceof c?t.domElement:t.domText;if(!n||!i)return;let r=n.nextSibling,o=i.nextSibling;s.insertBefore(n,o),s.insertBefore(i,r)}update(e,t=!0,s=!1){var n,i,r,o;let l=this.items.slice(),h=new Map;for(let a of l)a instanceof c&&a.key!==null&&a.key!==void 0&&h.set(a.key,a);!s&&this.owner.domElement&&((i=(n=this.owner._hooks)==null?void 0:n.BeforeUpdate)==null||i.call(n,this.owner,e));for(let a=0;a<e.length;a++){let f=e[a],u=typeof f=="object"&&f!==null?f._key:void 0;if(u!==void 0){let m=h.get(u);if(m){h.delete(u);let S=this.items.indexOf(m);if(S!==a&&S>=0){let M=m instanceof c&&!!m._portal;this.move(S,a,M?!1:t,!0)}m.parent=this.owner;continue}}this.insert(f,a,t,!0)}for(;this.items.length>e.length;)this.remove(this.items[this.items.length-1],t,!0);h.forEach(a=>this.remove(a,t,!0)),s||(o=(r=this.owner._hooks)==null?void 0:r.Update)==null||o.call(r,this.owner)}insert(e,t,s=!0,n=!1){var i,r;let o=this.items.length,l=typeof t!="number"||isNaN(t)||t<0||t>o?o:t,h=this._createNode(e,l);if(this.items.splice(l,0,h),h instanceof c){h._hooks.Insert&&h._hooks.Insert(h);let a=this.owner.domElement;if(s&&a)if(h._portal){let f=h._portal(this.owner.getRoot());f&&h.render(f)}else{let f=h._createDOMNode(),u=(i=a.childNodes[l])!=null?i:null;a.insertBefore(f,u);let m=a.getRootNode(),S=m instanceof ShadowRoot?m:document.head,M=q(S);h.styles.render(M),h._hooks.Mount&&h._hooks.Mount(h),h.children.items.forEach(v=>{if(v instanceof c&&v._portal){let W=v._portal(v.getRoot());W&&v.render(W)}else v.render(f)})}}else{let a=this.owner.domElement;if(s&&a){let f=h._createDOMNode(),u=(r=a.childNodes[l])!=null?r:null;a.insertBefore(f,u)}}return!n&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner),h}remove(e,t=!0,s=!1){let n=this.items.indexOf(e);if(!(n<0)){if(e instanceof c){let i=()=>{var r,o;let l=e.domElement;this.items.splice(n,1),t&&l&&l.remove(),(o=(r=e._hooks)==null?void 0:r.Remove)==null||o.call(r,e),e._dispose()};e._hooks&&e._hooks.BeforeRemove&&e.domElement?e._hooks.BeforeRemove(e,i):i()}else{let i=e.domText;this.items.splice(n,1),t&&i&&i.remove(),e._dispose()}!s&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}}clear(e=!0,t=!1){if(this.items.length===0)return;let s=this.items.slice();for(let n of s)this.remove(n,e,!0);!t&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}_dispose(){this.items=[]}swap(e,t,s=!0,n=!1){if(e<0||t<0||e>=this.items.length||t>=this.items.length||e===t)return;let i=this.items[e],r=this.items[t];this.items[e]=r,this.items[t]=i,s&&this._swapDomElement(i,r),!n&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}move(e,t,s=!0,n=!1){if(e<0||e>=this.items.length||t<0||t>=this.items.length||e===t)return;let i=this.items[e];this.items.splice(e,1),this.items.splice(t,0,i),s&&this._moveDomElement(i,t),!n&&this.owner.domElement&&this.owner._hooks.Update&&this.owner._hooks.Update(this.owner)}generateHTML(){let e="";for(let t of this.items)e+=t.generateHTML();return e}},we=class{constructor(e,t,s){this.value="",this.name=e,this.cssName=G(e),this.parentRule=s,this.set(t)}_domUpdate(){if(!this.parentRule)return;let e=this.parentRule.domRule;if(e&&e.style){let t=e.style;t.setProperty(this.cssName,String(this.value)),y[this.name]&&y[this.name].forEach(s=>{t.setProperty(`-${s}-${this.cssName}`,String(this.value))})}}_dispose(){this.value="",this.parentRule=null}set(e){if(typeof e=="function"){let t=()=>{t&&(this.value=e(t),this._domUpdate())};t.onSubscribe=s=>{var n;(n=this.parentRule.parentNode)==null||n.addHook("BeforeRemove",()=>{s(),t=null})},t.elementNode=this.parentRule.root,this.value=e(t)}else this.value=e;this._domUpdate()}remove(){if(this.parentRule){if(this.parentRule.domRule instanceof CSSStyleRule){let e=this.parentRule.domRule.style;e.removeProperty(this.cssName),y[this.name]&&y[this.name].forEach(t=>{e.removeProperty(`-${t}-${this.cssName}`)})}delete this.parentRule.styleBlock[this.name],this._dispose()}}cssText(){let e=`${this.cssName}: ${this.value}`;return y[this.name]&&y[this.name].forEach(t=>{e+=`; -${t}-${this.cssName}: ${this.value}`}),e}},p=class I{constructor(t,s){this.domRule=null,this.styleBlock={},this.selectorText=t,this.styleList=new Z(this),this.parent=s}_dispose(){if(this.styleBlock)for(let t of Object.values(this.styleBlock))t._dispose();this.styleList&&this.styleList._dispose(),this.styleBlock=null,this.styleList=null,this.domRule=null,this.parent=null}get root(){let t=this.parent;for(;t instanceof I;)t=t.parent;return t}get parentNode(){let t=this.parent;for(;t&&t instanceof I;)t=t.parent;return t}insertStyle(t,s){this.styleBlock&&(this.styleBlock[t]?this.styleBlock[t].set(s):this.styleBlock[t]=new we(t,s,this))}removeStyle(t){this.styleBlock&&this.styleBlock[t]&&this.styleBlock[t].remove()}cssText(){if(!this.styleBlock||!this.styleList)return"";let t=Object.values(this.styleBlock).map(n=>n.cssText()).join(";"),s=this.styleList.cssText();return`${this.selectorText} { ${t} ${s} } `}mount(t){!t||!this.styleList||(this.domRule=t,"cssRules"in t&&this.styleList.mount(t.cssRules))}remove(){if(this.domRule&&this.domRule.parentStyleSheet){let t=this.domRule.parentStyleSheet,s=t.cssRules;for(let n=0;n<s.length;n++)if(s[n]===this.domRule){t.deleteRule(n);break}}this._dispose()}render(t){if(!this.styleBlock||!this.styleList)return;let s=Object.values(this.styleBlock).map(n=>n.cssText()).join(";");try{if(this.selectorText.startsWith("@")){if(/^@(media|supports|container|layer)\b/.test(this.selectorText)){let n=t.insertRule(`${this.selectorText} {}`,t.cssRules.length),i=t.cssRules[n];"cssRules"in i&&(this.mount(i),this.styleList.render(i))}else if(this.selectorText.startsWith("@keyframes")||this.selectorText.startsWith("@font-face")){let n=this.cssText(),i=t.insertRule(n,t.cssRules.length),r=t.cssRules[i];this.mount(r)}}else{let n=`${this.selectorText} { ${s} }`,i=t.insertRule(n,t.cssRules.length),r=t.cssRules[i];r&&"selectorText"in r&&this.mount(r)}}catch(n){console.warn("Failed to insert rule:",this.selectorText,n)}}},Z=class{constructor(e){this.items=[],this.domStyle=null,this.parent=e}get parentNode(){let e=this.parent;for(;e&&e instanceof p;)e=e.parent;return e}addCSS(e,t=""){if(!this.items||!this.parent)return;let s={};function n(i,r){return i.startsWith("&")?`${r}${i.slice(1)}`:`${r} ${i}`}for(let i in e){let r=e[i],o=ye(i);for(let l of o){let h=n(l,t);if(/^@(container|layer|supports|media)\b/.test(l)){if(typeof r=="object"&&r!=null){let a=new p(l,this.parent);a.styleList.addCSS(r,t),this.items.push(a)}}else if(l.startsWith("@keyframes")){let a=new p(l,this.parent);a.styleList.addCSS(r,""),this.items.push(a)}else if(l.startsWith("@font-face")){let a=new p(l,this.parent);for(let f in r)a.insertStyle(f,r[f]);this.items.push(a)}else if(typeof r=="object"&&r!=null){let a=new p(h,this.parent);this.items.push(a);for(let[f,u]of Object.entries(r))if(typeof u=="object"&&u!=null){let m=n(f,h);f.startsWith("&")?this.addCSS(u,m):a.styleList.insertRule(m).styleList.addCSS(u,m)}else a.insertStyle(f,u)}else s[l]=r}}if(Object.keys(s).length){let i=new p(t,this.parent);for(let r in s)i.insertStyle(r,s[r]);this.items.push(i)}}cssText(){return this.items?this.items.map(e=>e.cssText()).join(""):""}insertRule(e){if(!this.items||!this.parent)return null;let t=this.items.find(s=>s.selectorText===e);return t||(t=new p(e,this.parent),this.items.push(t)),t}mount(e){if(!this.items)return;if(!e)throw Error("Require domRuleList argument");let t=0,s=n=>n.replace("(odd)","(2n+1)").replace("(even)","(2n)");this.items.forEach((n,i)=>{let r=i-t,o=e[r];o&&(n.selectorText.startsWith("@")&&o instanceof CSSKeyframesRule||"keyText"in o?n.mount(o):"selectorText"in o?o.selectorText!==s(n.selectorText)?t+=1:n.mount(o):"cssRules"in o&&n.mount(o))})}render(e){e instanceof HTMLStyleElement?(this.domStyle=e,this.items.forEach(t=>t.render(e.sheet))):e instanceof CSSGroupingRule&&this.items.forEach(t=>t.render(e))}_dispose(){if(this.items)for(let e=0;e<this.items.length;e++)this.items[e]._dispose();this.items=[],this.parent=null,this.domStyle=null}},c=class x{constructor(t,s=null,n=0){this.type="ElementNode",this.parent=null,this.children=new Y(this),this.styles=new Z(this),this.attributes=new X(this),this.domElement=null,this._hooks={},this._events=null,this._context={},this._metadata={},this.key=null;var i,r;t=b(t),V(t),t.style=t.style||{},this.parent=s,this.tagName=pe(t),t=K(t),this.key=(i=t._key)!=null?i:null,this._context=t._context||{},this._metadata=t._metadata||{};let o=`${(r=this.parent)==null?void 0:r.getPath()}.${n}`,l=JSON.stringify(t.style||{},(a,f)=>typeof f=="function"?o:f);this.nodeId=A(o+l),this.attributes.addClass(`${this.tagName}_${this.nodeId}`),t._onSchedule&&t._onSchedule(this,t),this.merge(t);let h=t[this.tagName];if(h!=null&&h!=null)if(typeof h=="function"){let a=()=>{let f=h(a);this.children.update(Array.isArray(f)?f:[f])};a.elementNode=this,a.onSubscribe=f=>this.addHook("BeforeRemove",()=>{f(),a=null}),a&&a()}else this.children.update(Array.isArray(h)?h:[h]);this._hooks.Init&&this._hooks.Init(this)}_createDOMNode(){let t=["svg","circle","path","rect","ellipse","line","polyline","polygon","g","defs","use","symbol","linearGradient","radialGradient","stop","clipPath","mask","filter","text","tspan","textPath","image","pattern","marker","animate","animateTransform","animateMotion","feGaussianBlur","feComposite","feColorMatrix","feMerge","feMergeNode","feOffset","feFlood","feBlend","foreignObject"].includes(this.tagName)?document.createElementNS("http://www.w3.org/2000/svg",this.tagName):document.createElement(this.tagName);if(this.domElement=t,this._events)for(let s in this._events){let n=s,i=this._events[n],r=o=>i(o,this);t.addEventListener(n,r),this.addHook("BeforeRemove",o=>{o.domElement.removeEventListener(n,r),r=null})}return this.attributes&&Object.values(this.attributes.items).forEach(s=>s.render()),t}_dispose(){this.children&&this.children._dispose(),this.styles&&(this.styles.items.forEach(t=>t.remove()),this.styles._dispose()),this.attributes&&this.attributes._dispose(),this.domElement=null,this._hooks={},this._events=null,this._context={},this._metadata={},this.parent=null}get pathId(){return A(this.getPath())}merge(t){w(this._context,t._context),w(this._metadata,t._metadata);let s=Object.keys(t);for(let n=0;n<s.length;n++){let i=s[n],r=t[i];["$","_onSchedule","_key","_context","_metadata","style",this.tagName].includes(i)||(["_onInit","_onInsert","_onMount","_onBeforeUpdate","_onUpdate","_onBeforeRemove","_onRemove"].includes(i)?this.addHook(i.substring(3),r):i.startsWith("on")?this.addEvent(i.substring(2).toLowerCase(),r):i=="_portal"?this._portal=r:i=="class"&&typeof r=="string"?this.attributes.addClass(r):this.attributes.set(i,r))}t.style&&this.styles.addCSS(t.style||{},`.${`${this.tagName}_${this.nodeId}`}`)}getPath(){let t=[],s=this;for(;s&&s.parent;){let n=s.parent,i=n.children.items.indexOf(s);t.push(i),s=n}return t.reverse().join(".")}addEvent(t,s){this._events=this._events||{};let n=this._events[t];typeof n=="function"?this._events[t]=(i,r)=>{n(i,r),s(i,r)}:this._events[t]=s}addHook(t,s){let n=this._hooks[t];typeof n=="function"?this._hooks[t]=((...i)=>{n(...i),s(...i)}):this._hooks[t]=s}getRoot(){let t=this;for(;t&&t instanceof x&&t.parent;)t=t.parent;return t}getContext(t){let s=this;for(;s&&(!s._context||!Object.prototype.hasOwnProperty.call(s._context,t));)s=s.parent;return s&&s._context?s._context[t]:void 0}setContext(t,s){this._context=this._context||{},this._context[t]=s}getMetadata(t){return this._metadata?this._metadata[t]:void 0}setMetadata(t,s){this._metadata=this._metadata||{},this._metadata[t]=s}generateCSS(){if(!this.styles||!this.children)return"";let t=this.styles.cssText();return t+=this.children.items.map(s=>s instanceof x?s.generateCSS():"").join(""),t}generateHTML(){if(!this.children||!this.attributes)return"";let t=this.children.generateHTML(),s=this.attributes.generateHTML();return`<${this.tagName}${s}>${t}</${this.tagName}>`}mount(t,s){if(!t)throw new Error("Missing dom node on bind");if(this.domElement=t,this._events)for(let n in this._events){let i=n,r=this._events[i],o=l=>r(l,this);t.addEventListener(i,o),this.addHook("BeforeRemove",l=>{l.domElement.removeEventListener(i,o),o=null})}this.children&&this.children.items.forEach((n,i)=>{let r=t.childNodes[i];r instanceof Node&&n instanceof x&&n.mount(r,s)}),this._hooks.Mount&&this._hooks.Mount(this)}render(t){let s=this._createDOMNode();t.appendChild(s),this._hooks.Mount&&this._hooks.Mount(this);let n=this.getRoot().styles.domStyle,i=t.getRootNode(),r=i instanceof ShadowRoot?i:document.head;return n||(n=q(r)),this.styles.render(n),this.children.items.forEach(o=>{if(o instanceof x&&o._portal){let l=o._portal(this.getRoot());l&&o.render(l)}else o.render(s)}),s}remove(){var t;this.parent?this.parent.children.remove(this):((t=this.domElement)==null||t.remove(),this._dispose())}};var $={};B($,{contextColor:()=>Ae,createDark:()=>ee,getTheme:()=>d,setTheme:()=>Se,themeApply:()=>Te,themeCSS:()=>z,themeColor:()=>Ie,themeDensity:()=>Le,themeName:()=>_,themeSize:()=>Re,themeSpacing:()=>Ce,themeTokens:()=>xe,themeVars:()=>g});var ke={direction:"darken",colors:{highlight:["#ffffff","#fcf4d6","#fddc69","#f1c21b","#d2a106","#b28600","#8e6a00","#684e00","#483700","#302400","#1c1500","#000000"],warning:["#ffffff","#fff2e8","#ffd9be","#ffb784","#ff832b","#eb6200","#ba4e00","#8a3800","#5e2900","#3e1a00","#231000","#000000"],error:["#ffffff","#fff1f1","#ffd7d9","#ffb3b8","#ff8389","#fa4d56","#da1e28","#a2191f","#750e13","#520408","#2d0709","#000000"],danger:["#ffffff","#fff1f1","#ffd7d9","#ffb3b8","#ff8389","#fa4d56","#da1e28","#a2191f","#750e13","#520408","#2d0709","#000000"],secondary:["#ffffff","#fff0f7","#ffd6e8","#ffafd2","#ff7eb6","#ee5396","#d02670","#9f1853","#740937","#510224","#2a0a18","#000000"],primary:["#ffffff","#edf5ff","#d0e2ff","#a6c8ff","#78a9ff","#4589ff","#0f62fe","#0043ce","#002d9c","#001d6c","#001141","#000000"],info:["#ffffff","#e5f6ff","#bae6ff","#82cfff","#33b1ff","#1192e8","#0072c3","#00539a","#003a6d","#012749","#061727","#000000"],success:["#ffffff","#defbe6","#a7f0ba","#6fdc8c","#42be65","#24a148","#198038","#0e6027","#044317","#022d0d","#071908","#000000"],neutral:["#ffffff","#f4f4f4","#e0e0e0","#c6c6c6","#a8a8a8","#8d8d8d","#6f6f6f","#525252","#393939","#262626","#161616","#000000"]},baseTones:{highlight:3,warning:4,error:5,secondary:5,primary:6,info:5,success:5,neutral:5},fontSizes:["0.75rem","0.875rem","1rem","1.25rem","1.5625rem","1.9375rem","2.4375rem","3.0625rem"],densities:[.75,1,1.5,2,2.5],custom:{}},T=ke;var k={light:JSON.parse(JSON.stringify(T)),dark:ee(T)};function _e(e){for(let t in e)if(!Object.keys(T).includes(t))throw new Error(`Invalid key: ${t}`);if(e.fontSizes&&!Array.isArray(e.fontSizes))throw new Error("fontSize must be array of string");if(e.densities&&(!Array.isArray(e.densities)||e.densities.some(t=>typeof t!="number")))throw new Error("densities must be array of number");if("custom"in e){let t=e.custom;if(typeof t!="object"||t===null)throw new Error("Invalid custom property: must be an object")}}function Q(e,t){var s;for(let n in t)t[n]&&typeof t[n]=="object"&&!Array.isArray(t[n])?((s=e[n])!=null||(e[n]={}),Q(e[n],t[n])):e[n]=t[n]}function Ee(e,t){let s={};for(let i in t){let r=t[i];if(i==="colors")for(let o in t.colors)[...Array(12).keys()].forEach(l=>s[`--${o}-${l}`]=t.colors[o][l]);else if(i==="fontSizes")[...Array(8).keys()].forEach(o=>s[`--fontSize-${o}`]=t.fontSizes[o]);else{if(i==="densities")continue;if(typeof r=="object"&&r!==null)for(let o in r)s[`--${i}-${o.replace("/","_")}`]=r[o]}}let n="";for(let i in s)n+=` ${i}: ${s[i]};
2
2
  `;return`[data-theme="${e}"] {
3
- ${i}}`}function w(e){if(!k[e])throw Error(`Theme "${e}" not found`);return k[e]}function we(e,t){ve(t),k[e]||(k[e]=structuredClone(x)),Q(k[e],t)}function X(e){let t=structuredClone(e);t.direction="lighten";for(let s in t.colors)t.colors[s].reverse(),t.baseTones[s]=11-t.baseTones[s];return t}function _e(e){let t=w(e),s={};for(let i in t){let n=t[i];if(i==="colors")for(let r in t.colors){let o={};[...Array(12).keys()].forEach(l=>o[l]=t.colors[r][l]),s[r]=o}else if(i==="fontSizes")s.fontSizes=t.fontSizes;else if(s[i]={},typeof n=="object"&&n!==null)for(let r in n)s[i][r]=n[r]}return s}function b(){let e=w("light"),t={};for(let s in e){let i=s,n=e[s];if(s==="colors")for(let r in e.colors){let o={};[...Array(12).keys()].forEach(l=>o[l]=`var(--${r}-${l})`),t[r]=o}else if(s==="fontSizes")t.fontSizes=[...Array(8).keys()].map(r=>`var(--fontSize-${r})`);else if(t[i]={},typeof n=="object"&&n!==null)for(let r in n)t[i][r]=`var(--${i}-${r.replace("/","_")})`}return t}function D(){return Object.entries(k).map(([e,t])=>ke(e,t)).join(`
4
- `)}function Se(e){var t;if(typeof document!="undefined")if(e){e.textContent=D();return}else e=(t=document.getElementById("domphy-themes"))!=null?t:Object.assign(document.createElement("style"),{id:"domphy-themes"}),e.textContent=D(),document.head.appendChild(e)}function Ee(e){return e/4+"em"}function C(e){let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataTheme"));)s=s.parent;let i="light";return s.attributes&&s.attributes.has("dataTheme")&&(i=s.attributes.get("dataTheme"),typeof e=="function"&&s.attributes.onChange("dataTheme",e)),i}var z=["inherit"];[...Array(8).keys()].forEach(e=>{z.push(`decrease-${e}`),z.push(`increase-${e}`)});function Y(e,t="inherit"){if(!z.includes(t))throw Error(`size name "${t}" invalid`);let s;if(t=="inherit")s=e;else if(t!=null&&t.startsWith("increase-")){let i=parseInt(t.replace("increase-",""),10);s=e+i}else if(t!=null&&t.startsWith("decrease-")){let i=parseInt(t.replace("decrease-",""),10);s=e-i}else s=e;return Math.max(0,Math.min(8,s))}function xe(e){if(!e)return 2;let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataSize"));)s=s.parent;let i=2;return s&&s.attributes&&s.attributes.has("dataSize")&&(i=Y(i,s.attributes.get("dataSize")),typeof e=="function"&&s.attributes.onChange("dataSize",e)),i}function Te(e,t="inherit"){let s=Y(xe(e),t);return b().fontSizes[s]}var _=12,N=["inherit","base"];[...Array(_).keys()].forEach(e=>{N.push(`decrease-${e}`),N.push(`increase-${e}`),N.push(`shift-${e}`)});function Z(e,t){if(e<0||e>_-1)return e;let s=e+t;return s=Math.max(0,Math.min(_-1,s)),s}function Ce(e,t){if(e<0||e>_-1)return e;let s=e<=5?e+t:e-t;return s=s<0||s>_-1?-s:s,s=Math.max(0,Math.min(_-1,s)),s}function R(e,t="inherit"){if(typeof t=="number")return t;if(t=="inherit")return e;if(!N.includes(t))throw Error(`tone name "${t}" invalid`);if(t.startsWith("increase-")){let s=parseInt(t.replace("increase-",""),10);return Z(e,s)}else if(t.startsWith("decrease-")){let s=parseInt(t.replace("decrease-",""),10);return Z(e,-s)}else if(t.startsWith("shift-")){let s=parseInt(t.replace("shift-",""),10);return Ce(e,s)}else return e}function ee(e){if(!e)return 0;let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataTone"));)s=s.parent;let i=0;return s&&s.attributes&&s.attributes.has("dataTone")&&(i=R(i,s.attributes.get("dataTone")),typeof e=="function"&&s.attributes.onChange("dataTone",e)),i}function Ne(e,t="inherit"){return R(ee(e),t)}function Re(e,t="inherit",s="inherit"){let i=typeof e=="function"?e.elementNode:e,n=s=="inherit"?i.getContext("themeColor")||"neutral":s,r;return t=="base"?r=w(C(e)).baseTones[n]:r=R(ee(e),t),b()[n][r]}function $e(e,t="inherit",s="inherit"){let i=s=="inherit"?"neutral":s;if(!e)return b()[i][R(0,t)];let n;return t=="base"?n=w(C(e)).baseTones[i]:n=Ne(e,t),b()[i][n]}return re(Me);})();
3
+ ${n}}`}function d(e){if(!k[e])throw Error(`Theme "${e}" not found`);return k[e]}function Se(e,t){_e(t),k[e]||(k[e]=structuredClone(T)),Q(k[e],t)}function ee(e){let t=structuredClone(e);t.direction="lighten";for(let s in t.colors)t.colors[s].reverse(),t.baseTones[s]=11-t.baseTones[s];return t}function xe(e){let t=d(e),s={};for(let n in t){let i=t[n];if(n==="colors")for(let r in t.colors){let o={};[...Array(12).keys()].forEach(l=>o[l]=t.colors[r][l]),s[r]=o}else if(n==="fontSizes")s.fontSizes=t.fontSizes;else if(n==="densities")s.densities=t.densities;else if(s[n]={},typeof i=="object"&&i!==null)for(let r in i)s[n][r]=i[r]}return s}function g(){let e=d("light"),t={};for(let s in e){let n=s,i=e[s];if(s==="colors")for(let r in e.colors){let o={};[...Array(12).keys()].forEach(l=>o[l]=`var(--${r}-${l})`),t[r]=o}else if(s==="fontSizes")t.fontSizes=[...Array(8).keys()].map(r=>`var(--fontSize-${r})`);else{if(s==="densities")continue;if(t[n]={},typeof i=="object"&&i!==null)for(let r in i)t[n][r]=`var(--${n}-${r.replace("/","_")})`}}return t}function z(){return Object.entries(k).map(([e,t])=>Ee(e,t)).join(`
4
+ `)}function Te(e){var t;if(typeof document!="undefined")if(e){e.textContent=z();return}else e=(t=document.getElementById("domphy-themes"))!=null?t:Object.assign(document.createElement("style"),{id:"domphy-themes"}),e.textContent=z(),document.head.appendChild(e)}function Ce(e){return e/4+"em"}function _(e){let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataTheme"));)s=s.parent;let n="light";return s&&s.attributes&&s.attributes.has("dataTheme")&&(n=s.attributes.get("dataTheme"),typeof e=="function"&&s.attributes.onChange("dataTheme",e)),n}var U=["inherit"];[...Array(8).keys()].forEach(e=>{U.push(`decrease-${e}`),U.push(`increase-${e}`)});function te(e,t="inherit"){if(!U.includes(t))throw Error(`size name "${t}" invalid`);let s;if(t=="inherit")s=e;else if(t!=null&&t.startsWith("increase-")){let n=parseInt(t.replace("increase-",""),10);s=e+n}else if(t!=null&&t.startsWith("decrease-")){let n=parseInt(t.replace("decrease-",""),10);s=e-n}else s=e;return Math.max(0,Math.min(8,s))}function Ne(e){if(!e)return 2;let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataSize"));)s=s.parent;let n=2;return s&&s.attributes&&s.attributes.has("dataSize")&&(n=te(n,s.attributes.get("dataSize")),typeof e=="function"&&s.attributes.onChange("dataSize",e)),n}function Re(e,t="inherit"){let s=te(Ne(e),t);return g().fontSizes[s]}var H=["inherit"];[...Array(5).keys()].forEach(e=>{H.push(`decrease-${e}`),H.push(`increase-${e}`)});function $e(e,t="inherit"){if(!H.includes(t))throw Error(`density name "${t}" invalid`);let s;if(t=="inherit")s=e;else if(t!=null&&t.startsWith("increase-")){let n=parseInt(t.replace("increase-",""),10);s=e+n}else if(t!=null&&t.startsWith("decrease-")){let n=parseInt(t.replace("decrease-",""),10);s=e-n}else s=e;return Math.max(0,Math.min(4,s))}function Me(e){if(!e)return 2;let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataDensity"));)s=s.parent;let n=2;return s&&s.attributes&&s.attributes.has("dataDensity")&&(n=$e(n,s.attributes.get("dataDensity")),typeof e=="function"&&s.attributes.onChange("dataDensity",e)),n}function Le(e){let t=Me(e);return d(e?_(e):"light").densities[t]}var E=12,N=["inherit","base"];[...Array(E).keys()].forEach(e=>{N.push(`decrease-${e}`),N.push(`increase-${e}`),N.push(`shift-${e}`)});function se(e,t){if(e<0||e>E-1)return e;let s=e+t;return s=Math.max(0,Math.min(E-1,s)),s}function Be(e,t){if(e<0||e>E-1)return e;let s=e<=5?e+t:e-t;return s=s<0||s>E-1?-s:s,s=Math.max(0,Math.min(E-1,s)),s}function R(e,t="inherit"){if(typeof t=="number")return t;if(t=="inherit")return e;if(!N.includes(t))throw Error(`tone name "${t}" invalid`);if(t.startsWith("increase-")){let s=parseInt(t.replace("increase-",""),10);return se(e,s)}else if(t.startsWith("decrease-")){let s=parseInt(t.replace("decrease-",""),10);return se(e,-s)}else if(t.startsWith("shift-")){let s=parseInt(t.replace("shift-",""),10);return Be(e,s)}else return e}function ne(e){if(!e)return 0;let s=typeof e=="function"?e.elementNode:e;for(;s&&(!s.attributes||!s.attributes.get("dataTone"));)s=s.parent;let n=0;return s&&s.attributes&&s.attributes.has("dataTone")&&(n=R(n,s.attributes.get("dataTone")),typeof e=="function"&&s.attributes.onChange("dataTone",e)),n}function Oe(e,t="inherit"){return R(ne(e),t)}function Ae(e,t="inherit",s="inherit"){let n=typeof e=="function"?e.elementNode:e,i=s=="inherit"?n.getContext("themeColor")||"neutral":s,r;return t=="base"?r=d(_(e)).baseTones[i]:r=R(ne(e),t),g()[i][r]}function Ie(e,t="inherit",s="inherit"){let n=s=="inherit"?"neutral":s;if(!e)return g()[n][R(0,t)];let i;return t=="base"?i=d(_(e)).baseTones[n]:i=Oe(e,t),g()[n][i]}return ae(je);})();
5
5
  //# sourceMappingURL=core-theme.global.js.map