UNPKG

@uva-glass/component-library

Version:

React components UvA

2,057 lines 79.7 kB
import { g as L } from "./react.esm-CMg7bmSn.js"; function l(e, t, n) { return e.namespaceURI && e.namespaceURI !== "http://www.w3.org/1999/xhtml" || (t = Array.isArray(t) ? t : [ t ], !t.includes(e.tagName.toLowerCase())) ? !1 : n ? Object.entries(n).every(([i, r]) => e[i] === r) : !0; } var Se; (function(e) { e.button = "button", e.color = "color", e.file = "file", e.image = "image", e.reset = "reset", e.submit = "submit", e.checkbox = "checkbox", e.radio = "radio"; })(Se || (Se = {})); function st(e) { return l(e, "button") || l(e, "input") && e.type in Se; } function w(e) { var t; if (Gt(e) && e.defaultView) return e.defaultView; if (!((t = e.ownerDocument) === null || t === void 0) && t.defaultView) return e.ownerDocument.defaultView; throw new Error(`Could not determine window of node. Node was ${Wt(e)}`); } function Gt(e) { return e.nodeType === 9; } function Wt(e) { return typeof e == "function" ? `function ${e.name}` : e === null ? "null" : String(e); } function ut(e, t) { return new Promise((n, i) => { const r = new t(); r.onerror = i, r.onabort = i, r.onload = () => { n(String(r.result)); }, r.readAsText(e); }); } function Ue(e, t) { const n = { ...t, length: t.length, item: (i) => n[i], [Symbol.iterator]: function* () { for (let r = 0; r < n.length; r++) yield n[r]; } }; return n.constructor = e.FileList, e.FileList && Object.setPrototypeOf(n, e.FileList.prototype), Object.freeze(n), n; } function P(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e; } class ct { getAsFile() { return this.file; } getAsString(t) { typeof this.data == "string" && t(this.data); } /* istanbul ignore next */ webkitGetAsEntry() { throw new Error("not implemented"); } constructor(t, n) { P(this, "kind", void 0), P(this, "type", void 0), P(this, "file", null), P(this, "data", void 0), typeof t == "string" ? (this.kind = "string", this.type = String(n), this.data = t) : (this.kind = "file", this.type = t.type, this.file = t); } } class zt extends Array { add(...t) { const n = new ct(t[0], t[1]); return this.push(n), n; } clear() { this.splice(0, this.length); } remove(t) { this.splice(t, 1); } } function te(e, t) { const [n, i] = e.split("/"), r = !i || i === "*"; return (o) => t ? o.type === (r ? n : e) : r ? o.type.startsWith(`${n}/`) : o.type === n; } function qt(e) { return new class { getData(n) { var i; const r = (i = this.items.find(te(n, !0))) !== null && i !== void 0 ? i : this.items.find(te(n, !1)); let o = ""; return r == null || r.getAsString((s) => { o = s; }), o; } setData(n, i) { const r = this.items.findIndex(te(n, !0)), o = new ct(i, n); r >= 0 ? this.items.splice(r, 1, o) : this.items.push(o); } clearData(n) { if (n) { const i = this.items.findIndex(te(n, !0)); i >= 0 && this.items.remove(i); } else this.items.clear(); } get types() { const n = []; return this.files.length && n.push("Files"), this.items.forEach((i) => n.push(i.type)), Object.freeze(n), n; } /* istanbul ignore next */ setDragImage() { } constructor() { P(this, "dropEffect", "none"), P(this, "effectAllowed", "uninitialized"), P(this, "items", new zt()), P(this, "files", Ue(e, [])); } }(); } function De(e, t = []) { const n = typeof e.DataTransfer > "u" ? qt(e) : ( /* istanbul ignore next */ new e.DataTransfer() ); return Object.defineProperty(n, "files", { get: () => Ue(e, t) }), n; } function Xt(e, t) { if (t.kind === "file") return t.getAsFile(); let n = ""; return t.getAsString((i) => { n = i; }), new e.Blob([ n ], { type: t.type }); } function at(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e; } function dt(e, ...t) { const n = Object.fromEntries(t.map((i) => [ typeof i == "string" ? "text/plain" : i.type, Promise.resolve(i) ])); return typeof e.ClipboardItem < "u" ? new e.ClipboardItem(n) : new class { get types() { return Array.from(Object.keys(this.data)); } async getType(r) { const o = await this.data[r]; if (!o) throw new Error(`${r} is not one of the available MIME types on this item.`); return o instanceof e.Blob ? o : new e.Blob([ o ], { type: r }); } constructor(r) { at(this, "data", void 0), this.data = r; } }(n); } const V = Symbol("Manage ClipboardSub"); function Be(e, t) { return Object.assign(new class extends e.EventTarget { async read() { return Array.from(this.items); } async readText() { let i = ""; for (const r of this.items) { const o = r.types.includes("text/plain") ? "text/plain" : r.types.find((s) => s.startsWith("text/")); o && (i += await r.getType(o).then((s) => ut(s, e.FileReader))); } return i; } async write(i) { this.items = i; } async writeText(i) { this.items = [ dt(e, i) ]; } constructor(...i) { super(...i), at(this, "items", []); } }(), { [V]: t }); } function xe(e) { return !!(e != null && e[V]); } function Jt(e) { if (xe(e.navigator.clipboard)) return e.navigator.clipboard[V]; const t = Object.getOwnPropertyDescriptor(e.navigator, "clipboard"); let n; const i = { resetClipboardStub: () => { n = Be(e, i); }, detachClipboardStub: () => { t ? Object.defineProperty(e.navigator, "clipboard", t) : Object.defineProperty(e.navigator, "clipboard", { value: void 0, configurable: !0 }); } }; return n = Be(e, i), Object.defineProperty(e.navigator, "clipboard", { get: () => n, configurable: !0 }), n[V]; } function Qt(e) { xe(e.navigator.clipboard) && e.navigator.clipboard[V].resetClipboardStub(); } function Zt(e) { xe(e.navigator.clipboard) && e.navigator.clipboard[V].detachClipboardStub(); } async function Yt(e) { const t = e.defaultView, n = t == null ? void 0 : t.navigator.clipboard, i = n && await n.read(); if (!i) throw new Error("The Clipboard API is unavailable."); const r = De(t); for (const o of i) for (const s of o.types) r.setData(s, await o.getType(s).then((u) => ut(u, t.FileReader))); return r; } async function lt(e, t) { const n = w(e), i = n.navigator.clipboard, r = []; for (let s = 0; s < t.items.length; s++) { const u = t.items[s], c = Xt(n, u); r.push(dt(n, c)); } if (!(i && await i.write(r).then( () => !0, // Can happen with other implementations that e.g. require permissions /* istanbul ignore next */ () => !1 ))) throw new Error("The Clipboard API is unavailable."); } const ce = globalThis; typeof ce.afterEach == "function" && ce.afterEach(() => Qt(globalThis.window)); typeof ce.afterAll == "function" && ce.afterAll(() => Zt(globalThis.window)); function D(e) { return e.hasAttribute("contenteditable") && (e.getAttribute("contenteditable") == "true" || e.getAttribute("contenteditable") == ""); } function Q(e) { const t = en(e); return t && (t.closest('[contenteditable=""]') || t.closest('[contenteditable="true"]')); } function en(e) { return e.nodeType === 1 ? e : e.parentElement; } function K(e) { return ft(e) && !e.readOnly || D(e); } var _e; (function(e) { e.text = "text", e.date = "date", e["datetime-local"] = "datetime-local", e.email = "email", e.month = "month", e.number = "number", e.password = "password", e.search = "search", e.tel = "tel", e.time = "time", e.url = "url", e.week = "week"; })(_e || (_e = {})); function ft(e) { return l(e, "textarea") || l(e, "input") && e.type in _e; } var Pe; (function(e) { e.email = "email", e.password = "password", e.search = "search", e.telephone = "telephone", e.text = "text", e.url = "url"; })(Pe || (Pe = {})); function tn(e) { var t; const n = (t = e.getAttribute("maxlength")) !== null && t !== void 0 ? t : ""; return /^\d+$/.test(n) && Number(n) >= 0 ? Number(n) : void 0; } function nn(e) { return l(e, "textarea") || l(e, "input") && e.type in Pe; } const pt = [ "input:not([type=hidden]):not([disabled])", "button:not([disabled])", "select:not([disabled])", "textarea:not([disabled])", '[contenteditable=""]', '[contenteditable="true"]', "a[href]", "[tabindex]:not([disabled])" ].join(", "); function Ne(e) { return e.matches(pt); } var ae; (function(e) { e["{"] = "}", e["["] = "]"; })(ae || (ae = {})); function ht(e, t) { let n = 0; const i = e[n] in ae ? e[n] : ""; n += i.length; const o = new RegExp(`^\\${i}{2}`).test(e) ? "" : i; return { type: o, ...o === "" ? rn(e, n, t) : on(e, n, o, t) }; } function rn(e, t, n) { const i = e[t]; return bt(i, e, t, n), t += i.length, { consumedLength: t, descriptor: i, releasePrevious: !1, releaseSelf: !0, repeat: 1 }; } function on(e, t, n, i) { var r, o; const s = e[t] === "/" ? "/" : ""; t += s.length; const u = n === "{" && e[t] === "\\"; t += Number(u); const c = u ? e[t] : (r = e.slice(t).match(n === "{" ? /^\w+|^[^}>/]/ : /^\w+/)) === null || r === void 0 ? void 0 : r[0]; bt(c, e, t, i), t += c.length; var a; const d = (a = (o = e.slice(t).match(/^>\d+/)) === null || o === void 0 ? void 0 : o[0]) !== null && a !== void 0 ? a : ""; t += d.length; const f = e[t] === "/" || !d && e[t] === ">" ? e[t] : ""; t += f.length; const p = ae[n], b = e[t] === p ? p : ""; if (!b) throw new Error(vt([ !d && "repeat modifier", !f && "release modifier", `"${p}"` ].filter(Boolean).join(" or "), e[t], e, i)); return t += b.length, { consumedLength: t, descriptor: c, releasePrevious: !!s, repeat: d ? Math.max(Number(d.substr(1)), 1) : 1, releaseSelf: sn(f, d) }; } function bt(e, t, n, i) { if (!e) throw new Error(vt("key descriptor", t[n], t, i)); } function sn(e, t) { if (e) return e === "/"; if (t) return !1; } function vt(e, t, n, i) { return `Expected ${e} but found "${t ?? ""}" in "${n}" See ${i === "pointer" ? "https://testing-library.com/docs/user-event/pointer#pressing-a-button-or-touching-the-screen" : "https://testing-library.com/docs/user-event/keyboard"} for more information about how userEvent parses your input.`; } function un(e) { return new e.constructor(e.type, e); } var g; (function(e) { e[e.Trigger = 2] = "Trigger", e[e.Call = 1] = "Call"; })(g || (g = {})); function z(e, t) { e.levelRefs[t] = {}; } function ne(e, t) { return e.levelRefs[t]; } var B; (function(e) { e[e.EachTrigger = 4] = "EachTrigger", e[e.EachApiCall = 2] = "EachApiCall", e[e.EachTarget = 1] = "EachTarget", e[e.Never = 0] = "Never"; })(B || (B = {})); function C(e) { for (let n = e; n; n = n.parentElement) if (l(n, [ "button", "input", "select", "textarea", "optgroup", "option" ])) { if (n.hasAttribute("disabled")) return !0; } else if (l(n, "fieldset")) { var t; if (n.hasAttribute("disabled") && !(!((t = n.querySelector(":scope > legend")) === null || t === void 0) && t.contains(e))) return !0; } else if (n.tagName.includes("-") && n.constructor.formAssociated && n.hasAttribute("disabled")) return !0; return !1; } function pe(e) { const t = e.activeElement; return t != null && t.shadowRoot ? pe(t.shadowRoot) : C(t) ? e.ownerDocument ? ( /* istanbul ignore next */ e.ownerDocument.body ) : e.body : t; } function Te(e) { var t; return (t = pe(e)) !== null && t !== void 0 ? t : ( /* istanbul ignore next */ e.body ); } function cn(e, t) { let n = e; do { if (t(n)) return n; n = n.parentElement; } while (n && n !== e.ownerDocument.body); } function T(e) { return gt(e) && ft(e); } function an(e) { return gt(e) && st(e); } function gt(e) { return e.nodeType === 1; } function dn(e) { const t = e.ownerDocument.getSelection(); if (t != null && t.focusNode && T(e)) { const i = Q(t.focusNode); if (i) { if (!t.isCollapsed) { var n; const r = ((n = i.firstChild) === null || n === void 0 ? void 0 : n.nodeType) === 3 ? i.firstChild : i; t.setBaseAndExtent(r, 0, r, 0); } } else t.setBaseAndExtent(e, 0, e, 0); } } function R(e, t) { return L().eventWrapper(e); } function A(e) { const t = cn(e, Ne), n = pe(e.ownerDocument); (t ?? e.ownerDocument.body) !== n && (R(t ? () => t.focus() : () => n == null ? void 0 : n.blur()), dn(t ?? e.ownerDocument.body)); } function ln(e) { !Ne(e) || !(pe(e.ownerDocument) === e) || R(() => e.blur()); } const O = {}; O.click = (e, t, n) => { const i = t.closest("button,input,label,select,textarea"), r = i && l(i, "label") && i.control; if (r) return () => { Ne(r) && A(r), n.dispatchEvent(r, un(e)); }; if (l(t, "input", { type: "file" })) return () => { ln(t), t.dispatchEvent(new (w(t)).Event("fileDialog")), A(t); }; }; const j = Symbol("Displayed value in UI"), I = Symbol("Displayed selection in UI"), de = Symbol("Initial value to compare on blur"); function fn(e) { return typeof e == "object" && j in e; } function pn(e) { return !!e && typeof e == "object" && I in e; } function hn(e, t) { e[de] === void 0 && (e[de] = e.value), e[j] = t, e.value = Object.assign(new String(t), { [j]: !0 }); } function k(e) { return e[j] === void 0 ? e.value : String(e[j]); } function Me(e) { e[j] = void 0; } function yt(e) { e[de] = void 0; } function bn(e) { return e[de]; } function vn(e, t) { e[I] = t; } function W(e, { focusOffset: t, anchorOffset: n = t }, i = "replace") { const r = k(e).length, o = (f) => Math.max(0, Math.min(r, f)), s = i === "replace" || e[I] === void 0 ? o(n) : e[I].anchorOffset, u = o(t), c = Math.min(s, u), a = Math.max(s, u); if (e[I] = { anchorOffset: s, focusOffset: u }, e.selectionStart === c && e.selectionEnd === a) return; const d = Object.assign(new Number(c), { [I]: !0 }); try { e.setSelectionRange(d, a); } catch { } } function Z(e) { var t, n, i; const r = (i = e[I]) !== null && i !== void 0 ? i : { anchorOffset: (t = e.selectionStart) !== null && t !== void 0 ? t : 0, focusOffset: (n = e.selectionEnd) !== null && n !== void 0 ? n : 0 }; return { ...r, startOffset: Math.min(r.anchorOffset, r.focusOffset), endOffset: Math.max(r.anchorOffset, r.focusOffset) }; } function gn(e) { return !!e[I]; } function se(e) { e[I] = void 0; } const le = globalThis.parseInt; function yn(e) { const t = e.replace(/\D/g, ""); if (t.length < 2) return e; const n = le(t[0], 10), i = le(t[1], 10); if (n >= 3 || n === 2 && i >= 4) { let r; return n >= 3 ? r = 1 : r = 2, Fe(t, r); } return e.length === 2 ? e : Fe(t, 2); } function Fe(e, t) { const n = e.slice(0, t), i = Math.min(le(n, 10), 23), r = e.slice(t), o = le(r, 10), s = Math.min(o, 59); return `${i.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`; } function mt(e, t) { const n = e.cloneNode(); return n.value = t, n.value === t; } function Et(e, t, n, i) { if (ue(e) && t + n >= 0 && t + n <= e.nodeValue.length) return { node: e, offset: t + n }; const r = Ve(e, t, n); if (r) { if (ue(r)) return { node: r, offset: n > 0 ? Math.min(1, r.nodeValue.length) : Math.max(r.nodeValue.length - 1, 0) }; if (l(r, "br")) { const o = Ve(r, void 0, n); return o ? ue(o) ? { node: o, offset: n > 0 ? 0 : o.nodeValue.length } : n < 0 && l(o, "br") ? { node: r.parentNode, offset: ie(r) } : { node: o.parentNode, offset: ie(o) + (n > 0 ? 0 : 1) } : n < 0 && i === "deleteContentBackward" ? { node: r.parentNode, offset: ie(r) } : void 0; } else return { node: r.parentNode, offset: ie(r) + (n > 0 ? 1 : 0) }; } } function Ve(e, t, n) { const i = Number(t) + (n < 0 ? -1 : 0); return t !== void 0 && Le(e) && i >= 0 && i < e.children.length && (e = e.children[i]), En(e, n === 1 ? "next" : "previous", mn); } function mn(e) { if (ue(e)) return !0; if (Le(e)) { if (l(e, [ "input", "textarea" ])) return e.type !== "hidden"; if (l(e, "br")) return !0; } return !1; } function ie(e) { let t = 0; for (; e.previousSibling; ) t++, e = e.previousSibling; return t; } function Le(e) { return e.nodeType === 1; } function ue(e) { return e.nodeType === 3; } function En(e, t, n) { for (; ; ) { var i; const r = e[`${t}Sibling`]; if (r) { if (e = wn(r, t === "next" ? "first" : "last"), n(e)) return e; } else if (e.parentNode && (!Le(e.parentNode) || !D(e.parentNode) && e.parentNode !== ((i = e.ownerDocument) === null || i === void 0 ? void 0 : i.body))) e = e.parentNode; else break; } } function wn(e, t) { for (; e.hasChildNodes(); ) e = e[`${t}Child`]; return e; } const Y = Symbol("Track programmatic changes for React workaround"); function Tn(e) { return Object.getOwnPropertyNames(e).some((t) => t.startsWith("__react")) && w(e).REACT_VERSION === 17; } function kn(e) { Tn(e) && (e[Y] = { previousValue: String(e.value), tracked: [] }); } function In(e, t) { var n, i; (i = e[Y]) === null || i === void 0 || (n = i.tracked) === null || n === void 0 || n.push(t), e[Y] || (Me(e), W(e, { focusOffset: t.length })); } function Cn(e, t) { var n; const i = e[Y]; if (e[Y] = void 0, !(!(i == null || (n = i.tracked) === null || n === void 0) && n.length)) return; const r = i.tracked.length === 2 && i.tracked[0] === i.previousValue && i.tracked[1] === e.value; r || Me(e), gn(e) && W(e, { focusOffset: r ? t : e.value.length }); } function wt(e) { const t = Sn(e); if (t && T(t)) return { type: "input", selection: Z(t) }; const n = t == null ? void 0 : t.ownerDocument.getSelection(); return { type: Q(e) && (n == null ? void 0 : n.anchorNode) && Q(n.anchorNode) ? "contenteditable" : "default", selection: n }; } function Sn(e) { return e.nodeType === 1 ? e : e.parentElement; } function _n(e) { const t = wt(e); if (t.type === "input") return t.selection; if (t.type === "contenteditable") { var n; return (n = t.selection) === null || n === void 0 ? void 0 : n.getRangeAt(0); } } function x({ focusNode: e, focusOffset: t, anchorNode: n = e, anchorOffset: i = t }) { var r, o; if (wt(e).type === "input") return W(e, { anchorOffset: i, focusOffset: t }); (o = n.ownerDocument) === null || o === void 0 || (r = o.getSelection()) === null || r === void 0 || r.setBaseAndExtent(n, i, e, t); } function Tt(e) { return l(e, "input") && [ "date", "time" ].includes(e.type); } function H(e, t, n, i = "insertText") { const r = _n(t); r && (!Tt(t) && !e.dispatchUIEvent(t, "beforeinput", { inputType: i, data: n }) || ("startContainer" in r ? Pn(e, t, r, n, i) : An(e, t, r, n, i))); } function Pn(e, t, n, i, r) { let o = !1; if (!n.collapsed) o = !0, n.deleteContents(); else if ([ "deleteContentBackward", "deleteContentForward" ].includes(r)) { const s = Et(n.startContainer, n.startOffset, r === "deleteContentBackward" ? -1 : 1, r); if (s) { o = !0; const u = n.cloneRange(); u.comparePoint(s.node, s.offset) < 0 ? u.setStart(s.node, s.offset) : u.setEnd(s.node, s.offset), u.deleteContents(); } } if (i) if (n.endContainer.nodeType === 3) { const s = n.endOffset; n.endContainer.insertData(s, i), n.setStart(n.endContainer, s + i.length), n.setEnd(n.endContainer, s + i.length); } else { const s = t.ownerDocument.createTextNode(i); n.insertNode(s), n.setStart(s, i.length), n.setEnd(s, i.length); } (o || i) && e.dispatchUIEvent(t, "input", { inputType: r }); } function An(e, t, n, i, r) { let o = i; if (nn(t)) { const a = tn(t); if (a !== void 0 && i.length > 0) { const d = a - t.value.length; if (d > 0) o = i.substring(0, d); else return; } } const { newValue: s, newOffset: u, oldValue: c } = On(o, t, n, r); s === c && u === n.startOffset && u === n.endOffset || l(t, "input", { type: "number" }) && !Un(s) || (hn(t, s), x({ focusNode: t, anchorOffset: u, focusOffset: u }), Tt(t) ? mt(t, s) && (Ke(e, t, u, {}), e.dispatchUIEvent(t, "change"), yt(t)) : Ke(e, t, u, { data: i, inputType: r })); } function On(e, t, { startOffset: n, endOffset: i }, r) { const o = k(t), s = Math.max(0, n === i && r === "deleteContentBackward" ? n - 1 : n), u = o.substring(0, s), c = Math.min(o.length, n === i && r === "deleteContentForward" ? n + 1 : i), a = o.substring(c, o.length); let d = `${u}${e}${a}`, f = s + e.length; if (l(t, "input", { type: "time" })) { const p = yn(d); p !== "" && mt(t, p) && (d = p, f = p.length); } return { oldValue: o, newValue: d, newOffset: f }; } function Ke(e, t, n, i) { e.dispatchUIEvent(t, "input", i), Cn(t, n); } function Un(e) { var t, n; const i = e.split("e", 2); return !(/[^\d.\-e]/.test(e) || Number((t = e.match(/-/g)) === null || t === void 0 ? void 0 : t.length) > 2 || Number((n = e.match(/\./g)) === null || n === void 0 ? void 0 : n.length) > 1 || i[1] && !/^-?\d*$/.test(i[1])); } O.cut = (e, t, n) => () => { K(t) && H(n, t, "", "deleteByCut"); }; function Dn(e) { return e ? D(e) ? e.textContent : k(e) : null; } function xn(e) { const t = w(e); for (let n = e; n != null && n.ownerDocument; n = n.parentElement) { const { display: i, visibility: r } = t.getComputedStyle(n); if (i === "none" || r === "hidden") return !1; } return !0; } function Nn(e, t) { const n = e.ownerDocument, i = n.querySelectorAll(pt), r = Array.from(i).filter((c) => c === e || !(Number(c.getAttribute("tabindex")) < 0 || C(c))); Number(e.getAttribute("tabindex")) >= 0 && r.sort((c, a) => { const d = Number(c.getAttribute("tabindex")), f = Number(a.getAttribute("tabindex")); return d === f ? 0 : d === 0 ? 1 : f === 0 ? -1 : d - f; }); const o = {}; let s = [ n.body ]; const u = l(e, "input", { type: "radio" }) ? e.name : void 0; r.forEach((c) => { const a = c; if (l(a, "input", { type: "radio" }) && a.name) { if (a === e) { s.push(a); return; } else if (a.name === u) return; if (a.checked) { s = s.filter((d) => !l(d, "input", { type: "radio", name: a.name })), s.push(a), o[a.name] = a; return; } if (typeof o[a.name] < "u") return; } s.push(a); }); for (let c = s.findIndex((a) => a === e); ; ) if (c += t ? -1 : 1, c === s.length ? c = 0 : c === -1 && (c = s.length - 1), s[c] === e || s[c] === n.body || xn(s[c])) return s[c]; } function Re(e, t) { if (T(e)) { const n = Z(e); x({ focusNode: e, focusOffset: n.startOffset === n.endOffset ? n.focusOffset + t : t < 0 ? n.startOffset : n.endOffset }); } else { const n = e.ownerDocument.getSelection(); if (!(n != null && n.focusNode)) return; if (n.isCollapsed) { const i = Et(n.focusNode, n.focusOffset, t); i && x({ focusNode: i.node, focusOffset: i.offset }); } else n[t < 0 ? "collapseToStart" : "collapseToEnd"](); } } function kt(e) { if (T(e)) return x({ focusNode: e, anchorOffset: 0, focusOffset: k(e).length }); var t; const n = (t = Q(e)) !== null && t !== void 0 ? t : e.ownerDocument.body; x({ focusNode: n, anchorOffset: 0, focusOffset: n.childNodes.length }); } function Mn(e) { if (T(e)) return Z(e).startOffset === 0 && Z(e).endOffset === k(e).length; var t; const n = (t = Q(e)) !== null && t !== void 0 ? t : e.ownerDocument.body, i = e.ownerDocument.getSelection(); return (i == null ? void 0 : i.anchorNode) === n && i.focusNode === n && i.anchorOffset === 0 && i.focusOffset === n.childNodes.length; } function q(e, t, n) { var i; if (T(e)) return x({ focusNode: e, anchorOffset: t, focusOffset: n }); if (D(e) && ((i = e.firstChild) === null || i === void 0 ? void 0 : i.nodeType) === 3) return x({ focusNode: e.firstChild, anchorOffset: t, focusOffset: n }); throw new Error("Not implemented. The result of this interaction is unreliable."); } function re(e, t, n) { const i = w(t), r = Array.from(t.ownerDocument.querySelectorAll(t.name ? `input[type="radio"][name="${i.CSS.escape(t.name)}"]` : 'input[type="radio"][name=""], input[type="radio"]:not([name])')); for (let o = r.findIndex((s) => s === t) + n; ; o += n) { if (r[o] || (o = n > 0 ? 0 : r.length - 1), r[o] === t) return; C(r[o]) || (A(r[o]), e.dispatchUIEvent(r[o], "click")); } } O.keydown = (e, t, n) => { var i, r; return (r = (i = je[e.key]) === null || i === void 0 ? void 0 : i.call(je, e, t, n)) !== null && r !== void 0 ? r : Ln(e, t, n); }; const je = { ArrowDown: (e, t, n) => { if (l(t, "input", { type: "radio" })) return () => re(n, t, -1); }, ArrowLeft: (e, t, n) => l(t, "input", { type: "radio" }) ? () => re(n, t, -1) : () => Re(t, -1), ArrowRight: (e, t, n) => l(t, "input", { type: "radio" }) ? () => re(n, t, 1) : () => Re(t, 1), ArrowUp: (e, t, n) => { if (l(t, "input", { type: "radio" })) return () => re(n, t, 1); }, Backspace: (e, t, n) => { if (K(t)) return () => { H(n, t, "", "deleteContentBackward"); }; }, Delete: (e, t, n) => { if (K(t)) return () => { H(n, t, "", "deleteContentForward"); }; }, End: (e, t) => { if (l(t, [ "input", "textarea" ]) || D(t)) return () => { var n, i; const r = (i = (n = Dn(t)) === null || n === void 0 ? void 0 : n.length) !== null && i !== void 0 ? i : ( /* istanbul ignore next */ 0 ); q(t, r, r); }; }, Home: (e, t) => { if (l(t, [ "input", "textarea" ]) || D(t)) return () => { q(t, 0, 0); }; }, PageDown: (e, t) => { if (l(t, [ "input" ])) return () => { const n = k(t).length; q(t, n, n); }; }, PageUp: (e, t) => { if (l(t, [ "input" ])) return () => { q(t, 0, 0); }; }, Tab: (e, t, n) => () => { const i = Nn(t, n.system.keyboard.modifiers.Shift); A(i), T(i) && W(i, { anchorOffset: 0, focusOffset: i.value.length }); } }, Ln = (e, t, n) => { if (e.code === "KeyA" && n.system.keyboard.modifiers.Control) return () => kt(t); }; O.keypress = (e, t, n) => { if (e.key === "Enter") { if (l(t, "button") || l(t, "input") && $n.includes(t.type) || l(t, "a") && t.href) return () => { n.dispatchUIEvent(t, "click"); }; if (l(t, "input")) { const i = t.form, r = i == null ? void 0 : i.querySelector('input[type="submit"], button:not([type]), button[type="submit"]'); return r ? () => n.dispatchUIEvent(r, "click") : i && Bn.includes(t.type) && i.querySelectorAll("input").length === 1 ? () => n.dispatchUIEvent(i, "submit") : void 0; } } if (K(t)) { const i = e.key === "Enter" ? D(t) && !n.system.keyboard.modifiers.Shift ? "insertParagraph" : "insertLineBreak" : "insertText", r = e.key === "Enter" ? ` ` : e.key; return () => H(n, t, r, i); } }; const $n = [ "button", "color", "file", "image", "reset", "submit" ], Bn = [ "email", "month", "password", "search", "tel", "text", "url", "week" ]; O.keyup = (e, t, n) => { var i; return (i = He[e.key]) === null || i === void 0 ? void 0 : i.call(He, e, t, n); }; const He = { " ": (e, t, n) => { if (st(t)) return () => n.dispatchUIEvent(t, "click"); } }; O.paste = (e, t, n) => { if (K(t)) return () => { var i; const r = (i = e.clipboardData) === null || i === void 0 ? void 0 : i.getData("text"); r && H(n, t, r, "insertFromPaste"); }; }; const It = { auxclick: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, beforeinput: { EventType: "InputEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, click: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, contextmenu: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, copy: { EventType: "ClipboardEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, change: { EventType: "Event", defaultInit: { bubbles: !0, cancelable: !1 } }, cut: { EventType: "ClipboardEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, dblclick: { EventType: "MouseEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, keydown: { EventType: "KeyboardEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, keypress: { EventType: "KeyboardEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, keyup: { EventType: "KeyboardEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, paste: { EventType: "ClipboardEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, input: { EventType: "InputEvent", defaultInit: { bubbles: !0, cancelable: !1, composed: !0 } }, mousedown: { EventType: "MouseEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, mouseenter: { EventType: "MouseEvent", defaultInit: { bubbles: !1, cancelable: !1, composed: !0 } }, mouseleave: { EventType: "MouseEvent", defaultInit: { bubbles: !1, cancelable: !1, composed: !0 } }, mousemove: { EventType: "MouseEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, mouseout: { EventType: "MouseEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, mouseover: { EventType: "MouseEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, mouseup: { EventType: "MouseEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, pointerover: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, pointerenter: { EventType: "PointerEvent", defaultInit: { bubbles: !1, cancelable: !1 } }, pointerdown: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, pointermove: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, pointerup: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, pointercancel: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !1, composed: !0 } }, pointerout: { EventType: "PointerEvent", defaultInit: { bubbles: !0, cancelable: !0, composed: !0 } }, pointerleave: { EventType: "PointerEvent", defaultInit: { bubbles: !1, cancelable: !1 } }, submit: { EventType: "Event", defaultInit: { bubbles: !0, cancelable: !0 } } }; function Ct(e) { return It[e].EventType; } const Fn = [ "MouseEvent", "PointerEvent" ]; function Vn(e) { return Fn.includes(Ct(e)); } function Kn(e) { return Ct(e) === "KeyboardEvent"; } const Rn = { ClipboardEvent: [ Hn ], Event: [], InputEvent: [ oe, Gn ], MouseEvent: [ oe, ke, Ge ], PointerEvent: [ oe, ke, Ge, zn ], KeyboardEvent: [ oe, ke, Wn ] }; function St(e, t, n) { const i = w(t), { EventType: r, defaultInit: o } = It[e], s = new (jn(i))[r](e, o); return Rn[r].forEach((u) => u(s, n ?? {})), s; } function jn(e) { var t; const n = (t = e.Event) !== null && t !== void 0 ? t : class { }; var i; const r = (i = e.AnimationEvent) !== null && i !== void 0 ? i : class extends n { }; var o; const s = (o = e.ClipboardEvent) !== null && o !== void 0 ? o : class extends n { }; var u; const c = (u = e.PopStateEvent) !== null && u !== void 0 ? u : class extends n { }; var a; const d = (a = e.ProgressEvent) !== null && a !== void 0 ? a : class extends n { }; var f; const p = (f = e.TransitionEvent) !== null && f !== void 0 ? f : class extends n { }; var b; const y = (b = e.UIEvent) !== null && b !== void 0 ? b : class extends n { }; var ee; const Bt = (ee = e.CompositionEvent) !== null && ee !== void 0 ? ee : class extends y { }; var he; const Ft = (he = e.FocusEvent) !== null && he !== void 0 ? he : class extends y { }; var be; const Vt = (be = e.InputEvent) !== null && be !== void 0 ? be : class extends y { }; var ve; const Kt = (ve = e.KeyboardEvent) !== null && ve !== void 0 ? ve : class extends y { }; var ge; const ye = (ge = e.MouseEvent) !== null && ge !== void 0 ? ge : class extends y { }; var me; const Rt = (me = e.DragEvent) !== null && me !== void 0 ? me : class extends ye { }; var Ee; const jt = (Ee = e.PointerEvent) !== null && Ee !== void 0 ? Ee : class extends ye { }; var we; const Ht = (we = e.TouchEvent) !== null && we !== void 0 ? we : class extends y { }; return { Event: n, AnimationEvent: r, ClipboardEvent: s, PopStateEvent: c, ProgressEvent: d, TransitionEvent: p, UIEvent: y, CompositionEvent: Bt, FocusEvent: Ft, InputEvent: Vt, KeyboardEvent: Kt, MouseEvent: ye, DragEvent: Rt, PointerEvent: jt, TouchEvent: Ht }; } function N(e, t) { for (const [n, i] of Object.entries(t)) Object.defineProperty(e, n, { get: () => i ?? null }); } function h(e) { return Number(e ?? 0); } function Hn(e, { clipboardData: t }) { N(e, { clipboardData: t }); } function Gn(e, { data: t, inputType: n, isComposing: i }) { N(e, { data: t, isComposing: !!i, inputType: String(n) }); } function oe(e, { view: t, detail: n }) { N(e, { view: t, detail: h(n ?? 0) }); } function ke(e, { altKey: t, ctrlKey: n, metaKey: i, shiftKey: r, modifierAltGraph: o, modifierCapsLock: s, modifierFn: u, modifierFnLock: c, modifierNumLock: a, modifierScrollLock: d, modifierSymbol: f, modifierSymbolLock: p }) { N(e, { altKey: !!t, ctrlKey: !!n, metaKey: !!i, shiftKey: !!r, getModifierState(b) { return !!{ Alt: t, AltGraph: o, CapsLock: s, Control: n, Fn: u, FnLock: c, Meta: i, NumLock: a, ScrollLock: d, Shift: r, Symbol: f, SymbolLock: p }[b]; } }); } function Wn(e, { key: t, code: n, location: i, repeat: r, isComposing: o, charCode: s }) { N(e, { key: String(t), code: String(n), location: h(i), repeat: !!r, isComposing: !!o, charCode: s }); } function Ge(e, { x: t, y: n, screenX: i, screenY: r, clientX: o = t, clientY: s = n, button: u, buttons: c, relatedTarget: a }) { N(e, { screenX: h(i), screenY: h(r), clientX: h(o), x: h(o), clientY: h(s), y: h(s), button: h(u), buttons: h(c), relatedTarget: a }); } function zn(e, { pointerId: t, width: n, height: i, pressure: r, tangentialPressure: o, tiltX: s, tiltY: u, twist: c, pointerType: a, isPrimary: d }) { N(e, { pointerId: h(t), width: h(n), height: h(i), pressure: h(r), tangentialPressure: h(o), tiltX: h(s), tiltY: h(u), twist: h(c), pointerType: String(a), isPrimary: !!d }); } function qn(e, t, n, i = !1) { (Vn(t) || Kn(t)) && (n = { ...n, ...this.system.getUIEventModifiers() }); const r = St(t, e, n); return _t.call(this, e, r, i); } function _t(e, t, n = !1) { var i; const r = t.type, o = n ? () => { } : (i = O[r]) === null || i === void 0 ? void 0 : i.call(O, t, e, this); if (o) { t.preventDefault(); let s = !1; return Object.defineProperty(t, "defaultPrevented", { get: () => s }), Object.defineProperty(t, "preventDefault", { value: () => { s = t.cancelable; } }), R(() => e.dispatchEvent(t)), s || o(), !s; } return R(() => e.dispatchEvent(t)); } function Xn(e, t, n) { const i = St(t, e, n); R(() => e.dispatchEvent(i)); } const Ie = Symbol("Interceptor for programmatical calls"); function $(e, t, n) { const i = Object.getOwnPropertyDescriptor(e.constructor.prototype, t), r = Object.getOwnPropertyDescriptor(e, t), o = i != null && i.set ? "set" : "value"; if (typeof (i == null ? void 0 : i[o]) != "function" || i[o][Ie]) throw new Error(`Element ${e.tagName} does not implement "${String(t)}".`); function s(...u) { const { applyNative: c = !1, realArgs: a, then: d } = n.call(this, ...u), f = (!c && r || i)[o]; o === "set" ? f.call(this, a) : f.call(this, ...a), d == null || d(); } s[Ie] = Ie, Object.defineProperty(e, t, { ...r ?? i, [o]: s }); } function Jn(e) { $(e, "value", function(n) { const i = fn(n); return i && kn(this), { applyNative: !!i, realArgs: Qn(this, n), then: i ? void 0 : () => In(this, String(n)) }; }); } function Qn(e, t) { return l(e, "input", { type: "number" }) && String(t) !== "" && !Number.isNaN(Number(t)) ? String(Number(t)) : String(t); } function Zn(e) { $(e, "setSelectionRange", function(n, ...i) { const r = pn(n); return { applyNative: !!r, realArgs: [ Number(n), ...i ], then: () => r ? void 0 : se(e) }; }), $(e, "selectionStart", function(n) { return { realArgs: n, then: () => se(e) }; }), $(e, "selectionEnd", function(n) { return { realArgs: n, then: () => se(e) }; }), $(e, "select", function() { return { realArgs: [], then: () => vn(e, { anchorOffset: 0, focusOffset: k(e).length }) }; }); } function Yn(e) { $(e, "setRangeText", function(...n) { return { realArgs: n, then: () => { Me(e), se(e); } }; }); } const F = Symbol("Node prepared with document state workarounds"); function Pt(e) { e[F] || (e.addEventListener("focus", (t) => { const n = t.target; We(n); }, { capture: !0, passive: !0 }), e.activeElement && We(e.activeElement), e.addEventListener("blur", (t) => { const n = t.target, i = bn(n); i !== void 0 && (n.value !== i && Xn(n, "change"), yt(n)); }, { capture: !0, passive: !0 }), e[F] = F); } function We(e) { e[F] || (l(e, [ "input", "textarea" ]) && (Jn(e), Zn(e), Yn(e)), e[F] = F); } function ei(e) { return ti(e) ? e : e.ownerDocument; } function ti(e) { return e.nodeType === 9; } function G(e) { const t = e.delay; if (typeof t == "number") return Promise.all([ new Promise((n) => globalThis.setTimeout(() => n(), t)), e.advanceTimers(t) ]); } function M(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e; } var E; (function(e) { e[e.STANDARD = 0] = "STANDARD", e[e.LEFT = 1] = "LEFT", e[e.RIGHT = 2] = "RIGHT", e[e.NUMPAD = 3] = "NUMPAD"; })(E || (E = {})); const ni = [ "Alt", "AltGraph", "Control", "Fn", "Meta", "Shift", "Symbol" ]; function ze(e) { return ni.includes(e); } const ii = [ "CapsLock", "FnLock", "NumLock", "ScrollLock", "SymbolLock" ]; function qe(e) { return ii.includes(e); } class ri { isKeyPressed(t) { return !!this.pressed[String(t.code)]; } getPressedKeys() { return Object.values(this.pressed).map((t) => t.keyDef); } /** Press a key */ async keydown(t, n) { var i, r, o; const s = String(n.key), u = String(n.code), c = Te(t.config.document); this.setKeydownTarget(c); var a; (a = (i = this.pressed)[r = u]) !== null && a !== void 0 || (i[r] = { keyDef: n, unpreventedDefault: !1 }), ze(s) && (this.modifiers[s] = !0); const d = t.dispatchUIEvent(c, "keydown", { key: s, code: u }); qe(s) && !this.modifiers[s] && (this.modifiers[s] = !0, this.modifierLockStart[s] = !0), (o = this.pressed[u]).unpreventedDefault || (o.unpreventedDefault = d), d && this.hasKeyPress(s) && t.dispatchUIEvent(Te(t.config.document), "keypress", { key: s, code: u, charCode: n.key === "Enter" ? 13 : String(n.key).charCodeAt(0) }); } /** Release a key */ async keyup(t, n) { const i = String(n.key), r = String(n.code), o = this.pressed[r].unpreventedDefault; delete this.pressed[r], ze(i) && !Object.values(this.pressed).find((s) => s.keyDef.key === i) && (this.modifiers[i] = !1), t.dispatchUIEvent(Te(t.config.document), "keyup", { key: i, code: r }, !o), qe(i) && this.modifiers[i] && (this.modifierLockStart[i] ? this.modifierLockStart[i] = !1 : this.modifiers[i] = !1); } setKeydownTarget(t) { t !== this.lastKeydownTarget && (this.carryChar = ""), this.lastKeydownTarget = t; } hasKeyPress(t) { return (t.length === 1 || t === "Enter") && !this.modifiers.Control && !this.modifiers.Alt; } constructor(t) { M(this, "system", void 0), M(this, "modifiers", { Alt: !1, AltGraph: !1, CapsLock: !1, Control: !1, Fn: !1, FnLock: !1, Meta: !1, NumLock: !1, ScrollLock: !1, Shift: !1, Symbol: !1, SymbolLock: !1 }), M(this, "pressed", {}), M(this, "carryChar", ""), M(this, "lastKeydownTarget", void 0), M(this, "modifierLockStart", {}), this.system = t; } } const oi = [ // alphanumeric keys ..."0123456789".split("").map((e) => ({ code: `Digit${e}`, key: e })), ...")!@#$%^&*(".split("").map((e, t) => ({ code: `Digit${t}`, key: e, shiftKey: !0 })), ..."abcdefghijklmnopqrstuvwxyz".split("").map((e) => ({ code: `Key${e.toUpperCase()}`, key: e })), ..."ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").map((e) => ({ code: `Key${e}`, key: e, shiftKey: !0 })), // alphanumeric block - functional { code: "Space", key: " " }, { code: "AltLeft", key: "Alt", location: E.LEFT }, { code: "AltRight", key: "Alt", location: E.RIGHT }, { code: "ShiftLeft", key: "Shift", location: E.LEFT }, { code: "ShiftRight", key: "Shift", location: E.RIGHT }, { code: "ControlLeft", key: "Control", location: E.LEFT }, { code: "ControlRight", key: "Control", location: E.RIGHT }, { code: "MetaLeft", key: "Meta", location: E.LEFT }, { code: "MetaRight", key: "Meta", location: E.RIGHT }, { code: "OSLeft", key: "OS", location: E.LEFT }, { code: "OSRight", key: "OS", location: E.RIGHT }, { code: "Tab", key: "Tab" }, { code: "CapsLock", key: "CapsLock" }, { code: "Backspace", key: "Backspace" }, { code: "Enter", key: "Enter" }, // function { code: "Escape", key: "Escape" }, // arrows { code: "ArrowUp", key: "ArrowUp" }, { code: "ArrowDown", key: "ArrowDown" }, { code: "ArrowLeft", key: "ArrowLeft" }, { code: "ArrowRight", key: "ArrowRight" }, // control pad { code: "Home", key: "Home" }, { code: "End", key: "End" }, { code: "Delete", key: "Delete" }, { code: "PageUp", key: "PageUp" }, { code: "PageDown", key: "PageDown" }, // Special keys that are not part of a default US-layout but included for specific behavior { code: "Fn", key: "Fn" }, { code: "Symbol", key: "Symbol" }, { code: "AltRight", key: "AltGraph" } ], si = [ { name: "MouseLeft", pointerType: "mouse", button: "primary" }, { name: "MouseRight", pointerType: "mouse", button: "secondary" }, { name: "MouseMiddle", pointerType: "mouse", button: "auxiliary" }, { name: "TouchA", pointerType: "touch" }, { name: "TouchB", pointerType: "touch" }, { name: "TouchC", pointerType: "touch" } ]; function ui(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e; } class At { getButtons() { let t = 0; for (const n of Object.keys(this.pressed)) t |= 2 ** Number(n); return t; } down(t) { const n = Ae(t.button); if (n in this.pressed) { this.pressed[n].push(t); return; } return this.pressed[n] = [ t ], n; } up(t) { const n = Ae(t.button); if (n in this.pressed && (this.pressed[n] = this.pressed[n].filter((i) => i.name !== t.name), this.pressed[n].length === 0)) return delete this.pressed[n], n; } constructor() { ui(this, "pressed", {}); } } const Xe = { primary: 0, secondary: 1, auxiliary: 2, back: 3, X1: 3, forward: 4, X2: 4 }; function Ae(e = 0) { return e in Xe ? Xe[e] : Number(e); } const Je = { 1: 2, 2: 1 }; function Qe(e) { return e = Ae(e), e in Je ? Je[e] : e; } function ci(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e; } class ai { get countPressed() { return this.pressedKeys.size; } isPressed(t) { return this.pressedKeys.has(t.name); } addPressed(t) { return this.pressedKeys.add(t.name); } removePressed(t) { return this.pressedKeys.delete(t.name); } constructor() { ci(this, "pressedKeys", /* @__PURE__ */ new Set()); } } function J(e, t) { const n = []; for (let o = e; o; o = o.parentElement) n.push(o); const i = []; for (let o = t; o; o = o.parentElement) i.push(o); let r = 0; for (; !(r >= n.length || r >= i.length || n[n.length - 1 - r] !== i[i.length - 1 - r]); r++) ; return [ n.slice(0, n.length - r), i.slice(0, i.length - r), i.slice(i.length - r) ]; } function Oe({ target: e, node: t, offset: n }) { return T(e) ? { node: e, offset: n ?? k(e).length } : t ? { node: t, offset: n ?? (t.nodeType === 3 ? t.nodeValue.length : t.childNodes.length) } : Ot(e, n); } function Ot(e, t, n = !0) { let i = t === void 0 ? e.childNodes.length - 1 : 0; const r = t === void 0 ? -1 : 1; for (; t === void 0 ? i >= (n ? Math.max(e.childNodes.length - 1, 0) : 0) : i <= e.childNodes.length; ) { if (t && i === e.childNodes.length) throw new Error("The given offset is out of bounds."); const o = e.childNodes.item(i), s = String(o.textContent); if (s.length) if (t !== void 0 && s.length < t) t -= s.length; else { if (o.nodeType === 1) return Ot(o, t, !1); if (o.nodeType === 3) return { node: o, offset: t ?? o.nodeValue.length }; } i += r; } return { node: e, offset: e.childNodes.length }; } function di({ document: e, target: t, clickCount: n, node: i, offset: r }) { if (an(t)) return; const o = T(t), s = String(o ? k(t) : t.textContent), [u, c] = i ? ( // which elements might be considered in the same line of text. // TODO: support expanding initial range on multiple clicks if node is given [ r, r ] ) : li(s, r, n); if (o) return W(t, { anchorOffset: u ?? s.length, focusOffset: c ?? s.length }), { node: t, start: u ?? 0, end: c ?? s.length }; { const { node: a, offset: d } = Oe({ target: t, node: i, offset: u }), { node: f, offset: p } = Oe({ target: t, node: i, offset: c }), b = t.ownerDocument.createRange(); try { b.setStart(a, d), b.setEnd(f, p); } catch { throw new Error("The given offset is out of bounds."); } const y = e.getSelection(); return y == null || y.removeAllRanges(), y == null || y.addRange(b.cloneRange()), b; } } function li(e, t, n) { if (n % 3 === 1 || e.length === 0) return [ t, t ]; const i = t ?? e.length; return n % 3 === 2 ? [ i - e.substr(0, t).match(/(\w+|\s+|\W)?$/)[0].length, t === void 0 ? t : t + e.substr(t).match(/^(\w+|\s+|\W)?/)[0].length ] : [ i - e.substr(0, t).match(/[^\r\n]*$/)[0].length, t === void 0 ? t : t + e.substr(t).match(/^[^\r\n]*/)[0].length ]; } function fi(e, { document: t, target: n, node