@sheetxl/studio-vanilla
Version:
SheetXL Studio - Vanilla entry point for integrating SheetXL UI.
1,183 lines (1,181 loc) • 2.88 MB
JavaScript
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