993 lines
267 KiB
JavaScript
Raw Permalink Normal View History

2025-02-12 00:11:18 +01:00
// ../node_modules/@lit/reactive-element/css-tag.js
var t = window.ShadowRoot && (window.ShadyCSS === void 0 || window.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype;
var e = Symbol();
var n = /* @__PURE__ */ new Map();
var s = class {
constructor(t3, n5) {
if (this._$cssResult$ = true, n5 !== e)
throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
this.cssText = t3;
}
get styleSheet() {
let e4 = n.get(this.cssText);
return t && e4 === void 0 && (n.set(this.cssText, e4 = new CSSStyleSheet()), e4.replaceSync(this.cssText)), e4;
}
toString() {
return this.cssText;
}
};
var o = (t3) => new s(typeof t3 == "string" ? t3 : t3 + "", e);
var r = (t3, ...n5) => {
const o5 = t3.length === 1 ? t3[0] : n5.reduce((e4, n6, s5) => e4 + ((t4) => {
if (t4._$cssResult$ === true)
return t4.cssText;
if (typeof t4 == "number")
return t4;
throw Error("Value passed to 'css' function must be a 'css' function result: " + t4 + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
})(n6) + t3[s5 + 1], t3[0]);
return new s(o5, e);
};
var i = (e4, n5) => {
t ? e4.adoptedStyleSheets = n5.map((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet) : n5.forEach((t3) => {
const n6 = document.createElement("style"), s5 = window.litNonce;
s5 !== void 0 && n6.setAttribute("nonce", s5), n6.textContent = t3.cssText, e4.appendChild(n6);
});
};
var S = t ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {
let e4 = "";
for (const n5 of t4.cssRules)
e4 += n5.cssText;
return o(e4);
})(t3) : t3;
// ../node_modules/@lit/reactive-element/reactive-element.js
var s2;
var e2 = window.trustedTypes;
var r2 = e2 ? e2.emptyScript : "";
var h = window.reactiveElementPolyfillSupport;
var o2 = { toAttribute(t3, i3) {
switch (i3) {
case Boolean:
t3 = t3 ? r2 : null;
break;
case Object:
case Array:
t3 = t3 == null ? t3 : JSON.stringify(t3);
}
return t3;
}, fromAttribute(t3, i3) {
let s5 = t3;
switch (i3) {
case Boolean:
s5 = t3 !== null;
break;
case Number:
s5 = t3 === null ? null : Number(t3);
break;
case Object:
case Array:
try {
s5 = JSON.parse(t3);
} catch (t4) {
s5 = null;
}
}
return s5;
} };
var n2 = (t3, i3) => i3 !== t3 && (i3 == i3 || t3 == t3);
var l = { attribute: true, type: String, converter: o2, reflect: false, hasChanged: n2 };
var a = class extends HTMLElement {
constructor() {
super(), this._$Et = /* @__PURE__ */ new Map(), this.isUpdatePending = false, this.hasUpdated = false, this._$Ei = null, this.o();
}
static addInitializer(t3) {
var i3;
(i3 = this.l) !== null && i3 !== void 0 || (this.l = []), this.l.push(t3);
}
static get observedAttributes() {
this.finalize();
const t3 = [];
return this.elementProperties.forEach((i3, s5) => {
const e4 = this._$Eh(s5, i3);
e4 !== void 0 && (this._$Eu.set(e4, s5), t3.push(e4));
}), t3;
}
static createProperty(t3, i3 = l) {
if (i3.state && (i3.attribute = false), this.finalize(), this.elementProperties.set(t3, i3), !i3.noAccessor && !this.prototype.hasOwnProperty(t3)) {
const s5 = typeof t3 == "symbol" ? Symbol() : "__" + t3, e4 = this.getPropertyDescriptor(t3, s5, i3);
e4 !== void 0 && Object.defineProperty(this.prototype, t3, e4);
}
}
static getPropertyDescriptor(t3, i3, s5) {
return { get() {
return this[i3];
}, set(e4) {
const r4 = this[t3];
this[i3] = e4, this.requestUpdate(t3, r4, s5);
}, configurable: true, enumerable: true };
}
static getPropertyOptions(t3) {
return this.elementProperties.get(t3) || l;
}
static finalize() {
if (this.hasOwnProperty("finalized"))
return false;
this.finalized = true;
const t3 = Object.getPrototypeOf(this);
if (t3.finalize(), this.elementProperties = new Map(t3.elementProperties), this._$Eu = /* @__PURE__ */ new Map(), this.hasOwnProperty("properties")) {
const t4 = this.properties, i3 = [...Object.getOwnPropertyNames(t4), ...Object.getOwnPropertySymbols(t4)];
for (const s5 of i3)
this.createProperty(s5, t4[s5]);
}
return this.elementStyles = this.finalizeStyles(this.styles), true;
}
static finalizeStyles(i3) {
const s5 = [];
if (Array.isArray(i3)) {
const e4 = new Set(i3.flat(1 / 0).reverse());
for (const i4 of e4)
s5.unshift(S(i4));
} else
i3 !== void 0 && s5.push(S(i3));
return s5;
}
static _$Eh(t3, i3) {
const s5 = i3.attribute;
return s5 === false ? void 0 : typeof s5 == "string" ? s5 : typeof t3 == "string" ? t3.toLowerCase() : void 0;
}
o() {
var t3;
this._$Ep = new Promise((t4) => this.enableUpdating = t4), this._$AL = /* @__PURE__ */ new Map(), this._$Em(), this.requestUpdate(), (t3 = this.constructor.l) === null || t3 === void 0 || t3.forEach((t4) => t4(this));
}
addController(t3) {
var i3, s5;
((i3 = this._$Eg) !== null && i3 !== void 0 ? i3 : this._$Eg = []).push(t3), this.renderRoot !== void 0 && this.isConnected && ((s5 = t3.hostConnected) === null || s5 === void 0 || s5.call(t3));
}
removeController(t3) {
var i3;
(i3 = this._$Eg) === null || i3 === void 0 || i3.splice(this._$Eg.indexOf(t3) >>> 0, 1);
}
_$Em() {
this.constructor.elementProperties.forEach((t3, i3) => {
this.hasOwnProperty(i3) && (this._$Et.set(i3, this[i3]), delete this[i3]);
});
}
createRenderRoot() {
var t3;
const s5 = (t3 = this.shadowRoot) !== null && t3 !== void 0 ? t3 : this.attachShadow(this.constructor.shadowRootOptions);
return i(s5, this.constructor.elementStyles), s5;
}
connectedCallback() {
var t3;
this.renderRoot === void 0 && (this.renderRoot = this.createRenderRoot()), this.enableUpdating(true), (t3 = this._$Eg) === null || t3 === void 0 || t3.forEach((t4) => {
var i3;
return (i3 = t4.hostConnected) === null || i3 === void 0 ? void 0 : i3.call(t4);
});
}
enableUpdating(t3) {
}
disconnectedCallback() {
var t3;
(t3 = this._$Eg) === null || t3 === void 0 || t3.forEach((t4) => {
var i3;
return (i3 = t4.hostDisconnected) === null || i3 === void 0 ? void 0 : i3.call(t4);
});
}
attributeChangedCallback(t3, i3, s5) {
this._$AK(t3, s5);
}
_$ES(t3, i3, s5 = l) {
var e4, r4;
const h3 = this.constructor._$Eh(t3, s5);
if (h3 !== void 0 && s5.reflect === true) {
const n5 = ((r4 = (e4 = s5.converter) === null || e4 === void 0 ? void 0 : e4.toAttribute) !== null && r4 !== void 0 ? r4 : o2.toAttribute)(i3, s5.type);
this._$Ei = t3, n5 == null ? this.removeAttribute(h3) : this.setAttribute(h3, n5), this._$Ei = null;
}
}
_$AK(t3, i3) {
var s5, e4, r4;
const h3 = this.constructor, n5 = h3._$Eu.get(t3);
if (n5 !== void 0 && this._$Ei !== n5) {
const t4 = h3.getPropertyOptions(n5), l4 = t4.converter, a3 = (r4 = (e4 = (s5 = l4) === null || s5 === void 0 ? void 0 : s5.fromAttribute) !== null && e4 !== void 0 ? e4 : typeof l4 == "function" ? l4 : null) !== null && r4 !== void 0 ? r4 : o2.fromAttribute;
this._$Ei = n5, this[n5] = a3(i3, t4.type), this._$Ei = null;
}
}
requestUpdate(t3, i3, s5) {
let e4 = true;
t3 !== void 0 && (((s5 = s5 || this.constructor.getPropertyOptions(t3)).hasChanged || n2)(this[t3], i3) ? (this._$AL.has(t3) || this._$AL.set(t3, i3), s5.reflect === true && this._$Ei !== t3 && (this._$EC === void 0 && (this._$EC = /* @__PURE__ */ new Map()), this._$EC.set(t3, s5))) : e4 = false), !this.isUpdatePending && e4 && (this._$Ep = this._$E_());
}
async _$E_() {
this.isUpdatePending = true;
try {
await this._$Ep;
} catch (t4) {
Promise.reject(t4);
}
const t3 = this.scheduleUpdate();
return t3 != null && await t3, !this.isUpdatePending;
}
scheduleUpdate() {
return this.performUpdate();
}
performUpdate() {
var t3;
if (!this.isUpdatePending)
return;
this.hasUpdated, this._$Et && (this._$Et.forEach((t4, i4) => this[i4] = t4), this._$Et = void 0);
let i3 = false;
const s5 = this._$AL;
try {
i3 = this.shouldUpdate(s5), i3 ? (this.willUpdate(s5), (t3 = this._$Eg) === null || t3 === void 0 || t3.forEach((t4) => {
var i4;
return (i4 = t4.hostUpdate) === null || i4 === void 0 ? void 0 : i4.call(t4);
}), this.update(s5)) : this._$EU();
} catch (t4) {
throw i3 = false, this._$EU(), t4;
}
i3 && this._$AE(s5);
}
willUpdate(t3) {
}
_$AE(t3) {
var i3;
(i3 = this._$Eg) === null || i3 === void 0 || i3.forEach((t4) => {
var i4;
return (i4 = t4.hostUpdated) === null || i4 === void 0 ? void 0 : i4.call(t4);
}), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);
}
_$EU() {
this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;
}
get updateComplete() {
return this.getUpdateComplete();
}
getUpdateComplete() {
return this._$Ep;
}
shouldUpdate(t3) {
return true;
}
update(t3) {
this._$EC !== void 0 && (this._$EC.forEach((t4, i3) => this._$ES(i3, this[i3], t4)), this._$EC = void 0), this._$EU();
}
updated(t3) {
}
firstUpdated(t3) {
}
};
a.finalized = true, a.elementProperties = /* @__PURE__ */ new Map(), a.elementStyles = [], a.shadowRootOptions = { mode: "open" }, h == null || h({ ReactiveElement: a }), ((s2 = globalThis.reactiveElementVersions) !== null && s2 !== void 0 ? s2 : globalThis.reactiveElementVersions = []).push("1.3.1");
// ../node_modules/lit-html/lit-html.js
var t2;
var i2 = globalThis.trustedTypes;
var s3 = i2 ? i2.createPolicy("lit-html", { createHTML: (t3) => t3 }) : void 0;
var e3 = `lit$${(Math.random() + "").slice(9)}$`;
var o3 = "?" + e3;
var n3 = `<${o3}>`;
var l2 = document;
var h2 = (t3 = "") => l2.createComment(t3);
var r3 = (t3) => t3 === null || typeof t3 != "object" && typeof t3 != "function";
var d = Array.isArray;
var u = (t3) => {
var i3;
return d(t3) || typeof ((i3 = t3) === null || i3 === void 0 ? void 0 : i3[Symbol.iterator]) == "function";
};
var c = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g;
var v = /-->/g;
var a2 = />/g;
var f = />|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g;
var _ = /'/g;
var m = /"/g;
var g = /^(?:script|style|textarea|title)$/i;
var p = (t3) => (i3, ...s5) => ({ _$litType$: t3, strings: i3, values: s5 });
var $ = p(1);
var y = p(2);
var b = Symbol.for("lit-noChange");
var w = Symbol.for("lit-nothing");
var T = /* @__PURE__ */ new WeakMap();
var x = (t3, i3, s5) => {
var e4, o5;
const n5 = (e4 = s5 == null ? void 0 : s5.renderBefore) !== null && e4 !== void 0 ? e4 : i3;
let l4 = n5._$litPart$;
if (l4 === void 0) {
const t4 = (o5 = s5 == null ? void 0 : s5.renderBefore) !== null && o5 !== void 0 ? o5 : null;
n5._$litPart$ = l4 = new N(i3.insertBefore(h2(), t4), t4, void 0, s5 != null ? s5 : {});
}
return l4._$AI(t3), l4;
};
var A = l2.createTreeWalker(l2, 129, null, false);
var C = (t3, i3) => {
const o5 = t3.length - 1, l4 = [];
let h3, r4 = i3 === 2 ? "<svg>" : "", d2 = c;
for (let i4 = 0; i4 < o5; i4++) {
const s5 = t3[i4];
let o6, u3, p2 = -1, $2 = 0;
for (; $2 < s5.length && (d2.lastIndex = $2, u3 = d2.exec(s5), u3 !== null); )
$2 = d2.lastIndex, d2 === c ? u3[1] === "!--" ? d2 = v : u3[1] !== void 0 ? d2 = a2 : u3[2] !== void 0 ? (g.test(u3[2]) && (h3 = RegExp("</" + u3[2], "g")), d2 = f) : u3[3] !== void 0 && (d2 = f) : d2 === f ? u3[0] === ">" ? (d2 = h3 != null ? h3 : c, p2 = -1) : u3[1] === void 0 ? p2 = -2 : (p2 = d2.lastIndex - u3[2].length, o6 = u3[1], d2 = u3[3] === void 0 ? f : u3[3] === '"' ? m : _) : d2 === m || d2 === _ ? d2 = f : d2 === v || d2 === a2 ? d2 = c : (d2 = f, h3 = void 0);
const y2 = d2 === f && t3[i4 + 1].startsWith("/>") ? " " : "";
r4 += d2 === c ? s5 + n3 : p2 >= 0 ? (l4.push(o6), s5.slice(0, p2) + "$lit$" + s5.slice(p2) + e3 + y2) : s5 + e3 + (p2 === -2 ? (l4.push(void 0), i4) : y2);
}
const u2 = r4 + (t3[o5] || "<?>") + (i3 === 2 ? "</svg>" : "");
if (!Array.isArray(t3) || !t3.hasOwnProperty("raw"))
throw Error("invalid template strings array");
return [s3 !== void 0 ? s3.createHTML(u2) : u2, l4];
};
var E = class {
constructor({ strings: t3, _$litType$: s5 }, n5) {
let l4;
this.parts = [];
let r4 = 0, d2 = 0;
const u2 = t3.length - 1, c2 = this.parts, [v2, a3] = C(t3, s5);
if (this.el = E.createElement(v2, n5), A.currentNode = this.el.content, s5 === 2) {
const t4 = this.el.content, i3 = t4.firstChild;
i3.remove(), t4.append(...i3.childNodes);
}
for (; (l4 = A.nextNode()) !== null && c2.length < u2; ) {
if (l4.nodeType === 1) {
if (l4.hasAttributes()) {
const t4 = [];
for (const i3 of l4.getAttributeNames())
if (i3.endsWith("$lit$") || i3.startsWith(e3)) {
const s6 = a3[d2++];
if (t4.push(i3), s6 !== void 0) {
const t5 = l4.getAttribute(s6.toLowerCase() + "$lit$").split(e3), i4 = /([.?@])?(.*)/.exec(s6);
c2.push({ type: 1, index: r4, name: i4[2], strings: t5, ctor: i4[1] === "." ? M : i4[1] === "?" ? H : i4[1] === "@" ? I : S2 });
} else
c2.push({ type: 6, index: r4 });
}
for (const i3 of t4)
l4.removeAttribute(i3);
}
if (g.test(l4.tagName)) {
const t4 = l4.textContent.split(e3), s6 = t4.length - 1;
if (s6 > 0) {
l4.textContent = i2 ? i2.emptyScript : "";
for (let i3 = 0; i3 < s6; i3++)
l4.append(t4[i3], h2()), A.nextNode(), c2.push({ type: 2, index: ++r4 });
l4.append(t4[s6], h2());
}
}
} else if (l4.nodeType === 8)
if (l4.data === o3)
c2.push({ type: 2, index: r4 });
else {
let t4 = -1;
for (; (t4 = l4.data.indexOf(e3, t4 + 1)) !== -1; )
c2.push({ type: 7, index: r4 }), t4 += e3.length - 1;
}
r4++;
}
}
static createElement(t3, i3) {
const s5 = l2.createElement("template");
return s5.innerHTML = t3, s5;
}
};
function P(t3, i3, s5 = t3, e4) {
var o5, n5, l4, h3;
if (i3 === b)
return i3;
let d2 = e4 !== void 0 ? (o5 = s5._$Cl) === null || o5 === void 0 ? void 0 : o5[e4] : s5._$Cu;
const u2 = r3(i3) ? void 0 : i3._$litDirective$;
return (d2 == null ? void 0 : d2.constructor) !== u2 && ((n5 = d2 == null ? void 0 : d2._$AO) === null || n5 === void 0 || n5.call(d2, false), u2 === void 0 ? d2 = void 0 : (d2 = new u2(t3), d2._$AT(t3, s5, e4)), e4 !== void 0 ? ((l4 = (h3 = s5)._$Cl) !== null && l4 !== void 0 ? l4 : h3._$Cl = [])[e4] = d2 : s5._$Cu = d2), d2 !== void 0 && (i3 = P(t3, d2._$AS(t3, i3.values), d2, e4)), i3;
}
var V = class {
constructor(t3, i3) {
this.v = [], this._$AN = void 0, this._$AD = t3, this._$AM = i3;
}
get parentNode() {
return this._$AM.parentNode;
}
get _$AU() {
return this._$AM._$AU;
}
p(t3) {
var i3;
const { el: { content: s5 }, parts: e4 } = this._$AD, o5 = ((i3 = t3 == null ? void 0 : t3.creationScope) !== null && i3 !== void 0 ? i3 : l2).importNode(s5, true);
A.currentNode = o5;
let n5 = A.nextNode(), h3 = 0, r4 = 0, d2 = e4[0];
for (; d2 !== void 0; ) {
if (h3 === d2.index) {
let i4;
d2.type === 2 ? i4 = new N(n5, n5.nextSibling, this, t3) : d2.type === 1 ? i4 = new d2.ctor(n5, d2.name, d2.strings, this, t3) : d2.type === 6 && (i4 = new L(n5, this, t3)), this.v.push(i4), d2 = e4[++r4];
}
h3 !== (d2 == null ? void 0 : d2.index) && (n5 = A.nextNode(), h3++);
}
return o5;
}
m(t3) {
let i3 = 0;
for (const s5 of this.v)
s5 !== void 0 && (s5.strings !== void 0 ? (s5._$AI(t3, s5, i3), i3 += s5.strings.length - 2) : s5._$AI(t3[i3])), i3++;
}
};
var N = class {
constructor(t3, i3, s5, e4) {
var o5;
this.type = 2, this._$AH = w, this._$AN = void 0, this._$AA = t3, this._$AB = i3, this._$AM = s5, this.options = e4, this._$Cg = (o5 = e4 == null ? void 0 : e4.isConnected) === null || o5 === void 0 || o5;
}
get _$AU() {
var t3, i3;
return (i3 = (t3 = this._$AM) === null || t3 === void 0 ? void 0 : t3._$AU) !== null && i3 !== void 0 ? i3 : this._$Cg;
}
get parentNode() {
let t3 = this._$AA.parentNode;
const i3 = this._$AM;
return i3 !== void 0 && t3.nodeType === 11 && (t3 = i3.parentNode), t3;
}
get startNode() {
return this._$AA;
}
get endNode() {
return this._$AB;
}
_$AI(t3, i3 = this) {
t3 = P(this, t3, i3), r3(t3) ? t3 === w || t3 == null || t3 === "" ? (this._$AH !== w && this._$AR(), this._$AH = w) : t3 !== this._$AH && t3 !== b && this.$(t3) : t3._$litType$ !== void 0 ? this.T(t3) : t3.nodeType !== void 0 ? this.k(t3) : u(t3) ? this.S(t3) : this.$(t3);
}
M(t3, i3 = this._$AB) {
return this._$AA.parentNode.insertBefore(t3, i3);
}
k(t3) {
this._$AH !== t3 && (this._$AR(), this._$AH = this.M(t3));
}
$(t3) {
this._$AH !== w && r3(this._$AH) ? this._$AA.nextSibling.data = t3 : this.k(l2.createTextNode(t3)), this._$AH = t3;
}
T(t3) {
var i3;
const { values: s5, _$litType$: e4 } = t3, o5 = typeof e4 == "number" ? this._$AC(t3) : (e4.el === void 0 && (e4.el = E.createElement(e4.h, this.options)), e4);
if (((i3 = this._$AH) === null || i3 === void 0 ? void 0 : i3._$AD) === o5)
this._$AH.m(s5);
else {
const t4 = new V(o5, this), i4 = t4.p(this.options);
t4.m(s5), this.k(i4), this._$AH = t4;
}
}
_$AC(t3) {
let i3 = T.get(t3.strings);
return i3 === void 0 && T.set(t3.strings, i3 = new E(t3)), i3;
}
S(t3) {
d(this._$AH) || (this._$AH = [], this._$AR());
const i3 = this._$AH;
let s5, e4 = 0;
for (const o5 of t3)
e4 === i3.length ? i3.push(s5 = new N(this.M(h2()), this.M(h2()), this, this.options)) : s5 = i3[e4], s5._$AI(o5), e4++;
e4 < i3.length && (this._$AR(s5 && s5._$AB.nextSibling, e4), i3.length = e4);
}
_$AR(t3 = this._$AA.nextSibling, i3) {
var s5;
for ((s5 = this._$AP) === null || s5 === void 0 || s5.call(this, false, true, i3); t3 && t3 !== this._$AB; ) {
const i4 = t3.nextSibling;
t3.remove(), t3 = i4;
}
}
setConnected(t3) {
var i3;
this._$AM === void 0 && (this._$Cg = t3, (i3 = this._$AP) === null || i3 === void 0 || i3.call(this, t3));
}
};
var S2 = class {
constructor(t3, i3, s5, e4, o5) {
this.type = 1, this._$AH = w, this._$AN = void 0, this.element = t3, this.name = i3, this._$AM = e4, this.options = o5, s5.length > 2 || s5[0] !== "" || s5[1] !== "" ? (this._$AH = Array(s5.length - 1).fill(new String()), this.strings = s5) : this._$AH = w;
}
get tagName() {
return this.element.tagName;
}
get _$AU() {
return this._$AM._$AU;
}
_$AI(t3, i3 = this, s5, e4) {
const o5 = this.strings;
let n5 = false;
if (o5 === void 0)
t3 = P(this, t3, i3, 0), n5 = !r3(t3) || t3 !== this._$AH && t3 !== b, n5 && (this._$AH = t3);
else {
const e5 = t3;
let l4, h3;
for (t3 = o5[0], l4 = 0; l4 < o5.length - 1; l4++)
h3 = P(this, e5[s5 + l4], i3, l4), h3 === b && (h3 = this._$AH[l4]), n5 || (n5 = !r3(h3) || h3 !== this._$AH[l4]), h3 === w ? t3 = w : t3 !== w && (t3 += (h3 != null ? h3 : "") + o5[l4 + 1]), this._$AH[l4] = h3;
}
n5 && !e4 && this.C(t3);
}
C(t3) {
t3 === w ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 != null ? t3 : "");
}
};
var M = class extends S2 {
constructor() {
super(...arguments), this.type = 3;
}
C(t3) {
this.element[this.name] = t3 === w ? void 0 : t3;
}
};
var k = i2 ? i2.emptyScript : "";
var H = class extends S2 {
constructor() {
super(...arguments), this.type = 4;
}
C(t3) {
t3 && t3 !== w ? this.element.setAttribute(this.name, k) : this.element.removeAttribute(this.name);
}
};
var I = class extends S2 {
constructor(t3, i3, s5, e4, o5) {
super(t3, i3, s5, e4, o5), this.type = 5;
}
_$AI(t3, i3 = this) {
var s5;
if ((t3 = (s5 = P(this, t3, i3, 0)) !== null && s5 !== void 0 ? s5 : w) === b)
return;
const e4 = this._$AH, o5 = t3 === w && e4 !== w || t3.capture !== e4.capture || t3.once !== e4.once || t3.passive !== e4.passive, n5 = t3 !== w && (e4 === w || o5);
o5 && this.element.removeEventListener(this.name, this, e4), n5 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;
}
handleEvent(t3) {
var i3, s5;
typeof this._$AH == "function" ? this._$AH.call((s5 = (i3 = this.options) === null || i3 === void 0 ? void 0 : i3.host) !== null && s5 !== void 0 ? s5 : this.element, t3) : this._$AH.handleEvent(t3);
}
};
var L = class {
constructor(t3, i3, s5) {
this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i3, this.options = s5;
}
get _$AU() {
return this._$AM._$AU;
}
_$AI(t3) {
P(this, t3);
}
};
var z = window.litHtmlPolyfillSupport;
z == null || z(E, N), ((t2 = globalThis.litHtmlVersions) !== null && t2 !== void 0 ? t2 : globalThis.litHtmlVersions = []).push("2.2.2");
// ../node_modules/lit-element/lit-element.js
var l3;
var o4;
var s4 = class extends a {
constructor() {
super(...arguments), this.renderOptions = { host: this }, this._$Dt = void 0;
}
createRenderRoot() {
var t3, e4;
const i3 = super.createRenderRoot();
return (t3 = (e4 = this.renderOptions).renderBefore) !== null && t3 !== void 0 || (e4.renderBefore = i3.firstChild), i3;
}
update(t3) {
const i3 = this.render();
this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this._$Dt = x(i3, this.renderRoot, this.renderOptions);
}
connectedCallback() {
var t3;
super.connectedCallback(), (t3 = this._$Dt) === null || t3 === void 0 || t3.setConnected(true);
}
disconnectedCallback() {
var t3;
super.disconnectedCallback(), (t3 = this._$Dt) === null || t3 === void 0 || t3.setConnected(false);
}
render() {
return b;
}
};
s4.finalized = true, s4._$litElement$ = true, (l3 = globalThis.litElementHydrateSupport) === null || l3 === void 0 || l3.call(globalThis, { LitElement: s4 });
var n4 = globalThis.litElementPolyfillSupport;
n4 == null || n4({ LitElement: s4 });
((o4 = globalThis.litElementVersions) !== null && o4 !== void 0 ? o4 : globalThis.litElementVersions = []).push("3.2.0");
// ../tp-lc-line.js
var TpLcLine = class extends s4 {
static get styles() {
return [
r`
:host {
display: block;
padding: 0;
margin: 0;
height: 4px;
background: blue;
position: absolute;
line-height: 1px;
border-radius: 10px;
z-index: 99;
}
`
];
}
static get properties() {
return {
thickness: { type: Number }
};
}
constructor() {
super();
this.thickness = 4;
}
coords(x1, y1, x2, y2) {
const length = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
const cx = (x1 + x2) / 2 - length / 2;
const cy = (y1 + y2) / 2 - this.thickness / 2;
const angle = Math.atan2(y1 - y2, x1 - x2) * (180 / Math.PI);
this.style.left = `${cx}px`;
this.style.top = `${cy}px`;
this.style.width = `${length}px`;
this.style.transform = `rotate(${angle}deg)`;
}
};
window.customElements.define("tp-lc-line", TpLcLine);
// ../tp-logic-canvas.js
var TpLogicCanvas = class extends s4 {
static get styles() {
return [
r`
:host {
display: block;
position: relative;
overflow: auto;
}
:host([isDragging]) {
user-select: none;
}
.block {
background-color: violet;
}
.block2 {
background-color: orange;
}
`
];
}
render() {
const {} = this;
return $`
<tp-lc-line></tp-lc-line>
<slot></slot>
`;
}
static get properties() {
return {
blocks: { type: Array },
isDragging: { type: Boolean, reflect: true },
connections: { type: Array }
};
}
constructor() {
super();
this.onDragStart = this.onDragStart.bind(this);
this.onMove = this.onMove.bind(this);
}
firstUpdated() {
this.addEventListener("start-drag", this.onDragStart);
this.addEventListener("mousemove", this.onMove);
}
shouldUpdate(changes) {
if (changes.has("connections")) {
}
return true;
}
onDragStart(e4) {
this.isDragging = true;
window.addEventListener("mouseup", () => {
this.isDragging = false;
}, { once: true });
this.startCoords = this.getOffset(e4.detail.target);
}
onMove(e4) {
if (!this.isDragging)
return;
this.shadowRoot.querySelector("tp-lc-line").coords(this.startCoords.left, this.startCoords.top, e4.pageX, e4.pageY);
}
getOffset(el) {
var rect = el.getBoundingClientRect();
return {
left: rect.left - 5 - el.offsetWidth / 2 + window.pageXOffset,
top: rect.top - 5 - el.offsetHeight / 2 + window.pageYOffset
};
}
};
window.customElements.define("tp-logic-canvas", TpLogicCanvas);
// ../tp-lc-in.js
var TpLcIn = class extends s4 {
static get styles() {
return [
r`
:host {
display: flex;
align-items: center;
}
.circle {
border-radius: 50px;
border: 3px solid green;
width: 10px;
height: 10px;
cursor: pointer;
}
.circle:hover {
background: green;
}
label {
margin-left: 5px;
}
`
];
}
render() {
const { name } = this;
return $`
<div class="circle"></div>
<label>${name}</label>
`;
}
static get properties() {
return {
name: { type: String }
};
}
};
window.customElements.define("tp-lc-in", TpLcIn);
// ../tp-lc-out.js
var TpLcOut = class extends s4 {
static get styles() {
return [
r`
:host {
display: flex;
align-items: center;
}
.circle {
border-radius: 50px;
border: 3px solid green;
width: 10px;
height: 10px;
cursor: pointer;
}
.circle:hover,
:host([isDragging]) .circle {
background: green;
}
label {
margin-right: 5px;
}
`
];
}
render() {
const { name } = this;
return $`
<label>${name}</label>
<div class="circle" @mousedown=${this.startDrag}></div>
`;
}
static get properties() {
return {
name: { type: String },
isDragging: { type: Boolean, reflect: true }
};
}
startDrag(e4) {
this.isDragging = true;
window.addEventListener("mouseup", () => {
this.isDragging = false;
}, { once: true });
this.dispatchEvent(new CustomEvent("start-drag", { detail: e4, bubbles: true, composed: true }));
}
};
window.customElements.define("tp-lc-out", TpLcOut);
// ../tp-lc-block.js
var TpLcBlock = class extends s4 {
static get blockStyles() {
return [
r`
:host {
display: block;
position: absolute;
padding: 10px;
}
.wrap {
display: flex;
}
.inputs, .outputs {
display: flex;
flex-direction: column;
justify-content: space-evenly;
}
.inputs {
margin-right: 20px;
}
.outputs {
margin-left: 20px;
}
tp-lc-in + tp-lc-in,
tp-lc-out + tp-lc-out {
margin-top: 10px;
}
`
];
}
render() {
const {} = this;
const inputs = this.inputs || [];
const outputs = this.outputs || [];
return $`
<div class="wrap">
${inputs.length > 0 ? $`
<div class="inputs">
${inputs.map((input) => $`
<tp-lc-in .name=${input.name}></tp-lc-in>
`)}
</div>
` : null}
<div class="inner">
${this.renderContent()}
</div>
<div class="outputs">
${outputs.length > 0 ? $`
${outputs.map((input) => $`
<tp-lc-out .name=${input.name}></tp-lc-out>
`)}
</div>
` : null}
</div>
`;
}
static get properties() {
return {
left: { type: Number },
top: { type: Number },
inputs: { type: Array },
output: { type: Array }
};
}
constructor() {
super();
this.inputs = [];
this.outputs = [];
}
shouldUpdate(changes) {
super.shouldUpdate(changes);
if (changes.has("left") || changes.has("top")) {
this.style.left = `${this.left || 0}px`;
this.style.top = `${this.top || 0}px`;
}
return true;
}
};
window.customElements.define("tp-lc-block", TpLcBlock);
// src/simple-block.js
var SimpleBlock = class extends TpLcBlock {
static get styles() {
return [
...TpLcBlock.blockStyles,
r`
:host {
display: block;
background: #11406b;
border-radius: 4px;
}
`
];
}
renderContent() {
const { title } = this;
return $`
${title}<br>
${title}<br>
${title}<br>
${title}<br>
${title}<br>
`;
}
static get properties() {
return {
title: { type: String }
};
}
};
window.customElements.define("simple-block", SimpleBlock);
// src/demo.js
var DemoApp = class extends s4 {
static get styles() {
return [
r`
:host {
display: block;
padding: 20px;
}
tp-logic-canvas {
width: 1200px;
height: 800px;
background: #040a13;
}
`
];
}
render() {
const { blocks, connections } = this;
return $`
<tp-logic-canvas .connections=${connections}>
${blocks.map((block) => this.renderBlock(block))}
</tp-logic-canvas>
`;
}
renderBlock(block) {
switch (block.type) {
case "simple-block":
return $`
<simple-block .title=${block.id} .left=${block.left} .top=${block.top} .inputs=${block.inputs} .outputs=${block.outputs}></simple-block>
`;
}
}
static get properties() {
return {
blocks: { type: Array },
connections: { type: Array }
};
}
constructor() {
super();
this.blocks = [
{
id: "block1",
type: "simple-block",
left: 200,
top: 200,
inputs: [
{ name: "inputA" },
{ name: "inputB" }
]
},
{
id: "block2",
type: "simple-block",
left: 40,
top: 40,
outputs: [
{ name: "outputA" }
]
}
];
this.connections = [
{ srcBlock: "block2", srcOutput: "outputA", destBlock: "block1", destInput: "inputB" }
];
}
};
window.customElements.define("demo-app", DemoApp);
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
@license
Copyright (c) 2022 trading_peter
This program is available under Apache License Version 2.0
*/
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaXQvcmVhY3RpdmUtZWxlbWVudC9zcmMvY3NzLXRhZy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGxpdC9yZWFjdGl2ZS1lbGVtZW50L3NyYy9yZWFjdGl2ZS1lbGVtZW50LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9saXQtaHRtbC9zcmMvbGl0LWh0bWwudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2xpdC1lbGVtZW50L3NyYy9saXQtZWxlbWVudC50cyIsICIuLi8uLi90cC1sYy1saW5lLmpzIiwgIi4uLy4uL3RwLWxvZ2ljLWNhbnZhcy5qcyIsICIuLi8uLi90cC1sYy1pbi5qcyIsICIuLi8uLi90cC1sYy1vdXQuanMiLCAiLi4vLi4vdHAtbGMtYmxvY2suanMiLCAiLi4vc3JjL3NpbXBsZS1ibG9jay5qcyIsICIuLi9zcmMvZGVtby5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQ1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIGBhZG9wdGVkU3R5bGVTaGVldHNgLlxuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydHNBZG9wdGluZ1N0eWxlU2hlZXRzID1cbiAgd2luZG93LlNoYWRvd1Jvb3QgJiZcbiAgKHdpbmRvdy5TaGFkeUNTUyA9PT0gdW5kZWZpbmVkIHx8IHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpICYmXG4gICdhZG9wdGVkU3R5bGVTaGVldHMnIGluIERvY3VtZW50LnByb3RvdHlwZSAmJlxuICAncmVwbGFjZScgaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGU7XG5cbi8qKlxuICogQSBDU1NSZXN1bHQgb3IgbmF0aXZlIENTU1N0eWxlU2hlZXQuXG4gKlxuICogSW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGNvbnN0cnVjdGlibGUgQ1NTIHN0eWxlIHNoZWV0cywgQ1NTU3R5bGVTaGVldFxuICogb2JqZWN0IGNhbiBiZSB1c2VkIGZvciBzdHlsaW5nIGFsb25nIHNpZGUgQ1NTUmVzdWx0IGZyb20gdGhlIGBjc3NgXG4gKiB0ZW1wbGF0ZSB0YWcuXG4gKi9cbmV4cG9ydCB0eXBlIENTU1Jlc3VsdE9yTmF0aXZlID0gQ1NTUmVzdWx0IHwgQ1NTU3R5bGVTaGVldDtcblxuZXhwb3J0IHR5cGUgQ1NTUmVzdWx0QXJyYXkgPSBBcnJheTxDU1NSZXN1bHRPck5hdGl2ZSB8IENTU1Jlc3VsdEFycmF5PjtcblxuLyoqXG4gKiBBIHNpbmdsZSBDU1NSZXN1bHQsIENTU1N0eWxlU2hlZXQsIG9yIGFuIGFycmF5IG9yIG5lc3RlZCBhcnJheXMgb2YgdGhvc2UuXG4gKi9cbmV4cG9ydCB0eXBlIENTU1Jlc3VsdEdyb3VwID0gQ1NTUmVzdWx0T3JOYXRpdmUgfCBDU1NSZXN1bHRBcnJheTtcblxuY29uc3QgY29uc3RydWN0aW9uVG9rZW4gPSBTeW1ib2woKTtcblxuY29uc3Qgc3R5bGVTaGVldENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENTU1N0eWxlU2hlZXQ+KCk7XG5cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGEgc3RyaW5nIG9mIENTUyB0ZXh0LCB0aGF0IG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhIENTU1N0eWxlU2hlZXQuXG4gKlxuICogQ1NTUmVzdWx0IGlzIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNzc2AtdGFnZ2VkIHRlbXBsYXRlIGxpdGVyYWxzIGFuZFxuICogYHVuc2FmZUNTUygpYC4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgQ1NTUmVzdWx0cyBhcmUgb25seSBjcmVhdGVkIHZpYSB0aGVcbiAqIGBjc3NgIHRhZyBhbmQgYHVuc2FmZUNTUygpYCwgQ1NTUmVzdWx0IGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIENTU1Jlc3VsdCB7XG4gIC8vIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gcmVtYWluIHVubWluaWZpZWQuXG4gIFsnXyRjc3NSZXN1bHQkJ10gPSB0cnVlO1xuICByZWFkb25seSBjc3NUZXh0OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjc3NUZXh0OiBzdHJpbmcsIHNhZmVUb2tlbjogc3ltYm9sKSB7XG4gICAgaWYgKHNhZmVUb2tlbiAhPT0gY29uc3RydWN0aW9uVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NTU1Jlc3VsdCBpcyBub3QgY29uc3RydWN0YWJsZS4gVXNlIGB1bnNhZmVDU1NgIG9yIGBjc3NgIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jc3NUZXh0ID0gY3NzVGV4dDtcbiAgfVxuXG4gIC8vIE5vdGUsIHRoaXMgaXMgYSBnZXR0ZXIgc28gdGhhdCBpdCdzIGxhenkuIEluIHByYWN0aWNlLCB0aGlzIG1lYW5zXG4gIC8vIHN0eWxlc2hlZXRzIGFyZSBub3QgY3JlYXRlZCB1bnRpbCB0aGUgZmlyc3QgZWxlbWVudCBpbnN0YW5jZSBpcyBtYWRlLlxuICBnZXQgc3R5bGVTaGVldCgpOiBDU1NTdHlsZVNoZWV0IHwgdW5kZWZpbmVkIHtcbiAgICAvLyBOb3RlLCBpZiBgc3VwcG9ydHNBZG9wdGluZ1N0eWxlU2hlZXRzYCBpcyB0cnVlIHRoZW4gd2UgYXNzdW1lXG4gICAgLy8gQ1NTU3R5bGVTaGVldCBpcyBjb25zdHJ1Y3RhYmxlLlxuICAgIGxldCBzdHlsZVNoZWV0ID0gc3R5bGVTaGVldENhY2hlLmdldCh0aGlzLmNzc1RleHQpO1xuICAgIGlmIChzdXBwb3J0c0Fkb3B0aW5nU3R5bGVTaGVldHMgJiYgc3R5bGVTaGVldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdHlsZVNoZWV0Q2FjaGUuc2V0KHRoaXMuY3NzVGV4dCwgKHN0eWxlU2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldCgpKSk7XG4gICAgICBzdHlsZVNoZWV0LnJlcGxhY2VTeW5jKHRoaXMuY3NzVGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZVNoZWV0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jc3NUZXh0O1xuICB9XG59XG5cbnR5cGUgQ29uc3RydWN0YWJsZUNTU1Jlc3VsdCA9IENTU1Jlc3VsdCAmIHtcbiAgbmV3IChjc3NUZXh0OiBzdHJpbmcsIHNhZmVUb2tlbjogc3ltYm9sKTogQ1NTUmVzdWx0O1xufTtcblxuY29uc3QgdGV4dEZyb21DU1NSZXN1bHQgPSAodmFsdWU6IENTU1Jlc3VsdEdyb3VwIHwgbnVtYmVyKSA9PiB7XG4gIC8vIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gcmVtYWluI