bliss/public/js/hyperscript.js
HRG @ SCExC 23414c7b66 wow
2024-06-02 00:39:30 -04:00

6491 lines
175 KiB
JavaScript

(function (e, t) {
const r = t(e);
if (typeof exports === "object" && typeof exports["nodeName"] !== "string") {
module.exports = r;
} else {
e["_hyperscript"] = r;
if ("document" in e) e["_hyperscript"].browserInit();
}
})(typeof self !== "undefined" ? self : this, (e) => {
"use strict";
const t = {
dynamicResolvers: [
function (e, t) {
if (e === "Fixed") {
return Number(t).toFixed();
} else if (e.indexOf("Fixed:") === 0) {
let r = e.split(":")[1];
return Number(t).toFixed(parseInt(r));
}
},
],
String: function (e) {
if (e.toString) {
return e.toString();
} else {
return "" + e;
}
},
Int: function (e) {
return parseInt(e);
},
Float: function (e) {
return parseFloat(e);
},
Number: function (e) {
return Number(e);
},
Date: function (e) {
return new Date(e);
},
Array: function (e) {
return Array.from(e);
},
JSON: function (e) {
return JSON.stringify(e);
},
Object: function (e) {
if (e instanceof String) {
e = e.toString();
}
if (typeof e === "string") {
return JSON.parse(e);
} else {
return Object.assign({}, e);
}
},
};
const r = {
attributes: "_, script, data-script",
defaultTransition: "all 500ms ease-in",
disableSelector: "[disable-scripting], [data-disable-scripting]",
hideShowStrategies: {},
conversions: t,
};
class n {
static OP_TABLE = {
"+": "PLUS",
"-": "MINUS",
"*": "MULTIPLY",
"/": "DIVIDE",
".": "PERIOD",
"..": "ELLIPSIS",
"\\": "BACKSLASH",
":": "COLON",
"%": "PERCENT",
"|": "PIPE",
"!": "EXCLAMATION",
"?": "QUESTION",
"#": "POUND",
"&": "AMPERSAND",
$: "DOLLAR",
";": "SEMI",
",": "COMMA",
"(": "L_PAREN",
")": "R_PAREN",
"<": "L_ANG",
">": "R_ANG",
"<=": "LTE_ANG",
">=": "GTE_ANG",
"==": "EQ",
"===": "EQQ",
"!=": "NEQ",
"!==": "NEQQ",
"{": "L_BRACE",
"}": "R_BRACE",
"[": "L_BRACKET",
"]": "R_BRACKET",
"=": "EQUALS",
};
static isValidCSSClassChar(e) {
return (
n.isAlpha(e) || n.isNumeric(e) || e === "-" || e === "_" || e === ":"
);
}
static isValidCSSIDChar(e) {
return (
n.isAlpha(e) || n.isNumeric(e) || e === "-" || e === "_" || e === ":"
);
}
static isWhitespace(e) {
return e === " " || e === "\t" || n.isNewline(e);
}
static positionString(e) {
return "[Line: " + e.line + ", Column: " + e.column + "]";
}
static isNewline(e) {
return e === "\r" || e === "\n";
}
static isNumeric(e) {
return e >= "0" && e <= "9";
}
static isAlpha(e) {
return (e >= "a" && e <= "z") || (e >= "A" && e <= "Z");
}
static isIdentifierChar(e, t) {
return e === "_" || e === "$";
}
static isReservedChar(e) {
return e === "`" || e === "^";
}
static isValidSingleQuoteStringStart(e) {
if (e.length > 0) {
var t = e[e.length - 1];
if (
t.type === "IDENTIFIER" ||
t.type === "CLASS_REF" ||
t.type === "ID_REF"
) {
return false;
}
if (t.op && (t.value === ">" || t.value === ")")) {
return false;
}
}
return true;
}
static tokenize(e, t) {
var r = [];
var a = e;
var o = 0;
var s = 0;
var u = 1;
var l = "<START>";
var c = 0;
function f() {
return t && c === 0;
}
while (o < a.length) {
if (
(q() === "-" &&
N() === "-" &&
(n.isWhitespace(I(2)) || I(2) === "" || I(2) === "-")) ||
(q() === "/" &&
N() === "/" &&
(n.isWhitespace(I(2)) || I(2) === "" || I(2) === "/"))
) {
h();
} else if (
q() === "/" &&
N() === "*" &&
(n.isWhitespace(I(2)) || I(2) === "" || I(2) === "*")
) {
v();
} else {
if (n.isWhitespace(q())) {
r.push(A());
} else if (
!R() &&
q() === "." &&
(n.isAlpha(N()) || N() === "{" || N() === "-")
) {
r.push(d());
} else if (!R() && q() === "#" && (n.isAlpha(N()) || N() === "{")) {
r.push(k());
} else if (q() === "[" && N() === "@") {
r.push(E());
} else if (q() === "@") {
r.push(T());
} else if (q() === "*" && n.isAlpha(N())) {
r.push(y());
} else if (n.isAlpha(q()) || (!f() && n.isIdentifierChar(q()))) {
r.push(x());
} else if (n.isNumeric(q())) {
r.push(g());
} else if (!f() && (q() === '"' || q() === "`")) {
r.push(w());
} else if (!f() && q() === "'") {
if (n.isValidSingleQuoteStringStart(r)) {
r.push(w());
} else {
r.push(b());
}
} else if (n.OP_TABLE[q()]) {
if (l === "$" && q() === "{") {
c++;
}
if (q() === "}") {
c--;
}
r.push(b());
} else if (f() || n.isReservedChar(q())) {
r.push(p("RESERVED", C()));
} else {
if (o < a.length) {
throw Error("Unknown token: " + q() + " ");
}
}
}
}
return new i(r, [], a);
function m(e, t) {
var r = p(e, t);
r.op = true;
return r;
}
function p(e, t) {
return {
type: e,
value: t || "",
start: o,
end: o + 1,
column: s,
line: u,
};
}
function h() {
while (q() && !n.isNewline(q())) {
C();
}
C();
}
function v() {
while (q() && !(q() === "*" && N() === "/")) {
C();
}
C();
C();
}
function d() {
var e = p("CLASS_REF");
var t = C();
if (q() === "{") {
e.template = true;
t += C();
while (q() && q() !== "}") {
t += C();
}
if (q() !== "}") {
throw Error("Unterminated class reference");
} else {
t += C();
}
} else {
while (n.isValidCSSClassChar(q())) {
t += C();
}
}
e.value = t;
e.end = o;
return e;
}
function E() {
var e = p("ATTRIBUTE_REF");
var t = C();
while (o < a.length && q() !== "]") {
t += C();
}
if (q() === "]") {
t += C();
}
e.value = t;
e.end = o;
return e;
}
function T() {
var e = p("ATTRIBUTE_REF");
var t = C();
while (n.isValidCSSIDChar(q())) {
t += C();
}
if (q() === "=") {
t += C();
if (q() === '"' || q() === "'") {
let e = w();
t += e.value;
} else if (
n.isAlpha(q()) ||
n.isNumeric(q()) ||
n.isIdentifierChar(q())
) {
let e = x();
t += e.value;
}
}
e.value = t;
e.end = o;
return e;
}
function y() {
var e = p("STYLE_REF");
var t = C();
while (n.isAlpha(q()) || q() === "-") {
t += C();
}
e.value = t;
e.end = o;
return e;
}
function k() {
var e = p("ID_REF");
var t = C();
if (q() === "{") {
e.template = true;
t += C();
while (q() && q() !== "}") {
t += C();
}
if (q() !== "}") {
throw Error("Unterminated id reference");
} else {
C();
}
} else {
while (n.isValidCSSIDChar(q())) {
t += C();
}
}
e.value = t;
e.end = o;
return e;
}
function x() {
var e = p("IDENTIFIER");
var t = C();
while (n.isAlpha(q()) || n.isNumeric(q()) || n.isIdentifierChar(q())) {
t += C();
}
if (q() === "!" && t === "beep") {
t += C();
}
e.value = t;
e.end = o;
return e;
}
function g() {
var e = p("NUMBER");
var t = C();
while (n.isNumeric(q())) {
t += C();
}
if (q() === "." && n.isNumeric(N())) {
t += C();
}
while (n.isNumeric(q())) {
t += C();
}
if (q() === "e" || q() === "E") {
if (n.isNumeric(N())) {
t += C();
} else if (N() === "-") {
t += C();
t += C();
}
}
while (n.isNumeric(q())) {
t += C();
}
e.value = t;
e.end = o;
return e;
}
function b() {
var e = m();
var t = C();
while (q() && n.OP_TABLE[t + q()]) {
t += C();
}
e.type = n.OP_TABLE[t];
e.value = t;
e.end = o;
return e;
}
function w() {
var e = p("STRING");
var t = C();
var r = "";
while (q() && q() !== t) {
if (q() === "\\") {
C();
let t = C();
if (t === "b") {
r += "\b";
} else if (t === "f") {
r += "\f";
} else if (t === "n") {
r += "\n";
} else if (t === "r") {
r += "\r";
} else if (t === "t") {
r += "\t";
} else if (t === "v") {
r += "\v";
} else if (t === "x") {
const t = S();
if (Number.isNaN(t)) {
throw Error(
"Invalid hexadecimal escape at " + n.positionString(e),
);
}
r += String.fromCharCode(t);
} else {
r += t;
}
} else {
r += C();
}
}
if (q() !== t) {
throw Error("Unterminated string at " + n.positionString(e));
} else {
C();
}
e.value = r;
e.end = o;
e.template = t === "`";
return e;
}
function S() {
const e = 16;
if (!q()) {
return NaN;
}
let t = e * Number.parseInt(C(), e);
if (!q()) {
return NaN;
}
t += Number.parseInt(C(), e);
return t;
}
function q() {
return a.charAt(o);
}
function N() {
return a.charAt(o + 1);
}
function I(e = 1) {
return a.charAt(o + e);
}
function C() {
l = q();
o++;
s++;
return l;
}
function R() {
return (
n.isAlpha(l) ||
n.isNumeric(l) ||
l === ")" ||
l === '"' ||
l === "'" ||
l === "`" ||
l === "}" ||
l === "]"
);
}
function A() {
var e = p("WHITESPACE");
var t = "";
while (q() && n.isWhitespace(q())) {
if (n.isNewline(q())) {
s = 0;
u++;
}
t += C();
}
e.value = t;
e.end = o;
return e;
}
}
tokenize(e, t) {
return n.tokenize(e, t);
}
}
class i {
constructor(e, t, r) {
this.tokens = e;
this.consumed = t;
this.source = r;
this.consumeWhitespace();
}
get list() {
return this.tokens;
}
_lastConsumed = null;
consumeWhitespace() {
while (this.token(0, true).type === "WHITESPACE") {
this.consumed.push(this.tokens.shift());
}
}
raiseError(e, t) {
a.raiseParseError(e, t);
}
requireOpToken(e) {
var t = this.matchOpToken(e);
if (t) {
return t;
} else {
this.raiseError(
this,
"Expected '" + e + "' but found '" + this.currentToken().value + "'",
);
}
}
matchAnyOpToken(e, t, r) {
for (var n = 0; n < arguments.length; n++) {
var i = arguments[n];
var a = this.matchOpToken(i);
if (a) {
return a;
}
}
}
matchAnyToken(e, t, r) {
for (var n = 0; n < arguments.length; n++) {
var i = arguments[n];
var a = this.matchToken(i);
if (a) {
return a;
}
}
}
matchOpToken(e) {
if (
this.currentToken() &&
this.currentToken().op &&
this.currentToken().value === e
) {
return this.consumeToken();
}
}
requireTokenType(e, t, r, n) {
var i = this.matchTokenType(e, t, r, n);
if (i) {
return i;
} else {
this.raiseError(this, "Expected one of " + JSON.stringify([e, t, r]));
}
}
matchTokenType(e, t, r, n) {
if (
this.currentToken() &&
this.currentToken().type &&
[e, t, r, n].indexOf(this.currentToken().type) >= 0
) {
return this.consumeToken();
}
}
requireToken(e, t) {
var r = this.matchToken(e, t);
if (r) {
return r;
} else {
this.raiseError(
this,
"Expected '" + e + "' but found '" + this.currentToken().value + "'",
);
}
}
peekToken(e, t, r) {
t = t || 0;
r = r || "IDENTIFIER";
if (
this.tokens[t] &&
this.tokens[t].value === e &&
this.tokens[t].type === r
) {
return this.tokens[t];
}
}
matchToken(e, t) {
if (this.follows.indexOf(e) !== -1) {
return;
}
t = t || "IDENTIFIER";
if (
this.currentToken() &&
this.currentToken().value === e &&
this.currentToken().type === t
) {
return this.consumeToken();
}
}
consumeToken() {
var e = this.tokens.shift();
this.consumed.push(e);
this._lastConsumed = e;
this.consumeWhitespace();
return e;
}
consumeUntil(e, t) {
var r = [];
var n = this.token(0, true);
while (
(t == null || n.type !== t) &&
(e == null || n.value !== e) &&
n.type !== "EOF"
) {
var i = this.tokens.shift();
this.consumed.push(i);
r.push(n);
n = this.token(0, true);
}
this.consumeWhitespace();
return r;
}
lastWhitespace() {
if (
this.consumed[this.consumed.length - 1] &&
this.consumed[this.consumed.length - 1].type === "WHITESPACE"
) {
return this.consumed[this.consumed.length - 1].value;
} else {
return "";
}
}
consumeUntilWhitespace() {
return this.consumeUntil(null, "WHITESPACE");
}
hasMore() {
return this.tokens.length > 0;
}
token(e, t) {
var r;
var n = 0;
do {
if (!t) {
while (this.tokens[n] && this.tokens[n].type === "WHITESPACE") {
n++;
}
}
r = this.tokens[n];
e--;
n++;
} while (e > -1);
if (r) {
return r;
} else {
return { type: "EOF", value: "<<<EOF>>>" };
}
}
currentToken() {
return this.token(0);
}
lastMatch() {
return this._lastConsumed;
}
static sourceFor = function () {
return this.programSource.substring(
this.startToken.start,
this.endToken.end,
);
};
static lineFor = function () {
return this.programSource.split("\n")[this.startToken.line - 1];
};
follows = [];
pushFollow(e) {
this.follows.push(e);
}
popFollow() {
this.follows.pop();
}
clearFollows() {
var e = this.follows;
this.follows = [];
return e;
}
restoreFollows(e) {
this.follows = e;
}
}
class a {
constructor(e) {
this.runtime = e;
this.possessivesDisabled = false;
this.addGrammarElement("feature", function (e, t, r) {
if (r.matchOpToken("(")) {
var n = e.requireElement("feature", r);
r.requireOpToken(")");
return n;
}
var i = e.FEATURES[r.currentToken().value || ""];
if (i) {
return i(e, t, r);
}
});
this.addGrammarElement("command", function (e, t, r) {
if (r.matchOpToken("(")) {
const t = e.requireElement("command", r);
r.requireOpToken(")");
return t;
}
var n = e.COMMANDS[r.currentToken().value || ""];
let i;
if (n) {
i = n(e, t, r);
} else if (r.currentToken().type === "IDENTIFIER") {
i = e.parseElement("pseudoCommand", r);
}
if (i) {
return e.parseElement("indirectStatement", r, i);
}
return i;
});
this.addGrammarElement("commandList", function (e, t, r) {
if (r.hasMore()) {
var n = e.parseElement("command", r);
if (n) {
r.matchToken("then");
const t = e.parseElement("commandList", r);
if (t) n.next = t;
return n;
}
}
return {
type: "emptyCommandListCommand",
op: function (e) {
return t.findNext(this, e);
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
});
this.addGrammarElement("leaf", function (e, t, r) {
var n = e.parseAnyOf(e.LEAF_EXPRESSIONS, r);
if (n == null) {
return e.parseElement("symbol", r);
}
return n;
});
this.addGrammarElement("indirectExpression", function (e, t, r, n) {
for (var i = 0; i < e.INDIRECT_EXPRESSIONS.length; i++) {
var a = e.INDIRECT_EXPRESSIONS[i];
n.endToken = r.lastMatch();
var o = e.parseElement(a, r, n);
if (o) {
return o;
}
}
return n;
});
this.addGrammarElement("indirectStatement", function (e, t, r, n) {
if (r.matchToken("unless")) {
n.endToken = r.lastMatch();
var i = e.requireElement("expression", r);
var a = {
type: "unlessStatementModifier",
args: [i],
op: function (e, t) {
if (t) {
return this.next;
} else {
return n;
}
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
n.parent = a;
return a;
}
return n;
});
this.addGrammarElement("primaryExpression", function (e, t, r) {
var n = e.parseElement("leaf", r);
if (n) {
return e.parseElement("indirectExpression", r, n);
}
e.raiseParseError(r, "Unexpected value: " + r.currentToken().value);
});
}
use(e) {
e(this);
return this;
}
GRAMMAR = {};
COMMANDS = {};
FEATURES = {};
LEAF_EXPRESSIONS = [];
INDIRECT_EXPRESSIONS = [];
initElt(e, t, r) {
e.startToken = t;
e.sourceFor = i.sourceFor;
e.lineFor = i.lineFor;
e.programSource = r.source;
}
parseElement(e, t, r = undefined) {
var n = this.GRAMMAR[e];
if (n) {
var i = t.currentToken();
var a = n(this, this.runtime, t, r);
if (a) {
this.initElt(a, i, t);
a.endToken = a.endToken || t.lastMatch();
var r = a.root;
while (r != null) {
this.initElt(r, i, t);
r = r.root;
}
}
return a;
}
}
requireElement(e, t, r, n) {
var i = this.parseElement(e, t, n);
if (!i) a.raiseParseError(t, r || "Expected " + e);
return i;
}
parseAnyOf(e, t) {
for (var r = 0; r < e.length; r++) {
var n = e[r];
var i = this.parseElement(n, t);
if (i) {
return i;
}
}
}
addGrammarElement(e, t) {
this.GRAMMAR[e] = t;
}
addCommand(e, t) {
var r = e + "Command";
var n = function (e, n, i) {
const a = t(e, n, i);
if (a) {
a.type = r;
a.execute = function (e) {
e.meta.command = a;
return n.unifiedExec(this, e);
};
return a;
}
};
this.GRAMMAR[r] = n;
this.COMMANDS[e] = n;
}
addFeature(e, t) {
var r = e + "Feature";
var n = function (n, i, a) {
var o = t(n, i, a);
if (o) {
o.isFeature = true;
o.keyword = e;
o.type = r;
return o;
}
};
this.GRAMMAR[r] = n;
this.FEATURES[e] = n;
}
addLeafExpression(e, t) {
this.LEAF_EXPRESSIONS.push(e);
this.addGrammarElement(e, t);
}
addIndirectExpression(e, t) {
this.INDIRECT_EXPRESSIONS.push(e);
this.addGrammarElement(e, t);
}
static createParserContext(e) {
var t = e.currentToken();
var r = e.source;
var n = r.split("\n");
var i = t && t.line ? t.line - 1 : n.length - 1;
var a = n[i];
var o = t && t.line ? t.column : a.length - 1;
return a + "\n" + " ".repeat(o) + "^^\n\n";
}
static raiseParseError(e, t) {
t =
(t || "Unexpected Token : " + e.currentToken().value) +
"\n\n" +
a.createParserContext(e);
var r = new Error(t);
r["tokens"] = e;
throw r;
}
raiseParseError(e, t) {
a.raiseParseError(e, t);
}
parseHyperScript(e) {
var t = this.parseElement("hyperscript", e);
if (e.hasMore()) this.raiseParseError(e);
if (t) return t;
}
setParent(e, t) {
if (typeof e === "object") {
e.parent = t;
if (typeof t === "object") {
t.children = t.children || new Set();
t.children.add(e);
}
this.setParent(e.next, t);
}
}
commandStart(e) {
return this.COMMANDS[e.value || ""];
}
featureStart(e) {
return this.FEATURES[e.value || ""];
}
commandBoundary(e) {
if (
e.value == "end" ||
e.value == "then" ||
e.value == "else" ||
e.value == "otherwise" ||
e.value == ")" ||
this.commandStart(e) ||
this.featureStart(e) ||
e.type == "EOF"
) {
return true;
}
return false;
}
parseStringTemplate(e) {
var t = [""];
do {
t.push(e.lastWhitespace());
if (e.currentToken().value === "$") {
e.consumeToken();
var r = e.matchOpToken("{");
t.push(this.requireElement("expression", e));
if (r) {
e.requireOpToken("}");
}
t.push("");
} else if (e.currentToken().value === "\\") {
e.consumeToken();
e.consumeToken();
} else {
var n = e.consumeToken();
t[t.length - 1] += n ? n.value : "";
}
} while (e.hasMore());
t.push(e.lastWhitespace());
return t;
}
ensureTerminated(e) {
const t = this.runtime;
var r = {
type: "implicitReturn",
op: function (e) {
e.meta.returned = true;
if (e.meta.resolve) {
e.meta.resolve();
}
return t.HALT;
},
execute: function (e) {},
};
var n = e;
while (n.next) {
n = n.next;
}
n.next = r;
}
}
class o {
constructor(e, t) {
this.lexer = e ?? new n();
this.parser = t ?? new a(this).use(T).use(y);
this.parser.runtime = this;
}
matchesSelector(e, t) {
var r =
e.matches ||
e.matchesSelector ||
e.msMatchesSelector ||
e.mozMatchesSelector ||
e.webkitMatchesSelector ||
e.oMatchesSelector;
return r && r.call(e, t);
}
makeEvent(t, r) {
var n;
if (e.Event && typeof e.Event === "function") {
n = new Event(t, { bubbles: true, cancelable: true });
n["detail"] = r;
} else {
n = document.createEvent("CustomEvent");
n.initCustomEvent(t, true, true, r);
}
return n;
}
triggerEvent(e, t, r, n) {
r = r || {};
r["sender"] = n;
var i = this.makeEvent(t, r);
var a = e.dispatchEvent(i);
return a;
}
isArrayLike(e) {
return (
Array.isArray(e) ||
(typeof NodeList !== "undefined" &&
(e instanceof NodeList || e instanceof HTMLCollection))
);
}
isIterable(e) {
return (
typeof e === "object" &&
Symbol.iterator in e &&
typeof e[Symbol.iterator] === "function"
);
}
shouldAutoIterate(e) {
return (e != null && e[p]) || this.isArrayLike(e);
}
forEach(e, t) {
if (e == null) {
} else if (this.isIterable(e)) {
for (const r of e) {
t(r);
}
} else if (this.isArrayLike(e)) {
for (var r = 0; r < e.length; r++) {
t(e[r]);
}
} else {
t(e);
}
}
implicitLoop(e, t) {
if (this.shouldAutoIterate(e)) {
for (const r of e) t(r);
} else {
t(e);
}
}
wrapArrays(e) {
var t = [];
for (var r = 0; r < e.length; r++) {
var n = e[r];
if (Array.isArray(n)) {
t.push(Promise.all(n));
} else {
t.push(n);
}
}
return t;
}
unwrapAsyncs(e) {
for (var t = 0; t < e.length; t++) {
var r = e[t];
if (r.asyncWrapper) {
e[t] = r.value;
}
if (Array.isArray(r)) {
for (var n = 0; n < r.length; n++) {
var i = r[n];
if (i.asyncWrapper) {
r[n] = i.value;
}
}
}
}
}
static HALT = {};
HALT = o.HALT;
unifiedExec(e, t) {
while (true) {
try {
var r = this.unifiedEval(e, t);
} catch (n) {
if (t.meta.handlingFinally) {
console.error(" Exception in finally block: ", n);
r = o.HALT;
} else {
this.registerHyperTrace(t, n);
if (t.meta.errorHandler && !t.meta.handlingError) {
t.meta.handlingError = true;
t.locals[t.meta.errorSymbol] = n;
e = t.meta.errorHandler;
continue;
} else {
t.meta.currentException = n;
r = o.HALT;
}
}
}
if (r == null) {
console.error(
e,
" did not return a next element to execute! context: ",
t,
);
return;
} else if (r.then) {
r.then((e) => {
this.unifiedExec(e, t);
}).catch((e) => {
this.unifiedExec(
{
op: function () {
throw e;
},
},
t,
);
});
return;
} else if (r === o.HALT) {
if (t.meta.finallyHandler && !t.meta.handlingFinally) {
t.meta.handlingFinally = true;
e = t.meta.finallyHandler;
} else {
if (t.meta.onHalt) {
t.meta.onHalt();
}
if (t.meta.currentException) {
if (t.meta.reject) {
t.meta.reject(t.meta.currentException);
return;
} else {
throw t.meta.currentException;
}
} else {
return;
}
}
} else {
e = r;
}
}
}
unifiedEval(e, t) {
var r = [t];
var n = false;
var i = false;
if (e.args) {
for (var a = 0; a < e.args.length; a++) {
var o = e.args[a];
if (o == null) {
r.push(null);
} else if (Array.isArray(o)) {
var s = [];
for (var u = 0; u < o.length; u++) {
var l = o[u];
var c = l ? l.evaluate(t) : null;
if (c) {
if (c.then) {
n = true;
} else if (c.asyncWrapper) {
i = true;
}
}
s.push(c);
}
r.push(s);
} else if (o.evaluate) {
var c = o.evaluate(t);
if (c) {
if (c.then) {
n = true;
} else if (c.asyncWrapper) {
i = true;
}
}
r.push(c);
} else {
r.push(o);
}
}
}
if (n) {
return new Promise((t, n) => {
r = this.wrapArrays(r);
Promise.all(r)
.then(function (r) {
if (i) {
this.unwrapAsyncs(r);
}
try {
var a = e.op.apply(e, r);
t(a);
} catch (e) {
n(e);
}
})
.catch(function (e) {
n(e);
});
});
} else {
if (i) {
this.unwrapAsyncs(r);
}
return e.op.apply(e, r);
}
}
_scriptAttrs = null;
getScriptAttributes() {
if (this._scriptAttrs == null) {
this._scriptAttrs = r.attributes.replace(/ /g, "").split(",");
}
return this._scriptAttrs;
}
getScript(e) {
for (var t = 0; t < this.getScriptAttributes().length; t++) {
var r = this.getScriptAttributes()[t];
if (e.hasAttribute && e.hasAttribute(r)) {
return e.getAttribute(r);
}
}
if (e instanceof HTMLScriptElement && e.type === "text/hyperscript") {
return e.innerText;
}
return null;
}
hyperscriptFeaturesMap = new WeakMap();
getHyperscriptFeatures(e) {
var t = this.hyperscriptFeaturesMap.get(e);
if (typeof t === "undefined") {
if (e) {
this.hyperscriptFeaturesMap.set(e, (t = {}));
}
}
return t;
}
addFeatures(e, t) {
if (e) {
Object.assign(t.locals, this.getHyperscriptFeatures(e));
this.addFeatures(e.parentElement, t);
}
}
makeContext(e, t, r, n) {
return new f(e, t, r, n, this);
}
getScriptSelector() {
return this.getScriptAttributes()
.map(function (e) {
return "[" + e + "]";
})
.join(", ");
}
convertValue(e, r) {
var n = t.dynamicResolvers;
for (var i = 0; i < n.length; i++) {
var a = n[i];
var o = a(r, e);
if (o !== undefined) {
return o;
}
}
if (e == null) {
return null;
}
var s = t[r];
if (s) {
return s(e);
}
throw "Unknown conversion : " + r;
}
parse(e) {
const t = this.lexer,
r = this.parser;
var n = t.tokenize(e);
if (this.parser.commandStart(n.currentToken())) {
var i = r.requireElement("commandList", n);
if (n.hasMore()) r.raiseParseError(n);
r.ensureTerminated(i);
return i;
} else if (r.featureStart(n.currentToken())) {
var a = r.requireElement("hyperscript", n);
if (n.hasMore()) r.raiseParseError(n);
return a;
} else {
var o = r.requireElement("expression", n);
if (n.hasMore()) r.raiseParseError(n);
return o;
}
}
evaluateNoPromise(e, t) {
let r = e.evaluate(t);
if (r.next) {
throw new Error(
i.sourceFor.call(e) +
" returned a Promise in a context that they are not allowed.",
);
}
return r;
}
evaluate(t, r, n) {
class i extends EventTarget {
constructor(e) {
super();
this.module = e;
}
toString() {
return this.module.id;
}
}
var a = "document" in e ? e.document.body : new i(n && n.module);
r = Object.assign(this.makeContext(a, null, a, null), r || {});
var o = this.parse(t);
if (o.execute) {
o.execute(r);
if (typeof r.meta.returnValue !== "undefined") {
return r.meta.returnValue;
} else {
return r.result;
}
} else if (o.apply) {
o.apply(a, a, n);
return this.getHyperscriptFeatures(a);
} else {
return o.evaluate(r);
}
function s() {
return {};
}
}
processNode(e) {
var t = this.getScriptSelector();
if (this.matchesSelector(e, t)) {
this.initElement(e, e);
}
if (e instanceof HTMLScriptElement && e.type === "text/hyperscript") {
this.initElement(e, document.body);
}
if (e.querySelectorAll) {
this.forEach(
e.querySelectorAll(t + ", [type='text/hyperscript']"),
(e) => {
this.initElement(
e,
e instanceof HTMLScriptElement && e.type === "text/hyperscript"
? document.body
: e,
);
},
);
}
}
initElement(e, t) {
if (e.closest && e.closest(r.disableSelector)) {
return;
}
var n = this.getInternalData(e);
if (!n.initialized) {
var i = this.getScript(e);
if (i) {
try {
n.initialized = true;
n.script = i;
const r = this.lexer,
s = this.parser;
var a = r.tokenize(i);
var o = s.parseHyperScript(a);
if (!o) return;
o.apply(t || e, e);
setTimeout(() => {
this.triggerEvent(t || e, "load", { hyperscript: true });
}, 1);
} catch (t) {
this.triggerEvent(e, "exception", { error: t });
console.error(
"hyperscript errors were found on the following element:",
e,
"\n\n",
t.message,
t.stack,
);
}
}
}
}
internalDataMap = new WeakMap();
getInternalData(e) {
var t = this.internalDataMap.get(e);
if (typeof t === "undefined") {
this.internalDataMap.set(e, (t = {}));
}
return t;
}
typeCheck(e, t, r) {
if (e == null && r) {
return true;
}
var n = Object.prototype.toString.call(e).slice(8, -1);
return n === t;
}
getElementScope(e) {
var t = e.meta && e.meta.owner;
if (t) {
var r = this.getInternalData(t);
var n = "elementScope";
if (e.meta.feature && e.meta.feature.behavior) {
n = e.meta.feature.behavior + "Scope";
}
var i = h(r, n);
return i;
} else {
return {};
}
}
isReservedWord(e) {
return [
"meta",
"it",
"result",
"locals",
"event",
"target",
"detail",
"sender",
"body",
].includes(e);
}
isHyperscriptContext(e) {
return e instanceof f;
}
resolveSymbol(t, r, n) {
if (t === "me" || t === "my" || t === "I") {
return r.me;
}
if (t === "it" || t === "its" || t === "result") {
return r.result;
}
if (t === "you" || t === "your" || t === "yourself") {
return r.you;
} else {
if (n === "global") {
return e[t];
} else if (n === "element") {
var i = this.getElementScope(r);
return i[t];
} else if (n === "local") {
return r.locals[t];
} else {
if (r.meta && r.meta.context) {
var a = r.meta.context[t];
if (typeof a !== "undefined") {
return a;
}
if (r.meta.context.detail) {
a = r.meta.context.detail[t];
if (typeof a !== "undefined") {
return a;
}
}
}
if (this.isHyperscriptContext(r) && !this.isReservedWord(t)) {
var o = r.locals[t];
} else {
var o = r[t];
}
if (typeof o !== "undefined") {
return o;
} else {
var i = this.getElementScope(r);
o = i[t];
if (typeof o !== "undefined") {
return o;
} else {
return e[t];
}
}
}
}
}
setSymbol(t, r, n, i) {
if (n === "global") {
e[t] = i;
} else if (n === "element") {
var a = this.getElementScope(r);
a[t] = i;
} else if (n === "local") {
r.locals[t] = i;
} else {
if (
this.isHyperscriptContext(r) &&
!this.isReservedWord(t) &&
typeof r.locals[t] !== "undefined"
) {
r.locals[t] = i;
} else {
var a = this.getElementScope(r);
var o = a[t];
if (typeof o !== "undefined") {
a[t] = i;
} else {
if (this.isHyperscriptContext(r) && !this.isReservedWord(t)) {
r.locals[t] = i;
} else {
r[t] = i;
}
}
}
}
}
findNext(e, t) {
if (e) {
if (e.resolveNext) {
return e.resolveNext(t);
} else if (e.next) {
return e.next;
} else {
return this.findNext(e.parent, t);
}
}
}
flatGet(e, t, r) {
if (e != null) {
var n = r(e, t);
if (typeof n !== "undefined") {
return n;
}
if (this.shouldAutoIterate(e)) {
var i = [];
for (var a of e) {
var o = r(a, t);
i.push(o);
}
return i;
}
}
}
resolveProperty(e, t) {
return this.flatGet(e, t, (e, t) => e[t]);
}
resolveAttribute(e, t) {
return this.flatGet(e, t, (e, t) => e.getAttribute && e.getAttribute(t));
}
resolveStyle(e, t) {
return this.flatGet(e, t, (e, t) => e.style && e.style[t]);
}
resolveComputedStyle(e, t) {
return this.flatGet(e, t, (e, t) =>
getComputedStyle(e).getPropertyValue(t),
);
}
assignToNamespace(t, r, n, i) {
let a;
if (typeof document !== "undefined" && t === document.body) {
a = e;
} else {
a = this.getHyperscriptFeatures(t);
}
var o;
while ((o = r.shift()) !== undefined) {
var s = a[o];
if (s == null) {
s = {};
a[o] = s;
}
a = s;
}
a[n] = i;
}
getHyperTrace(e, t) {
var r = [];
var n = e;
while (n.meta.caller) {
n = n.meta.caller;
}
if (n.meta.traceMap) {
return n.meta.traceMap.get(t, r);
}
}
registerHyperTrace(e, t) {
var r = [];
var n = null;
while (e != null) {
r.push(e);
n = e;
e = e.meta.caller;
}
if (n.meta.traceMap == null) {
n.meta.traceMap = new Map();
}
if (!n.meta.traceMap.get(t)) {
var i = {
trace: r,
print: function (e) {
e = e || console.error;
e("hypertrace /// ");
var t = 0;
for (var n = 0; n < r.length; n++) {
t = Math.max(t, r[n].meta.feature.displayName.length);
}
for (var n = 0; n < r.length; n++) {
var i = r[n];
e(
" ->",
i.meta.feature.displayName.padEnd(t + 2),
"-",
i.meta.owner,
);
}
},
};
n.meta.traceMap.set(t, i);
}
}
escapeSelector(e) {
return e.replace(/:/g, function (e) {
return "\\" + e;
});
}
nullCheck(e, t) {
if (e == null) {
throw new Error("'" + t.sourceFor() + "' is null");
}
}
isEmpty(e) {
return e == undefined || e.length === 0;
}
doesExist(e) {
if (e == null) {
return false;
}
if (this.shouldAutoIterate(e)) {
for (const t of e) {
return true;
}
return false;
}
return true;
}
getRootNode(e) {
if (e && e instanceof Node) {
var t = e.getRootNode();
if (t instanceof Document || t instanceof ShadowRoot) return t;
}
return document;
}
getEventQueueFor(e, t) {
let r = this.getInternalData(e);
var n = r.eventQueues;
if (n == null) {
n = new Map();
r.eventQueues = n;
}
var i = n.get(t);
if (i == null) {
i = { queue: [], executing: false };
n.set(t, i);
}
return i;
}
beepValueToConsole(e, t, r) {
if (
this.triggerEvent(e, "hyperscript:beep", {
element: e,
expression: t,
value: r,
})
) {
var n;
if (r) {
if (r instanceof m) {
n = "ElementCollection";
} else if (r.constructor) {
n = r.constructor.name;
} else {
n = "unknown";
}
} else {
n = "object (null)";
}
var a = r;
if (n === "String") {
a = '"' + a + '"';
} else if (r instanceof m) {
a = Array.from(r);
}
console.log(
"///_ BEEP! The expression (" +
i.sourceFor.call(t).replace("beep! ", "") +
") evaluates to:",
a,
"of type " + n,
);
}
}
hyperscriptUrl =
"document" in e && document.currentScript
? document.currentScript.src
: null;
}
function s() {
let e = document.cookie.split("; ").map((e) => {
let t = e.split("=");
return { name: t[0], value: decodeURIComponent(t[1]) };
});
return e;
}
function u(e) {
document.cookie = e + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
function l() {
for (const e of s()) {
u(e.name);
}
}
const c = new Proxy(
{},
{
get(e, t) {
if (t === "then" || t === "asyncWrapper") {
return null;
} else if (t === "length") {
return s().length;
} else if (t === "clear") {
return u;
} else if (t === "clearAll") {
return l;
} else if (typeof t === "string") {
if (!isNaN(t)) {
return s()[parseInt(t)];
} else {
let e = document.cookie
.split("; ")
.find((e) => e.startsWith(t + "="))
?.split("=")[1];
if (e) {
return decodeURIComponent(e);
}
}
} else if (t === Symbol.iterator) {
return s()[t];
}
},
set(e, t, r) {
var n = null;
if ("string" === typeof r) {
n = encodeURIComponent(r);
n += ";samesite=lax";
} else {
n = encodeURIComponent(r.value);
if (r.expires) {
n += ";expires=" + r.maxAge;
}
if (r.maxAge) {
n += ";max-age=" + r.maxAge;
}
if (r.partitioned) {
n += ";partitioned=" + r.partitioned;
}
if (r.path) {
n += ";path=" + r.path;
}
if (r.samesite) {
n += ";samesite=" + r.path;
}
if (r.secure) {
n += ";secure=" + r.path;
}
}
document.cookie = t + "=" + n;
return true;
},
},
);
class f {
constructor(t, r, n, i, a) {
this.meta = {
parser: a.parser,
lexer: a.lexer,
runtime: a,
owner: t,
feature: r,
iterators: {},
ctx: this,
};
this.locals = { cookies: c };
(this.me = n), (this.you = undefined);
this.result = undefined;
this.event = i;
this.target = i ? i.target : null;
this.detail = i ? i.detail : null;
this.sender = i ? (i.detail ? i.detail.sender : null) : null;
this.body = "document" in e ? document.body : null;
a.addFeatures(t, this);
}
}
class m {
constructor(e, t, r) {
this._css = e;
this.relativeToElement = t;
this.escape = r;
this[p] = true;
}
get css() {
if (this.escape) {
return o.prototype.escapeSelector(this._css);
} else {
return this._css;
}
}
get className() {
return this._css.substr(1);
}
get id() {
return this.className();
}
contains(e) {
for (let t of this) {
if (t.contains(e)) {
return true;
}
}
return false;
}
get length() {
return this.selectMatches().length;
}
[Symbol.iterator]() {
let e = this.selectMatches();
return e[Symbol.iterator]();
}
selectMatches() {
let e = o.prototype
.getRootNode(this.relativeToElement)
.querySelectorAll(this.css);
return e;
}
}
const p = Symbol();
function h(e, t) {
var r = e[t];
if (r) {
return r;
} else {
var n = {};
e[t] = n;
return n;
}
}
function v(e) {
try {
return JSON.parse(e);
} catch (e) {
d(e);
return null;
}
}
function d(e) {
if (console.error) {
console.error(e);
} else if (console.log) {
console.log("ERROR: ", e);
}
}
function E(e, t) {
return new (e.bind.apply(e, [e].concat(t)))();
}
function T(t) {
t.addLeafExpression("parenthesized", function (e, t, r) {
if (r.matchOpToken("(")) {
var n = r.clearFollows();
try {
var i = e.requireElement("expression", r);
} finally {
r.restoreFollows(n);
}
r.requireOpToken(")");
return i;
}
});
t.addLeafExpression("string", function (e, t, r) {
var i = r.matchTokenType("STRING");
if (!i) return;
var a = i.value;
var o;
if (i.template) {
var s = n.tokenize(a, true);
o = e.parseStringTemplate(s);
} else {
o = [];
}
return {
type: "string",
token: i,
args: o,
op: function (e) {
var t = "";
for (var r = 1; r < arguments.length; r++) {
var n = arguments[r];
if (n !== undefined) {
t += n;
}
}
return t;
},
evaluate: function (e) {
if (o.length === 0) {
return a;
} else {
return t.unifiedEval(this, e);
}
},
};
});
t.addGrammarElement("nakedString", function (e, t, r) {
if (r.hasMore()) {
var n = r.consumeUntilWhitespace();
r.matchTokenType("WHITESPACE");
return {
type: "nakedString",
tokens: n,
evaluate: function (e) {
return n
.map(function (e) {
return e.value;
})
.join("");
},
};
}
});
t.addLeafExpression("number", function (e, t, r) {
var n = r.matchTokenType("NUMBER");
if (!n) return;
var i = n;
var a = parseFloat(n.value);
return {
type: "number",
value: a,
numberToken: i,
evaluate: function () {
return a;
},
};
});
t.addLeafExpression("idRef", function (e, t, r) {
var i = r.matchTokenType("ID_REF");
if (!i) return;
if (!i.value) return;
if (i.template) {
var a = i.value.substring(2);
var o = n.tokenize(a);
var s = e.requireElement("expression", o);
return {
type: "idRefTemplate",
args: [s],
op: function (e, r) {
return t.getRootNode(e.me).getElementById(r);
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
} else {
const e = i.value.substring(1);
return {
type: "idRef",
css: i.value,
value: e,
evaluate: function (r) {
return t.getRootNode(r.me).getElementById(e);
},
};
}
});
t.addLeafExpression("classRef", function (e, t, r) {
var i = r.matchTokenType("CLASS_REF");
if (!i) return;
if (!i.value) return;
if (i.template) {
var a = i.value.substring(2);
var o = n.tokenize(a);
var s = e.requireElement("expression", o);
return {
type: "classRefTemplate",
args: [s],
op: function (e, t) {
return new m("." + t, e.me, true);
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
} else {
const e = i.value;
return {
type: "classRef",
css: e,
evaluate: function (t) {
return new m(e, t.me, true);
},
};
}
});
class r extends m {
constructor(e, t, r) {
super(e, t);
this.templateParts = r;
this.elements = r.filter((e) => e instanceof Element);
}
get css() {
let e = "",
t = 0;
for (const r of this.templateParts) {
if (r instanceof Element) {
e += "[data-hs-query-id='" + t++ + "']";
} else e += r;
}
return e;
}
[Symbol.iterator]() {
this.elements.forEach((e, t) => (e.dataset.hsQueryId = t));
const e = super[Symbol.iterator]();
this.elements.forEach((e) => e.removeAttribute("data-hs-query-id"));
return e;
}
}
t.addLeafExpression("queryRef", function (e, t, i) {
var a = i.matchOpToken("<");
if (!a) return;
var o = i.consumeUntil("/");
i.requireOpToken("/");
i.requireOpToken(">");
var s = o
.map(function (e) {
if (e.type === "STRING") {
return '"' + e.value + '"';
} else {
return e.value;
}
})
.join("");
var u, l, c;
if (s.indexOf("$") >= 0) {
u = true;
l = n.tokenize(s, true);
c = e.parseStringTemplate(l);
}
return {
type: "queryRef",
css: s,
args: c,
op: function (e, ...t) {
if (u) {
return new r(s, e.me, t);
} else {
return new m(s, e.me);
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addLeafExpression("attributeRef", function (e, t, r) {
var n = r.matchTokenType("ATTRIBUTE_REF");
if (!n) return;
if (!n.value) return;
var i = n.value;
if (i.indexOf("[") === 0) {
var a = i.substring(2, i.length - 1);
} else {
var a = i.substring(1);
}
var o = "[" + a + "]";
var s = a.split("=");
var u = s[0];
var l = s[1];
if (l) {
if (l.indexOf('"') === 0) {
l = l.substring(1, l.length - 1);
}
}
return {
type: "attributeRef",
name: u,
css: o,
value: l,
op: function (e) {
var t = e.you || e.me;
if (t) {
return t.getAttribute(u);
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addLeafExpression("styleRef", function (e, t, r) {
var n = r.matchTokenType("STYLE_REF");
if (!n) return;
if (!n.value) return;
var i = n.value.substr(1);
if (i.startsWith("computed-")) {
i = i.substr("computed-".length);
return {
type: "computedStyleRef",
name: i,
op: function (e) {
var r = e.you || e.me;
if (r) {
return t.resolveComputedStyle(r, i);
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
} else {
return {
type: "styleRef",
name: i,
op: function (e) {
var r = e.you || e.me;
if (r) {
return t.resolveStyle(r, i);
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
}
});
t.addGrammarElement("objectKey", function (e, t, r) {
var n;
if ((n = r.matchTokenType("STRING"))) {
return {
type: "objectKey",
key: n.value,
evaluate: function () {
return n.value;
},
};
} else if (r.matchOpToken("[")) {
var i = e.parseElement("expression", r);
r.requireOpToken("]");
return {
type: "objectKey",
expr: i,
args: [i],
op: function (e, t) {
return t;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
} else {
var a = "";
do {
n = r.matchTokenType("IDENTIFIER") || r.matchOpToken("-");
if (n) a += n.value;
} while (n);
return {
type: "objectKey",
key: a,
evaluate: function () {
return a;
},
};
}
});
t.addLeafExpression("objectLiteral", function (e, t, r) {
if (!r.matchOpToken("{")) return;
var n = [];
var i = [];
if (!r.matchOpToken("}")) {
do {
var a = e.requireElement("objectKey", r);
r.requireOpToken(":");
var o = e.requireElement("expression", r);
i.push(o);
n.push(a);
} while (r.matchOpToken(","));
r.requireOpToken("}");
}
return {
type: "objectLiteral",
args: [n, i],
op: function (e, t, r) {
var n = {};
for (var i = 0; i < t.length; i++) {
n[t[i]] = r[i];
}
return n;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("nakedNamedArgumentList", function (e, t, r) {
var n = [];
var i = [];
if (r.currentToken().type === "IDENTIFIER") {
do {
var a = r.requireTokenType("IDENTIFIER");
r.requireOpToken(":");
var o = e.requireElement("expression", r);
i.push(o);
n.push({ name: a, value: o });
} while (r.matchOpToken(","));
}
return {
type: "namedArgumentList",
fields: n,
args: [i],
op: function (e, t) {
var r = { _namedArgList_: true };
for (var i = 0; i < t.length; i++) {
var a = n[i];
r[a.name.value] = t[i];
}
return r;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("namedArgumentList", function (e, t, r) {
if (!r.matchOpToken("(")) return;
var n = e.requireElement("nakedNamedArgumentList", r);
r.requireOpToken(")");
return n;
});
t.addGrammarElement("symbol", function (e, t, r) {
var n = "default";
if (r.matchToken("global")) {
n = "global";
} else if (r.matchToken("element") || r.matchToken("module")) {
n = "element";
if (r.matchOpToken("'")) {
r.requireToken("s");
}
} else if (r.matchToken("local")) {
n = "local";
}
let i = r.matchOpToken(":");
let a = r.matchTokenType("IDENTIFIER");
if (a && a.value) {
var o = a.value;
if (i) {
o = ":" + o;
}
if (n === "default") {
if (o.indexOf("$") === 0) {
n = "global";
}
if (o.indexOf(":") === 0) {
n = "element";
}
}
return {
type: "symbol",
token: a,
scope: n,
name: o,
evaluate: function (e) {
return t.resolveSymbol(o, e, n);
},
};
}
});
t.addGrammarElement("implicitMeTarget", function (e, t, r) {
return {
type: "implicitMeTarget",
evaluate: function (e) {
return e.you || e.me;
},
};
});
t.addLeafExpression("boolean", function (e, t, r) {
var n = r.matchToken("true") || r.matchToken("false");
if (!n) return;
const i = n.value === "true";
return {
type: "boolean",
evaluate: function (e) {
return i;
},
};
});
t.addLeafExpression("null", function (e, t, r) {
if (r.matchToken("null")) {
return {
type: "null",
evaluate: function (e) {
return null;
},
};
}
});
t.addLeafExpression("arrayLiteral", function (e, t, r) {
if (!r.matchOpToken("[")) return;
var n = [];
if (!r.matchOpToken("]")) {
do {
var i = e.requireElement("expression", r);
n.push(i);
} while (r.matchOpToken(","));
r.requireOpToken("]");
}
return {
type: "arrayLiteral",
values: n,
args: [n],
op: function (e, t) {
return t;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addLeafExpression("blockLiteral", function (e, t, r) {
if (!r.matchOpToken("\\")) return;
var n = [];
var i = r.matchTokenType("IDENTIFIER");
if (i) {
n.push(i);
while (r.matchOpToken(",")) {
n.push(r.requireTokenType("IDENTIFIER"));
}
}
r.requireOpToken("-");
r.requireOpToken(">");
var a = e.requireElement("expression", r);
return {
type: "blockLiteral",
args: n,
expr: a,
evaluate: function (e) {
var t = function () {
for (var t = 0; t < n.length; t++) {
e.locals[n[t].value] = arguments[t];
}
return a.evaluate(e);
};
return t;
},
};
});
t.addIndirectExpression("propertyAccess", function (e, t, r, n) {
if (!r.matchOpToken(".")) return;
var i = r.requireTokenType("IDENTIFIER");
var a = {
type: "propertyAccess",
root: n,
prop: i,
args: [n],
op: function (e, r) {
var n = t.resolveProperty(r, i.value);
return n;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return e.parseElement("indirectExpression", r, a);
});
t.addIndirectExpression("of", function (e, t, r, n) {
if (!r.matchToken("of")) return;
var i = e.requireElement("unaryExpression", r);
var a = null;
var o = n;
while (o.root) {
a = o;
o = o.root;
}
if (
o.type !== "symbol" &&
o.type !== "attributeRef" &&
o.type !== "styleRef" &&
o.type !== "computedStyleRef"
) {
e.raiseParseError(
r,
"Cannot take a property of a non-symbol: " + o.type,
);
}
var s = o.type === "attributeRef";
var u = o.type === "styleRef" || o.type === "computedStyleRef";
if (s || u) {
var l = o;
}
var c = o.name;
var f = {
type: "ofExpression",
prop: o.token,
root: i,
attribute: l,
expression: n,
args: [i],
op: function (e, r) {
if (s) {
return t.resolveAttribute(r, c);
} else if (u) {
if (o.type === "computedStyleRef") {
return t.resolveComputedStyle(r, c);
} else {
return t.resolveStyle(r, c);
}
} else {
return t.resolveProperty(r, c);
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
if (o.type === "attributeRef") {
f.attribute = o;
}
if (a) {
a.root = f;
a.args = [f];
} else {
n = f;
}
return e.parseElement("indirectExpression", r, n);
});
t.addIndirectExpression("possessive", function (e, t, r, n) {
if (e.possessivesDisabled) {
return;
}
var i = r.matchOpToken("'");
if (
i ||
(n.type === "symbol" &&
(n.name === "my" || n.name === "its" || n.name === "your") &&
(r.currentToken().type === "IDENTIFIER" ||
r.currentToken().type === "ATTRIBUTE_REF" ||
r.currentToken().type === "STYLE_REF"))
) {
if (i) {
r.requireToken("s");
}
var a, o, s;
a = e.parseElement("attributeRef", r);
if (a == null) {
o = e.parseElement("styleRef", r);
if (o == null) {
s = r.requireTokenType("IDENTIFIER");
}
}
var u = {
type: "possessive",
root: n,
attribute: a || o,
prop: s,
args: [n],
op: function (e, r) {
if (a) {
var n = t.resolveAttribute(r, a.name);
} else if (o) {
var n;
if (o.type === "computedStyleRef") {
n = t.resolveComputedStyle(r, o["name"]);
} else {
n = t.resolveStyle(r, o["name"]);
}
} else {
var n = t.resolveProperty(r, s.value);
}
return n;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return e.parseElement("indirectExpression", r, u);
}
});
t.addIndirectExpression("inExpression", function (e, t, r, n) {
if (!r.matchToken("in")) return;
var i = e.requireElement("unaryExpression", r);
var a = {
type: "inExpression",
root: n,
args: [n, i],
op: function (e, r, n) {
var i = [];
if (r.css) {
t.implicitLoop(n, function (e) {
var t = e.querySelectorAll(r.css);
for (var n = 0; n < t.length; n++) {
i.push(t[n]);
}
});
} else if (r instanceof Element) {
var a = false;
t.implicitLoop(n, function (e) {
if (e.contains(r)) {
a = true;
}
});
if (a) {
return r;
}
} else {
t.implicitLoop(r, function (e) {
t.implicitLoop(n, function (t) {
if (e === t) {
i.push(e);
}
});
});
}
return i;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return e.parseElement("indirectExpression", r, a);
});
t.addIndirectExpression("asExpression", function (e, t, r, n) {
if (!r.matchToken("as")) return;
r.matchToken("a") || r.matchToken("an");
var i = e.requireElement("dotOrColonPath", r).evaluate();
var a = {
type: "asExpression",
root: n,
args: [n],
op: function (e, r) {
return t.convertValue(r, i);
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return e.parseElement("indirectExpression", r, a);
});
t.addIndirectExpression("functionCall", function (e, t, r, n) {
if (!r.matchOpToken("(")) return;
var i = [];
if (!r.matchOpToken(")")) {
do {
i.push(e.requireElement("expression", r));
} while (r.matchOpToken(","));
r.requireOpToken(")");
}
if (n.root) {
var a = {
type: "functionCall",
root: n,
argExressions: i,
args: [n.root, i],
op: function (e, r, i) {
t.nullCheck(r, n.root);
var a = r[n.prop.value];
t.nullCheck(a, n);
if (a.hyperfunc) {
i.push(e);
}
return a.apply(r, i);
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
} else {
var a = {
type: "functionCall",
root: n,
argExressions: i,
args: [n, i],
op: function (e, r, i) {
t.nullCheck(r, n);
if (r.hyperfunc) {
i.push(e);
}
var a = r.apply(null, i);
return a;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
}
return e.parseElement("indirectExpression", r, a);
});
t.addIndirectExpression("attributeRefAccess", function (e, t, r, n) {
var i = e.parseElement("attributeRef", r);
if (!i) return;
var a = {
type: "attributeRefAccess",
root: n,
attribute: i,
args: [n],
op: function (e, r) {
var n = t.resolveAttribute(r, i.name);
return n;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return a;
});
t.addIndirectExpression("arrayIndex", function (e, t, r, n) {
if (!r.matchOpToken("[")) return;
var i = false;
var a = false;
var o = null;
var s = null;
if (r.matchOpToken("..")) {
i = true;
o = e.requireElement("expression", r);
} else {
o = e.requireElement("expression", r);
if (r.matchOpToken("..")) {
a = true;
var u = r.currentToken();
if (u.type !== "R_BRACKET") {
s = e.parseElement("expression", r);
}
}
}
r.requireOpToken("]");
var l = {
type: "arrayIndex",
root: n,
prop: o,
firstIndex: o,
secondIndex: s,
args: [n, o, s],
op: function (e, t, r, n) {
if (t == null) {
return null;
}
if (i) {
if (r < 0) {
r = t.length + r;
}
return t.slice(0, r + 1);
} else if (a) {
if (n != null) {
if (n < 0) {
n = t.length + n;
}
return t.slice(r, n + 1);
} else {
return t.slice(r);
}
} else {
return t[r];
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return e.parseElement("indirectExpression", r, l);
});
var a = [
"em",
"ex",
"cap",
"ch",
"ic",
"rem",
"lh",
"rlh",
"vw",
"vh",
"vi",
"vb",
"vmin",
"vmax",
"cm",
"mm",
"Q",
"pc",
"pt",
"px",
];
t.addGrammarElement("postfixExpression", function (e, t, r) {
var n = e.parseElement("primaryExpression", r);
let i = r.matchAnyToken.apply(r, a) || r.matchOpToken("%");
if (i) {
return {
type: "stringPostfix",
postfix: i.value,
args: [n],
op: function (e, t) {
return "" + t + i.value;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
}
var o = null;
if (r.matchToken("s") || r.matchToken("seconds")) {
o = 1e3;
} else if (r.matchToken("ms") || r.matchToken("milliseconds")) {
o = 1;
}
if (o) {
return {
type: "timeExpression",
time: n,
factor: o,
args: [n],
op: function (e, t) {
return t * o;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
}
if (r.matchOpToken(":")) {
var s = r.requireTokenType("IDENTIFIER");
if (!s.value) return;
var u = !r.matchOpToken("!");
return {
type: "typeCheck",
typeName: s,
nullOk: u,
args: [n],
op: function (e, r) {
var n = t.typeCheck(r, this.typeName.value, u);
if (n) {
return r;
} else {
throw new Error("Typecheck failed! Expected: " + s.value);
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
} else {
return n;
}
});
t.addGrammarElement("logicalNot", function (e, t, r) {
if (!r.matchToken("not")) return;
var n = e.requireElement("unaryExpression", r);
return {
type: "logicalNot",
root: n,
args: [n],
op: function (e, t) {
return !t;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("noExpression", function (e, t, r) {
if (!r.matchToken("no")) return;
var n = e.requireElement("unaryExpression", r);
return {
type: "noExpression",
root: n,
args: [n],
op: function (e, r) {
return t.isEmpty(r);
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addLeafExpression("some", function (e, t, r) {
if (!r.matchToken("some")) return;
var n = e.requireElement("expression", r);
return {
type: "noExpression",
root: n,
args: [n],
op: function (e, r) {
return !t.isEmpty(r);
},
evaluate(e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("negativeNumber", function (e, t, r) {
if (!r.matchOpToken("-")) return;
var n = e.requireElement("unaryExpression", r);
return {
type: "negativeNumber",
root: n,
args: [n],
op: function (e, t) {
return -1 * t;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("unaryExpression", function (e, t, r) {
r.matchToken("the");
return e.parseAnyOf(
[
"beepExpression",
"logicalNot",
"relativePositionalExpression",
"positionalExpression",
"noExpression",
"negativeNumber",
"postfixExpression",
],
r,
);
});
t.addGrammarElement("beepExpression", function (e, t, r) {
if (!r.matchToken("beep!")) return;
var n = e.parseElement("unaryExpression", r);
if (n) {
n["booped"] = true;
var i = n.evaluate;
n.evaluate = function (e) {
let r = i.apply(n, arguments);
let a = e.me;
t.beepValueToConsole(a, n, r);
return r;
};
return n;
}
});
var s = function (e, t, r, n) {
var i = t.querySelectorAll(r);
for (var a = 0; a < i.length; a++) {
var o = i[a];
if (o.compareDocumentPosition(e) === Node.DOCUMENT_POSITION_PRECEDING) {
return o;
}
}
if (n) {
return i[0];
}
};
var u = function (e, t, r, n) {
var i = t.querySelectorAll(r);
for (var a = i.length - 1; a >= 0; a--) {
var o = i[a];
if (o.compareDocumentPosition(e) === Node.DOCUMENT_POSITION_FOLLOWING) {
return o;
}
}
if (n) {
return i[i.length - 1];
}
};
var l = function (e, t, r, n) {
var i = [];
o.prototype.forEach(t, function (t) {
if (t.matches(r) || t === e) {
i.push(t);
}
});
for (var a = 0; a < i.length - 1; a++) {
var s = i[a];
if (s === e) {
return i[a + 1];
}
}
if (n) {
var u = i[0];
if (u && u.matches(r)) {
return u;
}
}
};
var c = function (e, t, r, n) {
return l(e, Array.from(t).reverse(), r, n);
};
t.addGrammarElement("relativePositionalExpression", function (e, t, r) {
var n = r.matchAnyToken("next", "previous");
if (!n) return;
var a = n.value === "next";
var o = e.parseElement("expression", r);
if (r.matchToken("from")) {
r.pushFollow("in");
try {
var f = e.requireElement("unaryExpression", r);
} finally {
r.popFollow();
}
} else {
var f = e.requireElement("implicitMeTarget", r);
}
var m = false;
var p;
if (r.matchToken("in")) {
m = true;
var h = e.requireElement("unaryExpression", r);
} else if (r.matchToken("within")) {
p = e.requireElement("unaryExpression", r);
} else {
p = document.body;
}
var v = false;
if (r.matchToken("with")) {
r.requireToken("wrapping");
v = true;
}
return {
type: "relativePositionalExpression",
from: f,
forwardSearch: a,
inSearch: m,
wrapping: v,
inElt: h,
withinElt: p,
operator: n.value,
args: [o, f, h, p],
op: function (e, t, r, n, f) {
var p = t.css;
if (p == null) {
throw (
"Expected a CSS value to be returned by " + i.sourceFor.apply(o)
);
}
if (m) {
if (n) {
if (a) {
return l(r, n, p, v);
} else {
return c(r, n, p, v);
}
}
} else {
if (f) {
if (a) {
return s(r, f, p, v);
} else {
return u(r, f, p, v);
}
}
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("positionalExpression", function (e, t, r) {
var n = r.matchAnyToken("first", "last", "random");
if (!n) return;
r.matchAnyToken("in", "from", "of");
var i = e.requireElement("unaryExpression", r);
const a = n.value;
return {
type: "positionalExpression",
rhs: i,
operator: n.value,
args: [i],
op: function (e, t) {
if (t && !Array.isArray(t)) {
if (t.children) {
t = t.children;
} else {
t = Array.from(t);
}
}
if (t) {
if (a === "first") {
return t[0];
} else if (a === "last") {
return t[t.length - 1];
} else if (a === "random") {
return t[Math.floor(Math.random() * t.length)];
}
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
t.addGrammarElement("mathOperator", function (e, t, r) {
var n = e.parseElement("unaryExpression", r);
var i,
a = null;
i = r.matchAnyOpToken("+", "-", "*", "/") || r.matchToken("mod");
while (i) {
a = a || i;
var o = i.value;
if (a.value !== o) {
e.raiseParseError(
r,
"You must parenthesize math operations with different operators",
);
}
var s = e.parseElement("unaryExpression", r);
n = {
type: "mathOperator",
lhs: n,
rhs: s,
operator: o,
args: [n, s],
op: function (e, t, r) {
if (o === "+") {
return t + r;
} else if (o === "-") {
return t - r;
} else if (o === "*") {
return t * r;
} else if (o === "/") {
return t / r;
} else if (o === "mod") {
return t % r;
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
i = r.matchAnyOpToken("+", "-", "*", "/") || r.matchToken("mod");
}
return n;
});
t.addGrammarElement("mathExpression", function (e, t, r) {
return e.parseAnyOf(["mathOperator", "unaryExpression"], r);
});
function f(e, t, r) {
if (t["contains"]) {
return t.contains(r);
} else if (t["includes"]) {
return t.includes(r);
} else {
throw Error(
"The value of " +
e.sourceFor() +
" does not have a contains or includes method on it",
);
}
}
function p(e, t, r) {
if (t["match"]) {
return !!t.match(r);
} else if (t["matches"]) {
return t.matches(r);
} else {
throw Error(
"The value of " +
e.sourceFor() +
" does not have a match or matches method on it",
);
}
}
t.addGrammarElement("comparisonOperator", function (e, t, r) {
var n = e.parseElement("mathExpression", r);
var i = r.matchAnyOpToken("<", ">", "<=", ">=", "==", "===", "!=", "!==");
var a = i ? i.value : null;
var o = true;
var s = false;
if (a == null) {
if (r.matchToken("is") || r.matchToken("am")) {
if (r.matchToken("not")) {
if (r.matchToken("in")) {
a = "not in";
} else if (r.matchToken("a")) {
a = "not a";
s = true;
} else if (r.matchToken("empty")) {
a = "not empty";
o = false;
} else {
if (r.matchToken("really")) {
a = "!==";
} else {
a = "!=";
}
if (r.matchToken("equal")) {
r.matchToken("to");
}
}
} else if (r.matchToken("in")) {
a = "in";
} else if (r.matchToken("a")) {
a = "a";
s = true;
} else if (r.matchToken("empty")) {
a = "empty";
o = false;
} else if (r.matchToken("less")) {
r.requireToken("than");
if (r.matchToken("or")) {
r.requireToken("equal");
r.requireToken("to");
a = "<=";
} else {
a = "<";
}
} else if (r.matchToken("greater")) {
r.requireToken("than");
if (r.matchToken("or")) {
r.requireToken("equal");
r.requireToken("to");
a = ">=";
} else {
a = ">";
}
} else {
if (r.matchToken("really")) {
a = "===";
} else {
a = "==";
}
if (r.matchToken("equal")) {
r.matchToken("to");
}
}
} else if (r.matchToken("equals")) {
a = "==";
} else if (r.matchToken("really")) {
r.requireToken("equals");
a = "===";
} else if (r.matchToken("exist") || r.matchToken("exists")) {
a = "exist";
o = false;
} else if (r.matchToken("matches") || r.matchToken("match")) {
a = "match";
} else if (r.matchToken("contains") || r.matchToken("contain")) {
a = "contain";
} else if (r.matchToken("includes") || r.matchToken("include")) {
a = "include";
} else if (r.matchToken("do") || r.matchToken("does")) {
r.requireToken("not");
if (r.matchToken("matches") || r.matchToken("match")) {
a = "not match";
} else if (r.matchToken("contains") || r.matchToken("contain")) {
a = "not contain";
} else if (r.matchToken("exist") || r.matchToken("exist")) {
a = "not exist";
o = false;
} else if (r.matchToken("include")) {
a = "not include";
} else {
e.raiseParseError(r, "Expected matches or contains");
}
}
}
if (a) {
var u, l, c;
if (s) {
u = r.requireTokenType("IDENTIFIER");
l = !r.matchOpToken("!");
} else if (o) {
c = e.requireElement("mathExpression", r);
if (a === "match" || a === "not match") {
c = c.css ? c.css : c;
}
}
var m = n;
n = {
type: "comparisonOperator",
operator: a,
typeName: u,
nullOk: l,
lhs: n,
rhs: c,
args: [n, c],
op: function (e, r, n) {
if (a === "==") {
return r == n;
} else if (a === "!=") {
return r != n;
}
if (a === "===") {
return r === n;
} else if (a === "!==") {
return r !== n;
}
if (a === "match") {
return r != null && p(m, r, n);
}
if (a === "not match") {
return r == null || !p(m, r, n);
}
if (a === "in") {
return n != null && f(c, n, r);
}
if (a === "not in") {
return n == null || !f(c, n, r);
}
if (a === "contain") {
return r != null && f(m, r, n);
}
if (a === "not contain") {
return r == null || !f(m, r, n);
}
if (a === "include") {
return r != null && f(m, r, n);
}
if (a === "not include") {
return r == null || !f(m, r, n);
}
if (a === "===") {
return r === n;
} else if (a === "!==") {
return r !== n;
} else if (a === "<") {
return r < n;
} else if (a === ">") {
return r > n;
} else if (a === "<=") {
return r <= n;
} else if (a === ">=") {
return r >= n;
} else if (a === "empty") {
return t.isEmpty(r);
} else if (a === "not empty") {
return !t.isEmpty(r);
} else if (a === "exist") {
return t.doesExist(r);
} else if (a === "not exist") {
return !t.doesExist(r);
} else if (a === "a") {
return t.typeCheck(r, u.value, l);
} else if (a === "not a") {
return !t.typeCheck(r, u.value, l);
} else {
throw "Unknown comparison : " + a;
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
}
return n;
});
t.addGrammarElement("comparisonExpression", function (e, t, r) {
return e.parseAnyOf(["comparisonOperator", "mathExpression"], r);
});
t.addGrammarElement("logicalOperator", function (e, t, r) {
var n = e.parseElement("comparisonExpression", r);
var i,
a = null;
i = r.matchToken("and") || r.matchToken("or");
while (i) {
a = a || i;
if (a.value !== i.value) {
e.raiseParseError(
r,
"You must parenthesize logical operations with different operators",
);
}
var o = e.requireElement("comparisonExpression", r);
const s = i.value;
n = {
type: "logicalOperator",
operator: s,
lhs: n,
rhs: o,
args: [n, o],
op: function (e, t, r) {
if (s === "and") {
return t && r;
} else {
return t || r;
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
i = r.matchToken("and") || r.matchToken("or");
}
return n;
});
t.addGrammarElement("logicalExpression", function (e, t, r) {
return e.parseAnyOf(["logicalOperator", "mathExpression"], r);
});
t.addGrammarElement("asyncExpression", function (e, t, r) {
if (r.matchToken("async")) {
var n = e.requireElement("logicalExpression", r);
var i = {
type: "asyncExpression",
value: n,
evaluate: function (e) {
return { asyncWrapper: true, value: this.value.evaluate(e) };
},
};
return i;
} else {
return e.parseElement("logicalExpression", r);
}
});
t.addGrammarElement("expression", function (e, t, r) {
r.matchToken("the");
return e.parseElement("asyncExpression", r);
});
t.addGrammarElement("assignableExpression", function (e, t, r) {
r.matchToken("the");
var n = e.parseElement("primaryExpression", r);
if (
n &&
(n.type === "symbol" ||
n.type === "ofExpression" ||
n.type === "propertyAccess" ||
n.type === "attributeRefAccess" ||
n.type === "attributeRef" ||
n.type === "styleRef" ||
n.type === "arrayIndex" ||
n.type === "possessive")
) {
return n;
} else {
e.raiseParseError(
r,
"A target expression must be writable. The expression type '" +
(n && n.type) +
"' is not.",
);
}
return n;
});
t.addGrammarElement("hyperscript", function (e, t, r) {
var n = [];
if (r.hasMore()) {
while (
e.featureStart(r.currentToken()) ||
r.currentToken().value === "("
) {
var i = e.requireElement("feature", r);
n.push(i);
r.matchToken("end");
}
}
return {
type: "hyperscript",
features: n,
apply: function (e, t, r) {
for (const i of n) {
i.install(e, t, r);
}
},
};
});
var v = function (e) {
var t = [];
if (
e.token(0).value === "(" &&
(e.token(1).value === ")" ||
e.token(2).value === "," ||
e.token(2).value === ")")
) {
e.matchOpToken("(");
do {
t.push(e.requireTokenType("IDENTIFIER"));
} while (e.matchOpToken(","));
e.requireOpToken(")");
}
return t;
};
t.addFeature("on", function (e, t, r) {
if (!r.matchToken("on")) return;
var n = false;
if (r.matchToken("every")) {
n = true;
}
var i = [];
var a = null;
do {
var o = e.requireElement("eventName", r, "Expected event name");
var s = o.evaluate();
if (a) {
a = a + " or " + s;
} else {
a = "on " + s;
}
var u = v(r);
var l = null;
if (r.matchOpToken("[")) {
l = e.requireElement("expression", r);
r.requireOpToken("]");
}
var c, f, m;
if (r.currentToken().type === "NUMBER") {
var p = r.consumeToken();
if (!p.value) return;
c = parseInt(p.value);
if (r.matchToken("to")) {
var h = r.consumeToken();
if (!h.value) return;
f = parseInt(h.value);
} else if (r.matchToken("and")) {
m = true;
r.requireToken("on");
}
}
var d, E;
if (s === "intersection") {
d = {};
if (r.matchToken("with")) {
d["with"] = e.requireElement("expression", r).evaluate();
}
if (r.matchToken("having")) {
do {
if (r.matchToken("margin")) {
d["rootMargin"] = e.requireElement("stringLike", r).evaluate();
} else if (r.matchToken("threshold")) {
d["threshold"] = e.requireElement("expression", r).evaluate();
} else {
e.raiseParseError(
r,
"Unknown intersection config specification",
);
}
} while (r.matchToken("and"));
}
} else if (s === "mutation") {
E = {};
if (r.matchToken("of")) {
do {
if (r.matchToken("anything")) {
E["attributes"] = true;
E["subtree"] = true;
E["characterData"] = true;
E["childList"] = true;
} else if (r.matchToken("childList")) {
E["childList"] = true;
} else if (r.matchToken("attributes")) {
E["attributes"] = true;
E["attributeOldValue"] = true;
} else if (r.matchToken("subtree")) {
E["subtree"] = true;
} else if (r.matchToken("characterData")) {
E["characterData"] = true;
E["characterDataOldValue"] = true;
} else if (r.currentToken().type === "ATTRIBUTE_REF") {
var T = r.consumeToken();
if (E["attributeFilter"] == null) {
E["attributeFilter"] = [];
}
if (T.value.indexOf("@") == 0) {
E["attributeFilter"].push(T.value.substring(1));
} else {
e.raiseParseError(
r,
"Only shorthand attribute references are allowed here",
);
}
} else {
e.raiseParseError(r, "Unknown mutation config specification");
}
} while (r.matchToken("or"));
} else {
E["attributes"] = true;
E["characterData"] = true;
E["childList"] = true;
}
}
var y = null;
var k = false;
if (r.matchToken("from")) {
if (r.matchToken("elsewhere")) {
k = true;
} else {
r.pushFollow("or");
try {
y = e.requireElement("expression", r);
} finally {
r.popFollow();
}
if (!y) {
e.raiseParseError(
r,
'Expected either target value or "elsewhere".',
);
}
}
}
if (y === null && k === false && r.matchToken("elsewhere")) {
k = true;
}
if (r.matchToken("in")) {
var x = e.parseElement("unaryExpression", r);
}
if (r.matchToken("debounced")) {
r.requireToken("at");
var g = e.requireElement("unaryExpression", r);
var b = g.evaluate({});
} else if (r.matchToken("throttled")) {
r.requireToken("at");
var g = e.requireElement("unaryExpression", r);
var w = g.evaluate({});
}
i.push({
execCount: 0,
every: n,
on: s,
args: u,
filter: l,
from: y,
inExpr: x,
elsewhere: k,
startCount: c,
endCount: f,
unbounded: m,
debounceTime: b,
throttleTime: w,
mutationSpec: E,
intersectionSpec: d,
debounced: undefined,
lastExec: undefined,
});
} while (r.matchToken("or"));
var S = true;
if (!n) {
if (r.matchToken("queue")) {
if (r.matchToken("all")) {
var q = true;
var S = false;
} else if (r.matchToken("first")) {
var N = true;
} else if (r.matchToken("none")) {
var I = true;
} else {
r.requireToken("last");
}
}
}
var C = e.requireElement("commandList", r);
e.ensureTerminated(C);
var R, A;
if (r.matchToken("catch")) {
R = r.requireTokenType("IDENTIFIER").value;
A = e.requireElement("commandList", r);
e.ensureTerminated(A);
}
if (r.matchToken("finally")) {
var L = e.requireElement("commandList", r);
e.ensureTerminated(L);
}
var O = {
displayName: a,
events: i,
start: C,
every: n,
execCount: 0,
errorHandler: A,
errorSymbol: R,
execute: function (e) {
let r = t.getEventQueueFor(e.me, O);
if (r.executing && n === false) {
if (I || (N && r.queue.length > 0)) {
return;
}
if (S) {
r.queue.length = 0;
}
r.queue.push(e);
return;
}
O.execCount++;
r.executing = true;
e.meta.onHalt = function () {
r.executing = false;
var e = r.queue.shift();
if (e) {
setTimeout(function () {
O.execute(e);
}, 1);
}
};
e.meta.reject = function (r) {
console.error(r.message ? r.message : r);
var n = t.getHyperTrace(e, r);
if (n) {
n.print();
}
t.triggerEvent(e.me, "exception", { error: r });
};
C.execute(e);
},
install: function (e, r) {
for (const r of O.events) {
var n;
if (r.elsewhere) {
n = [document];
} else if (r.from) {
n = r.from.evaluate(t.makeContext(e, O, e, null));
} else {
n = [e];
}
t.implicitLoop(n, function (n) {
var i = r.on;
if (n == null) {
console.warn(
"'%s' feature ignored because target does not exists:",
a,
e,
);
return;
}
if (r.mutationSpec) {
i = "hyperscript:mutation";
const e = new MutationObserver(function (e, r) {
if (!O.executing) {
t.triggerEvent(n, i, { mutationList: e, observer: r });
}
});
e.observe(n, r.mutationSpec);
}
if (r.intersectionSpec) {
i = "hyperscript:intersection";
const e = new IntersectionObserver(function (r) {
for (const o of r) {
var a = { observer: e };
a = Object.assign(a, o);
a["intersecting"] = o.isIntersecting;
t.triggerEvent(n, i, a);
}
}, r.intersectionSpec);
e.observe(n);
}
var o = n.addEventListener || n.on;
o.call(n, i, function a(o) {
if (
typeof Node !== "undefined" &&
e instanceof Node &&
n !== e &&
!e.isConnected
) {
n.removeEventListener(i, a);
return;
}
var s = t.makeContext(e, O, e, o);
if (r.elsewhere && e.contains(o.target)) {
return;
}
if (r.from) {
s.result = n;
}
for (const e of r.args) {
let t = s.event[e.value];
if (t !== undefined) {
s.locals[e.value] = t;
} else if ("detail" in s.event) {
s.locals[e.value] = s.event["detail"][e.value];
}
}
s.meta.errorHandler = A;
s.meta.errorSymbol = R;
s.meta.finallyHandler = L;
if (r.filter) {
var u = s.meta.context;
s.meta.context = s.event;
try {
var l = r.filter.evaluate(s);
if (l) {
} else {
return;
}
} finally {
s.meta.context = u;
}
}
if (r.inExpr) {
var c = o.target;
while (true) {
if (c.matches && c.matches(r.inExpr.css)) {
s.result = c;
break;
} else {
c = c.parentElement;
if (c == null) {
return;
}
}
}
}
r.execCount++;
if (r.startCount) {
if (r.endCount) {
if (
r.execCount < r.startCount ||
r.execCount > r.endCount
) {
return;
}
} else if (r.unbounded) {
if (r.execCount < r.startCount) {
return;
}
} else if (r.execCount !== r.startCount) {
return;
}
}
if (r.debounceTime) {
if (r.debounced) {
clearTimeout(r.debounced);
}
r.debounced = setTimeout(function () {
O.execute(s);
}, r.debounceTime);
return;
}
if (r.throttleTime) {
if (r.lastExec && Date.now() < r.lastExec + r.throttleTime) {
return;
} else {
r.lastExec = Date.now();
}
}
O.execute(s);
});
});
}
},
};
e.setParent(C, O);
return O;
});
t.addFeature("def", function (e, t, r) {
if (!r.matchToken("def")) return;
var n = e.requireElement("dotOrColonPath", r);
var i = n.evaluate();
var a = i.split(".");
var o = a.pop();
var s = [];
if (r.matchOpToken("(")) {
if (r.matchOpToken(")")) {
} else {
do {
s.push(r.requireTokenType("IDENTIFIER"));
} while (r.matchOpToken(","));
r.requireOpToken(")");
}
}
var u = e.requireElement("commandList", r);
var l, c;
if (r.matchToken("catch")) {
l = r.requireTokenType("IDENTIFIER").value;
c = e.parseElement("commandList", r);
}
if (r.matchToken("finally")) {
var f = e.requireElement("commandList", r);
e.ensureTerminated(f);
}
var m = {
displayName:
o +
"(" +
s
.map(function (e) {
return e.value;
})
.join(", ") +
")",
name: o,
args: s,
start: u,
errorHandler: c,
errorSymbol: l,
finallyHandler: f,
install: function (e, r) {
var n = function () {
var n = t.makeContext(r, m, e, null);
n.meta.errorHandler = c;
n.meta.errorSymbol = l;
n.meta.finallyHandler = f;
for (var i = 0; i < s.length; i++) {
var a = s[i];
var o = arguments[i];
if (a) {
n.locals[a.value] = o;
}
}
n.meta.caller = arguments[s.length];
if (n.meta.caller) {
n.meta.callingCommand = n.meta.caller.meta.command;
}
var p,
h = null;
var v = new Promise(function (e, t) {
p = e;
h = t;
});
u.execute(n);
if (n.meta.returned) {
return n.meta.returnValue;
} else {
n.meta.resolve = p;
n.meta.reject = h;
return v;
}
};
n.hyperfunc = true;
n.hypername = i;
t.assignToNamespace(e, a, o, n);
},
};
e.ensureTerminated(u);
if (c) {
e.ensureTerminated(c);
}
e.setParent(u, m);
return m;
});
t.addFeature("set", function (e, t, r) {
let n = e.parseElement("setCommand", r);
if (n) {
if (n.target.scope !== "element") {
e.raiseParseError(
r,
"variables declared at the feature level must be element scoped.",
);
}
let i = {
start: n,
install: function (e, r) {
n && n.execute(t.makeContext(e, i, e, null));
},
};
e.ensureTerminated(n);
return i;
}
});
t.addFeature("init", function (e, t, r) {
if (!r.matchToken("init")) return;
var n = r.matchToken("immediately");
var i = e.requireElement("commandList", r);
var a = {
start: i,
install: function (e, r) {
let o = function () {
i && i.execute(t.makeContext(e, a, e, null));
};
if (n) {
o();
} else {
setTimeout(o, 0);
}
},
};
e.ensureTerminated(i);
e.setParent(i, a);
return a;
});
t.addFeature("worker", function (e, t, r) {
if (r.matchToken("worker")) {
e.raiseParseError(
r,
"In order to use the 'worker' feature, include " +
"the _hyperscript worker plugin. See " +
"https://hyperscript.org/features/worker/ for " +
"more info.",
);
return undefined;
}
});
t.addFeature("behavior", function (t, r, n) {
if (!n.matchToken("behavior")) return;
var i = t.requireElement("dotOrColonPath", n).evaluate();
var a = i.split(".");
var o = a.pop();
var s = [];
if (n.matchOpToken("(") && !n.matchOpToken(")")) {
do {
s.push(n.requireTokenType("IDENTIFIER").value);
} while (n.matchOpToken(","));
n.requireOpToken(")");
}
var u = t.requireElement("hyperscript", n);
for (var l = 0; l < u.features.length; l++) {
var c = u.features[l];
c.behavior = i;
}
return {
install: function (t, n) {
r.assignToNamespace(
e.document && e.document.body,
a,
o,
function (e, t, n) {
var a = r.getInternalData(e);
var o = h(a, i + "Scope");
for (var l = 0; l < s.length; l++) {
o[s[l]] = n[s[l]];
}
u.apply(e, t);
},
);
},
};
});
t.addFeature("install", function (t, r, n) {
if (!n.matchToken("install")) return;
var i = t.requireElement("dotOrColonPath", n).evaluate();
var a = i.split(".");
var o = t.parseElement("namedArgumentList", n);
var s;
return (s = {
install: function (t, n) {
r.unifiedEval(
{
args: [o],
op: function (r, o) {
var s = e;
for (var u = 0; u < a.length; u++) {
s = s[a[u]];
if (typeof s !== "object" && typeof s !== "function")
throw new Error("No such behavior defined as " + i);
}
if (!(s instanceof Function))
throw new Error(i + " is not a behavior");
s(t, n, o);
},
},
r.makeContext(t, s, t, null),
);
},
});
});
t.addGrammarElement("jsBody", function (e, t, r) {
var n = r.currentToken().start;
var i = r.currentToken();
var a = [];
var o = "";
var s = false;
while (r.hasMore()) {
i = r.consumeToken();
var u = r.token(0, true);
if (u.type === "IDENTIFIER" && u.value === "end") {
break;
}
if (s) {
if (i.type === "IDENTIFIER" || i.type === "NUMBER") {
o += i.value;
} else {
if (o !== "") a.push(o);
o = "";
s = false;
}
} else if (i.type === "IDENTIFIER" && i.value === "function") {
s = true;
}
}
var l = i.end + 1;
return {
type: "jsBody",
exposedFunctionNames: a,
jsSource: r.source.substring(n, l),
};
});
t.addFeature("js", function (t, r, n) {
if (!n.matchToken("js")) return;
var i = t.requireElement("jsBody", n);
var a =
i.jsSource +
"\nreturn { " +
i.exposedFunctionNames
.map(function (e) {
return e + ":" + e;
})
.join(",") +
" } ";
var o = new Function(a);
return {
jsSource: a,
function: o,
exposedFunctionNames: i.exposedFunctionNames,
install: function () {
Object.assign(e, o());
},
};
});
t.addCommand("js", function (t, r, n) {
if (!n.matchToken("js")) return;
var i = [];
if (n.matchOpToken("(")) {
if (n.matchOpToken(")")) {
} else {
do {
var a = n.requireTokenType("IDENTIFIER");
i.push(a.value);
} while (n.matchOpToken(","));
n.requireOpToken(")");
}
}
var o = t.requireElement("jsBody", n);
n.matchToken("end");
var s = E(Function, i.concat([o.jsSource]));
var u = {
jsSource: o.jsSource,
function: s,
inputs: i,
op: function (t) {
var n = [];
i.forEach(function (e) {
n.push(r.resolveSymbol(e, t, "default"));
});
var a = s.apply(e, n);
if (a && typeof a.then === "function") {
return new Promise(function (e) {
a.then(function (n) {
t.result = n;
e(r.findNext(this, t));
});
});
} else {
t.result = a;
return r.findNext(this, t);
}
},
};
return u;
});
t.addCommand("async", function (e, t, r) {
if (!r.matchToken("async")) return;
if (r.matchToken("do")) {
var n = e.requireElement("commandList", r);
var i = n;
while (i.next) i = i.next;
i.next = t.HALT;
r.requireToken("end");
} else {
var n = e.requireElement("command", r);
}
var a = {
body: n,
op: function (e) {
setTimeout(function () {
n.execute(e);
});
return t.findNext(this, e);
},
};
e.setParent(n, a);
return a;
});
t.addCommand("tell", function (e, t, r) {
var n = r.currentToken();
if (!r.matchToken("tell")) return;
var i = e.requireElement("expression", r);
var a = e.requireElement("commandList", r);
if (r.hasMore() && !e.featureStart(r.currentToken())) {
r.requireToken("end");
}
var o = "tell_" + n.start;
var s = {
value: i,
body: a,
args: [i],
resolveNext: function (e) {
var r = e.meta.iterators[o];
if (r.index < r.value.length) {
e.you = r.value[r.index++];
return a;
} else {
e.you = r.originalYou;
if (this.next) {
return this.next;
} else {
return t.findNext(this.parent, e);
}
}
},
op: function (e, t) {
if (t == null) {
t = [];
} else if (!(Array.isArray(t) || t instanceof NodeList)) {
t = [t];
}
e.meta.iterators[o] = { originalYou: e.you, index: 0, value: t };
return this.resolveNext(e);
},
};
e.setParent(a, s);
return s;
});
t.addCommand("wait", function (e, t, r) {
if (!r.matchToken("wait")) return;
var n;
if (r.matchToken("for")) {
r.matchToken("a");
var i = [];
do {
var a = r.token(0);
if (a.type === "NUMBER" || a.type === "L_PAREN") {
i.push({ time: e.requireElement("expression", r).evaluate() });
} else {
i.push({
name: e
.requireElement("dotOrColonPath", r, "Expected event name")
.evaluate(),
args: v(r),
});
}
} while (r.matchToken("or"));
if (r.matchToken("from")) {
var o = e.requireElement("expression", r);
}
n = {
event: i,
on: o,
args: [o],
op: function (e, r) {
var n = r ? r : e.me;
if (!(n instanceof EventTarget))
throw new Error(
"Not a valid event target: " + this.on.sourceFor(),
);
return new Promise((r) => {
var a = false;
for (const s of i) {
var o = (n) => {
e.result = n;
if (s.args) {
for (const t of s.args) {
e.locals[t.value] =
n[t.value] || (n.detail ? n.detail[t.value] : null);
}
}
if (!a) {
a = true;
r(t.findNext(this, e));
}
};
if (s.name) {
n.addEventListener(s.name, o, { once: true });
} else if (s.time != null) {
setTimeout(o, s.time, s.time);
}
}
});
},
};
return n;
} else {
var s;
if (r.matchToken("a")) {
r.requireToken("tick");
s = 0;
} else {
s = e.requireElement("expression", r);
}
n = {
type: "waitCmd",
time: s,
args: [s],
op: function (e, r) {
return new Promise((n) => {
setTimeout(() => {
n(t.findNext(this, e));
}, r);
});
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
return n;
}
});
t.addGrammarElement("dotOrColonPath", function (e, t, r) {
var n = r.matchTokenType("IDENTIFIER");
if (n) {
var i = [n.value];
var a = r.matchOpToken(".") || r.matchOpToken(":");
if (a) {
do {
i.push(r.requireTokenType("IDENTIFIER", "NUMBER").value);
} while (r.matchOpToken(a.value));
}
return {
type: "dotOrColonPath",
path: i,
evaluate: function () {
return i.join(a ? a.value : "");
},
};
}
});
t.addGrammarElement("eventName", function (e, t, r) {
var n;
if ((n = r.matchTokenType("STRING"))) {
return {
evaluate: function () {
return n.value;
},
};
}
return e.parseElement("dotOrColonPath", r);
});
function d(e, t, r, n) {
var i = t.requireElement("eventName", n);
var a = t.parseElement("namedArgumentList", n);
if (
(e === "send" && n.matchToken("to")) ||
(e === "trigger" && n.matchToken("on"))
) {
var o = t.requireElement("expression", n);
} else {
var o = t.requireElement("implicitMeTarget", n);
}
var s = {
eventName: i,
details: a,
to: o,
args: [o, i, a],
op: function (e, t, n, i) {
r.nullCheck(t, o);
r.implicitLoop(t, function (t) {
r.triggerEvent(t, n, i, e.me);
});
return r.findNext(s, e);
},
};
return s;
}
t.addCommand("trigger", function (e, t, r) {
if (r.matchToken("trigger")) {
return d("trigger", e, t, r);
}
});
t.addCommand("send", function (e, t, r) {
if (r.matchToken("send")) {
return d("send", e, t, r);
}
});
var T = function (e, t, r, n) {
if (n) {
if (e.commandBoundary(r.currentToken())) {
e.raiseParseError(
r,
"'return' commands must return a value. If you do not wish to return a value, use 'exit' instead.",
);
} else {
var i = e.requireElement("expression", r);
}
}
var a = {
value: i,
args: [i],
op: function (e, r) {
var n = e.meta.resolve;
e.meta.returned = true;
e.meta.returnValue = r;
if (n) {
if (r) {
n(r);
} else {
n();
}
}
return t.HALT;
},
};
return a;
};
t.addCommand("return", function (e, t, r) {
if (r.matchToken("return")) {
return T(e, t, r, true);
}
});
t.addCommand("exit", function (e, t, r) {
if (r.matchToken("exit")) {
return T(e, t, r, false);
}
});
t.addCommand("halt", function (e, t, r) {
if (r.matchToken("halt")) {
if (r.matchToken("the")) {
r.requireToken("event");
if (r.matchOpToken("'")) {
r.requireToken("s");
}
var n = true;
}
if (r.matchToken("bubbling")) {
var i = true;
} else if (r.matchToken("default")) {
var a = true;
}
var o = T(e, t, r, false);
var s = {
keepExecuting: true,
bubbling: i,
haltDefault: a,
exit: o,
op: function (e) {
if (e.event) {
if (i) {
e.event.stopPropagation();
} else if (a) {
e.event.preventDefault();
} else {
e.event.stopPropagation();
e.event.preventDefault();
}
if (n) {
return t.findNext(this, e);
} else {
return o;
}
}
},
};
return s;
}
});
t.addCommand("log", function (e, t, r) {
if (!r.matchToken("log")) return;
var n = [e.parseElement("expression", r)];
while (r.matchOpToken(",")) {
n.push(e.requireElement("expression", r));
}
if (r.matchToken("with")) {
var i = e.requireElement("expression", r);
}
var a = {
exprs: n,
withExpr: i,
args: [i, n],
op: function (e, r, n) {
if (r) {
r.apply(null, n);
} else {
console.log.apply(null, n);
}
return t.findNext(this, e);
},
};
return a;
});
t.addCommand("beep!", function (e, t, r) {
if (!r.matchToken("beep!")) return;
var n = [e.parseElement("expression", r)];
while (r.matchOpToken(",")) {
n.push(e.requireElement("expression", r));
}
var i = {
exprs: n,
args: [n],
op: function (e, r) {
for (let i = 0; i < n.length; i++) {
const a = n[i];
const o = r[i];
t.beepValueToConsole(e.me, a, o);
}
return t.findNext(this, e);
},
};
return i;
});
t.addCommand("throw", function (e, t, r) {
if (!r.matchToken("throw")) return;
var n = e.requireElement("expression", r);
var i = {
expr: n,
args: [n],
op: function (e, r) {
t.registerHyperTrace(e, r);
throw r;
},
};
return i;
});
var y = function (e, t, r) {
var n = e.requireElement("expression", r);
var i = {
expr: n,
args: [n],
op: function (e, r) {
e.result = r;
return t.findNext(i, e);
},
};
return i;
};
t.addCommand("call", function (e, t, r) {
if (!r.matchToken("call")) return;
var n = y(e, t, r);
if (n.expr && n.expr.type !== "functionCall") {
e.raiseParseError(r, "Must be a function invocation");
}
return n;
});
t.addCommand("get", function (e, t, r) {
if (r.matchToken("get")) {
return y(e, t, r);
}
});
t.addCommand("make", function (e, t, r) {
if (!r.matchToken("make")) return;
r.matchToken("a") || r.matchToken("an");
var n = e.requireElement("expression", r);
var i = [];
if (n.type !== "queryRef" && r.matchToken("from")) {
do {
i.push(e.requireElement("expression", r));
} while (r.matchOpToken(","));
}
if (r.matchToken("called")) {
var a = e.requireElement("symbol", r);
}
var o;
if (n.type === "queryRef") {
o = {
op: function (e) {
var r,
i = "div",
o,
s = [];
var u = /(?:(^|#|\.)([^#\. ]+))/g;
while ((r = u.exec(n.css))) {
if (r[1] === "") i = r[2].trim();
else if (r[1] === "#") o = r[2].trim();
else s.push(r[2].trim());
}
var l = document.createElement(i);
if (o !== undefined) l.id = o;
for (var c = 0; c < s.length; c++) {
var f = s[c];
l.classList.add(f);
}
e.result = l;
if (a) {
t.setSymbol(a.name, e, a.scope, l);
}
return t.findNext(this, e);
},
};
return o;
} else {
o = {
args: [n, i],
op: function (e, r, n) {
e.result = E(r, n);
if (a) {
t.setSymbol(a.name, e, a.scope, e.result);
}
return t.findNext(this, e);
},
};
return o;
}
});
t.addGrammarElement("pseudoCommand", function (e, t, r) {
let n = r.token(1);
if (!(n && n.op && (n.value === "." || n.value === "("))) {
return null;
}
var i = e.requireElement("primaryExpression", r);
var a = i.root;
var o = i;
while (a.root != null) {
o = o.root;
a = a.root;
}
if (i.type !== "functionCall") {
e.raiseParseError(r, "Pseudo-commands must be function calls");
}
if (o.type === "functionCall" && o.root.root == null) {
if (r.matchAnyToken("the", "to", "on", "with", "into", "from", "at")) {
var s = e.requireElement("expression", r);
} else if (r.matchToken("me")) {
var s = e.requireElement("implicitMeTarget", r);
}
}
var u;
if (s) {
u = {
type: "pseudoCommand",
root: s,
argExressions: o.argExressions,
args: [s, o.argExressions],
op: function (e, r, n) {
t.nullCheck(r, s);
var i = r[o.root.name];
t.nullCheck(i, o);
if (i.hyperfunc) {
n.push(e);
}
e.result = i.apply(r, n);
return t.findNext(u, e);
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
} else {
u = {
type: "pseudoCommand",
expr: i,
args: [i],
op: function (e, r) {
e.result = r;
return t.findNext(u, e);
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
}
return u;
});
var k = function (e, t, r, n, i) {
var a = n.type === "symbol";
var o = n.type === "attributeRef";
var s = n.type === "styleRef";
var u = n.type === "arrayIndex";
if (!(o || s || a) && n.root == null) {
e.raiseParseError(
r,
"Can only put directly into symbols, not references",
);
}
var l = null;
var c = null;
if (a) {
} else if (o || s) {
l = e.requireElement("implicitMeTarget", r);
var f = n;
} else if (u) {
c = n.firstIndex;
l = n.root;
} else {
c = n.prop ? n.prop.value : null;
var f = n.attribute;
l = n.root;
}
var m = {
target: n,
symbolWrite: a,
value: i,
args: [l, c, i],
op: function (e, r, i, o) {
if (a) {
t.setSymbol(n.name, e, n.scope, o);
} else {
t.nullCheck(r, l);
if (u) {
r[i] = o;
} else {
t.implicitLoop(r, function (e) {
if (f) {
if (f.type === "attributeRef") {
if (o == null) {
e.removeAttribute(f.name);
} else {
e.setAttribute(f.name, o);
}
} else {
e.style[f.name] = o;
}
} else {
e[i] = o;
}
});
}
}
return t.findNext(this, e);
},
};
return m;
};
t.addCommand("default", function (e, t, r) {
if (!r.matchToken("default")) return;
var n = e.requireElement("assignableExpression", r);
r.requireToken("to");
var i = e.requireElement("expression", r);
var a = k(e, t, r, n, i);
var o = {
target: n,
value: i,
setter: a,
args: [n],
op: function (e, r) {
if (r) {
return t.findNext(this, e);
} else {
return a;
}
},
};
a.parent = o;
return o;
});
t.addCommand("set", function (e, t, r) {
if (!r.matchToken("set")) return;
if (r.currentToken().type === "L_BRACE") {
var n = e.requireElement("objectLiteral", r);
r.requireToken("on");
var i = e.requireElement("expression", r);
var a = {
objectLiteral: n,
target: i,
args: [n, i],
op: function (e, r, n) {
Object.assign(n, r);
return t.findNext(this, e);
},
};
return a;
}
try {
r.pushFollow("to");
var i = e.requireElement("assignableExpression", r);
} finally {
r.popFollow();
}
r.requireToken("to");
var o = e.requireElement("expression", r);
return k(e, t, r, i, o);
});
t.addCommand("if", function (e, t, r) {
if (!r.matchToken("if")) return;
var n = e.requireElement("expression", r);
r.matchToken("then");
var i = e.parseElement("commandList", r);
var a = false;
let o = r.matchToken("else") || r.matchToken("otherwise");
if (o) {
let t = r.peekToken("if");
a = t != null && t.line === o.line;
if (a) {
var s = e.parseElement("command", r);
} else {
var s = e.parseElement("commandList", r);
}
}
if (r.hasMore() && !a) {
r.requireToken("end");
}
var u = {
expr: n,
trueBranch: i,
falseBranch: s,
args: [n],
op: function (e, r) {
if (r) {
return i;
} else if (s) {
return s;
} else {
return t.findNext(this, e);
}
},
};
e.setParent(i, u);
e.setParent(s, u);
return u;
});
var x = function (e, t, r, n) {
var i = t.currentToken();
var a;
if (t.matchToken("for") || n) {
var o = t.requireTokenType("IDENTIFIER");
a = o.value;
t.requireToken("in");
var s = e.requireElement("expression", t);
} else if (t.matchToken("in")) {
a = "it";
var s = e.requireElement("expression", t);
} else if (t.matchToken("while")) {
var u = e.requireElement("expression", t);
} else if (t.matchToken("until")) {
var l = true;
if (t.matchToken("event")) {
var c = e.requireElement("dotOrColonPath", t, "Expected event name");
if (t.matchToken("from")) {
var f = e.requireElement("expression", t);
}
} else {
var u = e.requireElement("expression", t);
}
} else {
if (
!e.commandBoundary(t.currentToken()) &&
t.currentToken().value !== "forever"
) {
var m = e.requireElement("expression", t);
t.requireToken("times");
} else {
t.matchToken("forever");
var p = true;
}
}
if (t.matchToken("index")) {
var o = t.requireTokenType("IDENTIFIER");
var h = o.value;
}
var v = e.parseElement("commandList", t);
if (v && c) {
var d = v;
while (d.next) {
d = d.next;
}
var E = {
type: "waitATick",
op: function () {
return new Promise(function (e) {
setTimeout(function () {
e(r.findNext(E));
}, 0);
});
},
};
d.next = E;
}
if (t.hasMore()) {
t.requireToken("end");
}
if (a == null) {
a = "_implicit_repeat_" + i.start;
var T = a;
} else {
var T = a + "_" + i.start;
}
var y = {
identifier: a,
indexIdentifier: h,
slot: T,
expression: s,
forever: p,
times: m,
until: l,
event: c,
on: f,
whileExpr: u,
resolveNext: function () {
return this;
},
loop: v,
args: [u, m],
op: function (e, t, n) {
var i = e.meta.iterators[T];
var o = false;
var s = null;
if (this.forever) {
o = true;
} else if (this.until) {
if (c) {
o = e.meta.iterators[T].eventFired === false;
} else {
o = t !== true;
}
} else if (u) {
o = t;
} else if (n) {
o = i.index < n;
} else {
var l = i.iterator.next();
o = !l.done;
s = l.value;
}
if (o) {
if (i.value) {
e.result = e.locals[a] = s;
} else {
e.result = i.index;
}
if (h) {
e.locals[h] = i.index;
}
i.index++;
return v;
} else {
e.meta.iterators[T] = null;
return r.findNext(this.parent, e);
}
},
};
e.setParent(v, y);
var k = {
name: "repeatInit",
args: [s, c, f],
op: function (e, t, r, n) {
var i = { index: 0, value: t, eventFired: false };
e.meta.iterators[T] = i;
if (t && t[Symbol.iterator]) {
i.iterator = t[Symbol.iterator]();
}
if (c) {
var a = n || e.me;
a.addEventListener(
r,
function (t) {
e.meta.iterators[T].eventFired = true;
},
{ once: true },
);
}
return y;
},
execute: function (e) {
return r.unifiedExec(this, e);
},
};
e.setParent(y, k);
return k;
};
t.addCommand("repeat", function (e, t, r) {
if (r.matchToken("repeat")) {
return x(e, r, t, false);
}
});
t.addCommand("for", function (e, t, r) {
if (r.matchToken("for")) {
return x(e, r, t, true);
}
});
t.addCommand("continue", function (e, t, r) {
if (!r.matchToken("continue")) return;
var n = {
op: function (t) {
for (var n = this.parent; true; n = n.parent) {
if (n == undefined) {
e.raiseParseError(
r,
"Command `continue` cannot be used outside of a `repeat` loop.",
);
}
if (n.loop != undefined) {
return n.resolveNext(t);
}
}
},
};
return n;
});
t.addCommand("break", function (e, t, r) {
if (!r.matchToken("break")) return;
var n = {
op: function (n) {
for (var i = this.parent; true; i = i.parent) {
if (i == undefined) {
e.raiseParseError(
r,
"Command `continue` cannot be used outside of a `repeat` loop.",
);
}
if (i.loop != undefined) {
return t.findNext(i.parent, n);
}
}
},
};
return n;
});
t.addGrammarElement("stringLike", function (e, t, r) {
return e.parseAnyOf(["string", "nakedString"], r);
});
t.addCommand("append", function (e, t, r) {
if (!r.matchToken("append")) return;
var n = null;
var i = e.requireElement("expression", r);
var a = {
type: "symbol",
evaluate: function (e) {
return t.resolveSymbol("result", e);
},
};
if (r.matchToken("to")) {
n = e.requireElement("expression", r);
} else {
n = a;
}
var o = null;
if (n.type === "symbol" || n.type === "attributeRef" || n.root != null) {
o = k(e, t, r, n, a);
}
var s = {
value: i,
target: n,
args: [n, i],
op: function (e, r, n) {
if (Array.isArray(r)) {
r.push(n);
return t.findNext(this, e);
} else if (r instanceof Element) {
r.innerHTML += n;
return t.findNext(this, e);
} else if (o) {
e.result = (r || "") + n;
return o;
} else {
throw Error("Unable to append a value!");
}
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
if (o != null) {
o.parent = s;
}
return s;
});
function g(e, t, r) {
r.matchToken("at") || r.matchToken("from");
const n = { includeStart: true, includeEnd: false };
n.from = r.matchToken("start") ? 0 : e.requireElement("expression", r);
if (r.matchToken("to") || r.matchOpToken("..")) {
if (r.matchToken("end")) {
n.toEnd = true;
} else {
n.to = e.requireElement("expression", r);
}
}
if (r.matchToken("inclusive")) n.includeEnd = true;
else if (r.matchToken("exclusive")) n.includeStart = false;
return n;
}
class b {
constructor(e, t) {
this.re = e;
this.str = t;
}
next() {
const e = this.re.exec(this.str);
if (e === null) return { done: true };
else return { value: e };
}
}
class w {
constructor(e, t, r) {
this.re = e;
this.flags = t;
this.str = r;
}
[Symbol.iterator]() {
return new b(new RegExp(this.re, this.flags), this.str);
}
}
t.addCommand("pick", (e, t, r) => {
if (!r.matchToken("pick")) return;
r.matchToken("the");
if (
r.matchToken("item") ||
r.matchToken("items") ||
r.matchToken("character") ||
r.matchToken("characters")
) {
const n = g(e, t, r);
r.requireToken("from");
const i = e.requireElement("expression", r);
return {
args: [i, n.from, n.to],
op(e, r, i, a) {
if (n.toEnd) a = r.length;
if (!n.includeStart) i++;
if (n.includeEnd) a++;
if (a == null || a == undefined) a = i + 1;
e.result = r.slice(i, a);
return t.findNext(this, e);
},
};
}
if (r.matchToken("match")) {
r.matchToken("of");
const n = e.parseElement("expression", r);
let i = "";
if (r.matchOpToken("|")) {
i = r.requireToken("identifier").value;
}
r.requireToken("from");
const a = e.parseElement("expression", r);
return {
args: [a, n],
op(e, r, n) {
e.result = new RegExp(n, i).exec(r);
return t.findNext(this, e);
},
};
}
if (r.matchToken("matches")) {
r.matchToken("of");
const n = e.parseElement("expression", r);
let i = "gu";
if (r.matchOpToken("|")) {
i = "g" + r.requireToken("identifier").value.replace("g", "");
}
console.log("flags", i);
r.requireToken("from");
const a = e.parseElement("expression", r);
return {
args: [a, n],
op(e, r, n) {
e.result = new w(n, i, r);
return t.findNext(this, e);
},
};
}
});
t.addCommand("increment", function (e, t, r) {
if (!r.matchToken("increment")) return;
var n;
var i = e.parseElement("assignableExpression", r);
if (r.matchToken("by")) {
n = e.requireElement("expression", r);
}
var a = {
type: "implicitIncrementOp",
target: i,
args: [i, n],
op: function (e, t, r) {
t = t ? parseFloat(t) : 0;
r = n ? parseFloat(r) : 1;
var i = t + r;
e.result = i;
return i;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return k(e, t, r, i, a);
});
t.addCommand("decrement", function (e, t, r) {
if (!r.matchToken("decrement")) return;
var n;
var i = e.parseElement("assignableExpression", r);
if (r.matchToken("by")) {
n = e.requireElement("expression", r);
}
var a = {
type: "implicitDecrementOp",
target: i,
args: [i, n],
op: function (e, t, r) {
t = t ? parseFloat(t) : 0;
r = n ? parseFloat(r) : 1;
var i = t - r;
e.result = i;
return i;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
return k(e, t, r, i, a);
});
function S(e, t) {
var r = "text";
var n;
e.matchToken("a") || e.matchToken("an");
if (e.matchToken("json") || e.matchToken("Object")) {
r = "json";
} else if (e.matchToken("response")) {
r = "response";
} else if (e.matchToken("html")) {
r = "html";
} else if (e.matchToken("text")) {
} else {
n = t.requireElement("dotOrColonPath", e).evaluate();
}
return { type: r, conversion: n };
}
t.addCommand("fetch", function (e, t, r) {
if (!r.matchToken("fetch")) return;
var n = e.requireElement("stringLike", r);
if (r.matchToken("as")) {
var i = S(r, e);
}
if (r.matchToken("with") && r.currentToken().value !== "{") {
var a = e.parseElement("nakedNamedArgumentList", r);
} else {
var a = e.parseElement("objectLiteral", r);
}
if (i == null && r.matchToken("as")) {
i = S(r, e);
}
var o = i ? i.type : "text";
var s = i ? i.conversion : null;
var u = {
url: n,
argExpressions: a,
args: [n, a],
op: function (e, r, n) {
var i = n || {};
i["sender"] = e.me;
i["headers"] = i["headers"] || {};
var a = new AbortController();
let l = e.me.addEventListener(
"fetch:abort",
function () {
a.abort();
},
{ once: true },
);
i["signal"] = a.signal;
t.triggerEvent(e.me, "hyperscript:beforeFetch", i);
t.triggerEvent(e.me, "fetch:beforeRequest", i);
n = i;
var c = false;
if (n.timeout) {
setTimeout(function () {
if (!c) {
a.abort();
}
}, n.timeout);
}
return fetch(r, n)
.then(function (r) {
let n = { response: r };
t.triggerEvent(e.me, "fetch:afterResponse", n);
r = n.response;
if (o === "response") {
e.result = r;
t.triggerEvent(e.me, "fetch:afterRequest", { result: r });
c = true;
return t.findNext(u, e);
}
if (o === "json") {
return r.json().then(function (r) {
e.result = r;
t.triggerEvent(e.me, "fetch:afterRequest", { result: r });
c = true;
return t.findNext(u, e);
});
}
return r.text().then(function (r) {
if (s) r = t.convertValue(r, s);
if (o === "html") r = t.convertValue(r, "Fragment");
e.result = r;
t.triggerEvent(e.me, "fetch:afterRequest", { result: r });
c = true;
return t.findNext(u, e);
});
})
.catch(function (r) {
t.triggerEvent(e.me, "fetch:error", { reason: r });
throw r;
})
.finally(function () {
e.me.removeEventListener("fetch:abort", l);
});
},
};
return u;
});
}
function y(e) {
e.addCommand("settle", function (e, t, r) {
if (r.matchToken("settle")) {
if (!e.commandBoundary(r.currentToken())) {
var n = e.requireElement("expression", r);
} else {
var n = e.requireElement("implicitMeTarget", r);
}
var i = {
type: "settleCmd",
args: [n],
op: function (e, r) {
t.nullCheck(r, n);
var a = null;
var o = false;
var s = false;
var u = new Promise(function (e) {
a = e;
});
r.addEventListener(
"transitionstart",
function () {
s = true;
},
{ once: true },
);
setTimeout(function () {
if (!s && !o) {
a(t.findNext(i, e));
}
}, 500);
r.addEventListener(
"transitionend",
function () {
if (!o) {
a(t.findNext(i, e));
}
},
{ once: true },
);
return u;
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
return i;
}
});
e.addCommand("add", function (e, t, r) {
if (r.matchToken("add")) {
var n = e.parseElement("classRef", r);
var i = null;
var a = null;
if (n == null) {
i = e.parseElement("attributeRef", r);
if (i == null) {
a = e.parseElement("styleLiteral", r);
if (a == null) {
e.raiseParseError(
r,
"Expected either a class reference or attribute expression",
);
}
}
} else {
var o = [n];
while ((n = e.parseElement("classRef", r))) {
o.push(n);
}
}
if (r.matchToken("to")) {
var s = e.requireElement("expression", r);
} else {
var s = e.requireElement("implicitMeTarget", r);
}
if (r.matchToken("when")) {
if (a) {
e.raiseParseError(
r,
"Only class and properties are supported with a when clause",
);
}
var u = e.requireElement("expression", r);
}
if (o) {
return {
classRefs: o,
to: s,
args: [s, o],
op: function (e, r, n) {
t.nullCheck(r, s);
t.forEach(n, function (n) {
t.implicitLoop(r, function (r) {
if (u) {
e.result = r;
let i = t.evaluateNoPromise(u, e);
if (i) {
if (r instanceof Element) r.classList.add(n.className);
} else {
if (r instanceof Element) r.classList.remove(n.className);
}
e.result = null;
} else {
if (r instanceof Element) r.classList.add(n.className);
}
});
});
return t.findNext(this, e);
},
};
} else if (i) {
return {
type: "addCmd",
attributeRef: i,
to: s,
args: [s],
op: function (e, r, n) {
t.nullCheck(r, s);
t.implicitLoop(r, function (r) {
if (u) {
e.result = r;
let n = t.evaluateNoPromise(u, e);
if (n) {
r.setAttribute(i.name, i.value);
} else {
r.removeAttribute(i.name);
}
e.result = null;
} else {
r.setAttribute(i.name, i.value);
}
});
return t.findNext(this, e);
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
} else {
return {
type: "addCmd",
cssDeclaration: a,
to: s,
args: [s, a],
op: function (e, r, n) {
t.nullCheck(r, s);
t.implicitLoop(r, function (e) {
e.style.cssText += n;
});
return t.findNext(this, e);
},
execute: function (e) {
return t.unifiedExec(this, e);
},
};
}
}
});
e.addGrammarElement("styleLiteral", function (e, t, r) {
if (!r.matchOpToken("{")) return;
var n = [""];
var i = [];
while (r.hasMore()) {
if (r.matchOpToken("\\")) {
r.consumeToken();
} else if (r.matchOpToken("}")) {
break;
} else if (r.matchToken("$")) {
var a = r.matchOpToken("{");
var o = e.parseElement("expression", r);
if (a) r.requireOpToken("}");
i.push(o);
n.push("");
} else {
var s = r.consumeToken();
n[n.length - 1] += r.source.substring(s.start, s.end);
}
n[n.length - 1] += r.lastWhitespace();
}
return {
type: "styleLiteral",
args: [i],
op: function (e, t) {
var r = "";
n.forEach(function (e, n) {
r += e;
if (n in t) r += t[n];
});
return r;
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
});
e.addCommand("remove", function (e, t, r) {
if (r.matchToken("remove")) {
var n = e.parseElement("classRef", r);
var i = null;
var a = null;
if (n == null) {
i = e.parseElement("attributeRef", r);
if (i == null) {
a = e.parseElement("expression", r);
if (a == null) {
e.raiseParseError(
r,
"Expected either a class reference, attribute expression or value expression",
);
}
}
} else {
var o = [n];
while ((n = e.parseElement("classRef", r))) {
o.push(n);
}
}
if (r.matchToken("from")) {
var s = e.requireElement("expression", r);
} else {
if (a == null) {
var s = e.requireElement("implicitMeTarget", r);
}
}
if (a) {
return {
elementExpr: a,
from: s,
args: [a, s],
op: function (e, r, n) {
t.nullCheck(r, a);
t.implicitLoop(r, function (e) {
if (e.parentElement && (n == null || n.contains(e))) {
e.parentElement.removeChild(e);
}
});
return t.findNext(this, e);
},
};
} else {
return {
classRefs: o,
attributeRef: i,
elementExpr: a,
from: s,
args: [o, s],
op: function (e, r, n) {
t.nullCheck(n, s);
if (r) {
t.forEach(r, function (e) {
t.implicitLoop(n, function (t) {
t.classList.remove(e.className);
});
});
} else {
t.implicitLoop(n, function (e) {
e.removeAttribute(i.name);
});
}
return t.findNext(this, e);
},
};
}
}
});
e.addCommand("toggle", function (e, t, r) {
if (r.matchToken("toggle")) {
r.matchAnyToken("the", "my");
if (r.currentToken().type === "STYLE_REF") {
let t = r.consumeToken();
var n = t.value.substr(1);
var a = true;
var o = i(e, r, n);
if (r.matchToken("of")) {
r.pushFollow("with");
try {
var s = e.requireElement("expression", r);
} finally {
r.popFollow();
}
} else {
var s = e.requireElement("implicitMeTarget", r);
}
} else if (r.matchToken("between")) {
var u = true;
var l = e.parseElement("classRef", r);
r.requireToken("and");
var c = e.requireElement("classRef", r);
} else {
var l = e.parseElement("classRef", r);
var f = null;
if (l == null) {
f = e.parseElement("attributeRef", r);
if (f == null) {
e.raiseParseError(
r,
"Expected either a class reference or attribute expression",
);
}
} else {
var m = [l];
while ((l = e.parseElement("classRef", r))) {
m.push(l);
}
}
}
if (a !== true) {
if (r.matchToken("on")) {
var s = e.requireElement("expression", r);
} else {
var s = e.requireElement("implicitMeTarget", r);
}
}
if (r.matchToken("for")) {
var p = e.requireElement("expression", r);
} else if (r.matchToken("until")) {
var h = e.requireElement("dotOrColonPath", r, "Expected event name");
if (r.matchToken("from")) {
var v = e.requireElement("expression", r);
}
}
var d = {
classRef: l,
classRef2: c,
classRefs: m,
attributeRef: f,
on: s,
time: p,
evt: h,
from: v,
toggle: function (e, r, n, i) {
t.nullCheck(e, s);
if (a) {
t.implicitLoop(e, function (e) {
o("toggle", e);
});
} else if (u) {
t.implicitLoop(e, function (e) {
if (e.classList.contains(r.className)) {
e.classList.remove(r.className);
e.classList.add(n.className);
} else {
e.classList.add(r.className);
e.classList.remove(n.className);
}
});
} else if (i) {
t.forEach(i, function (r) {
t.implicitLoop(e, function (e) {
e.classList.toggle(r.className);
});
});
} else {
t.forEach(e, function (e) {
if (e.hasAttribute(f.name)) {
e.removeAttribute(f.name);
} else {
e.setAttribute(f.name, f.value);
}
});
}
},
args: [s, p, h, v, l, c, m],
op: function (e, r, n, i, a, o, s, u) {
if (n) {
return new Promise(function (i) {
d.toggle(r, o, s, u);
setTimeout(function () {
d.toggle(r, o, s, u);
i(t.findNext(d, e));
}, n);
});
} else if (i) {
return new Promise(function (n) {
var l = a || e.me;
l.addEventListener(
i,
function () {
d.toggle(r, o, s, u);
n(t.findNext(d, e));
},
{ once: true },
);
d.toggle(r, o, s, u);
});
} else {
this.toggle(r, o, s, u);
return t.findNext(d, e);
}
},
};
return d;
}
});
var t = {
display: function (r, n, i) {
if (i) {
n.style.display = i;
} else if (r === "toggle") {
if (getComputedStyle(n).display === "none") {
t.display("show", n, i);
} else {
t.display("hide", n, i);
}
} else if (r === "hide") {
const t = e.runtime.getInternalData(n);
if (t.originalDisplay == null) {
t.originalDisplay = n.style.display;
}
n.style.display = "none";
} else {
const t = e.runtime.getInternalData(n);
if (t.originalDisplay && t.originalDisplay !== "none") {
n.style.display = t.originalDisplay;
} else {
n.style.removeProperty("display");
}
}
},
visibility: function (e, r, n) {
if (n) {
r.style.visibility = n;
} else if (e === "toggle") {
if (getComputedStyle(r).visibility === "hidden") {
t.visibility("show", r, n);
} else {
t.visibility("hide", r, n);
}
} else if (e === "hide") {
r.style.visibility = "hidden";
} else {
r.style.visibility = "visible";
}
},
opacity: function (e, r, n) {
if (n) {
r.style.opacity = n;
} else if (e === "toggle") {
if (getComputedStyle(r).opacity === "0") {
t.opacity("show", r, n);
} else {
t.opacity("hide", r, n);
}
} else if (e === "hide") {
r.style.opacity = "0";
} else {
r.style.opacity = "1";
}
},
};
var n = function (e, t, r) {
var n;
var i = r.currentToken();
if (i.value === "when" || i.value === "with" || e.commandBoundary(i)) {
n = e.parseElement("implicitMeTarget", r);
} else {
n = e.parseElement("expression", r);
}
return n;
};
var i = function (e, n, i) {
var a = r.defaultHideShowStrategy;
var o = t;
if (r.hideShowStrategies) {
o = Object.assign(o, r.hideShowStrategies);
}
i = i || a || "display";
var s = o[i];
if (s == null) {
e.raiseParseError(n, "Unknown show/hide strategy : " + i);
}
return s;
};
e.addCommand("hide", function (e, t, r) {
if (r.matchToken("hide")) {
var a = n(e, t, r);
var o = null;
if (r.matchToken("with")) {
o = r.requireTokenType("IDENTIFIER", "STYLE_REF").value;
if (o.indexOf("*") === 0) {
o = o.substr(1);
}
}
var s = i(e, r, o);
return {
target: a,
args: [a],
op: function (e, r) {
t.nullCheck(r, a);
t.implicitLoop(r, function (e) {
s("hide", e);
});
return t.findNext(this, e);
},
};
}
});
e.addCommand("show", function (e, t, r) {
if (r.matchToken("show")) {
var a = n(e, t, r);
var o = null;
if (r.matchToken("with")) {
o = r.requireTokenType("IDENTIFIER", "STYLE_REF").value;
if (o.indexOf("*") === 0) {
o = o.substr(1);
}
}
var s = null;
if (r.matchOpToken(":")) {
var u = r.consumeUntilWhitespace();
r.matchTokenType("WHITESPACE");
s = u
.map(function (e) {
return e.value;
})
.join("");
}
if (r.matchToken("when")) {
var l = e.requireElement("expression", r);
}
var c = i(e, r, o);
return {
target: a,
when: l,
args: [a],
op: function (e, r) {
t.nullCheck(r, a);
t.implicitLoop(r, function (r) {
if (l) {
e.result = r;
let n = t.evaluateNoPromise(l, e);
if (n) {
c("show", r, s);
} else {
c("hide", r);
}
e.result = null;
} else {
c("show", r, s);
}
});
return t.findNext(this, e);
},
};
}
});
e.addCommand("take", function (e, t, r) {
if (r.matchToken("take")) {
let u = null;
let l = [];
while ((u = e.parseElement("classRef", r))) {
l.push(u);
}
var n = null;
var i = null;
let c = l.length > 0;
if (!c) {
n = e.parseElement("attributeRef", r);
if (n == null) {
e.raiseParseError(
r,
"Expected either a class reference or attribute expression",
);
}
if (r.matchToken("with")) {
i = e.requireElement("expression", r);
}
}
if (r.matchToken("from")) {
var a = e.requireElement("expression", r);
}
if (r.matchToken("for")) {
var o = e.requireElement("expression", r);
} else {
var o = e.requireElement("implicitMeTarget", r);
}
if (c) {
var s = {
classRefs: l,
from: a,
forElt: o,
args: [l, a, o],
op: function (e, r, n, i) {
t.nullCheck(i, o);
t.implicitLoop(r, function (e) {
var r = e.className;
if (n) {
t.implicitLoop(n, function (e) {
e.classList.remove(r);
});
} else {
t.implicitLoop(e, function (e) {
e.classList.remove(r);
});
}
t.implicitLoop(i, function (e) {
e.classList.add(r);
});
});
return t.findNext(this, e);
},
};
return s;
} else {
var s = {
attributeRef: n,
from: a,
forElt: o,
args: [a, o, i],
op: function (e, r, i, s) {
t.nullCheck(r, a);
t.nullCheck(i, o);
t.implicitLoop(r, function (e) {
if (!s) {
e.removeAttribute(n.name);
} else {
e.setAttribute(n.name, s);
}
});
t.implicitLoop(i, function (e) {
e.setAttribute(n.name, n.value || "");
});
return t.findNext(this, e);
},
};
return s;
}
}
});
function a(t, r, n, i) {
if (n != null) {
var a = t.resolveSymbol(n, r);
} else {
var a = r;
}
if (a instanceof Element || a instanceof HTMLDocument) {
while (a.firstChild) a.removeChild(a.firstChild);
a.append(e.runtime.convertValue(i, "Fragment"));
t.processNode(a);
} else {
if (n != null) {
t.setSymbol(n, r, null, i);
} else {
throw "Don't know how to put a value into " + typeof r;
}
}
}
e.addCommand("put", function (e, t, r) {
if (r.matchToken("put")) {
var n = e.requireElement("expression", r);
var i = r.matchAnyToken("into", "before", "after");
if (i == null && r.matchToken("at")) {
r.matchToken("the");
i = r.matchAnyToken("start", "end");
r.requireToken("of");
}
if (i == null) {
e.raiseParseError(
r,
"Expected one of 'into', 'before', 'at start of', 'at end of', 'after'",
);
}
var o = e.requireElement("expression", r);
var s = i.value;
var u = false;
var l = false;
var c = null;
var f = null;
if (o.type === "arrayIndex" && s === "into") {
u = true;
f = o.prop;
c = o.root;
} else if (o.prop && o.root && s === "into") {
f = o.prop.value;
c = o.root;
} else if (o.type === "symbol" && s === "into") {
l = true;
f = o.name;
} else if (o.type === "attributeRef" && s === "into") {
var m = true;
f = o.name;
c = e.requireElement("implicitMeTarget", r);
} else if (o.type === "styleRef" && s === "into") {
var p = true;
f = o.name;
c = e.requireElement("implicitMeTarget", r);
} else if (o.attribute && s === "into") {
var m = o.attribute.type === "attributeRef";
var p = o.attribute.type === "styleRef";
f = o.attribute.name;
c = o.root;
} else {
c = o;
}
var h = {
target: o,
operation: s,
symbolWrite: l,
value: n,
args: [c, f, n],
op: function (e, r, n, i) {
if (l) {
a(t, e, n, i);
} else {
t.nullCheck(r, c);
if (s === "into") {
if (m) {
t.implicitLoop(r, function (e) {
e.setAttribute(n, i);
});
} else if (p) {
t.implicitLoop(r, function (e) {
e.style[n] = i;
});
} else if (u) {
r[n] = i;
} else {
t.implicitLoop(r, function (e) {
a(t, e, n, i);
});
}
} else {
var o =
s === "before"
? Element.prototype.before
: s === "after"
? Element.prototype.after
: s === "start"
? Element.prototype.prepend
: s === "end"
? Element.prototype.append
: Element.prototype.append;
t.implicitLoop(r, function (e) {
o.call(
e,
i instanceof Node ? i : t.convertValue(i, "Fragment"),
);
if (e.parentElement) {
t.processNode(e.parentElement);
} else {
t.processNode(e);
}
});
}
}
return t.findNext(this, e);
},
};
return h;
}
});
function o(e, t, r) {
var n;
if (
r.matchToken("the") ||
r.matchToken("element") ||
r.matchToken("elements") ||
r.currentToken().type === "CLASS_REF" ||
r.currentToken().type === "ID_REF" ||
(r.currentToken().op && r.currentToken().value === "<")
) {
e.possessivesDisabled = true;
try {
n = e.parseElement("expression", r);
} finally {
delete e.possessivesDisabled;
}
if (r.matchOpToken("'")) {
r.requireToken("s");
}
} else if (
r.currentToken().type === "IDENTIFIER" &&
r.currentToken().value === "its"
) {
var i = r.matchToken("its");
n = {
type: "pseudopossessiveIts",
token: i,
name: i.value,
evaluate: function (e) {
return t.resolveSymbol("it", e);
},
};
} else {
r.matchToken("my") || r.matchToken("me");
n = e.parseElement("implicitMeTarget", r);
}
return n;
}
e.addCommand("transition", function (e, t, n) {
if (n.matchToken("transition")) {
var i = o(e, t, n);
var a = [];
var s = [];
var u = [];
var l = n.currentToken();
while (
!e.commandBoundary(l) &&
l.value !== "over" &&
l.value !== "using"
) {
if (n.currentToken().type === "STYLE_REF") {
let e = n.consumeToken();
let t = e.value.substr(1);
a.push({
type: "styleRefValue",
evaluate: function () {
return t;
},
});
} else {
a.push(e.requireElement("stringLike", n));
}
if (n.matchToken("from")) {
s.push(e.requireElement("expression", n));
} else {
s.push(null);
}
n.requireToken("to");
if (n.matchToken("initial")) {
u.push({
type: "initial_literal",
evaluate: function () {
return "initial";
},
});
} else {
u.push(e.requireElement("expression", n));
}
l = n.currentToken();
}
if (n.matchToken("over")) {
var c = e.requireElement("expression", n);
} else if (n.matchToken("using")) {
var f = e.requireElement("expression", n);
}
var m = {
to: u,
args: [i, a, s, u, f, c],
op: function (e, n, a, o, s, u, l) {
t.nullCheck(n, i);
var c = [];
t.implicitLoop(n, function (e) {
var n = new Promise(function (n, i) {
var c = e.style.transition;
if (l) {
e.style.transition = "all " + l + "ms ease-in";
} else if (u) {
e.style.transition = u;
} else {
e.style.transition = r.defaultTransition;
}
var f = t.getInternalData(e);
var m = getComputedStyle(e);
var p = {};
for (var h = 0; h < m.length; h++) {
var v = m[h];
var d = m[v];
p[v] = d;
}
if (!f.initialStyles) {
f.initialStyles = p;
}
for (var h = 0; h < a.length; h++) {
var E = a[h];
var T = o[h];
if (T === "computed" || T == null) {
e.style[E] = p[E];
} else {
e.style[E] = T;
}
}
var y = false;
var k = false;
e.addEventListener(
"transitionend",
function () {
if (!k) {
e.style.transition = c;
k = true;
n();
}
},
{ once: true },
);
e.addEventListener(
"transitionstart",
function () {
y = true;
},
{ once: true },
);
setTimeout(function () {
if (!k && !y) {
e.style.transition = c;
k = true;
n();
}
}, 100);
setTimeout(function () {
var t = [];
for (var r = 0; r < a.length; r++) {
var n = a[r];
var i = s[r];
if (i === "initial") {
var o = f.initialStyles[n];
e.style[n] = o;
} else {
e.style[n] = i;
}
}
}, 0);
});
c.push(n);
});
return Promise.all(c).then(function () {
return t.findNext(m, e);
});
},
};
return m;
}
});
e.addCommand("measure", function (e, t, r) {
if (!r.matchToken("measure")) return;
var n = o(e, t, r);
var i = [];
if (!e.commandBoundary(r.currentToken()))
do {
i.push(r.matchTokenType("IDENTIFIER").value);
} while (r.matchOpToken(","));
return {
properties: i,
args: [n],
op: function (e, r) {
t.nullCheck(r, n);
if (0 in r) r = r[0];
var a = r.getBoundingClientRect();
var o = {
top: r.scrollTop,
left: r.scrollLeft,
topMax: r.scrollTopMax,
leftMax: r.scrollLeftMax,
height: r.scrollHeight,
width: r.scrollWidth,
};
e.result = {
x: a.x,
y: a.y,
left: a.left,
top: a.top,
right: a.right,
bottom: a.bottom,
width: a.width,
height: a.height,
bounds: a,
scrollLeft: o.left,
scrollTop: o.top,
scrollLeftMax: o.leftMax,
scrollTopMax: o.topMax,
scrollWidth: o.width,
scrollHeight: o.height,
scroll: o,
};
t.forEach(i, function (t) {
if (t in e.result) e.locals[t] = e.result[t];
else throw "No such measurement as " + t;
});
return t.findNext(this, e);
},
};
});
e.addLeafExpression("closestExpr", function (e, t, r) {
if (r.matchToken("closest")) {
if (r.matchToken("parent")) {
var n = true;
}
var i = null;
if (r.currentToken().type === "ATTRIBUTE_REF") {
var a = e.requireElement("attributeRefAccess", r, null);
i = "[" + a.attribute.name + "]";
}
if (i == null) {
var o = e.requireElement("expression", r);
if (o.css == null) {
e.raiseParseError(r, "Expected a CSS expression");
} else {
i = o.css;
}
}
if (r.matchToken("to")) {
var s = e.parseElement("expression", r);
} else {
var s = e.parseElement("implicitMeTarget", r);
}
var u = {
type: "closestExpr",
parentSearch: n,
expr: o,
css: i,
to: s,
args: [s],
op: function (e, r) {
if (r == null) {
return null;
} else {
let e = [];
t.implicitLoop(r, function (t) {
if (n) {
e.push(t.parentElement ? t.parentElement.closest(i) : null);
} else {
e.push(t.closest(i));
}
});
if (t.shouldAutoIterate(r)) {
return e;
} else {
return e[0];
}
}
},
evaluate: function (e) {
return t.unifiedEval(this, e);
},
};
if (a) {
a.root = u;
a.args = [u];
return a;
} else {
return u;
}
}
});
e.addCommand("go", function (e, t, r) {
if (r.matchToken("go")) {
if (r.matchToken("back")) {
var n = true;
} else {
r.matchToken("to");
if (r.matchToken("url")) {
var i = e.requireElement("stringLike", r);
var a = true;
if (r.matchToken("in")) {
r.requireToken("new");
r.requireToken("window");
var o = true;
}
} else {
r.matchToken("the");
var s = r.matchAnyToken("top", "middle", "bottom");
var u = r.matchAnyToken("left", "center", "right");
if (s || u) {
r.requireToken("of");
}
var i = e.requireElement("unaryExpression", r);
var l = r.matchAnyOpToken("+", "-");
if (l) {
r.pushFollow("px");
try {
var c = e.requireElement("expression", r);
} finally {
r.popFollow();
}
}
r.matchToken("px");
var f = r.matchAnyToken("smoothly", "instantly");
var m = { block: "start", inline: "nearest" };
if (s) {
if (s.value === "top") {
m.block = "start";
} else if (s.value === "bottom") {
m.block = "end";
} else if (s.value === "middle") {
m.block = "center";
}
}
if (u) {
if (u.value === "left") {
m.inline = "start";
} else if (u.value === "center") {
m.inline = "center";
} else if (u.value === "right") {
m.inline = "end";
}
}
if (f) {
if (f.value === "smoothly") {
m.behavior = "smooth";
} else if (f.value === "instantly") {
m.behavior = "instant";
}
}
}
}
var p = {
target: i,
args: [i, c],
op: function (e, r, i) {
if (n) {
window.history.back();
} else if (a) {
if (r) {
if (o) {
window.open(r);
} else {
window.location.href = r;
}
}
} else {
t.implicitLoop(r, function (e) {
if (e === window) {
e = document.body;
}
if (l) {
let t = e.getBoundingClientRect();
let r = document.createElement("div");
let n = l.value === "+" ? i : i * -1;
let a = m.inline == "start" || m.inline == "end" ? n : 0;
let o = m.block == "start" || m.block == "end" ? n : 0;
r.style.position = "absolute";
r.style.top = t.top + window.scrollY + o + "px";
r.style.left = t.left + window.scrollX + a + "px";
r.style.height = t.height + "px";
r.style.width = t.width + "px";
r.style.zIndex = "" + Number.MIN_SAFE_INTEGER;
r.style.opacity = "0";
document.body.appendChild(r);
setTimeout(function () {
document.body.removeChild(r);
}, 100);
e = r;
}
e.scrollIntoView(m);
});
}
return t.findNext(p, e);
},
};
return p;
}
});
r.conversions.dynamicResolvers.push(function (t, r) {
if (!(t === "Values" || t.indexOf("Values:") === 0)) {
return;
}
var n = t.split(":")[1];
var i = {};
var a = e.runtime.implicitLoop.bind(e.runtime);
a(r, function (e) {
var t = s(e);
if (t !== undefined) {
i[t.name] = t.value;
return;
}
if (e.querySelectorAll != undefined) {
var r = e.querySelectorAll("input,select,textarea");
r.forEach(o);
}
});
if (n) {
if (n === "JSON") {
return JSON.stringify(i);
} else if (n === "Form") {
return new URLSearchParams(i).toString();
} else {
throw "Unknown conversion: " + n;
}
} else {
return i;
}
function o(e) {
var t = s(e);
if (t == undefined) {
return;
}
if (i[t.name] == undefined) {
i[t.name] = t.value;
return;
}
if (Array.isArray(i[t.name]) && Array.isArray(t.value)) {
i[t.name] = [].concat(i[t.name], t.value);
return;
}
}
function s(e) {
try {
var t = { name: e.name, value: e.value };
if (t.name == undefined || t.value == undefined) {
return undefined;
}
if (e.type == "radio" && e.checked == false) {
return undefined;
}
if (e.type == "checkbox") {
if (e.checked == false) {
t.value = undefined;
} else if (typeof t.value === "string") {
t.value = [t.value];
}
}
if (e.type == "select-multiple") {
var r = e.querySelectorAll("option[selected]");
t.value = [];
for (var n = 0; n < r.length; n++) {
t.value.push(r[n].value);
}
}
return t;
} catch (e) {
return undefined;
}
}
});
r.conversions["HTML"] = function (e) {
var t = function (e) {
if (e instanceof Array) {
return e
.map(function (e) {
return t(e);
})
.join("");
}
if (e instanceof HTMLElement) {
return e.outerHTML;
}
if (e instanceof NodeList) {
var r = "";
for (var n = 0; n < e.length; n++) {
var i = e[n];
if (i instanceof HTMLElement) {
r += i.outerHTML;
}
}
return r;
}
if (e.toString) {
return e.toString();
}
return "";
};
return t(e);
};
r.conversions["Fragment"] = function (t) {
var r = document.createDocumentFragment();
e.runtime.implicitLoop(t, function (e) {
if (e instanceof Node) r.append(e);
else {
var t = document.createElement("template");
t.innerHTML = e;
r.append(t.content);
}
});
return r;
};
}
const k = new o(),
x = k.lexer,
g = k.parser;
function b(e, t) {
return k.evaluate(e, t);
}
function w() {
var t = Array.from(
e.document.querySelectorAll("script[type='text/hyperscript'][src]"),
);
Promise.all(
t.map(function (e) {
return fetch(e.src).then(function (e) {
return e.text();
});
}),
)
.then((e) => e.forEach((e) => S(e)))
.then(() =>
n(function () {
a();
k.processNode(document.documentElement);
e.document.addEventListener("htmx:load", function (e) {
k.processNode(e.detail.elt);
});
}),
);
function n(e) {
if (document.readyState !== "loading") {
setTimeout(e);
} else {
document.addEventListener("DOMContentLoaded", e);
}
}
function i() {
var e = document.querySelector('meta[name="htmx-config"]');
if (e) {
return v(e.content);
} else {
return null;
}
}
function a() {
var e = i();
if (e) {
Object.assign(r, e);
}
}
}
const S = Object.assign(b, {
config: r,
use(e) {
e(S);
},
internals: {
lexer: x,
parser: g,
runtime: k,
Lexer: n,
Tokens: i,
Parser: a,
Runtime: o,
},
ElementCollection: m,
addFeature: g.addFeature.bind(g),
addCommand: g.addCommand.bind(g),
addLeafExpression: g.addLeafExpression.bind(g),
addIndirectExpression: g.addIndirectExpression.bind(g),
evaluate: k.evaluate.bind(k),
parse: k.parse.bind(k),
processNode: k.processNode.bind(k),
version: "0.9.12",
browserInit: w,
});
return S;
});