sprae 12.4.1 → 12.4.3

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/core.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import store, { _change, _signals } from "./store.js";
2
2
 
3
+
4
+
3
5
  /** Symbol for disposal (using standard Symbol.dispose if available) */
4
6
  export const _dispose = (Symbol.dispose ||= Symbol("dispose"))
5
7
 
@@ -82,6 +84,7 @@ export let directive = {};
82
84
  */
83
85
  export let modifier = {}
84
86
 
87
+
85
88
  let currentDir = null;
86
89
  let currentEl = null;
87
90
 
@@ -202,6 +205,10 @@ const sprae = (el = document.body, state) => {
202
205
  return state;
203
206
  }
204
207
 
208
+ /** Package version (injected by bundler) */
209
+ sprae.version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev'
210
+
211
+
205
212
  // directive initializer
206
213
  /** @type {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} */
207
214
  export let dir
@@ -292,6 +299,49 @@ export const decorate = (fn, mods) => {
292
299
  return fn
293
300
  }
294
301
 
302
+
303
+ /** MutationObserver reference, set by sprae.start() */
304
+ export let mo = null
305
+ /** Pauses MO during DOM mutations to prevent disposing managed elements */
306
+ export const mutate = (fn) => { mo?.disconnect(); fn(); mo?.observe(mo._root, { childList: true, subtree: true }) }
307
+
308
+ /**
309
+ * Auto-initializes sprae on dynamically added elements.
310
+ * Uses MutationObserver to detect new DOM nodes and apply directives.
311
+ *
312
+ * @param {Element} [root=document.body] - Root element to observe
313
+ * @param {Object} [values] - Initial state values
314
+ * @returns {Object} The reactive state object
315
+ *
316
+ * @example
317
+ * ```js
318
+ * // Auto-init on page load
319
+ * sprae.start(document.body, { count: 0 })
320
+ * ```
321
+ */
322
+ export const start = (root = document.body, values) => {
323
+ const state = store(values)
324
+ sprae(root, state);
325
+ mo = new MutationObserver(mutations => {
326
+ for (const m of mutations) {
327
+ for (const el of m.addedNodes) {
328
+ // el can be spraed or removed by subsprae (like within :each/:if)
329
+ if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {
330
+ // even if element has no spraeable attrs, some of its children can have
331
+ root[_add](el)
332
+ }
333
+ }
334
+ for (const el of m.removedNodes) {
335
+ // Only dispose if element is truly removed from document
336
+ if (el.nodeType === 1 && !root.contains(el)) el[_dispose]?.()
337
+ }
338
+ }
339
+ });
340
+ mo._root = root
341
+ mo.observe(root, { childList: true, subtree: true });
342
+ return state
343
+ }
344
+
295
345
  /**
296
346
  * @typedef {Object} FragmentLike
297
347
  * @property {Node[]} childNodes - Child nodes of the fragment
@@ -310,13 +360,15 @@ export const decorate = (fn, mods) => {
310
360
  export const frag = (tpl) => {
311
361
  if (!tpl.nodeType) return tpl // existing tpl
312
362
 
313
- let content = tpl.content.cloneNode(true), // document fragment holder of content
363
+ let doc = tpl.ownerDocument,
364
+ content = tpl.content.cloneNode(true), // document fragment holder of content
314
365
  attributes = [...tpl.attributes],
315
- ref = document.createTextNode(''),
366
+ ref = doc.createTextNode(''),
316
367
  // ensure at least one node
317
368
  childNodes = (content.append(ref), [...content.childNodes])
318
369
 
319
370
  return {
371
+ ownerDocument: doc,
320
372
  childNodes,
321
373
  content,
322
374
  remove: () => content.append(...childNodes),
@@ -1,4 +1,4 @@
1
- import { clsx, decorate } from "../core.js";
1
+ import { clsx } from "../core.js";
2
2
 
3
3
  /**
4
4
  * Class directive - manages CSS classes reactively.
@@ -12,9 +12,6 @@ import { clsx, decorate } from "../core.js";
12
12
  export default (el, st, ex, name) => {
13
13
  let _cur = new Set, _new
14
14
 
15
- // redefine target, if modifiers have one
16
- name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)
17
-
18
15
  return (v) => {
19
16
  _new = new Set
20
17
  if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))
package/directive/each.js CHANGED
@@ -1,4 +1,4 @@
1
- import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from "../core.js";
1
+ import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce, mutate } from "../core.js";
2
2
 
3
3
  /**
4
4
  * Each directive - renders list items from array/object/number.
@@ -14,12 +14,13 @@ export default (tpl, state, expr) => {
14
14
  let [itemVar, idxVar = "$"] = lhs.trim().replace(/\(|\)/g, '').split(/\s*,\s*/);
15
15
 
16
16
  // we need :if to be able to replace holder instead of tpl for :if :each case
17
- let holder = document.createTextNode("");
17
+ let doc = tpl.ownerDocument
18
+ let holder = doc.createTextNode("");
18
19
 
19
20
  // we re-create items any time new items are produced
20
21
  let cur, keys, items, prevl = 0
21
22
 
