@sheetxl/studio-vanilla
Version:
SheetXL Studio - Vanilla entry point for integrating SheetXL UI.
1,207 lines (1,205 loc) • 2.69 MB
JavaScript
import { a as _ } from "./DrQ2E12IEJK6WHfw.js";
import { r as y, g as He, R as Ig } from "./BTLmGxC1eZDXb9cY.js";
import { a as aD } from "./CUqkMmfGj7PTuaiF.js";
import { r as si, e as Fi } from "./Q4aM-BMd3m9pHQZ8.js";
/**
* @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.7.27
*
* (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 ae, Ep, yt;
(Ep = ae || (ae = {})).Orientation = { Column: "column", Row: "row" }, Ep.Orientations = { ...Ep.Orientation, Both: "both" }, Ep.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(x, C, E, R) {
super(E, R), this._label = C, this._code = x, this.details = R;
}
static {
this.code = n.Code.Unknown;
}
get isFormulaError() {
return !0;
}
getLabel() {
return this._label;
}
getCode() {
return this._code;
}
equals(x) {
return !!x && (this._code === x._code || this._code === x.code);
}
get [Symbol.toStringTag]() {
return "[FormulaError]";
}
toString() {
return this.message || this._label;
}
}
n.Known = e;
class t extends e {
constructor(x, C) {
super(n.Code.Parse, n.Label.Parse, x, C);
}
static {
this.code = n.Code.Parse;
}
getDetails() {
const x = this.details;
return { line: x?.line ?? 1, column: x?.column ?? 1, offset: x?.offset ?? 0, length: x?.length ?? 0 };
}
}
n.Parse = t;
class o extends e {
constructor(x, C) {
super(n.Code.Null, n.Label.Null, x, C);
}
static {
this.code = n.Code.Null;
}
}
n.Null = o;
class r extends e {
constructor(x, C) {
super(n.Code.Div0, n.Label.Div0, x, C);
}
static {
this.code = n.Code.Div0;
}
}
n.Div0 = r;
class i extends e {
constructor(x, C) {
super(n.Code.Value, n.Label.Value, x, C);
}
static {
this.code = n.Code.Value;
}
}
n.Value = i;
class s extends e {
constructor(x, C) {
super(n.Code.Ref, n.Label.Ref, x, C);
}
static {
this.code = n.Code.Ref;
}
}
n.Ref = s;
class a extends e {
constructor(x, C) {
super(n.Code.Name, n.Label.Name, x, C);
}
static {
this.code = n.Code.Name;
}
}
n.Name = a;
class l extends e {
constructor(x, C) {
super(n.Code.Num, n.Label.Num, x, C);
}
static {
this.code = n.Code.Num;
}
}
n.Num = l;
class c extends e {
constructor(x, C) {
super(n.Code.NA, n.Label.NA, x, C);
}
static {
this.code = n.Code.NA;
}
}
n.NA = c;
class d extends e {
constructor(x, C) {
super(n.Code.GettingData, n.Label.GettingData, x, C);
}
static {
this.code = n.Code.GettingData;
}
}
n.GettingData = d;
class h extends e {
constructor(x, C) {
super(n.Code.Spill, n.Label.Spill, x, C);
}
static {
this.code = n.Code.Spill;
}
}
n.Spill = h;
class u extends e {
constructor(x, C) {
super(n.Code.Connect, n.Label.Connect, x, C);
}
static {
this.code = n.Code.Connect;
}
}
n.Connect = u;
class p extends e {
constructor(x, C) {
super(n.Code.Blocked, n.Label.Blocked, x, C);
}
static {
this.code = n.Code.Blocked;
}
}
n.Blocked = p;
class m extends e {
constructor(x, C) {
super(n.Code.Unknown, n.Label.Unknown, x, C);
}
static {
this.code = n.Code.Unknown;
}
}
n.Unknown = m;
class g extends e {
constructor(x, C) {
super(n.Code.Field, n.Label.Field, x, C);
}
static {
this.code = n.Code.Field;
}
}
n.Field = g;
class w extends e {
constructor(x, C) {
super(n.Code.Calc, n.Label.Calc, x, C);
}
static {
this.code = n.Code.Calc;
}
}
n.Calc = w;
class f extends e {
constructor(x, C) {
super(n.Code.Busy, n.Label.Busy, x, C);
}
static {
this.code = n.Code.Busy;
}
}
n.Busy = f;
class b extends e {
constructor(x, C) {
super(n.Code.Python, n.Label.Python, x, C);
}
static {
this.code = n.Code.Python;
}
}
n.Python = b;
class S extends e {
constructor(x, C) {
super(n.Code.Timeout, n.Label.Timeout, x, C);
}
static {
this.code = n.Code.Timeout;
}
}
n.Timeout = S;
})(yt || (yt = {}));
const qo = {};
qo[yt.Code.Parse] = yt.Parse, qo[yt.Code.Null] = yt.Null, qo[yt.Code.Div0] = yt.Div0, qo[yt.Code.Value] = yt.Value, qo[yt.Code.Ref] = yt.Ref, qo[yt.Code.Name] = yt.Name, qo[yt.Code.Num] = yt.Num, qo[yt.Code.NA] = yt.NA, qo[yt.Code.GettingData] = yt.GettingData, qo[yt.Code.Spill] = yt.Spill, qo[yt.Code.Connect] = yt.Connect, qo[yt.Code.Blocked] = yt.Blocked, qo[yt.Code.Unknown] = yt.Unknown, qo[yt.Code.Field] = yt.Field, qo[yt.Code.Calc] = yt.Calc, qo[yt.Code.Busy] = yt.Busy, qo[yt.Code.Python] = yt.Python, qo[yt.Code.Timeout] = yt.Timeout;
const dI = /* @__PURE__ */ new Map(), z1 = /* @__PURE__ */ new Map(), uI = /* @__PURE__ */ new Map(), hI = /* @__PURE__ */ new Map(), Tx = Object.keys(qo);
for (let n = 0; n < Tx.length; n++) {
const e = Tx[n], t = qo[e];
uI.set(yt.Label[e], t), hI.set(yt.Code[e], t);
const o = new t();
dI.set(o.getLabel(), o), z1.set(o.getCode(), o);
}
const lD = z1.get(yt.Code.Unknown);
var vo;
(vo = yt || (yt = {})).BuiltIn = { Parse: new vo.Parse(), Null: new vo.Null(), Div0: new vo.Div0(), Value: new vo.Value(), Ref: new vo.Ref(), Name: new vo.Name(), Num: new vo.Num(), NA: new vo.NA(), GettingData: new vo.GettingData(), Spill: new vo.Spill(), Connect: new vo.Connect(), Blocked: new vo.Blocked(), Unknown: new vo.Unknown(), Field: new vo.Field(), Calc: new vo.Calc(), Busy: new vo.Busy(), Python: new vo.Python(), Timeout: new vo.Timeout() }, vo.getBuiltInByLabel = (n) => dI.get(n), vo.newTypedError = (n, e, t) => {
let o;
return o = typeof n == "string" ? uI.get(n) : hI.get(n), o || (o = vo.Unknown), new o(e, t);
}, vo.getBuiltInById = (n) => z1.get(n) || lD;
const Pt = { Column: "column", Row: "row" }, Dc = { ...Pt, Both: "both" }, cD = Object.freeze({ colIndex: 0, rowIndex: 0 }), dD = Object.freeze({ colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0 }), pI = (n, e) => n.colStart === e.colStart ? n.rowStart - e.rowStart : n.colStart - e.colStart, mI = (n, e) => n.rowStart === e.rowStart ? n.colStart - e.colStart : n.rowStart - e.rowStart, uD = (n, e) => n.rowEnd === e.rowEnd ? e.colEnd - n.colEnd : e.rowEnd - n.rowEnd, hD = (n, e) => n.colEnd === e.colEnd ? e.rowEnd - n.rowEnd : e.colEnd - n.colEnd, Ix = (n, e) => n.colIndex === e.colIndex ? n.rowIndex - e.rowIndex : n.colIndex - e.colIndex, Ax = (n, e) => n.rowIndex === e.rowIndex ? n.colIndex - e.colIndex : n.rowIndex - e.rowIndex, Ox = (n, e) => n.rowIndex === e.rowIndex ? e.colIndex - n.colIndex : e.rowIndex - n.rowIndex, Fx = (n, e) => n.colIndex === e.colIndex ? e.rowIndex - n.rowIndex : e.colIndex - n.colIndex, gI = (n = Pt.Row, e = !1) => e ? n !== Pt.Column ? uD : hD : n !== Pt.Column ? mI : pI, Nx = (n, e) => n === e || !(!n || !e) && n.rowIndex === e.rowIndex && n.colIndex === e.colIndex, Lw = (n, e) => n === e || !(!n || !e) && n.rowStart === e.rowStart && n.rowEnd === e.rowEnd && n.colStart === e.colStart && n.colEnd === e.colEnd, Bw = (n, e) => !(!n || !e || n.colStart > e.colEnd || e.colStart > n.colEnd || n.rowStart > e.rowEnd || e.rowStart > n.rowEnd), Dx = (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 (!Lw(n[t], e[t])) return !1;
return !0;
}, x0 = (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;
}, Px = (n, e) => {
if (!e || e.length === 0) return n;
const t = { ...n };
for (let o = 0; o < e.length; o++) {
const r = e[o];
Bw(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;
}, pD = [null, null], mD = (n, e, t) => {
if (n[0].value === n[1].value) return e;
};
function jx(n, e = 2, t, o = Pt.Row, r) {
let i = [...n];
if (e <= 0 || n.length <= 1) return i;
let s = o === Pt.Column, a = 0, l = !1;
do {
const c = i.sort(gI(s ? Pt.Row : Pt.Column));
i = [], i.push(c[0]);
const d = c.length;
let h = 0, u = c[0], p = u.colStart, m = u.rowStart, g = u.colEnd, w = u.rowEnd;
for (let f = 1; f < d; f++) {
const b = c[f];
let S = !1;
if (S = s ? u && m === b.rowStart && w === b.rowEnd && g + 1 === b.colStart : u && p === b.colStart && g === b.colEnd && w + 1 === b.rowStart, S) {
let v = { colStart: p, rowStart: m, colEnd: s ? b.colEnd : g, rowEnd: s ? w : b.rowEnd };
if (u.value !== void 0 && (v.value = u.value), t) {
const x = r ?? [null, null];
x[0] = u, x[1] = b, v = t(x, v, o);
}
if (v) {
i[h] = v, l = !0, u = v, p = u.colStart, m = u.rowStart, g = u.colEnd, w = u.rowEnd;
continue;
}
}
i[++h] = b, u = b, p = u.colStart, m = u.rowStart, g = u.colEnd, w = u.rowEnd;
}
a++, s = !s, a === 1 && (l = !0);
} while (a < e && l && i.length > 1);
return i;
}
const pe = Object.freeze(Object.defineProperty({ __proto__: null, EmptyCell: cD, EmptyRange: dD, 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: Ix, columnFirstRangeComparator: pI, createCellComparator: (n = Pt.Row, e = !1) => e ? n !== Pt.Column ? Ox : Fx : n !== Pt.Column ? Ax : Ix, 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 h = c !== void 0;
if (h) {
const m = n ? n(r, c, e) : r === c ? c : void 0;
m === void 0 ? d = !1 : c = m;
}
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 u = e ? a : l, p = e ? l : a;
o = { colStart: u, rowStart: p, colEnd: u, rowEnd: p }, h && (o.value = c), i = a, s = l, r = c;
}, done: (a) => (o && (t.push(o), o = null), a ? jx(t, 3, a === !0 ? mD : a, e ? Pt.Column : Pt.Row, pD) : t) };
}, createRangeComparator: gI, 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: Px, extendRangeToUnionRanges: (n, e) => {
if (!e || e.length === 0) return n;
let t = n, o = null;
for (; !Lw(t, o); ) o = t, t = Px(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 (Bw(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) => {
if (!n || !e) return !1;
const t = n.rowIndex;
if (t < e.rowStart || t > e.rowEnd) return !1;
const o = n.colIndex;
return !(o < e.colStart || o > e.colEnd);
}, isEqualCells: Nx, isEqualRanges: Lw, isEqualRangesArrays: Dx, isEqualSelectionCoords: (n, e) => n === e || !(!n || !e) && n.rangeIndex === e.rangeIndex && !!Nx(n.cell, e.cell) && Dx(n.ranges, e.ranges), isRangeWithinRange: (n, e) => !(n.rowStart < e.rowStart || n.rowEnd > e.rowEnd || n.colStart < e.colStart || n.colEnd > e.colEnd), isRangesIntersect: Bw, 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: jx, reverseColumnFirstCellComparator: Fx, reverseRowFirstCellComparator: Ox, rowFirstCellComparator: Ax, rowFirstRangeComparator: mI, 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: x0, 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 = x0(o, n[r], t);
return e && (o = x0(o, e, t)), o;
} }, Symbol.toStringTag, { value: "Module" }));
let fI = class {
constructor() {
this._onceMessageKeys = /* @__PURE__ */ new Set();
}
setOverrides(n) {
this._overrides = n ?? null;
}
getOverrides() {
return this._overrides;
}
_write(n, e, t) {
if (t?.onceKey) {
const i = this._onceMessageKeys;
if (i.has(t.onceKey)) return;
i.add(t.onceKey);
}
const o = t?.details, r = this._overrides;
if (r) {
const i = r[n];
if (i) return void i.bind(r)(e, t);
}
o === void 0 ? console[n](e) : console[n](e, o);
}
log(n, e) {
return this._write("log", n, e);
}
error(n, e) {
return this._write("error", n, e);
}
warn(n, e) {
return this._write("warn", n, e);
}
debug(n, e) {
return this._write("debug", n, e);
}
};
const ai = new fI(), et = { Up: "up", Down: "down", Left: "left", Right: "right" }, Ut = { TopLeft: "tl", Top: "t", TopRight: "tr", Left: "l", Center: "c", Right: "r", BottomLeft: "bl", Bottom: "b", BottomRight: "br" }, yr = "text/html", $s = "text/plain", ah = "image/png", gD = Object.freeze({ left: 0, top: 0 }), fD = Object.freeze({ left: 0, top: 0, bottom: 0, right: 0 }), yD = Object.freeze({ x: 0, y: 0, width: 0, height: 0 }), ks = Object.freeze(Object.defineProperty({ __proto__: null, EmptyBounds: yD, EmptyRect: fD, EmptyTopLeft: gD }, Symbol.toStringTag, { value: "Module" })), wD = typeof Symbol == "function" && Symbol.for ? Symbol.for("react.element") : 60103;
function bD(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 === wD;
})(e);
})(n);
}
function Nu(n, e) {
return e.clone !== !1 && e.isMergeableObject(n) ? zl((t = n, Array.isArray(t) ? [] : {}), n, e) : n;
var t;
}
function SD(n, e, t) {
return n.concat(e).map(function(o) {
return Nu(o, t);
});
}
function Lx(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 Bx(n, e) {
try {
return e in n;
} catch {
return !1;
}
}
function zl(n, e, t) {
(t = t || {}).arrayMerge = t.arrayMerge || SD, t.isMergeableObject = t.isMergeableObject || bD, t.cloneUnlessOtherwiseSpecified = Nu;
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) && Lx(r).forEach(function(l) {
a[l] = Nu(r[l], s);
}), Lx(i).forEach(function(l) {
(function(c, d) {
return Bx(c, d) && !(Object.hasOwnProperty.call(c, d) && Object.propertyIsEnumerable.call(c, d));
})(r, l) || (Bx(r, l) && s.isMergeableObject(i[l]) ? a[l] = (function(c, d) {
if (!d.customMerge) return zl;
const h = d.customMerge(c);
return typeof h == "function" ? h : zl;
})(l, s)(r[l], i[l], s) : a[l] = Nu(i[l], s));
}), a;
})(n, e, t) : Nu(e, t);
}
zl.all = function(n, e) {
if (!Array.isArray(n)) throw new Error("first argument should be an array");
return n.reduce(function(t, o) {
return zl(t, o, e);
}, {});
};
const v0 = Object.freeze([]), xD = Object.freeze({}), zx = (n) => n, zm = () => "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);
}), yI = (n, e) => n === e || !(!Array.isArray(n) || !Array.isArray(e) || n.length !== e.length) && n.every((t, o) => t === e[o]), zd = (n) => typeof n == "object" && !Array.isArray(n) && n !== null, wI = (n) => typeof n != "object" || Array.isArray(n) || n === null ? n : (Object.keys(n).forEach(function(e) {
n[e] && typeof n[e] == "object" ? wI(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), vD = (n, e) => !(n !== e && !yI(n, e) && !n.isEqual?.(e)), bI = (n, e, t = vD) => {
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), r = o.length;
if (r === 0) return null;
let i = !1;
for (let s = 0; s < r; s++) {
const a = o[s];
bI(n[a], e?.[a], t) === null && (i = !0, delete n[a]);
}
return i && Object.keys(n).length === 0 ? null : void 0;
}, $x = typeof performance == "object" && typeof performance.now == "function" ? () => performance.now() : () => Date.now(), Wx = (n) => n == null, Hx = (n, e) => !(e.left > n.right || e.right < n.left || e.top > n.bottom || e.bottom < n.top), Vx = !(typeof window > "u" || !window.document || !window.document.createElement), Ir = { Windows: "windows", MacOS: "macos", IOS: "ios", Linux: "linux", Android: "android", Safari: "safari", Firefox: "firefox", Node: "node", Unknown: "unknown" }, Rh = () => {
if (SI()) return Ir.Node;
const n = globalThis.navigator !== void 0 && globalThis.navigator.userAgent ? globalThis.navigator.userAgent.toLowerCase() : "";
return n ? /(win32|win64|windows|wince)/i.test(n) ? Ir.Windows : /(macintosh|macintel|macppc|mac68k|macos)/i.test(n) ? Ir.MacOS : /(iphone|ipad|ipod)/i.test(n) ? Ir.IOS : /android/.test(n) ? Ir.Android : /linux/.test(n) ? Ir.Linux : /^((?!chrome|android|).)*safari/i.test(n) ? Ir.Safari : /^((?!chrome|android|Seamonkey).)*firefox/i.test(n) ? Ir.Firefox : Ir.Unknown : Ir.Unknown;
};
function SI() {
return typeof process < "u" && process.release?.name === "node" || (typeof process < "u" && process.browser, !1);
}
const Ux = (n, e = !1) => (document.hasFocus() || e) && (n === document.activeElement || n?.contains(document.activeElement)), re = Object.freeze(Object.defineProperty({ __proto__: null, EmptyArray: v0, EmptyObject: xD, OSType: Ir, 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: Vx, cancelTimeout: (n) => {
cancelAnimationFrame(n.id);
}, castToString: (n) => n == null || n === void 0 ? "" : typeof n != "string" ? "" + n : n, cloneObject: (n) => Wx(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: zl, diffValues: (n, e) => {
const t = {}, o = Object.keys(e), r = o.length;
for (let i = 0; i < r; i++) {
const s = o[i], a = n[s], l = e[s];
a !== l && (t[s] = a === void 0 ? l : a);
}
return Object.keys(t).length === 0 ? null : t;
}, findEqualOrGreater: function(n, e, t = zx) {
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 = zx) {
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;
const r = t.length;
for (let i = 0; i < r; i++) {
const s = t[i];
if (!o) return null;
let a = o[s];
if (typeof a == "function" && (a = a.bind(o)()), !a || !zd(a)) return a;
o = a;
}
return o ?? null;
}, getOS: Rh, hasFocus: Ux, isDefined: (n) => n != null, isEmpty: (n) => n == null || n === "", isEqualArrays: yI, 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), o = t.length;
if (o !== Object.keys(e).length) return !1;
for (let r = 0; r < o; r++) {
const i = t[r];
if (n[i] !== e[i]) return !1;
}
return !0;
}, isNode: SI, isNullOrUndefined: Wx, isNumeric: (n) => {
const e = 1 * n;
return Number.isFinite(e) && typeof e == "number";
}, isObject: zd, 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: Hx, mergeContentful: (...n) => {
const e = n.length;
if (e > 0 && n[e - 1] !== void 0 && !zd(n[e - 1])) return n[e - 1];
let t = n[0] || {};
for (let o = 1; o < e; o++) t = zl(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 (!Vx) 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: wI, removeEqualValues: bI, removeListenerAll: (n) => {
if (!n) return v0;
const e = n.length;
for (let t = 0; t < e; t++) {
const o = n[t];
o && o();
}
return v0;
}, requestTimeout: (n, e) => {
const t = $x(), o = { id: requestAnimationFrame(function r() {
$x() - 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.");
const i = o.length;
for (let s = 0; r && s < i - 1; s++) {
const a = o[s];
let l = r[a];
if (l == null && (l = {}, r[a] = l), !zd(l)) throw new Error("Can not set path to a non object path.");
r = l;
}
if (typeof t != "number" && typeof t != "boolean" && typeof t != "string" && !zd(t)) throw new Error(`Can not set path to ${t} that is not a a supported primitive.`);
return r[o[i - 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 (!Hx(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: zm, 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) => {
Ux(n, e) ? t(!0) : n.addEventListener("focusin", () => {
t(!0);
}, { once: !0 }), n.focus();
}) }, Symbol.toStringTag, { value: "Module" })), CD = Object.freeze(Object.defineProperty({ __proto__: null, MESSAGE_ERROR_INVALID_ARG: (n) => `Invalid argument: '${n}'.` }, Symbol.toStringTag, { value: "Module" })), xI = (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");
}, zw = (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("");
}), Pc = Object.freeze(Object.defineProperty({ __proto__: null, DEFAULT_MIME_TYPE: "*/*", arrayBufferToBase64: xI, 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: zw }, Symbol.toStringTag, { value: "Module" })), vI = "data:image/png;base64,", CI = "Unable to resolve image.", Gx = (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(CI);
}), C0 = "image/svg+xml", $m = Object.freeze(Object.defineProperty({ __proto__: null, DATA_URL_PNG_PREFIX: vI, 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(CI);
}), 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 Gx(s);
t = { mimeType: i, naturalSize: a, asUrl: s };
} catch {
}
}, r = async () => {
try {
const i = new TextDecoder().decode(n), s = URL.createObjectURL(new Blob([i], { type: C0 })), a = await Gx(s);
t = { mimeType: e ?? C0, naturalSize: a, asUrl: s, asSVGText: i };
} catch {
}
};
if (e === C0 ? 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 _0(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 h = c[d], u = i(s[h]);
u && (a && (a += ","), a += JSON.stringify(h) + ":" + u);
}
return r.splice(l, 1), "{" + a + "}";
})(n);
}
var yo, qx;
(qx = yo || (yo = {})).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;
const c = l.length;
for (let d = 0; d < c; d++) {
const h = l[d];
let u, p = r[h];
if (p !== void 0) {
const m = i[h];
u = m ? (0, qx.resolveTypedUpdates)(p, m, t, o?.[h]) : p;
} else u = o?.[h];
u != null && (a = a ?? {}, a[h] = u);
}
}
return a;
};
class $l extends Error {
constructor(e, t = null) {
super(e, t), this.name = "ChainedError", this._cause = t;
}
get cause() {
return this._cause;
}
}
let gt = class extends Error {
constructor(n, e) {
super(n, e);
}
}, uo = class extends gt {
constructor(n = "Out of bounds", e = null) {
super(n, e), this.name = "OutOfBoundsError";
}
}, _I = class extends $l {
constructor(n = "Partial Error", e = null) {
super(n, e);
}
}, Qi = class extends $l {
constructor(n = "Null not supported", e = null) {
super(n, e);
}
}, Kx = class extends Error {
constructor(n = "Null not supported", e) {
super(n), this._type = e;
}
get type() {
return this._type;
}
}, EI = class extends $l {
constructor(n = "Not implemented", e = null) {
super(n, e);
}
};
const kI = (n, e = !1) => {
const t = [], o = (r, i = 0) => {
if (!r || (t.push({ error: r, depth: i }), e && r instanceof gt)) return;
const s = r.cause;
s && s instanceof Error && o(s, i + 1);
};
return o(n), t.reverse();
}, Xx = `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.`, E0 = `You do not have permissions to access the clipboard.
All copy and paste operations will be limited to the browser tab.`, RI = { 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: E0, PermsWrite: Rh() === Ir.Safari ? Xx : E0, PermsRead: Rh() === Ir.Safari ? Xx : E0 }, k0 = async () => new Promise((n) => {
document.hasFocus() ? n() : globalThis.addEventListener?.("focus", () => {
n();
}, { once: !0 }), document.activeElement.focus?.();
}), R0 = async (n, e, t) => {
if (Rh() === Ir.Safari) return await t(new Error(RI.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);
}
}, MI = async (n) => {
try {
return await n.read({ unsanitized: [yr] });
} catch {
}
return await n.read();
}, TI = async (n, e) => {
if (!n) return null;
const t = await MI(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 Ag = async (n, e = yr) => new Promise(async (t, o) => {
try {
const r = await TI(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);
}
}), $w = async (n, e = yr) => {
const t = await Ag(n, e);
if (!t) return null;
let o = null;
try {
o = new DOMParser().parseFromString(t, yr);
} catch {
console.warn("Can't parse html from clipboard.");
}
return o;
}, _D = async (n) => {
n && await n.writeText("");
}, ED = TI, kD = Ag, RD = $w, Mh = "clipboard-uuid", ic = "web text/uuid", Yx = (n) => `<div style="display:none" ${Mh}="${n}"/>`, MD = (n, e) => {
let t = null;
try {
const o = new DOMParser().parseFromString(e, yr);
o.body.firstElementChild.setAttribute(Mh, n), t = o.getElementsByTagName("body")[0].innerHTML;
} catch (o) {
console.warn("Can't embed uuid.", o);
}
return t;
}, Jx = (n, e) => {
if (!e || !n) return !1;
try {
const t = e.querySelectorAll(`[${Mh}="${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 sd = 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 R0("clipboard-read", async () => {
await k0();
const n = await Ag(this._nativeClipboard, ic);
if (!this._state || n && n === this._state.uuid) return !0;
const e = await $w(this._nativeClipboard, yr);
return !this._state || (Jx(this._state.uuid, e) || this.clear(), !0);
}, async (n) => {
n?.message === "denied" || n.message?.includes("Document is not focused") || Rh() === Ir.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 R0("clipboard-read", async () => {
if (await k0(), this._state?.uuid) {
const e = await Ag(this._nativeClipboard, ic);
if (e && e === n._state.uuid) return !0;
const t = await $w(this._nativeClipboard, yr);
if (Jx(n._state?.uuid, t)) return !0;
}
return n._state = { items: await MI(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: zm(), 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 R0("clipboard-write", async () => {
await k0(), o && r.length === 0 && (r.push(new ClipboardItem({ [ic]: new Blob([o], { type: ic }) })), r.push(new ClipboardItem({ [yr]: new Blob([Yx(o)], { type: yr }) })));
for (let s = 0; s < Math.min(1, r.length); s++) {
const a = r[s];
let l = a.types.indexOf(yr), c = null;
if (l !== -1) {
const u = await a.getType(yr);
c = await zw(u), c && (c = MD(o, c));
}
if (!c && a.types.includes($s)) {
const u = await a.getType($s);
if (u) {
let p = null;
typeof u == "string" ? (console.warn("text as string", u), p = u) : p = await zw(u), p && (c = `<div ${Mh}="${o}">${p}</div>`);
}
}
if (!c && a.types.includes(ah)) {
const u = await a.getType(ah), p = xI(await u.arrayBuffer());
c = `<div ${Mh}="${o}"><img src="${vI + p}"/></div>`;
}
!c && o && (c = Yx(o));
const d = new Blob([c ?? ""], { type: yr }), h = {};
for (let u = 0; u < a.types.length; u++) {
const p = a.types[u];
h[p] = u === l ? d : a.getType(p);
}
c && l === -1 && (h[yr] = d), o && (h[ic] = new Blob([o], { type: ic })), t.push(new ClipboardItem(h));
}
try {
t && t.length !== 0 ? await this._nativeClipboard.write(t) : await _D(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[$s] = new Blob([r ?? ""], { type: $s }));
} catch (r) {
e = r;
}
try {
const r = await n.toHtml?.() ?? null;
r && (t[yr] = new Blob([r], { type: yr }));
} catch (r) {
e = r, console.warn("export to html", r);
}
try {
const r = await n.toImage?.() ?? null;
r && (t[ah] = r);
} catch (r) {
e = r, console.warn("export to png", r);
}
const o = this._write({ uuid: zm(), 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($s) && (o = await t[i].getType($s));
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({ [$s]: new Blob([n], { type: $s }) })];
return this._write({ uuid: zm(), 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 M0;
(M0 = sd || (sd = {})).ErrorMessages = RI, M0.Global = new M0();
let TD = 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;