var x = (r) => {
throw TypeError(r);
};
var _ = (r, t, e) => t.has(r) || x("Cannot " + e);
var c = (r, t, e) => (_(r, t, "read from private field"), e ? e.call(r) : t.get(r)), n = (r, t, e) => t.has(r) ? x("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(r) : t.set(r, e), u = (r, t, e, i) => (_(r, t, "write to private field"), i ? i.call(r, e) : t.set(r, e), e), g = (r, t, e) => (_(r, t, "access private method"), e);
const S = "script[xslt-onload]", y = "xslt-template", k = "xslt-transformed", M = "filter-list", m = "filter-list-list", C = "filter-list-item", I = "filter-list-input", w = "filter-list-searchable", B = "scroll-button", q = "tool-tip", P = "abbrev-tooltips", R = "int-link", H = "popup-image", $ = "tab-list", N = "filter-pill", F = "image-reel";
var d, b, E;
class V {
constructor() {
n(this, b);
n(this, d);
u(this, d, /* @__PURE__ */ new Map());
}
setup() {
let t = htmx.findAll(S);
for (let e of t)
g(this, b, E).call(this, e);
}
hookupHTMX() {
htmx.on("htmx:load", (t) => {
this.setup();
});
}
}
d = new WeakMap(), b = new WeakSet(), E = function(t) {
if (t.getAttribute(k) === "true" || !t.hasAttribute(y))
return;
let e = "#" + t.getAttribute(y), i = c(this, d).get(e);
if (!i) {
let h = htmx.find(e);
if (h) {
let A = h.innerHTML ? new DOMParser().parseFromString(h.innerHTML, "application/xml") : h.contentDocument;
i = new XSLTProcessor(), i.importStylesheet(A), c(this, d).set(e, i);
} else
throw new Error("Unknown XSLT template: " + e);
}
let s = new DOMParser().parseFromString(t.innerHTML, "application/xml"), a = i.transformToFragment(s, document), l = new XMLSerializer().serializeToString(a);
t.outerHTML = l;
};
class O extends HTMLElement {
constructor() {
super(), this._value = "", this.render();
}
static get observedAttributes() {
return ["data-text", "data-queryparam", "data-value"];
}
set value(t) {
this.setAttribute("data-value", t);
}
get value() {
return this.getAttribute("data-value") || "";
}
set text(t) {
this.setAttribute("data-text", t);
}
get text() {
return this.getAttribute("data-text") || "";
}
set queryparam(t) {
this.setAttribute("data-queryparam", t);
}
get queryparam() {
return this.getAttribute("data-queryparam") || "";
}
connectedCallback() {
this._filter = this.text, this._queryparam = this.queryparam, this.render(), htmx.process(this);
}
attributeChangedCallback(t, e, i) {
e !== i && (t === "data-text" && (this._filter = i), t === "data-queryparam" && (this._queryparam = i), t === "data-value" && (this._value = i), this.render());
}
getURL() {
if (this._queryparam) {
let t = new URL(window.location), e = new URLSearchParams(t.search);
return e.delete(this._queryparam), e.delete("page"), t.search = e.toString(), t.toString();
}
return "#";
}
render() {
this.innerHTML = `
`;
}
}
var o, T, f, L;
class U extends HTMLElement {
constructor() {
super();
n(this, f);
n(this, o, !1);
n(this, T, "");
this._items = [], this._url = "", this._filterstart = !1, this._placeholder = "Liste filtern...", this._queryparam = "", this._startparams = null, this.render();
}
static get observedAttributes() {
return ["data-url"];
}
set items(e) {
Array.isArray(e) && (this._items = e, this.render()), htmx && htmx.process(this);
}
get items() {
return this._items;
}
connectedCallback() {
this._url = this.getAttribute("data-url") || "./", this._filterstart = this.getAttribute("data-filterstart") === "true", this._placeholder = this.getAttribute("data-placeholder") || "Liste filtern...", this._queryparam = this.getAttribute("data-queryparam") || "", this._queryparam, this._filterstart && u(this, o, !0), this.addEventListener("input", this.onInput.bind(this)), this.addEventListener("keydown", this.onEnter.bind(this)), this.addEventListener("focusin", this.onGainFocus.bind(this)), this.addEventListener("focusout", this.onLoseFocus.bind(this));
}
attributeChangedCallback(e, i, s) {
e === "data-url" && i !== s && (this._url = s, this.render()), e === "data-filterstart" && i !== s && (this._filterstart = s === "true", this.render()), e === "data-placeholder" && i !== s && (this._placeholder = s, this.render()), e === "data-queryparam" && i !== s && (this._queryparam = s, this.render());
}
onInput(e) {
e.target && e.target.tagName.toLowerCase() === "input" && (this._filter = e.target.value, this.renderList());
}
onGainFocus(e) {
e.target && e.target.tagName.toLowerCase() === "input" && (u(this, o, !1), this.renderList());
}
onLoseFocus(e) {
let i = this.querySelector("input");
if (e.target && e.target === i) {
if (relatedElement = e.relatedTarget, relatedElement && this.contains(relatedElement))
return;
i.value = "", this._filter = "", this._filterstart && u(this, o, !0), this.renderList();
}
}
onEnter(e) {
if (e.target && e.target.tagName.toLowerCase() === "input" && e.key === "Enter") {
e.preventDefault();
const i = this.querySelector("a");
i && i.click();
}
}
mark() {
if (typeof Mark != "function")
return;
let e = this.querySelector("#" + m);
if (!e)
return;
let i = new Mark(e.querySelectorAll("." + w));
this._filter && i.mark(this._filter, {
separateWordSearch: !0
});
}
// INFO: allows for setting a custom HREF of the list item
// The function takes the item as parameter fn(item) and should return a string.
setHREFFunc(e) {
this.getHREF = e, this.render();
}
// INFO: allows for setting a custom link text of the list item
// The function takes the item as parameter fn(item) and should return a string or
// an HTML template literal.
setLinkTextFunc(e) {
this.getLinkText = e, this.render();
}
// INFO: allows for setting the text that will be filtered for.
// The function takes the item as parameter fn(item) and should return a string.
setSearchTextFunc(e) {
this.getSearchText = e, this.render();
}
getHREF(e) {
if (e) {
if (!e.id)
return "";
} else return "";
return e.id;
}
getHREFEncoded(e) {
return encodeURIComponent(this.getHREF(e));
}
getSearchText(e) {
if (e) {
if (!e.name)
return "";
} else return "";
return e.name;
}
getLinkText(e) {
let i = this.getSearchText(e);
return i === "" ? "" : `${i}`;
}
getURL(e) {
if (this._queryparam) {
let i = new URL(window.location), s = new URLSearchParams(i.search);
return s.set(this._queryparam, this.getHREF(e)), s.delete("page"), i.search = s.toString(), i.toString();
}
return this._url + this.getHREFEncoded(e);
}
renderList() {
let e = this.querySelector("#" + m);
e && (e.outerHTML = this.List()), this.mark();
}
render() {
this.innerHTML = `
`;
}
List() {
let e = this._items;
if (this._filter)
if (this._filterstart)
e = this._items.filter((i) => this.getSearchText(i).toLowerCase().startsWith(this._filter.toLowerCase()));
else {
let i = this._filter.split(" ");
e = this._items.filter((s) => i.every((a) => this.getSearchText(s).toLowerCase().includes(a.toLowerCase())));
}
return `