wcb/src/html.js
2023-12-12 22:06:12 +01:00

81 lines
2.5 KiB
JavaScript

const htm =
(new Map(),
function (n) {
for (
var e,
l,
s = arguments,
t = 1,
u = "",
r = "",
o = [0],
f = function (n) {
1 === t && (n || (u = u.replace(/^\s*\n\s*|\s*\n\s*$/g, "")))
? o.push(n ? s[n] : u)
: 3 === t && (n || u)
? ((o[1] = n ? s[n] : u), (t = 2))
: 2 === t && "..." === u && n
? (o[2] = Object.assign(o[2] || {}, s[n]))
: 2 === t && u && !n
? ((o[2] = o[2] || {})[u] = !0)
: t >= 5 &&
(5 === t
? (((o[2] = o[2] || {})[l] = n
? u
? u + s[n]
: s[n]
: u),
(t = 6))
: (n || u) && (o[2][l] += n ? u + s[n] : u)),
(u = "");
},
i = 0;
i < n.length;
i++
) {
i && (1 === t && f(), f(i));
for (var p = 0; p < n[i].length; p++)
(e = n[i][p]),
1 === t
? "<" === e
? (f(), (o = [o, "", null]), (t = 3))
: (u += e)
: 4 === t
? "--" === u && ">" === e
? ((t = 1), (u = ""))
: (u = e + u[0])
: r
? e === r
? (r = "")
: (u += e)
: '"' === e || "'" === e
? (r = e)
: ">" === e
? (f(), (t = 1))
: t &&
("=" === e
? ((t = 5), (l = u), (u = ""))
: "/" === e && (t < 5 || ">" === n[i][p + 1])
? (f(),
3 === t && (o = o[0]),
(t = o),
(o = o[0]).push(this.apply(null, t.slice(1))),
(t = 0))
: " " === e || "\t" === e || "\n" === e || "\r" === e
? (f(), (t = 2))
: (u += e)),
3 === t && "!--" === u && ((t = 4), (o = o[0]));
}
return f(), o.length > 2 ? o.slice(1) : o[1];
});
function h(type, props, ...children) {
return { type, props, children };
}
/**
* For htm license information please see ./vendors/htm/LICENSE.txt
* @license Apache <https://www.apache.org/licenses/LICENSE-2.0>
* @author Jason Miller <jason@developit.ca>
*/
export const html = htm.bind(h);