22
- let update = throttle(() => {
23
+ let update = throttle(() => mutate(() => {
23
24
  let i = 0, newItems = items, newl = newItems.length
24
25
 
25
26
  // plain array update, not store (signal with array) - updates full list
@@ -41,7 +42,7 @@ export default (tpl, state, expr) => {
41
42
 
42
43
  // batch append using DocumentFragment for efficiency
43
44
  let batchSize = newl - i
44
- let batch = batchSize > 1 ? document.createDocumentFragment() : null
45
+ let batch = batchSize > 1 ? doc.createDocumentFragment() : null
45
46
  let pending = batch ? [] : null
46
47
 
47
48
  // append
@@ -59,10 +60,10 @@ export default (tpl, state, expr) => {
59
60
  pending.push([ el, idx ])
60
61
  } else {
61
62
  holder.before(insertNode)
62
- let subscope = Object.create(state, {
63
- [itemVar]: { get: () => cur[idx] },
64
- [idxVar]: { value: keys ? keys[idx] : idx }
65
- })
63
+ let subscope = store({
64
+ get [itemVar]() { return cur[idx] },
65
+ [idxVar]: keys ? keys[idx] : idx
66
+ }, state)
66
67
  sprae(el, subscope)
67
68
  }
68
69
 
@@ -77,19 +78,19 @@ export default (tpl, state, expr) => {
77
78
  if (batch) {
78
79
  holder.before(batch)
79
80
  for (let [el, idx] of pending) {
80
- let subscope = Object.create(state, {
81
- [itemVar]: { get: () => cur[idx] },
82
- [idxVar]: { value: keys ? keys[idx] : idx }
83
- })
81
+ let subscope = store({
82
+ get [itemVar]() { return cur[idx] },
83
+ [idxVar]: keys ? keys[idx] : idx
84
+ }, state)
84
85
  sprae(el, subscope)
85
86
  }
86
87
  }
87
88
  }
88
89
 
89
90
  prevl = newl
90
- })
91
+ }))
91
92
 
92
- tpl.replaceWith(holder);
93
+ mutate(() => tpl.replaceWith(holder))
93
94
  tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template
94
95
 
95
96
  return Object.assign(value => {
package/directive/else.js CHANGED
@@ -10,6 +10,7 @@ export default (el) => {
10
10
  let _el, _prev = el
11
11
 
12
12
  _el = el.content ? frag(el) : el
13
+ _el[_state] ??= null // mark _el (frag) as needing sprae
13
14
 
14
15
  // find holder
15
16
  while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling
package/directive/html.js CHANGED
@@ -10,9 +10,10 @@ import sprae, { _dispose } from "../core.js"
10
10
  export default (el, state) => {
11
11
  // <template :html="a"/> - fragment case: use placeholder + range
12
12
  if (el.content) {
13
- let start = document.createTextNode(''),
14
- end = document.createTextNode(''),
15
- range = document.createRange()
13
+ let doc = el.ownerDocument,
14
+ start = doc.createTextNode(''),
15
+ end = doc.createTextNode(''),
16
+ range = doc.createRange()
16
17
  el.replaceWith(start, end)
17
18
  return v => {
18
19
  v = typeof v === 'function' ? v('') : v
package/directive/if.js CHANGED
@@ -1,4 +1,4 @@
1
- import sprae, { throttle, _on, _off, _state, frag } from '../core.js';
1
+ import sprae, { throttle, _on, _off, _state, frag, mutate } from '../core.js';
2
2
 
3
3
  /**
4
4
  * Conditional directive - shows/hides element based on condition.
@@ -16,8 +16,9 @@ export default (el, state) => {
16
16
  el[_state] ??= null
17
17
 
18
18
  _el = el.content ? frag(el) : el
19
+ _el[_state] ??= null // mark _el (frag) as needing sprae
19
20
 
20
- el.replaceWith(_holder = document.createTextNode(''))
21
+ mutate(() => el.replaceWith(_holder = el.ownerDocument.createTextNode('')))
21
22
  _el._holder = _holder._holder = _holder
22
23
 
23
24
 
@@ -27,13 +28,15 @@ export default (el, state) => {
27
28
  let match = _holder._clauses.find(([, s]) => s)
28
29
 
29
30
  if (match != _match) {
30
- _match?.[0].remove()
31
- _match?.[0][_off]?.()
32
- if (_match = match) {
33
- _holder.before(_match[0].content || _match[0])
34
- // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors
35
- !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()
36
- }
31
+ mutate(() => {
32
+ _match?.[0].remove()
33
+ _match?.[0][_off]?.()
34
+ if (_match = match) {
35
+ _holder.before(_match[0].content || _match[0])
36
+ // check if element needs initial sprae (null) vs just re-enabling (_on)
37
+ !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()
38
+ }
39
+ })
37
40
  }
38
41
  })
39
42
  }
@@ -7,7 +7,8 @@
7
7
  * @returns {(value: string | Element | null | false) => void} Update function
8
8
  */
9
9
  export default (el, state, expr) => {
10
- const comment = document.createComment(':portal')
10
+ const doc = el.ownerDocument
11
+ const comment = doc.createComment(':portal')
11
12
  let currentTarget = null
12
13
 
13
14
  // Insert placeholder before element
@@ -18,9 +19,9 @@ export default (el, state, expr) => {
18
19
  // For selectors, first try within the same root, then document
19
20
  const root = el.getRootNode()
20
21
  const target = typeof value === 'string'
21
- ? (root.querySelector?.(value) || document.querySelector(value))
22
+ ? (root.querySelector?.(value) || doc.querySelector(value))
22
23
  : value instanceof Element ? value
23
- : value ? document.body : null
24
+ : value ? doc.body : null
24
25
 
25
26
  // No change needed
26
27
  if (target === currentTarget) return
@@ -1,4 +1,4 @@
1
- import sprae, { store, untracked, _state, _signals, signal } from '../core.js'
1
+ import sprae, { store, untracked, frag, _state, _signals, signal } from '../core.js'
2
2
 
3
3
  /**
4
4
  * Scope directive - creates a child scope with local state.
@@ -10,7 +10,11 @@ import sprae, { store, untracked, _state, _signals, signal } from '../core.js'
10
10
  export default (el, rootState) => {
11
11
  // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it
12
12
  // el[_state] even replaces own :scope effect state
13
- let state = el[_state] = store({}, rootState), init = false;
13
+ let state = el[_state] = store({}, rootState), init = false
14
+
15
+ // <template :scope="{}" /> or previously initialized template
16
+ let _el = el.content ? frag(el) : el, _holder
17
+ if (el.content) el.replaceWith(_holder = el.ownerDocument.createTextNode(''))
14
18
 
15
19
  // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)
16
20
  // 2nd+ runs update subscope
@@ -31,6 +35,6 @@ export default (el, rootState) => {
31
35
  }
32
36
 
33
37
  // Object.assign(subscope, call(values, subscope))
34
- return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))
38
+ return !init && (init = true, delete el[_state], untracked(() => (_holder?.before(_el.content || _el), sprae(_el, state))))
35
39
  }
36
40
  }
@@ -1,4 +1,4 @@
1
- import { attr, decorate } from "../core.js";
1
+ import { attr } from "../core.js";
2
2
 
3
3
  /**
4
4
  * Style directive - sets inline styles reactively.
@@ -12,13 +12,10 @@ import { attr, decorate } from "../core.js";
12
12
  export default (el, st, ex, name) => {
13
13
  let _static;
14
14
 
15
- // redefine target, if modifiers have one
16
- if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;
17
-
18
15
  return v => {
19
- if (!_static) { _static = el.getAttribute("style") }
16
+ if (_static === undefined) _static = el.getAttribute("style") ?? ""
20
17
  v = typeof v === "function" ? v(el.style) : v
21
- if (typeof v === "string") attr(el, "style", _static + '; ' + v);
18
+ if (typeof v === "string") attr(el, "style", _static ? _static + '; ' + v : v);
22
19
  else {
23
20
  if (_static) attr(el, "style", _static);
24
21
  // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx
package/dist/sprae.js CHANGED
@@ -1,3 +1,3 @@
1
- var qe=Object.defineProperty;var Pe=(e,t)=>{for(var r in t)qe(e,r,{get:t[r],enumerable:!0})};var y=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),f=Symbol("state"),B=Symbol("on"),K=Symbol("off"),F=Symbol("init"),G=":",x,I,J,R=e=>e(),W=R,H={},$={},Q=null,U=null,Ke=e=>{if(!e?.tagName)return"";let t=e.tagName.toLowerCase();return e.id?t+="#"+e.id:e.className&&(t+="."+e.className.split(" ")[0]),`<${t}>`},Z=(e,t)=>{let r=`\u2234 ${e}`;if(U&&(r+=`
2
- in ${Ke(U)}`),Q&&t){let o=t.length>100?t.slice(0,80)+`\u2026 (${t.length} chars)`:t;r+=`
3
- ${Q}="${o}"`}console.error(r)},Ie=(e=document.body,t)=>{if(e[f])return Object.assign(e[f],t);t=V(t||{});let r=[],o=[];e[B]=()=>!o&&(o=r.map(s=>s())),e[K]=()=>(o?.map(s=>s()),o=null),e[y]||(e[y]=()=>(e[K](),e[K]=e[B]=e[y]=e[F]=e[f]=null));let n=e[F]=s=>{let i=s.attributes,a;if(i)for(let l=0;l<i.length;){let{name:c,value:p}=i[l];if(c.startsWith(G)){if(s.removeAttribute(c),Q=c,U=s,r.push(a=le(s,c.slice(G.length),p,t)),o.push(a()),f in s)return}else l++}if(s.firstChild!==void 0){let l=s.firstChild,c;for(;l;)c=l.nextSibling,l.nodeType==1&&n(l),l=c}else for(let l of s.childNodes)l.nodeType==1&&n(l)};return n(e),e[f]===void 0&&(e[f]=t),t},le,ce,m=e=>{let t=ae[e=e.trim()];if(t)return t;try{t=ce(e||"undefined")}catch(r){Z(r,e)}return ae[e]=function(r,o,n){try{let s=t?.call(this,r);return o?s?.then?(s.then(i=>n=o(i)).catch(i=>Z(i,e)),()=>typeof n=="function"&&n()):o(s):s}catch(s){Z(s,e)}}},ae={},Y=e=>(e.compile&&(ce=e.compile),e.prefix&&(G=e.prefix),e.signal&&(x=e.signal),e.effect&&(I=e.effect),e.computed&&(J=e.computed),e.batch&&(R=e.batch),e.untracked&&(W=e.untracked),e.dir&&(le=e.dir)),_=(e,t)=>{for(;t.length;){let[r,...o]=t.pop().split("-"),n=$[r],s;if(n&&(s=n(e,...o))!==e){for(let i in e)s[i]??(s[i]=e[i]);e=s}}return e},C=e=>{if(!e.nodeType)return e;let t=e.content.cloneNode(!0),r=[...e.attributes],o=document.createTextNode(""),n=(t.append(o),[...t.childNodes]);return{childNodes:n,content:t,remove:()=>t.append(...n),replaceWith(s){s!==o&&(o.before(s),t.append(...n))},attributes:r,removeAttribute(s){r.splice(r.findIndex(i=>i.name===s),1)}}},ue=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t,r)=>(r?"-":"")+t.toLowerCase()),S=(e,t,r)=>r==null||r===!1?e.removeAttribute(t):e.setAttribute(t,r===!0?"":r),v=(e,t=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(v):Object.entries(e).reduce((r,[o,n])=>n?[...r,o]:r,[])).join(" "):"",E=(e,t)=>{let r=0,o,n=typeof t=="function"?t:t?i=>setTimeout(i,t):queueMicrotask,s=i=>{o=i,r++||(e(o),n((a=r>1)=>(r=0,a&&s(o))))};return s},de=(e,t,r)=>{let o=typeof t=="function"?t:t?n=>setTimeout(n,t):queueMicrotask;return r?(n=>s=>!n&&(e(s),n=1,o(()=>n=0)))():((n=0)=>(s,i=++n)=>o(()=>i==n&&e(s)))()},u=Ie;var w=Symbol("signals"),A=Symbol("change"),te=Symbol("set"),ee=!0,L=(e,t)=>{if(!e||e[Symbol.toStringTag]||e[w])return e;if(e.constructor!==Object)return Array.isArray(e)?Re(e):e;let r=Object.keys(e).length,o={},n=new Proxy(Object.assign(o,{[A]:x(r),[w]:o}),{get:(i,a)=>a in o?o[a]?o[a].valueOf():o[a]:t?t[a]:typeof globalThis[a]=="function"&&!globalThis[a].prototype?globalThis[a].bind(globalThis):globalThis[a],set:(i,a,l)=>a in o?(fe(o,a,l),1):(ee=!1,t&&a in t?t[a]=l:(X(o,a,l),o[A].value=++r),ee=!0,1),deleteProperty:(i,a)=>(a in o&&(a[0]!="_"&&o[a]?.[Symbol.dispose]?.(),delete o[a],o[A].value=--r),1),ownKeys:()=>(o[A].value,Reflect.ownKeys(o)),has:(i,a)=>a in o?!0:t?a in t:ee}),s=Object.getOwnPropertyDescriptors(e);for(let i in e)s[i]?.get?(o[i]=J(s[i].get.bind(n)))[te]=s[i].set?.bind(n):X(o,i,e[i]);return n},Re=(e,t=globalThis)=>{let r=Array(e.length).fill(null),o=!1,n=a=>function(){return o=!0,a.apply(this,arguments)},s=x(e.length),i=new Proxy(Object.assign(r,{[A]:s,[w]:r,push:n(r.push),pop:n(r.pop),shift:n(r.shift),unshift:n(r.unshift),splice:n(r.splice)}),{get(a,l){return l==="length"?o?(o=!1,r.length):s.value:typeof l=="symbol"||isNaN(l)?r[l]?.valueOf()??t[l]:(r[l]??(r[l]=x(L(e[l])))).valueOf()},set(a,l,c){if(l==="length"){for(let p=c;p<r.length;p++)delete i[p];s.value=r.length=c}else l>=r.length?(X(r,l,c),i.length=+l+1):r[l]?fe(r,l,c):X(r,l,c);return 1},deleteProperty:(a,l)=>(r[l]?.[Symbol.dispose]?.(),delete r[l],1)});return i},X=(e,t,r)=>e[t]=t[0]=="_"||r?.peek?r:x(L(r)),fe=(e,t,r,o,n)=>t[0]==="_"?e[t]=r:r!==(n=(o=e[t]).peek())&&(o[te]?o[te](r):Array.isArray(r)&&Array.isArray(n)?A in n?W(()=>R(()=>{for(let s=0;s<r.length;s++)n[s]=r[s];n.length=r.length})):o.value=r:o.value=L(r)),V=L;var re={};Pe(re,{batch:()=>Ve,computed:()=>He,effect:()=>he,signal:()=>me,untracked:()=>ze});var j,pe=0,q,me=(e,t,r=new Set,o=()=>t.value)=>t={get value(){return j?.deps.add(r.add(j)),e},set value(n){if(n!==e){e=n;for(let s of r)q?q.add(s):s()}},peek(){return e},toJSON:o,toString:o,valueOf:o},he=(e,t,r,o)=>(r=n=>{let s=t;if(t=null,s?.call?.(),n=j,j=r,pe++>10)throw"Cycle detected";try{t=e()}finally{j=n,pe--}},r.fn=e,o=r.deps=new Set,r(),n=>{t?.call?.();for(n of o)n.delete(r);o.clear()}),He=(e,t=me(),r,o,n=()=>r.value)=>r={get value(){return o||(o=he(()=>t.value=e())),t.value},peek:t.peek,toJSON:n,toString:n,valueOf:n},Ve=(e,t=!q,r)=>{q??(q=new Set);try{e()}finally{if(t){[q,r]=[null,q];for(let o of r)o()}}},ze=(e,t,r)=>(t=j,j=null,r=e(),j=t,r);var ye=(e,t)=>{var s;let r,o,n;return e._holder?u(o=e,t):(e[s=f]??(e[s]=null),o=e.content?C(e):e,e.replaceWith(r=document.createTextNode("")),o._holder=r._holder=r,r._clauses=[o._clause=[o,!1]],r.update=E(()=>{let i=r._clauses.find(([,a])=>a);i!=n&&(n?.[0].remove(),n?.[0][K]?.(),(n=i)&&(r.before(n[0].content||n[0]),n[0][f]?n[0][B]?.():(delete n[0][f],u(n[0],t))))})),i=>{o._clause[1]=i,o._holder.update()}};var ge=e=>{let t,r=e;for(t=e.content?C(e):e;r&&!(t._holder=r._holder);)r=r.previousSibling;return e.remove(),e[f]=null,t._holder._clauses.push(t._clause=[t,!0]),t._holder.update};var be=e=>(e.content&&e.replaceWith(e=C(e).childNodes[0]),t=>(t=typeof t=="function"?t(e.textContent):t,e.textContent=t??""));var xe=(e,t,r,o)=>{let n=new Set,s;return o.includes(".")&&(e=_({target:e},o.split(".").slice(1)).target??e),i=>{s=new Set,i&&v(typeof i=="function"?i(e.className):i).split(" ").map(a=>a&&s.add(a));for(let a of n)s.has(a)?s.delete(a):e.classList.remove(a);for(let a of n=s)e.classList.add(a)}};var _e=(e,t,r,o)=>{let n;return o.includes(".")&&(e=_({target:e},o.split(".").slice(1)).target??e),s=>{if(n||(n=e.getAttribute("style")),s=typeof s=="function"?s(e.style):s,typeof s=="string")S(e,"style",n+"; "+s);else{n&&S(e,"style",n);for(let i in s)i[0]=="-"?e.style.setProperty(i,s[i]):i[0]>"A"&&(e.style[i]=s[i])}}};var Se=()=>e=>typeof e=="function"&&e();var oe=(e,t=m(`${e}=__`))=>(r,o)=>{r.__=o,t(r),delete r.__},we=(e,t,r)=>{try{let o=oe(r),n=e.type==="checkbox"?()=>o(t,e.checked):e.type==="select-multiple"?()=>o(t,[...e.selectedOptions].map(s=>s.value)):()=>o(t,e.selectedIndex<0?null:isNaN(e.valueAsNumber)?e.value:e.valueAsNumber);e.oninput=e.onchange=n,e.type?.startsWith("select")&&(new MutationObserver(n).observe(e,{childList:!0,subtree:!0,attributes:!0}),u(e,t)),m(r)(t)??n()}catch{}return e.type==="text"||e.type===""||e.tagName==="TEXTAREA"?(o,n,s)=>(n=e.selectionStart,s=e.selectionEnd,e.setAttribute("value",e.value=o??""),n&&e.setSelectionRange(n,s)):e.type==="checkbox"?o=>(e.checked=o,S(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,S(e,"checked",o)):e.type==="select-one"?o=>{for(let n of e.options)n.value==o?n.setAttribute("selected",""):n.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let n of e.options)n.removeAttribute("selected");for(let n of o)e.querySelector(`[value="${n}"]`).setAttribute("selected","")}:o=>e.value=o};var Ne=(e,t,r)=>{let o=m(r)(t);if(typeof o=="function")return{[Symbol.dispose]:o(e)};oe(r)(t,e)};var Ae=(e,t)=>{let r=e[f]=L({},t),o=!1;return n=>{if(n=typeof n=="function"?n(r):n,n!==r)for(let s in n){let i=typeof n[s]=="function"?n[s].bind(r):n[s];s in r[w]?r[s]=i:r[w][s]=s[0]=="_"||i?.peek?i:x(L(i))}return!o&&(o=!0,delete e[f],W(()=>u(e,r)))}};var Oe=(e,t,r)=>{let[o,n]=r.split(/\bin|of\b/),[s,i="$"]=o.trim().replace(/\(|\)/g,"").split(/\s*,\s*/),a=document.createTextNode(""),l,c,p,O=0,N=E(()=>{var T,h;let d=0,k=p,g=k.length;if(l&&!l[A]){for(let D of l[w]||[])D[Symbol.dispose]();l=null,O=0}if(g<O)l.length=g;else{if(!l)l=k;else for(;d<O;)l[d]=k[d++];let P=g-d>1?document.createDocumentFragment():null,ie=P?[]:null;for(;d<g;d++){l[d]=k[d];let M=d,b=e.content?C(e):e.cloneNode(!0),z=b.content||b;if(P)P.appendChild(z),ie.push([b,M]);else{a.before(z);let We=Object.create(t,{[s]:{get:()=>l[M]},[i]:{value:c?c[M]:M}});u(b,We)}let Me=((h=l[T=w]||(l[T]=[]))[d]||(h[d]={}))[Symbol.dispose];l[w][d][Symbol.dispose]=()=>{Me?.(),b[Symbol.dispose]?.(),b.remove()}}if(P){a.before(P);for(let[M,b]of ie){let z=Object.create(t,{[s]:{get:()=>l[b]},[i]:{value:c?c[b]:b}});u(M,z)}}}O=g});return e.replaceWith(a),e[f]=null,Object.assign(d=>(c=null,typeof d=="number"?p=Array.from({length:d},(k,g)=>g+1):d?.constructor===Object?(c=Object.keys(d),p=Object.values(d)):p=d||[],I(()=>{p[A]?.value,N()})),{eval:m(n)})};var Te=(e,t,r,o)=>n=>S(e,o,typeof n=="function"?n(e.getAttribute(o)):n);var Ce=e=>t=>{for(let r in t)S(e,ue(r),t[r])};var je=(e,t,r,o)=>{let[n,...s]=o.slice(2).split("."),i=m(r).bind(e),a=_(Object.assign(l=>i(t,c=>typeof c=="function"?c(l):c),{target:e}),s);return a.target.addEventListener(n,a,a),{[Symbol.dispose](){a.target.removeEventListener(n,a)}}};var ke=(e,t,r,o)=>{let n,s,i=o.split("..").map((a,l,{length:c})=>a.split(":").reduce((p,O)=>{let[N,...d]=O.slice(2).split("."),k=m(r).bind(e),g=(h,D)=>n=typeof h=="function"?h(D):h,T=_(Object.assign(h=>(l?g(n,h):k(t,D=>g(D,h)),s(),s=i[(l+1)%c]()),{target:e}),d);return h=>(h=p?.(),T.target.addEventListener(N,T,T),()=>(h?.(),T.target.removeEventListener(N,T)))},null));return s=i[0](),{[Symbol.dispose](){s?.()}}};var $e=(e,t)=>{if(e.content){let r=document.createTextNode(""),o=document.createTextNode(""),n=document.createRange();return e.replaceWith(r,o),s=>{if(s=typeof s=="function"?s(""):s,n.setStartAfter(r),n.setEndBefore(o),n.deleteContents(),s!=null&&s!==""){let i=n.createContextualFragment(s);u(i,t),n.insertNode(i)}}}return r=>(r=typeof r=="function"?r(e.innerHTML):r,e.innerHTML=r??"",u(e,t),e[y])};var Ee=(e,t,r)=>{let o=document.createComment(":portal"),n=null;return e.before(o),s=>{let i=e.getRootNode(),a=typeof s=="string"?i.querySelector?.(s)||document.querySelector(s):s instanceof Element?s:s?document.body:null;a!==n&&(a?a.appendChild(e):o.after(e),n=a)}};var Le=e=>t=>e.hidden=!!t;Object.assign(H,{_:(e,t,r,o)=>(o.startsWith("on")?je:Te)(e,t,r,o),"":Ce,class:xe,text:be,html:$e,style:_e,fx:Se,value:we,ref:Ne,scope:Ae,if:ye,else:ge,each:Oe,portal:Ee,hidden:Le});var Be=(e,t,r,o)=>{let[n,...s]=t.split("."),i=H[n]||H._;return()=>{let a=i(e,o,r,t);if(!a?.call)return a?.[y];let l=_(Object.assign(E(()=>c.value++),{target:e}),s),c=x(0),p=0,O=a.eval??m(r).bind(e),N,d=()=>(typeof N=="function"&&N(),N=null);return o=e[f]??o,I(()=>(c.value==p?l():(p=c.value,N=O(o,a)),d))}},Fe=e=>e?typeof e=="number"?e:(([,t,r]=e.match(/^(\d+)(ms|s|m)?$/)||[])=>(t=+t,r==="s"?t*1e3:r==="m"?t*6e4:t))():0,ne=e=>e==="idle"?requestIdleCallback:e==="raf"?requestAnimationFrame:!e||e==="tick"?queueMicrotask:t=>setTimeout(t,Fe(e));Object.assign($,{debounce:(e,t,r)=>de(e,ne(t==="immediate"?r:t),t==="immediate"||r==="immediate"),throttle:(e,t)=>E(e,ne(t)),delay:(e,t)=>((r=ne(t))=>o=>r(()=>e(o)))(),once:(e,t,r)=>(r=o=>!t&&(t=1,e(o)),r.once=!0,r),window:e=>(e.target=e.target.ownerDocument.defaultView,e),document:e=>(e.target=e.target.ownerDocument,e),root:e=>(e.target=e.target.ownerDocument.documentElement,e),body:e=>(e.target=e.target.ownerDocument.body,e),parent:e=>(e.target=e.target.parentNode,e),self:e=>t=>t.target===e.target&&e(t),away:e=>Object.assign(t=>!e.target.contains(t.target)&&t.target.isConnected&&e(t),{target:e.target.ownerDocument}),prevent:e=>t=>(t?.preventDefault(),e(t)),stop:(e,t)=>r=>(t?.[0]==="i"?r?.stopImmediatePropagation():r?.stopPropagation(),e(r)),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e)});$.outside=$.away;var se={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta",cmd:e=>e.metaKey||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},De=(e,t)=>se[e]?.(t)||t.key.toLowerCase()===e||t.keyCode==e;for(let e in se)$[e]=(t,r,o)=>n=>se[e](n)&&(!r||De(r,n))&&(!o||De(o,n))&&t(n);var Je=e=>{for(let t=0,r=0;r<e.length;r++)if(e[r]=="{")t++;else if(e[r]=="}")t--;else if(e[r]==";"&&!t)return!0;return!1};Y({compile:e=>(/^(if|let|const)\b/.test(e)||Je(e)||(e=`return ${e}`),/\bawait\s/.test(e)&&(e=`return (async()=>{${e}})()`),u.constructor(`with(arguments[0]){${e}}`)),dir:(e,t,r,o)=>t.includes("..")?()=>ke(e,o,r,t)[y]:t.split(":").reduce((n,s)=>{let i=Be(e,s,r,o);return n?(a,l)=>(a=n(),l=i(),()=>{a(),l()}):i},null),...re});u.use=Y;u.store=V;u.directive=H;u.modifier=$;u.dispose=e=>e[y]?.();var ar=u.start=(e=document.body,t)=>{let r=V(t);return u(e,r),new MutationObserver(n=>{for(let s of n){for(let i of s.addedNodes)i.nodeType===1&&i[f]===void 0&&e.contains(i)&&e[F](i);for(let i of s.removedNodes)i.nodeType===1&&i[y]?.()}}).observe(e,{childList:!0,subtree:!0}),r};u.version="12.4.1";var lr=u.dispose,cr=u;export{R as batch,J as computed,de as debounce,cr as default,lr as dispose,I as effect,x as signal,u as sprae,ar as start,V as store,E as throttle,W as untracked,Y as use};
1
+ var Ve=Object.defineProperty;var Fe=(e,r)=>{for(var t in r)Ve(e,t,{get:r[t],enumerable:!0})};var g=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),d=Symbol("state"),J=Symbol("on"),R=Symbol("off"),Q=Symbol("init"),U=":",_,V,X,F=e=>e(),M=F,H={},k={},Y=null,v=null,He=e=>{if(!e?.tagName)return"";let r=e.tagName.toLowerCase();return e.id?r+="#"+e.id:e.className&&(r+="."+e.className.split(" ")[0]),`<${r}>`},G=(e,r)=>{let t=`\u2234 ${e}`;if(v&&(t+=`
2
+ in ${He(v)}`),Y&&r){let o=r.length>100?r.slice(0,80)+`\u2026 (${r.length} chars)`:r;t+=`
3
+ ${Y}="${o}"`}console.error(t)},ee=(e=document.body,r)=>{if(e[d])return Object.assign(e[d],r);r=z(r||{});let t=[],o=[];e[J]=()=>!o&&(o=t.map(i=>i())),e[R]=()=>(o?.map(i=>i()),o=null),e[g]||(e[g]=()=>(e[R](),e[R]=e[J]=e[g]=e[Q]=e[d]=null));let n=e[Q]=i=>{let s=i.attributes,a;if(s)for(let c=0;c<s.length;){let{name:l,value:p}=s[c];if(l.startsWith(U)){if(i.removeAttribute(l),Y=l,v=i,t.push(a=fe(i,l.slice(U.length),p,r)),o.push(a()),d in i)return}else c++}if(i.firstChild!==void 0){let c=i.firstChild,l;for(;c;)l=c.nextSibling,c.nodeType==1&&n(c),c=l}else for(let c of i.childNodes)c.nodeType==1&&n(c)};return n(e),e[d]===void 0&&(e[d]=r),r};ee.version="12.4.3";var fe,pe,h=e=>{let r=de[e=e.trim()];if(r)return r;try{r=pe(e||"undefined")}catch(t){G(t,e)}return de[e]=function(t,o,n){try{let i=r?.call(this,t);return o?i?.then?(i.then(s=>n=o(s)).catch(s=>G(s,e)),()=>typeof n=="function"&&n()):o(i):i}catch(i){G(i,e)}}},de={},te=e=>(e.compile&&(pe=e.compile),e.prefix&&(U=e.prefix),e.signal&&(_=e.signal),e.effect&&(V=e.effect),e.computed&&(X=e.computed),e.batch&&(F=e.batch),e.untracked&&(M=e.untracked),e.dir&&(fe=e.dir)),W=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),n=k[t],i;if(n&&(i=n(e,...o))!==e){for(let s in e)i[s]??(i[s]=e[s]);e=i}}return e},q=null,P=e=>{q?.disconnect(),e(),q?.observe(q._root,{childList:!0,subtree:!0})},me=(e=document.body,r)=>{let t=z(r);return ee(e,t),q=new MutationObserver(o=>{for(let n of o){for(let i of n.addedNodes)i.nodeType===1&&i[d]===void 0&&e.contains(i)&&e[Q](i);for(let i of n.removedNodes)i.nodeType===1&&!e.contains(i)&&i[g]?.()}}),q._root=e,q.observe(e,{childList:!0,subtree:!0}),t},S=e=>{if(!e.nodeType)return e;let r=e.ownerDocument,t=e.content.cloneNode(!0),o=[...e.attributes],n=r.createTextNode(""),i=(t.append(n),[...t.childNodes]);return{ownerDocument:r,childNodes:i,content:t,remove:()=>t.append(...i),replaceWith(s){s!==n&&(n.before(s),t.append(...i))},attributes:o,removeAttribute(s){o.splice(o.findIndex(a=>a.name===s),1)}}},he=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase()),w=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),re=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(re):Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[])).join(" "):"",E=(e,r)=>{let t=0,o,n=typeof r=="function"?r:r?s=>setTimeout(s,r):queueMicrotask,i=s=>{o=s,t++||(e(o),n((a=t>1)=>(t=0,a&&i(o))))};return i},ye=(e,r,t)=>{let o=typeof r=="function"?r:r?n=>setTimeout(n,r):queueMicrotask;return t?(n=>i=>!n&&(e(i),n=1,o(()=>n=0)))():((n=0)=>(i,s=++n)=>o(()=>s==n&&e(i)))()},f=ee;var N=Symbol("signals"),C=Symbol("change"),ne=Symbol("set"),oe=!0,A=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[N])return e;if(e.constructor!==Object)return Array.isArray(e)?ze(e):e;let t=Object.keys(e).length,o={},n=new Proxy(Object.assign(o,{[C]:_(t),[N]:o}),{get:(s,a)=>a in o?o[a]?o[a].valueOf():o[a]:r?r[a]:typeof globalThis[a]=="function"&&!globalThis[a].prototype?globalThis[a].bind(globalThis):globalThis[a],set:(s,a,c)=>a in o?(ge(o,a,c),1):(oe=!1,r&&a in r?r[a]=c:(Z(o,a,c),o[C].value=++t),oe=!0,1),deleteProperty:(s,a)=>(a in o&&(a[0]!="_"&&o[a]?.[Symbol.dispose]?.(),delete o[a],o[C].value=--t),1),ownKeys:()=>(o[C].value,Reflect.ownKeys(o)),has:(s,a)=>a in o?!0:r?a in r:oe}),i=Object.getOwnPropertyDescriptors(e);for(let s in e)i[s]?.get?(o[s]=X(i[s].get.bind(n)))[ne]=i[s].set?.bind(n):Z(o,s,e[s]);return n},ze=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,n=a=>function(){return o=!0,a.apply(this,arguments)},i=_(e.length),s=new Proxy(Object.assign(t,{[C]:i,[N]:t,push:n(t.push),pop:n(t.pop),shift:n(t.shift),unshift:n(t.unshift),splice:n(t.splice)}),{get(a,c){return c==="length"?o?(o=!1,t.length):i.value:typeof c=="symbol"||isNaN(c)?t[c]?.valueOf()??r[c]:(t[c]??(t[c]=_(A(e[c])))).valueOf()},set(a,c,l){if(c==="length"){for(let p=l;p<t.length;p++)delete s[p];i.value=t.length=l}else c>=t.length?(Z(t,c,l),s.length=+c+1):t[c]?ge(t,c,l):Z(t,c,l);return 1},deleteProperty:(a,c)=>(t[c]?.[Symbol.dispose]?.(),delete t[c],1)});return s},Z=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:_(A(t)),ge=(e,r,t,o,n)=>r[0]==="_"?e[r]=t:t!==(n=(o=e[r]).peek())&&(o[ne]?o[ne](t):Array.isArray(t)&&Array.isArray(n)?C in n?M(()=>F(()=>{for(let i=0;i<t.length;i++)n[i]=t[i];n.length=t.length})):o.value=t:o.value=A(t)),z=A;var ie={};Fe(ie,{batch:()=>Je,computed:()=>Be,effect:()=>_e,signal:()=>xe,untracked:()=>Xe});var j,be=0,I,xe=(e,r,t=new Set,o=()=>r.value)=>r={get value(){return j?.deps.add(t.add(j)),e},set value(n){if(n!==e){e=n;for(let i of t)I?I.add(i):i()}},peek(){return e},toJSON:o,toString:o,valueOf:o},_e=(e,r,t,o)=>(t=n=>{let i=r;if(r=null,i?.call?.(),n=j,j=t,be++>10)throw"Cycle detected";try{r=e()}finally{j=n,be--}},t.fn=e,o=t.deps=new Set,t(),n=>{r?.call?.();for(n of o)n.delete(t);o.clear()}),Be=(e,r=xe(),t,o,n=()=>t.value)=>t={get value(){return o||(o=_e(()=>r.value=e())),r.value},peek:r.peek,toJSON:n,toString:n,valueOf:n},Je=(e,r=!I,t)=>{I??(I=new Set);try{e()}finally{if(r){[I,t]=[null,I];for(let o of t)o()}}},Xe=(e,r,t)=>(r=j,j=null,t=e(),j=r,t);var Se=(e,r)=>{var i,s;let t,o,n;return e._holder?f(o=e,r):(e[i=d]??(e[i]=null),o=e.content?S(e):e,o[s=d]??(o[s]=null),P(()=>e.replaceWith(t=e.ownerDocument.createTextNode(""))),o._holder=t._holder=t,t._clauses=[o._clause=[o,!1]],t.update=E(()=>{let a=t._clauses.find(([,c])=>c);a!=n&&P(()=>{n?.[0].remove(),n?.[0][R]?.(),(n=a)&&(t.before(n[0].content||n[0]),n[0][d]?n[0][J]?.():(delete n[0][d],f(n[0],r)))})})),a=>{o._clause[1]=a,o._holder.update()}};var we=e=>{var o;let r,t=e;for(r=e.content?S(e):e,r[o=d]??(r[o]=null);t&&!(r._holder=t._holder);)t=t.previousSibling;return e.remove(),e[d]=null,r._holder._clauses.push(r._clause=[r,!0]),r._holder.update};var Ne=e=>(e.content&&e.replaceWith(e=S(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""));var Ae=(e,r,t,o)=>{let n=new Set,i;return s=>{i=new Set,s&&re(typeof s=="function"?s(e.className):s).split(" ").map(a=>a&&i.add(a));for(let a of n)i.has(a)?i.delete(a):e.classList.remove(a);for(let a of n=i)e.classList.add(a)}};var Oe=(e,r,t,o)=>{let n;return i=>{if(n===void 0&&(n=e.getAttribute("style")??""),i=typeof i=="function"?i(e.style):i,typeof i=="string")w(e,"style",n?n+"; "+i:i);else{n&&w(e,"style",n);for(let s in i)s[0]=="-"?e.style.setProperty(s,i[s]):s[0]>"A"&&(e.style[s]=i[s])}}};var Te=()=>e=>typeof e=="function"&&e();var se=(e,r=h(`${e}=__`))=>(t,o)=>{t.__=o,r(t),delete t.__},Ce=(e,r,t)=>{try{let o=se(t),n=e.type==="checkbox"?()=>o(r,e.checked):e.type==="select-multiple"?()=>o(r,[...e.selectedOptions].map(i=>i.value)):()=>o(r,e.selectedIndex<0?null:isNaN(e.valueAsNumber)?e.value:e.valueAsNumber);e.oninput=e.onchange=n,e.type?.startsWith("select")&&(new MutationObserver(n).observe(e,{childList:!0,subtree:!0,attributes:!0}),f(e,r)),h(t)(r)??n()}catch{}return e.type==="text"||e.type===""||e.tagName==="TEXTAREA"?(o,n,i)=>(n=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=o??""),n&&e.setSelectionRange(n,i)):e.type==="checkbox"?o=>(e.checked=o,w(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,w(e,"checked",o)):e.type==="select-one"?o=>{for(let n of e.options)n.value==o?n.setAttribute("selected",""):n.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let n of e.options)n.removeAttribute("selected");for(let n of o)e.querySelector(`[value="${n}"]`).setAttribute("selected","")}:o=>e.value=o};var De=(e,r,t)=>{let o=h(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};se(t)(r,e)};var je=(e,r)=>{let t=e[d]=A({},r),o=!1,n=e.content?S(e):e,i;return e.content&&e.replaceWith(i=e.ownerDocument.createTextNode("")),s=>{if(s=typeof s=="function"?s(t):s,s!==t)for(let a in s){let c=typeof s[a]=="function"?s[a].bind(t):s[a];a in t[N]?t[a]=c:t[N][a]=a[0]=="_"||c?.peek?c:_(A(c))}return!o&&(o=!0,delete e[d],M(()=>(i?.before(n.content||n),f(n,t))))}};var ke=(e,r,t)=>{let[o,n]=t.split(/\bin|of\b/),[i,s="$"]=o.trim().replace(/\(|\)/g,"").split(/\s*,\s*/),a=e.ownerDocument,c=a.createTextNode(""),l,p,b,O=0,D=E(()=>P(()=>{var y,$;let u=0,T=b,m=T.length;if(l&&!l[C]){for(let le of l[N]||[])le[Symbol.dispose]();l=null,O=0}if(m<O)l.length=m;else{if(!l)l=T;else for(;u<O;)l[u]=T[u++];let K=m-u>1?a.createDocumentFragment():null,ue=K?[]:null;for(;u<m;u++){l[u]=T[u];let L=u,x=e.content?S(e):e.cloneNode(!0),B=x.content||x;if(K)K.appendChild(B),ue.push([x,L]);else{c.before(B);let Re=A({get[i](){return l[L]},[s]:p?p[L]:L},r);f(x,Re)}let Ke=(($=l[y=N]||(l[y]=[]))[u]||($[u]={}))[Symbol.dispose];l[N][u][Symbol.dispose]=()=>{Ke?.(),x[Symbol.dispose]?.(),x.remove()}}if(K){c.before(K);for(let[L,x]of ue){let B=A({get[i](){return l[x]},[s]:p?p[x]:x},r);f(L,B)}}}O=m}));return P(()=>e.replaceWith(c)),e[d]=null,Object.assign(u=>(p=null,typeof u=="number"?b=Array.from({length:u},(T,m)=>m+1):u?.constructor===Object?(p=Object.keys(u),b=Object.values(u)):b=u||[],V(()=>{b[C]?.value,D()})),{eval:h(n)})};var Ee=(e,r,t,o)=>n=>w(e,o,typeof n=="function"?n(e.getAttribute(o)):n);var $e=e=>r=>{for(let t in r)w(e,he(t),r[t])};var Le=(e,r,t,o)=>{let[n,...i]=o.slice(2).split("."),s=h(t).bind(e),a=W(Object.assign(c=>s(r,l=>typeof l=="function"?l(c):l),{target:e}),i);return a.target.addEventListener(n,a,a),{[Symbol.dispose](){a.target.removeEventListener(n,a)}}};var qe=(e,r,t,o)=>{let n,i,s=o.split("..").map((a,c,{length:l})=>a.split(":").reduce((p,b)=>{let[O,...D]=b.slice(2).split("."),u=h(t).bind(e),T=(y,$)=>n=typeof y=="function"?y($):y,m=W(Object.assign(y=>(c?T(n,y):u(r,$=>T($,y)),i(),i=s[(c+1)%l]()),{target:e}),D);return y=>(y=p?.(),m.target.addEventListener(O,m,m),()=>(y?.(),m.target.removeEventListener(O,m)))},null));return i=s[0](),{[Symbol.dispose](){i?.()}}};var Me=(e,r)=>{if(e.content){let t=e.ownerDocument,o=t.createTextNode(""),n=t.createTextNode(""),i=t.createRange();return e.replaceWith(o,n),s=>{if(s=typeof s=="function"?s(""):s,i.setStartAfter(o),i.setEndBefore(n),i.deleteContents(),s!=null&&s!==""){let a=i.createContextualFragment(s);f(a,r),i.insertNode(a)}}}return t=>(t=typeof t=="function"?t(e.innerHTML):t,e.innerHTML=t??"",f(e,r),e[g])};var We=(e,r,t)=>{let o=e.ownerDocument,n=o.createComment(":portal"),i=null;return e.before(n),s=>{let a=e.getRootNode(),c=typeof s=="string"?a.querySelector?.(s)||o.querySelector(s):s instanceof Element?s:s?o.body:null;c!==i&&(c?c.appendChild(e):n.after(e),i=c)}};var Pe=e=>r=>e.hidden=!!r;Object.assign(H,{_:Ee,"":$e,class:Ae,text:Ne,html:Me,style:Oe,fx:Te,value:Ce,ref:De,scope:je,if:Se,else:we,each:ke,portal:We,hidden:Pe});var Ze=(e,r,t,o)=>{let[n,...i]=r.split("."),s=H[n]||H._;return()=>{let a=_(0),c=W(Object.assign(E(()=>a.value++),{target:e}),i),l=c.target??e,p=s(l,o,t,n);if(!p?.call)return p?.[g];let b=0,O=p.eval??h(t).bind(l),D,u=()=>(typeof D=="function"&&D(),D=null);return o=l[d]??o,V(()=>{let T=a.value==b?c():(b=a.value,D=O(o,p));return u})}},Ge=e=>e?typeof e=="number"?e:(([,r,t]=e.match(/^(\d+)(ms|s|m)?$/)||[])=>(r=+r,t==="s"?r*1e3:t==="m"?r*6e4:r))():0,ae=e=>e==="idle"?requestIdleCallback:e==="raf"?requestAnimationFrame:!e||e==="tick"?queueMicrotask:r=>setTimeout(r,Ge(e));Object.assign(k,{debounce:(e,r,t)=>ye(e,ae(r==="immediate"?t:r),r==="immediate"||t==="immediate"),throttle:(e,r)=>E(e,ae(r)),delay:(e,r)=>((t=ae(r))=>o=>t(()=>e(o)))(),tick:e=>r=>queueMicrotask(()=>e(r)),raf:e=>r=>requestAnimationFrame(()=>e(r)),once:(e,r,t)=>(t=o=>!r&&(r=1,e(o)),t.once=!0,t),window:e=>(e.target=e.target.ownerDocument.defaultView,e),document:e=>(e.target=e.target.ownerDocument,e),root:e=>(e.target=e.target.ownerDocument.documentElement,e),body:e=>(e.target=e.target.ownerDocument.body,e),parent:e=>(e.target=e.target.parentNode,e),self:e=>r=>r.target===e.target&&e(r),away:e=>Object.assign(r=>!e.target.contains(r.target)&&r.target.isConnected&&e(r),{target:e.target.ownerDocument}),prevent:e=>r=>(r?.preventDefault(),e(r)),stop:(e,r)=>t=>(r?.[0]==="i"?t?.stopImmediatePropagation():t?.stopPropagation(),e(t)),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e)});k.outside=k.away;var ce={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta",cmd:e=>e.metaKey||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},Ie=(e,r)=>ce[e]?.(r)||r.key.toLowerCase()===e||r.keyCode==e;for(let e in ce)k[e]=(r,t,o)=>n=>ce[e](n)&&(!t||Ie(t,n))&&(!o||Ie(o,n))&&r(n);var Qe=e=>{for(let r=0,t=0;t<e.length;t++)if(e[t]=="{")r++;else if(e[t]=="}")r--;else if(e[t]==";"&&!r)return!0;return!1};te({compile:e=>(/^(if|let|const)\b/.test(e)||Qe(e)||(e=`return ${e}`),/\bawait\s/.test(e)&&(e=`return (async()=>{${e}})()`),f.constructor(`with(arguments[0]){${e}}`)),dir:(e,r,t,o)=>r.includes("..")?()=>qe(e,o,t,r)[g]:r.split(":").reduce((n,i)=>{let s=i.startsWith("on")?()=>Le(e,o,t,i)[g]:Ze(e,i,t,o);return n?(a,c)=>(a=n(),c=s(),()=>{a(),c()}):s},null),...ie});f.use=te;f.store=z;f.directive=H;f.modifier=k;var dr=f.dispose=e=>e[g]?.();f.start=me;var fr=f;export{F as batch,X as computed,ye as debounce,fr as default,dr as dispose,V as effect,_ as signal,f as sprae,me as start,z as store,E as throttle,M as untracked,te as use};