const y = [], I = []; setInterval(() => { let e = new Set(I.splice(0)); for (let t of e) y[t][0] && y[t][1](); }, 25); function L() { const e = performance.now().toString(36), t = Math.random().toString(36).substring(2, 5); return `${e}-${t}`; } function $() { for (let e of y) e[0] && e[1](); } var g = []; function C(e) { let t = y.length; return g.push(t), y.push([!0, e]), e(), g.pop(), t; } function j(e, t) { let i = e.getAttribute("vbind-fns"), n = C(t); i ? i += "," + n : i = String(n), e.setAttribute("vbind-fns", i); } const x = Symbol("isProxy"), S = Symbol("DataID"); window.$u = (e) => { y[e][1](); }; function E(e) { return A({ value: e }); } function A(e, t = !1) { const i = L(); let n = !1; Object.prototype.toString.call(e) === "[object Array]" && (n = !0); const l = {}, d = { get(r, s, a) { if (s === x) return !0; if (s === S) return i; const u = Reflect.get(r, s, a); if (typeof u == "object" && u !== null) { if (u[x]) return u; { let f = A(u, t); return Reflect.set(r, s, f, a), f; } } let c = -1; if (g.length > 0) { let f = s; c = g[g.length - 1], n && (f = ""), l[f] ? l[f].indexOf(c) == -1 && l[f].push(c) : l[f] = [c]; } return t && console.log(`${i} get ${s.toString()}:${u} ${c}`), u; }, set(r, s, a, u) { const c = Reflect.set(r, s, a, u); if (t && console.log(`${i} set ${s.toString()} ${a}`, l, c), c && g.length === 0) { let f = s; if (n && (f = ""), l[f]) for (let b of l[f]) I.push(b); } return c; }, deleteProperty(r, s) { return Reflect.deleteProperty(r, s); } }; return new Proxy(e, d); } const h = { Watch: A, Listen: C, Ref: E, DomListen: j, ForceUpdate: $, DataID: S, GenUniqueID: L }, R = ["div", "img", "span", "p", "a", "input"], U = (e, t, i) => (typeof e == "string" && (R.indexOf(e) >= 0 ? e = { typ: e } : e = { class: e }), t && (e.children = t), i && (e.attrs = i), w(e)), M = (e, t, i) => w({ typ: "span", class: t, children: [e], attrs: i }), w = (e) => { let t = document.createElement(e.typ || "div"); if (e.id && (t.id = e.id), e.class && t.classList.add(...e.class.split(" ")), e.vclass) for (let i of e.vclass) { let n = []; h.DomListen(t, () => { t.classList.remove(...n), n = i().split(" "), t.classList.add(...n); }); } if (e.attrs) for (let i in e.attrs) { let n = e.attrs[i]; typeof n == "function" ? h.DomListen(t, () => { t.setAttribute(i, n()); }) : t.setAttribute(i, String(n)); } if (e.onclick && (t.onclick = e.onclick), e.children && p(t, e.children, !0), e.style) { const i = /([a-zA-Z-]+)\s*:\s*([^;]+);?/g; let n; for (; (n = i.exec(e.style)) !== null; ) { const l = n[1].trim(), d = n[2].trim(); t.style.setProperty(l, d); } } return t.setAttribute("voa", "1"), e.updator && h.DomListen(t, () => { e.updator(t); }), e.vbind && e.typ === "input" && (h.DomListen(t, () => { t.setAttribute("value", Reflect.get(e.vbind[0], e.vbind[1])); }), t.addEventListener("input", (i) => { Reflect.set(e.vbind[0], e.vbind[1], i.target.value); })), t; }; function p(e, t, i = !1, n = !1) { if (i && (e.innerHTML = ""), typeof t == "function") n ? p(e, t(), i, !0) : h.DomListen(e, () => { p(e, t(), i, !0); }); else if (typeof t == "string" || typeof t == "number") e.innerHTML = String(t); else if (Array.isArray(t)) for (let l of t) p(e, l, i && t.length === 1, n); else t && t.iterID ? B(e, t, n) : t && t.ifID ? P(e, t, n) : t instanceof Element ? e.appendChild(t) : typeof t > "u" || t === null || console.warn("unknown child type", t); } function P(e, t, i = !1) { let n = () => { let l = O(); for (let o of t.rules) { let r = !!o[0]; if (typeof o[0] == "function" && (r = !!o[0]()), r) { typeof o[1] == "function" ? l = o[1]() : l = o[1]; break; } } let d = null; for (let o of e.children) o.getAttribute("vbind-if") === t.ifID && (d = o); l.setAttribute("vbind-if", t.ifID), d ? e.replaceChild(l, d) : e.appendChild(l); }; i ? n() : h.DomListen(e, n); } const k = (e, t, i, n) => { n || (n = h.GenUniqueID()); let l = document.createElement("div"); return l.style.display = "none", l.style.visibility = "hidden", l.style.height = "0", l.style.width = "0", i && (l = i()), l.setAttribute("vbind-iternone", n), { obj: e, fn: t, iterID: n, ifnone: l }; }; function B(e, t, i = !1) { let n = () => { let l = []; for (let r = 0; r < t.obj.length; r++) { let s = t.obj[r], a = s[h.DataID] || "", u = ""; r < t.obj.length - 1 && (u = t.obj[r + 1][h.DataID] || ""), l.push(a); let c = -1, f = null, b = null, m = !1; for (let D = 0; D < e.children.length; D++) { let v = e.children[D]; if (v.getAttribute("vbind-iter") === t.iterID) m = !0, v.getAttribute("vbind-iteridx") === a ? (c = D, f = v) : v.getAttribute("vbind-iteridx") === u && u != "" && (b = v); else if (v.getAttribute("vbind-iternone") === t.iterID) c == -1 && (b = v); else if (m) { b || (b = v); break; } } c == -1 ? (f = t.fn(s, r), f.setAttribute("vbind-iteridx", a), f.setAttribute("vbind-iter", t.iterID), b ? e.insertBefore(f, b) : e.appendChild(f)) : b && e.insertBefore(f, b); } let d = !1, o = []; for (let r of e.children) r.getAttribute("vbind-iter") === t.iterID && l.indexOf(r.getAttribute("vbind-iteridx") || "") == -1 && o.push(r), r.getAttribute("vbind-iternone") === t.iterID && (d = !0); o.forEach((r) => r.remove()), t.obj.length == 0 ? d || e.appendChild(t.ifnone) : d && e.removeChild(t.ifnone); }; i ? n() : h.DomListen(e, n); } function O() { let e = document.createElement("div"); return e.style.display = "none", e.style.visibility = "hidden", e.style.height = "0", e.style.width = "0", e; } export { U as default, h as proxy, U as v, k as vfor, M as vspan };