UNPKG

@sheetxl/studio-vanilla

Version:

SheetXL Studio - Vanilla entry point for integrating SheetXL UI.

1,183 lines (1,181 loc) 2.88 MB
import { a as g } from "./ESo6qTbjf45cfiLm.js"; import { R as Op, r as x, m as Ze } from "./BjUnH-Jak3KkxyMS.js"; import { a as gI } from "./BLM_iAjwRwVBN8bb.js"; import { K as Ri, r as ti } from "./DdDAkCzLnDiQdL3A.js"; /** * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.4 * * (C) 2025-present SheetXL Inc. & Michael T. Ford * License: The license can be found at https://www.sheetxl.com/license. */ const ut = { Number: "n", String: "s", Boolean: "b", Error: "e", RichData: "r", Null: "z" }; var se, C1, xt; (C1 = se || (se = {})).Orientation = { Column: "column", Row: "row" }, C1.Orientations = { ...C1.Orientation, Both: "both" }, C1.Direction = { Up: "up", Down: "down", Left: "left", Right: "right" }, ((n) => { n.Code = { Parse: 0, Null: 1, Div0: 2, Value: 3, Ref: 4, Name: 5, Num: 6, NA: 7, GettingData: 8, Spill: 9, Connect: 10, Blocked: 11, Unknown: 12, Field: 13, Calc: 14, Busy: 16, Python: 19, Timeout: 20 }, n.Label = { Parse: "#PARSE!", Null: "#NULL!", Div0: "#DIV/0!", Value: "#VALUE!", Ref: "#REF!", Name: "#NAME?", Num: "#NUM!", NA: "#N/A", GettingData: "#GETTING_DATA", Spill: "#SPILL!", Connect: "#CONNECT!", Blocked: "#BLOCKED!", Unknown: "#UNKNOWN!", Field: "#FIELD!", Calc: "#CALC!", Busy: "#BUSY!", Python: "#PYTHON!", Timeout: "#TIMEOUT!" }; class e extends Error { constructor(v, _, k, I) { super(k, I), this._label = _, this._code = v, this.details = I; } static { this.code = n.Code.Unknown; } get isFormulaError() { return !0; } getLabel() { return this._label; } getCode() { return this._code; } equals(v) { return !!v && (this._code === v._code || this._code === v.code); } get [Symbol.toStringTag]() { return "[FormulaError]"; } toString() { return this.message || this._label; } } n.Known = e; class t extends e { constructor(v, _) { super(n.Code.Parse, n.Label.Parse, v, _); } static { this.code = n.Code.Parse; } getDetails() { const v = this.details; return { line: v?.line ?? 1, column: v?.column ?? 1, offset: v?.offset ?? 0, length: v?.length ?? 0 }; } } n.Parse = t; class o extends e { constructor(v, _) { super(n.Code.Null, n.Label.Null, v, _); } static { this.code = n.Code.Null; } } n.Null = o; class r extends e { constructor(v, _) { super(n.Code.Div0, n.Label.Div0, v, _); } static { this.code = n.Code.Div0; } } n.Div0 = r; class i extends e { constructor(v, _) { super(n.Code.Value, n.Label.Value, v, _); } static { this.code = n.Code.Value; } } n.Value = i; class s extends e { constructor(v, _) { super(n.Code.Ref, n.Label.Ref, v, _); } static { this.code = n.Code.Ref; } } n.Ref = s; class a extends e { constructor(v, _) { super(n.Code.Name, n.Label.Name, v, _); } static { this.code = n.Code.Name; } } n.Name = a; class l extends e { constructor(v, _) { super(n.Code.Num, n.Label.Num, v, _); } static { this.code = n.Code.Num; } } n.Num = l; class c extends e { constructor(v, _) { super(n.Code.NA, n.Label.NA, v, _); } static { this.code = n.Code.NA; } } n.NA = c; class d extends e { constructor(v, _) { super(n.Code.GettingData, n.Label.GettingData, v, _); } static { this.code = n.Code.GettingData; } } n.GettingData = d; class u extends e { constructor(v, _) { super(n.Code.Spill, n.Label.Spill, v, _); } static { this.code = n.Code.Spill; } } n.Spill = u; class h extends e { constructor(v, _) { super(n.Code.Connect, n.Label.Connect, v, _); } static { this.code = n.Code.Connect; } } n.Connect = h; class m extends e { constructor(v, _) { super(n.Code.Blocked, n.Label.Blocked, v, _); } static { this.code = n.Code.Blocked; } } n.Blocked = m; class p extends e { constructor(v, _) { super(n.Code.Unknown, n.Label.Unknown, v, _); } static { this.code = n.Code.Unknown; } } n.Unknown = p; class f extends e { constructor(v, _) { super(n.Code.Field, n.Label.Field, v, _); } static { this.code = n.Code.Field; } } n.Field = f; class w extends e { constructor(v, _) { super(n.Code.Calc, n.Label.Calc, v, _); } static { this.code = n.Code.Calc; } } n.Calc = w; class y extends e { constructor(v, _) { super(n.Code.Busy, n.Label.Busy, v, _); } static { this.code = n.Code.Busy; } } n.Busy = y; class b extends e { constructor(v, _) { super(n.Code.Python, n.Label.Python, v, _); } static { this.code = n.Code.Python; } } n.Python = b; class S extends e { constructor(v, _) { super(n.Code.Timeout, n.Label.Timeout, v, _); } static { this.code = n.Code.Timeout; } } n.Timeout = S; })(xt || (xt = {})); const Vo = {}; Vo[xt.Code.Parse] = xt.Parse, Vo[xt.Code.Null] = xt.Null, Vo[xt.Code.Div0] = xt.Div0, Vo[xt.Code.Value] = xt.Value, Vo[xt.Code.Ref] = xt.Ref, Vo[xt.Code.Name] = xt.Name, Vo[xt.Code.Num] = xt.Num, Vo[xt.Code.NA] = xt.NA, Vo[xt.Code.GettingData] = xt.GettingData, Vo[xt.Code.Spill] = xt.Spill, Vo[xt.Code.Connect] = xt.Connect, Vo[xt.Code.Blocked] = xt.Blocked, Vo[xt.Code.Unknown] = xt.Unknown, Vo[xt.Code.Field] = xt.Field, Vo[xt.Code.Calc] = xt.Calc, Vo[xt.Code.Busy] = xt.Busy, Vo[xt.Code.Python] = xt.Python, Vo[xt.Code.Timeout] = xt.Timeout; const Vv = /* @__PURE__ */ new Map(), G3 = /* @__PURE__ */ new Map(), $v = /* @__PURE__ */ new Map(), Wv = /* @__PURE__ */ new Map(), H6 = Object.keys(Vo); for (let n = 0; n < H6.length; n++) { const e = H6[n], t = Vo[e]; $v.set(xt.Label[e], t), Wv.set(xt.Code[e], t); const o = new t(); Vv.set(o.getLabel(), o), G3.set(o.getCode(), o); } const yI = G3.get(xt.Code.Unknown); var xo; (xo = xt || (xt = {})).BuiltIn = { Parse: new xo.Parse(), Null: new xo.Null(), Div0: new xo.Div0(), Value: new xo.Value(), Ref: new xo.Ref(), Name: new xo.Name(), Num: new xo.Num(), NA: new xo.NA(), GettingData: new xo.GettingData(), Spill: new xo.Spill(), Connect: new xo.Connect(), Blocked: new xo.Blocked(), Unknown: new xo.Unknown(), Field: new xo.Field(), Calc: new xo.Calc(), Busy: new xo.Busy(), Python: new xo.Python(), Timeout: new xo.Timeout() }, xo.getBuiltInByLabel = (n) => Vv.get(n), xo.newTypedError = (n, e, t) => { let o; return o = typeof n == "string" ? $v.get(n) : Wv.get(n), o || (o = xo.Unknown), new o(e, t); }, xo.getBuiltInById = (n) => G3.get(n) || yI; const et = { Up: "up", Down: "down", Left: "left", Right: "right" }, tn = { TopLeft: "tl", Top: "t", TopRight: "tr", Left: "l", Center: "c", Right: "r", BottomLeft: "bl", Bottom: "b", BottomRight: "br" }, hr = "text/html", Bs = "text/plain", tu = "image/png", wI = Object.freeze({ left: 0, top: 0 }), xI = Object.freeze({ left: 0, top: 0, bottom: 0, right: 0 }), bI = Object.freeze({ x: 0, y: 0, width: 0, height: 0 }), _s = Object.freeze(Object.defineProperty({ __proto__: null, EmptyBounds: bI, EmptyRect: xI, EmptyTopLeft: wI }, Symbol.toStringTag, { value: "Module" })), Bt = { Column: "column", Row: "row" }, k0 = { ...Bt, Both: "both" }, SI = Object.freeze({ colIndex: 0, rowIndex: 0 }), vI = Object.freeze({ colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0 }), Uv = (n, e) => n.colStart === e.colStart ? n.rowStart - e.rowStart : n.colStart - e.colStart, Gv = (n, e) => n.rowStart === e.rowStart ? n.colStart - e.colStart : n.rowStart - e.rowStart, CI = (n, e) => n.rowEnd === e.rowEnd ? e.colEnd - n.colEnd : e.rowEnd - n.rowEnd, _I = (n, e) => n.colEnd === e.colEnd ? e.rowEnd - n.rowEnd : e.colEnd - n.colEnd, V6 = (n, e) => n.colIndex === e.colIndex ? n.rowIndex - e.rowIndex : n.colIndex - e.colIndex, $6 = (n, e) => n.rowIndex === e.rowIndex ? n.colIndex - e.colIndex : n.rowIndex - e.rowIndex, qv = (n = Bt.Row, e = !1) => e ? n !== Bt.Column ? CI : _I : n !== Bt.Column ? Gv : Uv, W6 = (n, e) => n === e || !(!n || !e) && n.rowIndex === e.rowIndex && n.colIndex === e.colIndex, H2 = (n, e) => n === e || !(!n || !e) && n.rowStart === e.rowStart && n.rowEnd === e.rowEnd && n.colStart === e.colStart && n.colEnd === e.colEnd, V2 = (n, e) => !(!n || !e || n.colStart > e.colEnd || e.colStart > n.colEnd || n.rowStart > e.rowEnd || e.rowStart > n.rowEnd), U6 = (n, e) => { if (n === e) return !0; if (!n || !e || n.length !== e.length) return !1; for (let t = 0; t < n.length; t++) if (!H2(n[t], e[t])) return !1; return !0; }, Ef = (n, e, t) => { if (!n && !e) return null; if (!n) return t ? e : { ...e }; if (!e) return t ? n : { ...n }; const o = Math.min(n.colStart, e.colStart), r = Math.min(n.rowStart, e.rowStart), i = Math.max(n.colEnd, e.colEnd), s = Math.max(n.rowEnd, e.rowEnd); let a = t; return a ? (a.colStart = o, a.rowStart = r, a.colEnd = i, a.rowEnd = s) : a = { colStart: o, rowStart: r, colEnd: i, rowEnd: s }, a; }, G6 = (n, e) => { if (!e || e.length === 0) return n; const t = { ...n }; for (let o = 0; o < e.length; o++) { const r = e[o]; V2(t, r) && (t.rowStart = Math.min(t.rowStart, r.rowStart), t.colStart = Math.min(t.colStart, r.colStart), t.rowEnd = Math.max(t.rowEnd, r.rowEnd), t.colEnd = Math.max(t.colEnd, r.colEnd)); } return t; }, EI = [null, null], kI = (n, e, t) => { if (n[0].value === n[1].value) return e; }; function q6(n, e = 2, t, o = Bt.Row, r) { let i = [...n]; if (e <= 0 || n.length <= 1) return i; let s = o === Bt.Column, a = 0, l = !1; do { const c = i.sort(qv(s ? Bt.Row : Bt.Column)); i = [], i.push(c[0]); const d = c.length; let u = 0, h = c[0], m = h.colStart, p = h.rowStart, f = h.colEnd, w = h.rowEnd; for (let y = 1; y < d; y++) { const b = c[y]; let S = !1; if (S = s ? h && p === b.rowStart && w === b.rowEnd && f + 1 === b.colStart : h && m === b.colStart && f === b.colEnd && w + 1 === b.rowStart, S) { let C = { colStart: m, rowStart: p, colEnd: s ? b.colEnd : f, rowEnd: s ? w : b.rowEnd }; if (h.value !== void 0 && (C.value = h.value), t) { const v = r ?? [null, null]; v[0] = h, v[1] = b, C = t(v, C, o); } if (C) { i[u] = C, l = !0, h = C, m = h.colStart, p = h.rowStart, f = h.colEnd, w = h.rowEnd; continue; } } i[++u] = b, h = b, m = h.colStart, p = h.rowStart, f = h.colEnd, w = h.rowEnd; } a++, s = !s, a === 1 && (l = !0); } while (a < e && l && i.length > 1); return i; } const ce = Object.freeze(Object.defineProperty({ __proto__: null, EmptyCell: SI, EmptyRange: vI, cellToRange: (n, e) => { if (!n) return null; let t = e; return t || (t = { ...n }, delete t.colIndex, delete t.rowIndex), t.colStart = n.colIndex ?? 0, t.rowStart = n.rowIndex ?? 0, t.colEnd = n.colIndex ?? 0, t.rowEnd = n.rowIndex ?? 0, t; }, columnFirstCellComparator: V6, columnFirstRangeComparator: Uv, createCellComparator: (n = Bt.Row, e = !1) => e ? n !== Bt.Column ? (t, o) => t.rowIndex === o.rowIndex ? o.colIndex - t.colIndex : o.rowIndex - t.rowIndex : (t, o) => t.colIndex === o.colIndex ? o.rowIndex - t.rowIndex : o.colIndex - t.colIndex : n !== Bt.Column ? $6 : V6, createConflatingRanges: (n, e = !1) => { const t = []; let o, r, i = Number.MIN_SAFE_INTEGER, s = Number.MIN_SAFE_INTEGER; return { append: (a, l, c) => { let d = !0; const u = c !== void 0; if (u) { const p = n ? n(r, c, e) : r === c ? c : void 0; p === void 0 ? d = !1 : c = p; } if (d && l === s + 1 && a === i) return e ? o.rowEnd = l : o.colEnd = l, s = l, void (r = c); o && t.push(o); const h = e ? a : l, m = e ? l : a; o = { colStart: h, rowStart: m, colEnd: h, rowEnd: m }, u && (o.value = c), i = a, s = l, r = c; }, done: (a) => (o && (t.push(o), o = null), a ? q6(t, 3, a === !0 ? kI : a, e ? Bt.Column : Bt.Row, EI) : t) }; }, createRangeComparator: qv, defaultRange: (n, e, t) => n ? t ? (t.colStart = n.colStart ?? e.colStart, t.rowStart = n.rowStart ?? e.rowStart, t.colEnd = n.colEnd ?? e.colEnd, t.rowEnd = n.rowEnd ?? e.rowEnd, t) : { colStart: n.colStart ?? e.colStart, rowStart: n.rowStart ?? e.rowStart, colEnd: n.colEnd ?? e.colEnd, rowEnd: n.rowEnd ?? e.rowEnd } : e, extendRangeToIntersectingRanges: G6, extendRangeToUnionRanges: (n, e) => { if (!e || e.length === 0) return n; let t = n, o = null; for (; !H2(t, o); ) o = t, t = G6(o, e); return t; }, indexOfCoords: (n, e) => { const t = { colStart: n.colIndex, rowStart: n.rowIndex, colEnd: n.colIndex, rowEnd: n.rowIndex }; for (let o = e.length - 1; o >= 0; o--) if (V2(t, e[o])) return o; return -1; }, intersectRanges: (n, e, t) => { if (!n) return t ? e : { ...e }; if (!e) return t ? n : { ...n }; if (!n && !e || n.rowStart > e.rowEnd || n.rowEnd < e.rowStart || n.colStart > e.colEnd || n.colEnd < e.colStart) return null; const o = Math.max(n.colStart, e.colStart), r = Math.max(n.rowStart, e.rowStart), i = Math.min(n.colEnd, e.colEnd), s = Math.min(n.rowEnd, e.rowEnd); let a = t; return a ? (a.colStart = o, a.rowStart = r, a.colEnd = i, a.rowEnd = s) : a = { colStart: o, rowStart: r, colEnd: i, rowEnd: s }, a; }, isCellWithinRange: (n, e) => !(!n || !e || n.rowIndex < e.rowStart || n.rowIndex > e.rowEnd || n.colIndex < e.colStart || n.colIndex > e.colEnd), isEqualCells: W6, isEqualRanges: H2, isEqualRangesArrays: U6, isEqualSelectionCoords: (n, e) => n === e || !(!n || !e) && n.rangeIndex === e.rangeIndex && !!W6(n.cell, e.cell) && U6(n.ranges, e.ranges), isRangeWithinRange: (n, e) => !(n.rowStart < e.rowStart || n.rowEnd > e.rowEnd || n.colStart < e.colStart || n.colEnd > e.colEnd), isRangesIntersect: V2, isSingleCell: (n) => !!n && n.rowEnd === n.rowStart && n.colStart === n.colEnd, isValidRange: (n) => !(!n || typeof n.colStart != "number" || n.colStart < 0 || typeof n.colEnd != "number" || n.colEnd < n.colStart || typeof n.rowStart != "number" || n.rowStart < 0 || typeof n.rowEnd != "number" || n.rowEnd < n.rowStart), mergeRangedValues: q6, rowFirstCellComparator: $6, rowFirstRangeComparator: Gv, sanitizeRange: (n) => n ? { colStart: n.colIndex ?? n.colStart ?? 0, rowStart: n.rowIndex ?? n.rowStart ?? 0, colEnd: n.colIndex ?? n.colEnd ?? 0, rowEnd: n.rowIndex ?? n.rowEnd ?? 0 } : null, translateRange: (n, e = -n.rowStart, t = -n.colStart, o) => o ? (o.colStart = n.colStart + t, o.rowStart = n.rowStart + e, o.colEnd = n.colEnd + t, o.rowEnd = n.rowEnd + e, o) : { colStart: n.colStart + t, rowStart: n.rowStart + e, colEnd: n.colEnd + t, rowEnd: n.rowEnd + e }, unionRanges: Ef, unionRangesArrays: (n, e, t) => { if (!n || n.length === 0) return null; if (n.length === 1 && !e) return n[0]; let o = n[0]; for (let r = 1; r < n.length; r++) o = Ef(o, n[r], t); return e && (o = Ef(o, e, t)), o; } }, Symbol.toStringTag, { value: "Module" })), RI = typeof Symbol == "function" && Symbol.for ? Symbol.for("react.element") : 60103; function MI(n) { return /* @__PURE__ */ function(e) { return !!e && typeof e == "object"; }(n) && !function(e) { const t = Object.prototype.toString.call(e); return t === "[object RegExp]" || t === "[object Date]" || function(o) { return o.$$typeof === RI; }(e); }(n); } function Id(n, e) { return e.clone !== !1 && e.isMergeableObject(n) ? Nl((t = n, Array.isArray(t) ? [] : {}), n, e) : n; var t; } function TI(n, e, t) { return n.concat(e).map(function(o) { return Id(o, t); }); } function K6(n) { return Object.keys(n).concat((e = n, Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(e).filter(function(t) { return Object.propertyIsEnumerable.call(e, t); }) : [])); var e; } function X6(n, e) { try { return e in n; } catch { return !1; } } function Nl(n, e, t) { (t = t || {}).arrayMerge = t.arrayMerge || TI, t.isMergeableObject = t.isMergeableObject || MI, t.cloneUnlessOtherwiseSpecified = Id; const o = Array.isArray(e); return o === Array.isArray(n) ? o ? t.arrayMerge(n, e, t) : function(r, i, s) { const a = {}; return s.isMergeableObject(r) && K6(r).forEach(function(l) { a[l] = Id(r[l], s); }), K6(i).forEach(function(l) { (function(c, d) { return X6(c, d) && !(Object.hasOwnProperty.call(c, d) && Object.propertyIsEnumerable.call(c, d)); })(r, l) || (X6(r, l) && s.isMergeableObject(i[l]) ? a[l] = function(c, d) { if (!d.customMerge) return Nl; const u = d.customMerge(c); return typeof u == "function" ? u : Nl; }(l, s)(r[l], i[l], s) : a[l] = Id(i[l], s)); }), a; }(n, e, t) : Id(e, t); } Nl.all = function(n, e) { if (!Array.isArray(n)) throw new Error("first argument should be an array"); return n.reduce(function(t, o) { return Nl(t, o, e); }, {}); }; const II = Object.freeze([]), AI = Object.freeze({}), Z6 = (n) => n, Wh = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(n) { let e = 16 * Math.random() | 0; return (n === "x" ? e : 3 & e | 8).toString(16); }), Kv = (n, e) => n === e || !(!Array.isArray(n) || !Array.isArray(e) || n.length !== e.length) && n.every((t, o) => t === e[o]), Fc = (n) => typeof n == "object" && !Array.isArray(n) && n !== null, Xv = (n) => typeof n != "object" || Array.isArray(n) || n === null ? n : (Object.keys(n).forEach(function(e) { n[e] && typeof n[e] == "object" ? Xv(n[e]) : n[e] !== null && n[e] !== void 0 || delete n[e], typeof n[e] == "object" && Object.keys(n[e]).length === 0 && delete n[e]; }), Object.keys(n).length === 0 ? null : n), jI = (n, e) => !(n !== e && !Kv(n, e) && !n.isEqual?.(e)), Zv = (n, e, t = jI) => { if (n == null || n === e) return null; if (!n || typeof n != "object" || Array.isArray(n) || n.isImmutable?.()) return t(n, e) ? null : n; const o = Object.keys(n); if (o.length === 0) return null; let r = !1; for (let i = 0; i < o.length; i++) { const s = o[i]; Zv(n[s], e?.[s], t) === null && (r = !0, delete n[s]); } return r && Object.keys(n).length === 0 ? null : void 0; }, Y6 = typeof performance == "object" && typeof performance.now == "function" ? () => performance.now() : () => Date.now(), J6 = (n) => n == null, Q6 = (n, e) => !(e.left > n.right || e.right < n.left || e.top > n.bottom || e.bottom < n.top), e7 = !(typeof window > "u" || !window.document || !window.document.createElement), Tr = { Windows: "windows", MacOS: "macos", IOS: "ios", Linux: "linux", Android: "android", Safari: "safari", Firefox: "firefox", Node: "node", Unknown: "unknown" }, Cu = () => { if (Yv()) return Tr.Node; const n = globalThis.navigator !== void 0 && globalThis.navigator.userAgent ? globalThis.navigator.userAgent.toLowerCase() : ""; return n ? /(win32|win64|windows|wince)/i.test(n) ? Tr.Windows : /(macintosh|macintel|macppc|mac68k|macos)/i.test(n) ? Tr.MacOS : /(iphone|ipad|ipod)/i.test(n) ? Tr.IOS : /android/.test(n) ? Tr.Android : /linux/.test(n) ? Tr.Linux : /^((?!chrome|android|).)*safari/i.test(n) ? Tr.Safari : /^((?!chrome|android|Seamonkey).)*firefox/i.test(n) ? Tr.Firefox : Tr.Unknown : Tr.Unknown; }; function Yv() { return typeof process < "u" && process.release?.name === "node" || (typeof process < "u" && process.browser, !1); } const t7 = (n, e = !1) => (document.hasFocus() || e) && (n === document.activeElement || n?.contains(document.activeElement)), oe = Object.freeze(Object.defineProperty({ __proto__: null, EmptyArray: II, EmptyObject: AI, OSType: Tr, arrayMove: function(n, e, t) { const o = n.slice(); return o.splice(t < 0 ? o.length + t : t, 0, o.splice(e, 1)[0]), o; }, asNumber: (n) => { const e = ((t) => 1 * t)(n); return Number.isFinite(e) ? e : 0; }, camelToPrettyCase: (n) => n.length === 1 ? n.toUpperCase() : n.replace(/([A-Z])/g, " $1").replace(/^./, function(e) { return e.toUpperCase(); }).trim(), canUseDOM: e7, cancelTimeout: (n) => { cancelAnimationFrame(n.id); }, castToString: (n) => n == null || n === void 0 ? "" : typeof n != "string" ? "" + n : n, cloneObject: (n) => J6(n) ? n : JSON.parse(JSON.stringify(n)), consoleWithNoSource: (...n) => new Promise((e) => { setTimeout(() => { Function("console.log.apply(console, arguments)").apply(null, n), e(); }); }), debounce: function(n, e = 300, t = !1) { let o, r, i, s, a = 0; function l() { let d = Date.now() - a; d < e && d >= 0 ? o = setTimeout(l, e - d) : (o = null, t || (s = n.apply(i, r), i = r = null)); } e == null && (e = 100); const c = function() { i = globalThis, r = arguments, a = Date.now(); var d = t && !o; return o || (o = setTimeout(l, e)), d && (s = n.apply(i, r), i = r = null), s; }; return c.clear = function() { o && (clearTimeout(o), o = null); }, c.flush = function() { o && (s = n.apply(i, r), i = r = null, clearTimeout(o), o = null); }, c; }, deepEqual: function n(e, t) { if (e === t) return !0; if (e && t && typeof e == "object" && typeof t == "object") { if (e.constructor !== t.constructor) return !1; let o, r, i; if (Array.isArray(e)) { if (o = e.length, o != t.length) return !1; for (r = o; r-- !== 0; ) if (!n(e[r], t[r])) return !1; return !0; } if (e instanceof Map && t instanceof Map) { if (e.size !== t.size) return !1; for (r of e.entries()) if (!t.has(r[0])) return !1; for (r of e.entries()) if (!n(r[1], t.get(r[0]))) return !1; return !0; } if (e instanceof Set && t instanceof Set) { if (e.size !== t.size) return !1; for (r of e.entries()) if (!t.has(r[0])) return !1; return !0; } if (ArrayBuffer.isView(e) && ArrayBuffer.isView(t)) { if (o = e.length, o != t.length) return !1; for (r = o; r-- !== 0; ) if (e[r] !== t[r]) return !1; return !0; } if (e.constructor === RegExp) return e.source === t.source && e.flags === t.flags; if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf(); if (e.toString !== Object.prototype.toString) return e.toString() === t.toString(); if (i = Object.keys(e), o = i.length, o !== Object.keys(t).length) return !1; for (r = o; r-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(t, i[r])) return !1; for (r = o; r-- !== 0; ) { let s = i[r]; if (!(s === "_owner" && e.$$typeof || n(e[s], t[s]))) return !1; } return !0; } return e != e && t != t; }, deepFreeze: function n(e) { return Object.freeze(e), Object.keys(e).forEach((t) => { typeof e[t] != "object" || e[t] === null || Object.isFrozen(e[t]) || n(e[t]); }), e; }, deepMerge: Nl, diffValues: (n, e) => { const t = {}, o = Object.keys(e), r = o.length; for (let i = 0; i < r; i++) { const s = o[i]; n[s] !== e[s] && (n[s] === void 0 ? t[s] = e[s] : t[s] = n[s]); } return Object.keys(t).length === 0 ? null : t; }, findEqualOrGreater: function(n, e, t = Z6) { let o = 0, r = n.length - 1; for (; o <= r; ) { let i = Math.floor((o + r) / 2), s = t(n[i]); if (s === e) return i; s < e ? o = i + 1 : r = i - 1; } return o; }, findEqualOrLesser: function(n, e, t = Z6) { let o = n.length - 1, r = 0; for (; o >= r; ) { let i = Math.floor((o + r) / 2), s = t(n[i]); if (s === e) return i; s > e ? o = i - 1 : r = i + 1; } return o; }, findNextStep: (n, e = !0, t = 15, o = 10, r = 400) => { const i = Math.max(n - o, 0) + (e ? 1 : -1); return Math.min(r, Math[e ? "ceil" : "floor"](i / t) * t + o); }, getDPI: () => { let n = 1; return typeof window == "object" && (n = window.devicePixelRatio || 1), n; }, getFromPath: (n, e) => { const t = e.split("."); let o = n; for (let r = 0; r < t.length; r++) { const i = t[r]; if (!o) return null; let s = o[i]; if (typeof s == "function" && (s = s.bind(o)()), !s || !Fc(s)) return s; o = s; } return o ?? null; }, getOS: Cu, hasFocus: t7, isDefined: (n) => n != null, isEmpty: (n) => n == null || n === "", isEqualArrays: Kv, isEqualBounds: (n, e) => n === e || !(n && !e || e && !n) && n.x === e.x && n.y === e.y && n.width === e.width && n.height === e.height, isEqualObjectKeys: (n, e) => { if (n === e) return !0; if (n && !e || e && !n) return !1; const t = Object.keys(n); if (t.length !== Object.keys(e).length) return !1; for (let o = 0; o < t.length; o++) if (n[t[o]] !== e[t[o]]) return !1; return !0; }, isNode: Yv, isNullOrUndefined: J6, isNumeric: (n) => { const e = 1 * n; return Number.isFinite(e) && typeof e == "number"; }, isObject: Fc, isPromiseLike: (n) => !!n && typeof n.then == "function", isRectInsideRect: (n, e) => n.top >= e.top && n.bottom <= e.bottom && n.left >= e.left && n.right <= e.right, isRectIntersect: Q6, mergeContentful: (...n) => { const e = n.length; if (e > 0 && n[e - 1] !== void 0 && !Fc(n[e - 1])) return n[e - 1]; let t = n[0] || {}; for (let o = 1; o < e; o++) t = Nl(t, n[o] || {}, { arrayMerge: (r, i) => [...i] }); return t; }, nextTick: (n) => { typeof window < "u" && typeof window.requestAnimationFrame == "function" ? window.requestAnimationFrame(() => { n(); }) : (typeof setImmediate == "function" ? setImmediate : setTimeout)(() => { n(); }); }, openFileDialog: (n = "*.*") => new Promise((e, t) => { if (!e7) return void t("Unable to open dialog with no dom."); const o = document.createElement("input"); o.type = "file", o.accept = n; let r = null, i = !1; globalThis.addEventListener?.("focus", () => { setTimeout(() => { r || i || (i = !0, e(null)); }, 1e3); }, { once: !0, passive: !0 }), o.onchange = () => { if (r = o.files[0], r) { if (i) return void console.warn("File open detected after faux cancel.", r); e(r); } }, o.autofocus = !0, o.click(); }), rafThrottle: (n) => { let e, t = !1, o = function() { t = !1, n(e); }; return function(r) { e = r, e && e.persist && e.persist(), t || (t = !0, requestAnimationFrame(o)); }; }, removeEmptyProperties: Xv, removeEqualValues: Zv, removeListenerAll: (n) => { if (!n) return []; for (let e = 0; e < n.length; e++) n[e] && n[e](); return []; }, requestTimeout: (n, e) => { const t = Y6(), o = { id: requestAnimationFrame(function r() { Y6() - t >= e ? n.call(null) : o.id = requestAnimationFrame(r); }) }; return o; }, roundAccurately: (n, e = 0) => { if (n == null || !isFinite(n)) return null; const t = 10 ** e; return Number(Math.round(n * t) / t); }, setToPath: (n, e, t) => { const o = e.split("."); let r = n; if (!r) throw new Error("Can not set path to a null path."); for (let i = 0; r && i < o.length - 1; i++) { const s = o[i]; let a = r[s]; if (a == null && (a = {}, r[s] = a), !Fc(a)) throw new Error("Can not set path to a non object path."); r = a; } if (typeof t != "number" && typeof t != "boolean" && typeof t != "string" && !Fc(t)) throw new Error(`Can not set path to ${t} that is not a a supported primitive.`); return r[o[o.length - 1]] = t, n; }, splitNumber: (n) => { let e = Math.abs(n); if (isNaN(e) || !isFinite(n)) return null; let t = 0 | e, o = e - t, r = 0, i = 0, s = 1; if (o > 5e-8) for (; i < 8 && Math.abs(r / s - o) > 5e-8; ) i++, s *= 10, r = Math.round(o * s); return { ip: Math.trunc(n), fp: r, ipLength: Math.ceil(Math.log10(t + 1)), fpLength: i }; }, subtractRect: (n, e, t = !1) => { if (!e) return [n]; if (!Q6(n, e)) return []; const o = []; let r = n; const i = () => { e.top > r.top && e.top < r.bottom && (o.push({ ...r, bottom: e.top }), r = { ...r, top: e.top }); }, s = () => { e.bottom > r.top && e.bottom < r.bottom && (o.push({ ...r, top: e.bottom }), r = { ...r, bottom: e.bottom }); }, a = () => { e.right > r.left && e.right < r.right && (o.push({ ...r, left: e.right }), r = { ...r, right: e.right }); }, l = () => { e.left > r.left && e.left < r.right && (o.push({ ...r, right: e.left }), r = { ...r, left: e.left }); }; return t ? (l(), a(), i(), s()) : (i(), s(), a(), l()), o; }, textToKey: (n) => n.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(), throttle: function(n, e) { let t = null; return (...o) => { const r = Date.now(); (!t || r - t >= e) && (t = r, n(...o)); }; }, toSafeJSON: function n(e) { if (e === null || typeof e != "object") return e; if (typeof e.toJSON == "function") return e.toJSON(); if (Array.isArray(e)) return e.map((o) => n(o)); if (typeof e.toString == "function" && e.toString !== Object.prototype.toString) return e.toString(); const t = {}; for (const o in e) e.hasOwnProperty(o) && (t[o] = n(e[o])); return t; }, transpose: (n) => { if (!n) return n; const e = n.length, t = n[0].length, o = []; for (let r = 0; r < t; r++) o[r] = Array(e); for (let r = 0; r < e; r++) for (let i = 0; i < t; i++) o[i][r] = n[r][i]; return o; }, uuidV4: Wh, validEnumValue: (n, e) => { if (!Object.values(n).includes(e)) throw new Error(`Invalid type: ${e ?? "null"}. Must be one of: ${Object.values(e).join(", ")}.`); }, whenFocus: async (n, e = !1) => new Promise((t) => { t7(n, e) ? t(!0) : n.addEventListener("focusin", () => { t(!0); }, { once: !0 }), n.focus(); }) }, Symbol.toStringTag, { value: "Module" })), NI = Object.freeze(Object.defineProperty({ __proto__: null, MESSAGE_ERROR_INVALID_ARG: (n) => `Invalid argument: '${n}'.` }, Symbol.toStringTag, { value: "Module" })), Jv = (n) => { const e = new Uint8Array(n), t = e.byteLength; let o = ""; for (let r = 0; r < t; r++) o += String.fromCharCode(e[r]); if (typeof window < "u" && typeof globalThis.btoa == "function") return globalThis.btoa(o); if (typeof Buffer < "u") return Buffer.from(o, "binary").toString("base64"); throw new Error("Unsupported environment"); }, $2 = (n) => new Promise((e, t) => { if (n) if (typeof FileReader < "u") { const o = new FileReader(); o.onload = () => { e(o.result); }, o.onerror = () => { t(o.error); }, o.readAsText(n); } else if (typeof Buffer < "u") { const o = (r) => Buffer.from(r).toString("utf-8"); n.arrayBuffer().then((r) => { e(o(r)); }).catch((r) => { t(r); }); } else t(new Error("Unsupported environment")); else e(""); }), R0 = Object.freeze(Object.defineProperty({ __proto__: null, DEFAULT_MIME_TYPE: "*/*", arrayBufferToBase64: Jv, base64ToArrayBuffer: (n) => { const e = typeof window < "u" && typeof globalThis.atob == "function" ? globalThis.atob(n) : Buffer.from(n, "base64").toString("binary"), t = e.length, o = new Uint8Array(t); for (let r = 0; r < t; r++) o[r] = e.charCodeAt(r); return o.buffer; }, blobToString: $2 }, Symbol.toStringTag, { value: "Module" })), Qv = "data:image/png;base64,", eC = "Unable to resolve image.", n7 = (n) => new Promise(async (e, t) => { let o = null; try { o = new Image(), o.src = n, o.addEventListener("load", function() { e({ width: o.naturalWidth, height: o.naturalHeight }); }, { once: !0 }), o.addEventListener("error", function() { URL.revokeObjectURL(n), t("Invalid Image"); }, { once: !0 }), await o.decode("sync"); } catch { o?.src && URL.revokeObjectURL(o.src); } o || t(eC); }), kf = "image/svg+xml", Uh = Object.freeze(Object.defineProperty({ __proto__: null, DATA_URL_PNG_PREFIX: Qv, getImageDataUrl: (n, e = 1) => new Promise(async (t, o) => { let r = null; try { r = new Image(), r.src = n, r.addEventListener("load", function() { try { const i = document.createElement("canvas"); i.width = r.naturalWidth, i.height = r.naturalHeight, i.getContext("2d").drawImage(r, 0, 0); const s = i.toDataURL("image/png", e); t({ elemImg: r, dataUrl: s }); } catch (i) { URL.revokeObjectURL(n), o(i); } }, { once: !0 }), r.addEventListener("error", function() { URL.revokeObjectURL(n), o("Invalid Image"); }, { once: !0 }), await r.decode("sync"); } catch { r?.src && URL.revokeObjectURL(r.src); } r || o(eC); }), loadImageDetails: async (n, e = null) => { let t = null; const o = async () => { try { const i = e ?? "image/*", s = URL.createObjectURL(new Blob([n], { type: i })), a = await n7(s); t = { mimeType: i, naturalDimensions: a, asUrl: s }; } catch { } }, r = async () => { try { const i = new TextDecoder().decode(n), s = URL.createObjectURL(new Blob([i], { type: kf })), a = await n7(s); t = { mimeType: e ?? kf, naturalDimensions: a, asUrl: s, asSVGText: i }; } catch { } }; if (e === kf ? await r() : e.startsWith("image/") ? await o() : (await o(), t || await r()), !t) throw new Error("Failed to load image"); return t; } }, Symbol.toStringTag, { value: "Module" })); function Rf(n, e) { e || (e = {}), typeof e == "function" && (e = { cmp: e }); let t = typeof e.cycles == "boolean" && e.cycles; const o = e.cmp && /* @__PURE__ */ function(i) { return function(s) { return function(a, l) { const c = { key: a, value: s[a] }, d = { key: l, value: s[l] }; return i(c, d); }; }; }(e.cmp); let r = []; return function i(s) { if (s && s.toJSON && typeof s.toJSON == "function" && (s = s.toJSON()), s === void 0) return; if (typeof s == "number") return isFinite(s) ? "" + s : "null"; if (typeof s != "object") return JSON.stringify(s); let a; if (Array.isArray(s)) { a = "["; for (let d = 0; d < s.length; d++) d && (a += ","), a += i(s[d]) || "null"; return a + "]"; } if (s === null) return "null"; if (r.indexOf(s) !== -1) { if (t) return JSON.stringify("__cycle__"); throw new TypeError("Converting circular structure to JSON"); } const l = r.push(s) - 1, c = Object.keys(s).sort(o && o(s)); a = ""; for (let d = 0; d < c.length; d++) { const u = c[d], h = i(s[u]); h && (a && (a += ","), a += JSON.stringify(u) + ":" + h); } return r.splice(l, 1), "{" + a + "}"; }(n); } var wo, o7; (o7 = wo || (wo = {})).resolveTypedUpdates = (n, e, t, o) => { if (n === null) return n; if (n === void 0) return o; let r = n; if (e?.shorthand) { const l = e?.shorthand(n, t); l !== void 0 && (r = l); } if (r !== null && e?.getSubType) { const l = e.getSubType(r); l && (e = l); } const i = e?.properties, s = e?.arrayType ?? !1; let a = r; if (e && e.merge && a && o) a = e.merge(a, o, t); else if (!s && i) { const l = Object.keys({ ...r, ...o }); a = null; for (let c = 0; c < l.length; c++) { const d = l[c]; let u, h = r[d]; if (h !== void 0) { const m = i[d]; u = m ? (0, o7.resolveTypedUpdates)(h, m, t, o?.[d]) : h; } else u = o?.[d]; u != null && (a = a ?? {}, a[d] = u); } } return a; }; let Ba = class extends Error { constructor(n, e = null) { super(n, e), this.name = "ChainedError", this._cause = e; } get cause() { return this._cause; } }, OI = class extends Ba { constructor(n = "Partial Error", e = null) { super(n, e); } }; class ho extends OI { constructor(e = "Out of bounds", t = null) { super(e, t), this.name = "OutOfBoundsError"; } } let tC = class extends Ba { constructor(n = "Partial Error", e = null) { super(n, e); } }, Zi = class extends Ba { constructor(n = "Null not supported", e = null) { super(n, e); } }, r7 = class extends Error { constructor(n = "Null not supported", e) { super(n), this._type = e; } get type() { return this._type; } }; class nC extends Ba { constructor(e = "Not implemented", t = null) { super(e, t); } } const i7 = `The Safari browser does not support advanced copy and paste. Copy and paste will be limited to within the browser tab. Please use Chrome or Edge if external copy and paste is required.`, Mf = `You do not have permissions to access the clipboard. All copy and paste operations will be limited to the browser tab.`, oC = { Safari: `The Safari browser does not support advanced copy and paste. Copy and paste will be limited to within the browser tab. Please use Chrome or Edge if external copy and paste is required.`, Perms: Mf, PermsWrite: Cu() === Tr.Safari ? i7 : Mf, PermsRead: Cu() === Tr.Safari ? i7 : Mf }, Tf = async () => new Promise((n) => { document.hasFocus() ? n() : globalThis.addEventListener?.("focus", () => { n(); }, { once: !0 }), document.activeElement.focus?.(); }), If = async (n, e, t) => { if (Cu() === Tr.Safari) return await t(new Error(oC.Safari)); try { const o = async (s) => { try { return await s(); } catch (a) { if (a.message?.includes("Document is not focused")) return !1; throw a; } }, r = await globalThis?.navigator?.permissions?.query({ name: n, allowWithoutGesture: !0, allowWithoutSanitization: !0 }); let i = !1; if (r.state === "prompt" && (i = await o(e)), i || r.state !== "granted" || (i = await e()), !i) return await t(new Error(r.state)); } catch (o) { return o.message === "No valid data on clipboard" || o.name === "DataError" ? void 0 : await t(o); } }, rC = async (n) => { try { return await n.read({ unsanitized: [hr] }); } catch { } return await n.read(); }, iC = async (n, e) => { if (!n) return null; const t = await rC(n); let o = !1; for (let r = 0; !o && t && r < t.length; r++) if (o = t[r].types.includes(e), o) return await t[r].getType(e); return o ? void 0 : null; }; if (!globalThis.ClipboardItem) { const n = (t, o) => new Blob([o], { type: t }); class e { constructor(o, r) { this._items = {}, this._types = Object.keys(o); const i = {}, s = Object.keys(o); for (let a = 0; a < s.length; a++) { const l = s[a]; let c = o[l]; i[l] = typeof c == "string" ? n(l, c) : c; } this._items = i, this._presentationStyle = r?.presentationStyle ?? "unspecified"; } get types() { return this._types; } getType(o) { return Promise.resolve(this._items[o]); } supports(o) { return !0; } } globalThis.ClipboardItem = e; } const Fp = async (n, e = hr) => new Promise(async (t, o) => { try { const r = await iC(n, e); if (r) { const i = new FileReader(); i.onload = () => { t(i.result); }, i.onerror = () => { t(""); }, i.readAsText(r); } else t(""); } catch (r) { o(r); } }), W2 = async (n, e = hr) => { const t = await Fp(n, e); if (!t) return null; let o = null; try { o = new DOMParser().parseFromString(t, hr); } catch { console.warn("Can't parse html from clipboard."); } return o; }, FI = async (n) => { n && await n.writeText(""); }, DI = iC, LI = Fp, PI = W2, _u = "clipboard-uuid", ql = "web text/uuid", s7 = (n) => `<div style="display:none" ${_u}="${n}"/>`, zI = (n, e) => { let t = null; try { const o = new DOMParser().parseFromString(e, hr); o.body.firstElementChild.setAttribute(_u, n), t = o.getElementsByTagName("body")[0].innerHTML; } catch (o) { console.warn("Can't embed uuid.", o); } return t; }, a7 = (n, e) => { if (!e || !n) return !1; try { const t = e.querySelectorAll(`[${_u}="${n}"]`); if (t && t.length === 1) return !0; if (e.querySelector("parsererror")) throw new Error("We are unable to parse node"); return !1; } catch { return !1; } }; let Y0 = class { constructor(n) { if (n?.nativeClipboard === void 0 || n?.nativeClipboard === !0) try { this._nativeClipboard = globalThis?.navigator.clipboard; } catch { n?.nativeClipboard === !0 && console.warn("NativeClipboard option set to true but no native clipboard available."); } else this._nativeClipboard = n?.nativeClipboard === !1 ? null : n?.nativeClipboard; this._disableCheckOnFocus = n?.disableCheckOnFocus ?? !1, this._init(); } async _checkForChanges() { this._nativeClipboard && this._state && !this._disableCheckOnFocus && await If("clipboard-read", async () => { await Tf(); const n = await Fp(this._nativeClipboard, ql); if (!this._state || n && n === this._state.uuid) return !0; const e = await W2(this._nativeClipboard, hr); return !this._state || (a7(this._state.uuid, e) || this.clear(), !0); }, async (n) => { n?.message === "denied" || n.message?.includes("Document is not focused") || Cu() === Tr.Safari || console.warn("Unable to detect clipboard changes: ", n); }); } _init() { const n = this; this._listeners = /* @__PURE__ */ new Map(), this._listenersCapture = /* @__PURE__ */ new Map(), this._state = null, this._nativeClipboard && (this._onFocus = () => { n._checkForChanges(); }, this._onBlur = () => { globalThis.addEventListener?.("focus", n._onFocus, { once: !0 }); }, globalThis.addEventListener?.("blur", this._onBlur), this._nativeClipboard.addEventListener("clipboardchange", (e) => { n._checkForChanges(); })); } async read() { if (!this._nativeClipboard) return this._state?.items ?? null; const n = this; return await If("clipboard-read", async () => { if (await Tf(), this._state?.uuid) { const e = await Fp(this._nativeClipboard, ql); if (e && e === n._state.uuid) return !0; const t = await W2(this._nativeClipboard, hr); if (a7(n._state?.uuid, t)) return !0; } return n._state = { items: await rC(this._nativeClipboard), uuid: null, ref: null }, this.dispatchEvent(new Event("clipboardread")), !0; }, async (e) => { this.dispatchEvent(new Event("clipboarderrorread")); }), this._state?.items ?? []; } async write(n) { return this._write({ uuid: Wh(), items: n, ref: null }); } async _write(n) { if (!this._nativeClipboard) return this._state = n, this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")), null; const e = this, t = [], o = n.uuid; let r = n.items ?? []; const i = () => { e._state = { uuid: o, ref: n.ref, items: t }, e.dispatchEvent(new Event("clipboardwrite")), e.dispatchEvent(new Event("clipboardchange")); }; await If("clipboard-write", async () => { await Tf(), o && r.length === 0 && (r.push(new ClipboardItem({ [ql]: new Blob([o], { type: ql }) })), r.push(new ClipboardItem({ [hr]: new Blob([s7(o)], { type: hr }) }))); for (let s = 0; s < Math.min(1, r.length); s++) { const a = r[s]; let l = a.types.indexOf(hr), c = null; if (l !== -1) { const h = await a.getType(hr); c = await $2(h), c && (c = zI(o, c)); } if (!c && a.types.includes(Bs)) { const h = await a.getType(Bs); if (h) { let m = null; typeof h == "string" ? (console.warn("text as string", h), m = h) : m = await $2(h), m && (c = `<div ${_u}="${o}">${m}</div>`); } } if (!c && a.types.includes(tu)) { const h = await a.getType(tu), m = Jv(await h.arrayBuffer()); c = `<div ${_u}="${o}"><img src="${Qv + m}"/></div>`; } !c && o && (c = s7(o)); const d = new Blob([c ?? ""], { type: hr }), u = {}; for (let h = 0; h < a.types.length; h++) { const m = a.types[h]; u[m] = h === l ? d : a.getType(m); } c && l === -1 && (u[hr] = d), o && (u[ql] = new Blob([o], { type: ql })), t.push(new ClipboardItem(u)); } try { t && t.length !== 0 ? await this._nativeClipboard.write(t) : await FI(this._nativeClipboard); } catch (s) { s.message?.includes("Document is not focused") || console.warn("Unable to write to native clipboard: ", s); } return i(), !0; }, async (s) => { this.dispatchEvent(new Event("clipboarderrorwrite")), i(); }); } async writeReference(n) { if (!n) return void this.clear(); let e = null; const t = {}; try { const r = await n.toText?.() ?? null; r && (t[Bs] = new Blob([r ?? ""], { type: Bs })); } catch (r) { e = r; } try { const r = await n.toHtml?.() ?? null; r && (t[hr] = new Blob([r], { type: hr })); } catch (r) { e = r, console.warn("export to html", r); } try { const r = await n.toImage?.() ?? null; r && (t[tu] = r); } catch (r) { e = r, console.warn("export to png", r); } const o = this._write({ uuid: Wh(), ref: n, items: Object.keys(t).length > 0 ? [new ClipboardItem(t)] : null }); if (e) throw e; return o; } clear(n = !1) { this._state && (this._state = null, n && this._write({ uuid: null, ref: null, items: null }), this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange"))); } async readReference() { return await this.read(), this._state?.ref ?? null; } readText() { return new Promise(async (n, e) => { const t = await this.read(); let o = null; for (let i = 0; !o && t && i < t.length; i++) t[i].types.includes(Bs) && (o = await t[i].getType(Bs)); if (!o) return void n(""); const r = new FileReader(); r.onload = () => { n(r.result); }, r.readAsText(o), r.onerror = (i) => { e(i); }; }); } async writeText(n) { const e = [new ClipboardItem({ [Bs]: new Blob([n], { type: Bs }) })]; return this._write({ uuid: Wh(), items: e, ref: null }); } addEventListener(n, e, t = {}) { const o = t?.capture ? this._listenersCapture : this._listeners; let r = o.get(n); r || (r = /* @__PURE__ */ new Map(), o.set(n, r)), r.set(e, typeof t == "boolean" ? {} : t); } dispatchEvent(n) { if (!n) return; const e = (t) => { const o = t.get(n.type); o && o.forEach((r, i) => { try { typeof i == "function" ? i(n) : i.handleEvent && i.handleEvent(n), r.once && o.delete(i); } catch (s) { console.warn(s); } }); }; return e(this._listenersCapture), e(this._listeners), !0; } removeEventListener(n, e, t) { const o = t?.capture ? this._listenersCapture : this._listeners, r = o.get(n); r && (r.delete(e), r.size === 0 && o.delete(n)); } close() { globalThis.removeEventListener?.("focus", this._onFocus), globalThis.removeEventListener?.("blur", this._onBlur); } }; var Af; (Af = Y0 || (Y0 = {})).ErrorMessages = oC, Af.Global = new Af(); let BI = class { constructor(n = 100) { this._maxStack = n, this._undoStack = [], this._redoStack = [], this._repeatOperation = null, this._listeners = /* @__PURE__ */ new Set(); } get maxStack() { return this._maxStack; } undo(n = 1) { if (this._undoStack.length === 0) return; let e = !1; try { for (let t = 0; t < n && this._undoStack.length > 0; t++) { const o = this._undoStack[this._undoStack.length - 1]; o.redo = o.undo(), this._undoStack.pop(), typeof o.redo == "function" ? this._redoStack.push(o) : this._redoStack = [], e = !0; } } catch (t) { throw t; } finally { e && this._notifyOnStackChange(); } } redo(n = 1) { if (this._redoStack.length === 0) return void (this._repeatOperation !== null && this._repeatOperation.repeat()); let e = !1; try { for (let t = 0; t < n && this._redoStack.length > 0; t++) { const o = this._redoStack[this._redoStack.length - 1]; o.redo(), this._redoStack.pop(), this._undoStack.push(o), e = !0; } } catch (t) { throw t; } finally { e && this._notifyOnStackChange(); } } hasUndo() { return this._undoStack.length > 0; } getTopUndoDescription() { return this._undoStack.length === 0 ? null : this._undoStack[this._undoStack.length - 1].description; } hasRedo() { return this._redoStack.length > 0 || this._repeatOperation !== null; } getTopRedoDescription() { return this._repeatOperation !== null ? this._repeatOperation.description : this._redoStack.length === 0 ? null : this._redoStack[this._redoStack.length - 1].description; } getUndoDescriptions() { if (this._undoDescriptions) return this._undoDescriptions; const n = []; for (let e = this._undoStack.length - 1; e >= 0; e--) n.push(this._undoStack[e].description); return this._undoDescriptions = n, this._undoDescriptions; } getRedoDescriptions() { if (this._redoDescriptions) return this._redoDescriptions; const n = []; for (let e = this._redoStack.length - 1; e >= 0; e--) n.push(this._redoStack[e].description); return n.length === 0 && this._repeatOperation !== null && n.push(this._repeatOperation.description), this._redoDescriptions = Object.freeze(n), this._redoDescriptions; } addUndoOperation(n) { const e = { description: n.description, undo: n.undo, redo: null }; this._undoStack.push(e), this._redoStack = [], this._undoStack.length > this._maxStack && this._undoStack.shift(), this._notifyOnStackChange(); } setRepeatableOperation(n) { this._repeatOperation = n ?? null, this._redoStack = [], this._notifyOnStackChange(); } clear(n = !0) { this._undoStack = [], this._redoStack = [], this._repeatOperation = null, this._undoDescriptions = null, this._redoDescriptions = null, n && this._notifyOnStackChange(); } addListener(n) { const e = this._listeners; return e.add(n), () => { e.delete(n); }; } _notifyOnStackChange() { this._undoDescriptions = null, this._redoDescriptions = null, this._listeners.forEach((n) => { n.onStackChange?.(); }); } }; const l7 = (n, e) => { const t = /* @__PURE__ */ new Map(); return n.forEach((o, r) => { e.get(r) !== o && t.set(r, o); }), t; }; let c7 = !1; class d7 { constructor(e) { thi