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 +54 -2
- package/directive/class.js +1 -4
- package/directive/each.js +15 -14
- package/directive/else.js +1 -0
- package/directive/html.js +4 -3
- package/directive/if.js +12 -9
- package/directive/portal.js +4 -3
- package/directive/scope.js +7 -3
- package/directive/style.js +3 -6
- package/dist/sprae.js +3 -3
- package/dist/sprae.js.map +3 -3
- package/dist/sprae.umd.js +3 -3
- package/dist/sprae.umd.js.map +3 -3
- package/package.json +1 -2
- package/readme.md +32 -21
- package/sprae.js +28 -55
- package/store.js +7 -2
- package/types/core.d.ts +7 -0
- package/types/core.d.ts.map +1 -1
- package/types/directive/class.d.ts.map +1 -1
- package/types/directive/each.d.ts.map +1 -1
- package/types/directive/else.d.ts.map +1 -1
- package/types/directive/html.d.ts.map +1 -1
- package/types/directive/if.d.ts.map +1 -1
- package/types/directive/portal.d.ts.map +1 -1
- package/types/directive/scope.d.ts.map +1 -1
- package/types/directive/style.d.ts.map +1 -1
- package/types/sprae.d.ts +3 -3
- package/types/sprae.d.ts.map +1 -1
- package/types/store.d.ts.map +1 -1
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
|
|
363
|
+
let doc = tpl.ownerDocument,
|
|
364
|
+
content = tpl.content.cloneNode(true), // document fragment holder of content
|
|
314
365
|
attributes = [...tpl.attributes],
|
|
315
|
-
ref =
|
|
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),
|
package/directive/class.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx
|
|
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
|
|
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 ?
|
|
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 =
|
|
63
|
-
[itemVar]
|
|
64
|
-
[idxVar]:
|
|
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 =
|
|
81
|
-
[itemVar]
|
|
82
|
-
[idxVar]:
|
|
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
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
|
|
14
|
-
|
|
15
|
-
|
|
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 =
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
}
|
package/directive/portal.js
CHANGED
|
@@ -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
|
|
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) ||
|
|
22
|
+
? (root.querySelector?.(value) || doc.querySelector(value))
|
|
22
23
|
: value instanceof Element ? value
|
|
23
|
-
: value ?
|
|
24
|
+
: value ? doc.body : null
|
|
24
25
|
|
|
25
26
|
// No change needed
|
|
26
27
|
if (target === currentTarget) return
|
package/directive/scope.js
CHANGED
|
@@ -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(
|
|
38
|
+
return !init && (init = true, delete el[_state], untracked(() => (_holder?.before(_el.content || _el), sprae(_el, state))))
|
|
35
39
|
}
|
|
36
40
|
}
|
package/directive/style.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { attr
|
|
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 (
|
|
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
|
|
2
|
-
in ${
|
|
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};
|